2020-08-03 小car竣工
1.硬件
stm32f103c8t6
l298n
hc05
(网购的带万向轮、电机、小开关的小车模)
2.所需知识
pwm相关
串口通信
定时器中断
各种串口 定时器 io口初始化
3.硬件连接
stm32 l298n要共地毋庸置疑
意思就是把他们的GND接一起就好了
4.蓝牙模块
这里使用手机蓝牙控制
//main中的初始化
int main()
{
NVIC_PriorityGroupConfig(NVIC_priorityGroup_2);
usart2_init(9600);
......
}
用switch无法实现手机发送命令控制小车
所以用了if
用串口2是因为参考了某博客,为防止蓝牙通信出现问题
https://blog.csdn.net/qq_23685163/article/details/89061229
蓝牙模块出现过拿手机给车发一条指令后直接掉线
解决办法:
单独给c8t6供电 比如4.5v
单独给l298n供电 比如6v
蓝牙手机控制面板如下:
5.速度控制
pwm
运用两个时钟 使两电机转速不同
通过改变arr来改变占空比 以控制速度
//全局变量的引入使灵活改变占空比以改变车速成为可能,即左转、右转等功能
TIM_TimeBaseStructure.TIM_Period = temp1;
TIM_TimeBaseStructure.TIM_Period = temp2;
void Gostraight()
{
TIM_SetCompare1(TIM1,4000);//左前进
TIM_SetCompare2(TIM1,0);
TIM_SetCompare1(TIM4,4000);//右前进
TIM_SetCompare2(TIM4,0);
}
void Stop()
{
TIM_SetCompare1(TIM1,10);
TIM_SetCompare2(TIM1,10);
TIM_SetCompare1(TIM4,10);
TIM_SetCompare2(TIM4,10);
}
小车能前进、后退、原地左右打转、左转右转
//main.h
int main(void)
{
if(USART2_RX_STA&0x8000)
{
if(USART2_RX_BUF[0]=='1')
{
//小车前进
temp1=15;
temp2=15;
TIM4_PWM_Init();
TIM1_PWM_Init();
Gostraight();//前进
//delay_ms(50000);
}
USART2_RX_STA=0;
}
if(USART2_RX_BUF[0]=='7')
{
//刹车
temp1=50;
temp2=50;
TIM4_PWM_Init();
TIM1_PWM_Init();
Stop();
//delay_ms(50000);
}
USART2_RX_STA=0;
.....
}
6.杂谈
csdn这个编辑器真够难用的
stlink是真的好用
脱离了flymcu的魔爪整个人都好了
正点原子stlink跟杜邦线的连接以此图为准(来自c8t6卖家手册)
杜邦线和c8t6连接参照下图