1. 认识你的舵机:SG90的工作原理
SG90舵机是嵌入式项目中非常常见的执行器件,价格便宜且控制简单,非常适合初学者入门。我第一次接触SG90时,就被它精准的角度控制能力吸引了。这种舵机内部有一个小型直流电机、减速齿轮组、电位器和控制电路。当你给舵机发送PWM信号时,内部的比较电路会将输入信号与电位器反馈的位置信号进行比较,然后驱动电机转动到指定位置。
SG90有三根线:红色接5V电源,棕色接地,橙色是信号线。这里有个容易踩坑的地方——舵机工作时电流可能达到几百毫安,所以千万不要直接从STM32的3.3V引脚取电,否则可能导致芯片复位或者舵机抖动。我建议使用外部5V电源,或者像很多开发者那样,使用ST-Link调试器上的5V输出引脚。
舵机的控制核心是PWM信号的脉宽。SG90要求50Hz的PWM信号,也就是周期20ms。在这个周期内,高电平的持续时间决定了舵机的角度:0.5ms对应0度,1.5ms对应90度,2.5ms对应180度。这个关系是线性的,所以我们可以很容易地通过计算脉宽来控制角度。
2. STM32CubeMX环境搭建与项目创建
开始之前,确保你已经安装了STM32CubeMX和Keil MDK(或者你喜欢的其他IDE)。我个人比较喜欢用VSCode配合PlatformIO,但为了教程的统一性,这里还是以Keil为例。
打开STM32CubeMX,点击"New Project",在芯片选择器中输入你的芯片型号,比如STM32F103C8T6。这款芯片是STM32中最受欢迎的入门型号,价格便宜且资源丰富。选中芯片后,你会看到一个引脚分配界面和时钟树配置界面。
首先配置时钟源。在"Pinout & Configuration"标签页的"System Core"中,找到RCC选项。将High Speed Clock (HSE)设置为Crystal/Ceramic Resonator,这样我们就可以使用外部8MHz晶振来获得更精确的时钟。如果你只是为了快速测试,也可以使用内部时钟(HSI),但精度会稍差一些。
接下来配置系统时钟。点击"Clock Configuration"标签,这里需要将系统时钟配置为72


707

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



