一款基于DSP的循迹及自平衡的智能小车设计
(注意:当使能信号为0时,电机处于自由停止状态;当使能信号为1,且IN1和IN2为00或11时,电机处于制动状态,阻止电机转动。)
由于小车采用的是左右两侧速度差转向,所以为了节省I/O口,电机连接时使用一个I/O配合使能端控制一侧的两个电机的转向和转速使能端控制转速,I/O口控制转向。具体操作:同侧的两个电机并联,电机一端通过I/O口经L298N控制,另一端从同一I/O口引出一根信号线经一非门后由L298N控制。具体电路连接如图5所示(其中MG1~MG4为4个直流电机)。
方向设定主要函数如下:
配合循迹模块即可实现小车循迹功能。循迹模块分为前后4路,前4路的4个信号端口与后4路并联,前4路的4个红外循迹模块由一个I/O口供电,后4路供电由此I/O口经一非门供给。只需改变此I/O的高低电平即可完成前后循迹模块的切换。循迹程序框图如图6所示。
循迹主要程序如下:
2.3 LCD12864电路连接
为了节省I/O口,显示选用的LCD为SPI传输型,主要用于必要数据显示以及菜单和系统状态显示。该模块一共有10个引脚,其中除去电源引脚和空引脚还有RET引脚用于上电复位,CS引脚传输主从状态选择,SCK引脚时钟信号输入,SDA引脚数据输入,BUSY引脚判忙接口。由于I/O口的限制,我们采用的并非SPI数据传输模式,而是选用的模拟SPI数据传输。模拟SPI主要是对数据传输时序进行模拟。
模拟SPI数据传输,只能对数据进行一位一位的传输。因为此时序为上升沿触发,所以在传输之前时钟信号置低,传输结束后置高。但是程序的编写比较麻烦,因为此LCD的命令和数据都是8位数据。所以选择按位与加移位实现输入8位数据,具体程序如下:
在实际操作中,每次上电需要对LCD进行复位设置(RST先置低10 ms左右,然后置高20 ms左右)这样才能保证LCD正常显示,同时在命令和数据传输之前需要对LCD进行初始化操作,即对LCD进行清屏操作(清除上电一瞬间的乱码显示),然后根据需求进行亮度设置。由于此设计中LCD只需进行数据的接收,所以CS片选端直接接地,设置LCD为从输入设备即可。具体电路连接如图7所示。
2.4 倾角传感器电路连接
倾角传感器选用的是数字信号传输的MMA7361,此模块能够检测器件的X/Y/Z三轴的倾斜角度,以及期间的加速度。小车在跷跷板上寻找平衡只需一个轴检测倾角即可,所以任选一轴与小车车面平行,竖直指向车头即可。
当小车发生前后倾斜时,输出电压改变,通过输出电压的线性变化反映小车的倾角、运动加速度,以及运动的方向。通过A/D采样进行相应的电压/角度、电压/加速度转换,这样便可以时刻调节小车姿态。
倾角传感器A/D采样程序设定如下:
结语
本文只用了TMS320F28027的部分功能,算法也比较简单,只是为大家的学习交流抛砖引玉而已。TMS320F28027还有很多强大的功能,有待以后大家的学习和使用。
个人的使用经验表明TMS320F28027运算速度快,而且操作简单易学,不仅适合完成各种业余的电子设计制作,而且也能满足专业人士的大部分需求,是性价比较高的芯片。在配合外部扩展硬件的使用过程中,需仔细阅读TMS320F28027和硬件模块的电气参数,以防止元器件的损毁。
DSP TMS320F28027 相关文章:
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)