第一章 底盘驱动基础
做机器人底盘这么多年,我始终觉得驱动基础是重中之重。你想想看,底盘都走不稳,上层算法再漂亮也是白搭。今天我们就从最基础的直流电机开始聊起。
1.1 直流电机工作原理
直流电机这东西,说白了就是电能转机械能。我刚开始接触时也觉得挺玄乎,其实核心就三个东西:定子、转子、换向器。
电流通过电刷进入转子线圈,在磁场中受力旋转。嗯,这就是安培力的应用。你记住一个关键点:电机转速和电压成正比,扭矩和电流成正比。
核心公式:
- 转速 n = (U - IR) / Kφ
- 扭矩 T = Kφ × I
其中 U 是电枢电压,I 是电枢电流,R 是电枢电阻,Kφ 是电机常数。
我在项目中遇到过一个问题:选电机时只看功率,忽略了额定转速和扭矩的匹配。结果底盘跑起来要么没力,要么速度上不去。后来我学乖了,先算负载再选型。
1.2 H桥驱动电路
电机要正反转,怎么办?H桥就是干这个的。四个开关管组成一个"H"形状,通过控制不同开关的通断来改变电流方向。
我的个人习惯:调试H桥时,先用小电压测试,确认逻辑正确再上全压。这习惯救过我不少次。
H桥的四种工作状态:
| Q1 | Q2 | Q3 | Q4 | 电机状态 |
|---|---|---|---|---|
| ON | OFF | OFF | ON | 正转 |
| OFF | ON | ON | OFF | 反转 |
| OFF | OFF | OFF | OFF | 停止 |
| ON | ON | OFF | OFF | 刹车 |
避坑指南:我曾经犯过一个低级错误——上下桥臂同时导通,直接烧了MOS管。记住,一定要加死区时间,哪怕只有几百纳秒。
实际项目中,我推荐用集成H桥芯片,比如L298N、TB6612。自己搭分立元件?除非你在做高功率驱动,否则别折腾。
1.3 PWM调速原理
为什么要用PWM?因为简单、高效。通过调节占空比,就能控制电机两端的平均电压。
占空比 50% 时,平均电压就是电源电压的一半。转速也就差不多一半。但这里有个坑:占空比太低时,电机可能转不起来。
PWM关键参数:
- 频率:一般1kHz-20kHz,太低会听到啸叫,太高开关损耗大
- 占空比:0%-100%,实际常用10%-90%
- 分辨率:8位(256级)够用,16位更细腻
我建议你选PWM频率时,避开人耳敏感区(2kHz-5kHz)。我一般用10kHz,听不到噪音,开关损耗也还能接受。
为什么会这样?因为频率太低时,电机线圈的感抗小,电流纹波大,电机发热严重。频率太高呢?MOS管开关损耗上去了,驱动芯片烫得能煎鸡蛋。
1.4 编码器基础
编码器就是电机的"眼睛"。没有它,你根本不知道轮子转了多少圈、朝哪个方向转。
常用的编码器分两种:
- 增量式编码器:输出A、B两路脉冲,通过相位差判断方向
- 式编码器:直接输出角度值,掉电不丢失位置
做底盘驱动,增量式编码器用得最多。为什么?便宜、够用。你想想看,我们只需要知道相对位移,不需要位置。
我的经验:编码器线数(PPR)不是越高越好。1024线对于大多数底盘已经足够。线数太高,单片机中断处理不过来,反而丢步。
编码器读数公式:
// 假设编码器线数 512,4倍频
float distance_per_pulse = (3.14159 * wheel_diameter) / (512 * 4);
// 计算位移
float distance = pulse_count * distance_per_pulse;
嗯,这里要注意:4倍频是利用A、B两路信号的上升沿和下降沿,把分辨率提高4倍。我刚开始做时不知道这个技巧,白白浪费了编码器的精度。
避坑指南:我曾经遇到过编码器信号抖动的问题。排查了半天,发现是电机电刷产生的电磁干扰。解决办法:用双绞屏蔽线,信号线远离电机电源线。
知识体系总览
下面这张图,是我梳理的本章知识结构。你看一遍,心里就有谱了。
这四个知识点环环相扣。电机是执行器,H桥是驱动器,PWM是控制手段,编码器是反馈元件。少了任何一个,底盘驱动都玩不转。
好了,第一章就到这里。记住我今天说的这些坑,你后面做底盘融合时会少走很多弯路。