这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 坤创E-Geek/天科大新电社 » 一队-stm32初学之二轮平衡车

共7条 1/1 1 跳转至

一队-stm32初学之二轮平衡车

菜鸟
2019-07-12 20:48:15     打赏

  作为stm32初学者如何快速入门是一个问题,

  综合所得决定做一辆二轮平衡车。

选材:

   stm32c8t6核心板

   mpu6050陀螺仪

   tb6612fng电机驱动

   iic0.96寸oled屏幕

   hc-05蓝牙串口

   三串12V18650锂电池

   稳压ic电容电阻若干 

程序:
      关于程序的话,说一些我自己在做的过程中遇到的问题吧
     (1)mpu6050的基准零点,就是水平位置一定要调好,否则在以后的使用中会有很大的干扰。
     (2)pid参数的调节,没有别的办法,就是从小试到大,一点一点来,才能调出来,因为站立pd的参数在很大一个范围内都能使车站起来,就是好坏程度不一样,所以就慢慢试吧。
     (3)中断时间,一般的中断时间为10ms,但是根据电机的不同这个数值也可以更改,以硬件为基础,感觉不错就行。

  (4)mpu6050采取官方的dmp库

附上主程序源码:

#include "sys.h"
/****************************全局变量*************************************/    
float Voltage;  															 //电池电压采样相关的变量
float pitch,roll,yaw; 								  			 //欧拉角(姿态角)
short aacx,aacy,aacz;													 //加速度传感器原始数据
short gyrox,gyroy,gyroz;											 //陀螺仪原始数据
float UltrasonicWave_Distance;                 //超声波测距
int   Encoder_Left,Encoder_Right;         		 //左右编码器的脉冲计数
int 	Moto1=0,Moto2=0;												 //计算出来的最终赋给电机的PWM
int 	Flag_Qian,Flag_Hou,Flag_Left,Flag_Right; //蓝牙遥控相关的变量
u8    flag_UltrasonicWave=0;									 //超声波是否超出安全距离标志位
u8    flag_fall=0;					 									 //摔倒标志位
u8    key=0;								 									 //按键的键值
u8    KEY_MODE=0;					 										 //模式0,遥控模式
																						   //模式1,超声波模式
																							 //模式2,参数模式
u8 DIS_STATE=255;				 											 //用来实现只刷新一次屏幕的变量			
/***********************************************************************/
int main(void)	
{ 
	LED_Init();                    //=====初始化与 LED 连接的IO
	KEY_Init();                    //=====初始化与按键连接的IO

	delay_init();	    	           //=====延时函数初始化	
	uart1_init(128000);	           //=====串口1初始化
	uart3_init(9600);              //=====串口3初始化成能与蓝牙进行通信的波特率,蓝牙默认通信波特率9600
	delay_ms(100);
	NVIC_Configuration();					 //=====中断优先级分组,其中包含了所有的中断优先级的配置,方便管理和一次性修改。
	Adc_Init();                    //=====初始化ADC 	
	Encoder_Init_TIM2();           //=====初始化编码器2
	Encoder_Init_TIM4();           //=====初始化编码器4
	Timer3_Init(5000,7199);	    	 //=====超声波定时器初始化
	OLED_Init();                   //=====OLED初始化
	OLED_Clear();									 //=====OLED清屏
	MPU_Init();					    			 //=====初始化MPU6050
	mpu_dmp_init();								 //=====初始化MPU6050的DMP模式					 
	UltrasonicWave_Configuration();//=====初始化超声波的硬件IO口
	TIM1_PWM_Init(7199,0);   			 //=====初始化PWM 10KHZ,用于驱动电机。 
	delay_ms(1000);								 //=====延时2s 解决小车上电轮子乱转的问题
	delay_ms(1000);								 //=====延时2s 解决小车上电轮子乱转的问题
	Motor_Init();									 //=====初始化与电机连接的硬件IO接口 
	MPU6050_EXTI_Init();					 //=====MPU6050 5ms定时中断初始化
  while(1)	
	{
			KEY_mode_Select();				 //=====模式选择以及屏幕表情显示
	} 	
}

 

 




关键词: 一队    

菜鸟
2019-07-12 22:11:27     打赏
2楼

不错,电路设计很棒


助工
2019-07-12 23:28:04     打赏
3楼

学习一下


工程师
2019-07-12 23:29:52     打赏
4楼

设计的很棒 很有实力


菜鸟
2019-07-12 23:34:10     打赏
5楼

敢于尝试和实践 不错!


菜鸟
2019-07-13 09:31:58     打赏
6楼

楼主,可有学习资料分享一下


助工
2019-07-14 09:19:32     打赏
7楼

谢谢楼主分享 ,感觉超级好玩!!!


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]