演示视频:
我基于STM32F103RCT6单片机+MPU6050+15AH锂电池+载人。我怎么就感觉那个基于51单片机做的程序有问题呢,我怎么折腾就是不行。我用的是RC代号的单片机,这个型号带两个专用定时器tim1和tim8,我用内部互补直接去驱动两个全桥驱动。
单片机:STM32F103RCT6
滤波:卡尔曼
驱动:75F75场效应管+ IR2101S
电池:36V12AH锂电池
电机:优耐特36v350w外头电机
轮胎:6寸充气轮胎
价格参考
电路板200元,电池650,外壳100,轮胎40,法兰盘100,电机300。加起来1500元不到吧。
我的PID算法只用到了两个量,一个角度比例,还有一个市陀螺仪积分吧。主要是载人的,不需要位移量和转速量,载人的不需要定下来,主要是靠人来调节前后,速度。
我的角度测量是用的重力加速度的分类,用三角函数计算出来的。假如向前,有点左右歪,角度一样没问题。
程序分为四个部分,大家慢慢研究。不要说我的电机噪音大,做工粗糙,等我有空,我会做个升级版的。我今年22周岁还不到,马上专科毕业,谁敢站出来和我比嫩!
在这里感谢那个牛人开源了源代码,大家应该知道是谁。我是做自动化行业的,做这个纯属爱好。所以开源完全是回报社会,下载附件之后点个赞啊,我很要面子的。不要做伸手党啊!
我上传了我的源代码,欢迎大家下载。还有pcb图。欢迎大家讨论
单片机源程序(主程序)如下:
- #include "stm32f10x.h"
- #include "SysTick.h"
- #include "assignment1.h"
- #include "assignment2.h"
- #include "assignment3.h"
- extern float Angle;//角度
- int main(void)
- {
- SysTick_Init();//①系统滴答时钟初始化
-
- I2C_MPU6050_Init();//②重力传感器接口初始化
-
- InitMPU6050();//③初始化MPU6050
- // LED_Config();//④显示LED初始化
- TIM1_Init();//⑤定时器tim1,tim8初始化
- ADC1_Init();//⑥ADC初始化
- USART2_Config();//⑦初始化串口2
- Direction_Init();//⑧初始化转向
- while(1)
- {
- }
- }
- /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/
复制代码
所有资料51hei提供下载(stm32两轮平衡车含图纸、代码全套资料,供大家学习):
stm32平衡车资料.rar
(6.35 MB, 下载次数: 666)
|