针对四轮避障小车,学习tb6612驱动和控制370减速电机和42步进电机。
在单片机通过TB6612连接至电机时,前面学习过32控制普通的直流电机,发现当下比赛常用电机如减速跟42步进,存在霍尔编码器(读取电机实时转动方向和转速),精度更高和控制起来更难一些。
通过学习b站和cncs网站相关部分知识,关于TB6612(2pin普通电机,6pin编码器电机)的个人笔记:
入门知识:
硬件连接知识
右侧VM外部电压驱动电机正常需12v,而VCC是指对TB6612的内部电路供电,一般需3.3V或5V,GND即接地,观察共地即可,下面四个out口(AO1,AO2,BO1,BO2)分别是连接两个电机。
左侧PWM输入,在32学习过它即为一种模拟信号,类似于占空比,大小决定了轮子转动的快慢,下面的四个in口是对应gpio口,单片机驱动板子工作(通过给高低电平控制),这里需说明in口的高低电平模式对应了轮子工作的转动方式(具体看图中举例的四个模式)通过芯片发送给out口处电机,STBY是使能口一般默认为3.3v(即高电平),决定着板子能否正常工作。

如需驱动减速电机跟42步进电机(6pin),则可根据自带 TB6612驱动板和面包板连接,下图为用32最小系统板连接TB6612测试电机。


也可以是跟自带稳压模块的TB6612驱动板连接,个人觉得更好用一些

要有初始化,启用外部中断,调PID先通过编码器读取测速,然后使用pid算法控制,推荐https://pid-simulator-web.skythinker.top/
上方链接是一个入门学习调节pid网站。Kp是产生主要的作用力(使物体作用力返回目标点),Ki是消除静态误差,Kd是产生阻尼效果减小震荡和超调系数。
开环控制 vs. 闭环控制
| 特性 | 开环控制 | 闭环控制 |
|---|---|---|
| 核心思想 | "命令-执行":我命令你以400的速度转,你就尽力转,转得怎么样我不管。 | "命令-执行-反馈-校正":我命令你以400的速度转,你告诉我现在是350,那我就加大力度让你到400。 |
| 硬件需求 | 电机驱动板 + 2根方向线 + 1根PWM线。 | 开环所有硬件 + 编码器 + 2根编码器信号线。 |
| 软件需求 | 配置GPIO输出 + PWM输出。 | 开环所有软件 + 定时器编码器模式 + 中断或轮询读取 + 速度计算 + PID算法。 |
| 优点 | 简单、快速、稳定。代码写完就能跑,几乎不会出bug。 | 精确、自适应。能抵抗负载变化、电压波动,实现精确的速度和位置控制。 |
| 缺点 | 不精确、不可靠。电机实际速度受电压、负载影响很大,两个电机转速会不一致,导致小车跑偏。 | 复杂、调试困难。就像您现在遇到的情况,一个微小的问题就可能导致系统不工作。 |
个人理解:开环控制,相对于要求一个眼睛被蒙上的人先前走10m,简单指令但效果不行(可能会走歪或者没走到规定地点);而开环控制,则是一个睁开眼走10m,他会有反馈的信息(必然走了8m还剩两米,反馈回来就是还有继续走直到到达目的地),高效但复杂。
推荐入门也可以是先实现小车的开环控制,直接使能主板对应的gpio口,让其接收pwm信号无反馈,通过代码写规定的速度和方向控制。
软件部分:
代码(使用的是keil的32标准库函数),要有主函数main,串口usart,信号pwm,定时器tim,延时delay,中断等等。
后续仍在写。。