实验三:树莓派平台-------TrikeBot小车前进实验
1、实验前准备
图1-1 树莓派3B+主控板
图1-2 2个直流减速电机
图1-3 9G金属数字舵机
2、实验目的
SSH远程登录树莓派后,运行小车前进可执行程序,实验效果为小车先延时2s,一直循环前进1s。
3、实验原理
对于2路直流减速电机的控制我们采用的是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度,表示小车处于正前方状态。
4、实验步骤
4-1.看懂原理图
图4-1 树莓派电路图
图4-2 电机驱动芯片TB6612FNG
图4-3 多舵机接口
图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编码)
注:我们在编写程序采用的是wiringPi库,有关这个库的详细情况,见树莓派软件与文档文件夹。
4-3 程序代码:
详情见TrikeBot小车前进代码。
4-4 运行程序
我们先在树莓派系统中输入: gcc advance.c -o advance -lwiringPi编译该文件。注意需要加上-lwiringPi 连接到库文件。编译之后没有错误出现就输入./advance运行该程序,即可听到我们小车前进1S,循环此状态。
需要停止时我们通过ctrl+c,表示向linux内核发送一个终止当前进程的信号,但是此时相关的引脚的状态是不确定的,我们还需要运行一个初始化引脚的脚本对所有引脚初始化。直接运行TrikeBotCar目录下的initpin.sh脚本完成引脚初始化。输入./initpin.sh如果报错-bash: ./initpin.sh: Permission denied,我们可输入chmod 777 initpin.sh改变initpin.sh的文件权限,然后输入./initpin.sh
即可初始化管脚。
如下图所示: