4.TrikeBot小车方向控制实验

您当前位置: 首页 > 树莓派-Trikebot > 编程语言视频教学

direction_control.c  点击下载

CarRun.py  点击下载

实验四:树莓派平台-------TrikeBot小车方向控制实验


1、实验前准备

image.png 

图1-1 树莓派主控板


image.png

图1-2  2个直流减速电机 

image.png 

图1-3  9G金属数字舵机

 

2、实验目的

  ssh服务登录树莓派系统之后,编译运行小车方向控制实验后,小车前进1s,后退1s, 左转1s, 右转1s, 原地左旋1s, 原地右旋1s, 停止2s,然后循环以上步骤,本次实验利用舵机的旋转来控制小车的方向。

 

3、实验原理

  对于4路直流减速电机的控制我们采用的是TB6612FNG驱动芯片来驱动电机。通过控制驱动芯片的AIN1,AIN2,BIN1,BIN2,PWMA,PWMB的电平高低来控制电机的正转,反转,停止。本次实验主要是控制AIN1,AIN2,BIN1,BIN2的电平状态,进而通过控制PWMA,PWMB在0-255之间控制小车的速度。一路PWM控制小车一侧电机的速度。

  舵机工作原理:控制信号由接收机的通道进入信号调制芯片,获得直流的偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速此轮带动电位器旋转,使得电压差为0,电机停止转动。

舵机的控制:一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分。本次实验的采用的舵机是180度伺服,控制关系如下:

 0.5ms-----------------0度

         1.0ms-----------------45度

         1.5ms-----------------90度

         2.0ms-----------------135度

         2.5ms-----------------180度

  我们的TrikeBot小车是通过控制舵机来控制前面橡胶轮的方向,从而控制小车的前进方向,本次实验小车我们根据实际情况将舵机的角度设置成了55度,表示小车处于正前方状态;将舵机的角度设置成了0度,表示小车处于右转状态;将舵机的角度设置成了110度,表示小车处于左转状态。

4、实验步骤

4-1.看懂原理图

image.png 

图4-1 树莓派主控板电路图

image.png 

4-2 电机驱动芯片TB6612FNG

image.png 

4-3  多舵机接口

 

image.png 

4-3 树莓派40PIN引脚对照表

 

4-2 理解原理图

由电路原理图可知AIN1,AIN2,PWMA,BIN1,BIN2,PWMB分别接在树莓派主控板上的40,38,36,37,35,33物理引脚上。

         AIN1-----40----29(wiringPi编码)

         AIN2-----38----28(wiringPi编码)

         PWMA-----36----27(wiringPi编码)      

         BIN1-----37----25(wiringPi编码)

         BIN2-----35----24(wiringPi编码)

         PWMB-----33----23(wiringPi编码)

     J1-----16----4(wiringPi编码)

 

AIN1

AIN2

BIN1

BIN2

PWMA

PWMB

AO1/AO2

1

0

1

0

1

1

正转

0

1

0

1

1

1

反转

1

1

1

1

1

1

刹车

0

0

0

0

1

1

自由停车

X

X

X

X

0

0

刹车

X:任意电平

VM/GND:电机电源输入,VM按正 GND接负

VCC/GND:逻辑供电输入,VCC接从外部输入进来的5V正,GND接负

PWMA PWMB:可以直接接于VCC,然后通过AIN1/AIN2 BIN1/BIN2来控制2个电机

4-5 引脚控制逻辑表

注:我们在编写程序采用的是wiringPi库,有关这个库的详细情况,见树莓派软件与文档文件夹

 

4-3 程序代码

详情见TrikeBot小车方向控制代码。

 

4-4 运行程序

  我们先在树莓派系统中输入:gcc direction_control.c -o direction_control -lwiringPi编译该文件。注意需要加上-lwiringPi 连接到库文件。编译之后没有错误出现就输入./direction_control运行该程序,即可看到小车前进1s,后退1s, 左转1s, 右转1s, 原地左旋1s, 原地右旋1s, 停止4s,然后循环以上步骤。

需要停止时我们通过ctrl+c,表示向linux内核发送一个终止当前进程的信号,但是此时相关的引脚的状态是不确定的,我们还需要运行一个初始化引脚的脚本对所有引脚初始化。直接运行TrikeBotCar目录下的initpin.sh脚本完成引脚初始化。输入./initpin.sh如果报错-bash: ./initpin.sh: Permission denied,我们可输入chmod 777 initpin.sh改变initpin.sh的文件权限,然后输入./initpin.sh

即可初始化管脚。

如下图所示:

image.png