偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.
全部博文(1748)
分类: Android平台
2017-03-17 10:51:52
兴趣爱好做了一辆自平衡小车,如今快毕业了 想出来他 当然不会亏了论坛兄弟 资料全部开源。小车调的不是很好、 但是能站立的很稳,小车的前后左右控制没弄 要毕业 忙着找工作。小车如果谁有兴趣 连车架板子一起200元拿走 可以走淘宝,好了不做广告了。开始小车的介绍了
本项目由9个模块组成,1、电源模块。2、MCU模块。3、蓝牙模块。4、电机驱动模块模块。5、MPU6050模块。6、指示模块。7、电机接口模块。8、2.4G无线通讯模块9、扩展模块
通过这些模块的协调配合,共同组成该项目完成其功能。
MCU模块:采用STM32F103C8T6单片机作为主控MCU,其拥有64k字节Flash闪速存储器,20K字节内部RAM,37 个I/O 口线,两个16位定时/计数器, 3个全双工串行通信口,片内振荡器及时钟电路,2个12位的ADC,一个24位的系统定时器。和复位电路,时钟电路,下载电路组成单片机最小系统。
电源模块:主电源由12V2200MAH电池提供,通过LM2596S得到5V电压,再由ASM11173.3V稳压芯片得到3.3V,供给单片机,传感器,通讯模块。
MPU6050模块:通过MPU6050传感器检测到当前角度值和加速度,通过该值实时调整小车的角度,从而是小车自平衡的目的。
电机驱动模块:电机驱动模块由TB6612芯片组成,外围电路非常简单,效率高,控制频率高。
指示模块:通过2只蓝色,2只绿色LED组成,用于遥控器控制时方向的确定,给遥控控制带来极大的方便。
电机接口模块:电机接口模块保护电机接口模块和编码器接口模块组成,完成电机的驱动和编码器的供电与读取,编码器用来校准电机的控制方向和力度。
2.4G无线通讯模块:2.4G通讯模块由NRF2104的模块构成,遥控器通过2.4G控制小车的前进.后退.左转.右转,单片机通过SPI总线读取遥控器的数据。
蓝牙模块:有HC05的蓝牙模块,HC05是一个比较老式的蓝牙模块,但是HC-05模块使用方便,通过串口读取上位机发送的数据控制小车运行。
扩展模块:单片机所有IO没有全部用完,引出没有用的IO,方便以后升级小车。
硬件调试:
制作过程:
1.把厂家做好的板子拿到,先检查板子的线路是否正确。
2.先开始焊电源部分,因为如果电源部分有问题后面东西焊上去全部烧掉。
3.测试电源部分电压是否正常,5V电压是否正确,3.3V电压是否准确。
4.再焊单片机最小系统部分。先写一个最小的程序,看下单片机能不能正常下载,不能下载检查单片机电路。
5.再开始焊外围电路,焊一个电路测试一个部分,比如要焊MPU6050,把MPU6050程序下好,通过仿真看MPU6050是否能正常读取。
6.最后焊电机驱动桥,电机不接测试电机驱动桥电压是否正常,电压是否正确。
7.装上电机,测试电机运动是否正确。确定电机运动方向。
8.把电路板安装到小车车架上。
实物图见附录A。
软件调试
以上硬件安装完成,基本的程序架构也出来了。保证了每个模块的正确。再开始编写程序,通过Keil C51编译代码,首先按照功能划分不同的子程序,编写一个1MS的定时器,以1MS的定时器做系统调度的基准。每个模块每100MS调用一次。先读取MPU6050的角度和加速度,通过四元素变换成欧拉角,把加速度进行量化。再读取编码器的值。读取2.4G模块接收到和蓝牙模块接收到的控制值。最后结合角度,加速度,编码器的值和控制值进行串级PID运算。一个角度环和一个位置环。先调试角度环,是小车能基本站立,并且对外力由比较强的反应,角度环使用PID中的PD,因为小车的重量不均匀,PID中的I不能使用。再调试位置环PI,这时候小车应该已经很稳定了。位置环不用D只用PI,因为位置的方向是不确定的,所以引人D回带来系统很大的干扰。再加上遥控器的控制值,用来控制小车的前进后退,左转右转。
|