1. 项目概述与硬件选型
做智能小车可以说是嵌入式入门最经典的项目了,既能玩到硬件又能学到软件,成就感直接拉满。我这次用的主控是STM32F103C8T6,也就是大家常说的"蓝莓派",性价比超高,资料又多,特别适合初学者。整个项目实现了蓝牙遥控和七路寻迹双模式,用HAL库开发,CubeMX配置,上手真的不难。
先说说我的硬件清单:
- 主控:STM32F103C8T6最小系统板(某宝20多块钱就能买到)
- 电机驱动:TB6612(比L298N效率高,发热小)
- 传感器:七路灰度传感器(巡线必备)
- 通信模块:HC-05蓝牙模块
- 电源:12V锂电池(建议带保护板)
- 电机:带霍尔编码器的直流减速电机(编码器后面做闭环控制会用到的)
这里要特别提醒一下电机驱动的选择。我看到很多初学者喜欢用那种红色的小模块,其实那种最大负载电压只有11V,要是PWM调到最大很容易烧穿,还是挺危险的。TB6612就稳多了,最高可以到15V,而且发热控制得更好。
七路灰度传感器我建议买数字输出的,省去了自己调阈值的麻烦。电源方面,有些人喜欢加一堆保护模块,其实12V电池直接接问题不大,关键是接线时别正负极碰在一起就好。
2. 开发环境搭建
环境配置是第一步,虽然网上教程很多,但我还是想分享几个容易踩坑的点。我用的是Keil MDK + STM32CubeMX的组合,这是目前最主流的开发方式了。
首先安装STM32CubeMX,记得要登录账号才能安装芯片支持包。找到F1系列,选择F103C8T6,这时候要注意芯片封装的选择,我们用的这个是LQFP48封装,别选错了。
时钟配置是关键步骤,外部晶振选8MHz,然后通过PLL倍频到72MHz,这是F103系列的最高主频了。在Clock Configuration标签页里,把PLL Source Mux选为HSE,然后调整PLL倍频系数为9,这样8MHz * 9 = 72MHz就配置好了。
生成代码时记得要选择MDK-ARM工具链,勾选"Generate peripheral initialization as a pair of .c/.h files"这样每个外设都会单独生成文件,后期维护起来方便很多。
第一次打开生成的Keil工程时,可能会提示找不到芯片包,这时候去Keil的Pack Installer里安装一下STM32F1系列的DFP就解决了。编译前还要在Target选项里把ROM和RAM的大小设置正确,C8T6是64KB Flash和20KB RAM,别设大了否则会报错。
3. 核心外设配置详解
3.1 PWM电机控制配置
电机控制是智能车最核心的部分,我用的是TIM1的通道1和通道4来生成两路PWM信号。在CubeMX里配置定时器的时候,有几个参数特别重要:
预分频器(Prescaler)设为71,自动重载值(AutoReload)设为49,这样计算出来的PWM频率就是72MHz / (71+1) / (49+1) = 20kHz,正好适合大多数直流电机的驱动频率。如果频率太低电机会有啸叫声,太高了驱动芯片又可能响应不了。
输出模式要选PWM Mode 1,极性选Low,这样占空比越大输出高电平时间越长。记得使能自动重载预装载,这样修改占空比时就不

480

被折叠的 条评论
为什么被折叠?



