STM32驱动SG90舵机
- 关于SG90舵机
- SG90转动角度与占空比的关系
- 驱动SG90舵机代码
- ①确定控制引脚
- ②写代码
- SG90舵机正常驱动现象
- 总结
关于SG90舵机
SG90是一种小型伺服电机,通常用于模型制作和小型机械应用中:
问题 | 答案 |
---|---|
SG90的工作电压是多少 | SG90的工作电压通常为3V至7.2V |
SG90最大扭矩是多少 | SG90的最大扭矩约为1.5kg/cm |
SG90的工作温度范围是多少 | SG90的工作温度范围通常为0°C至55°C |
SG90的控制方式是什么 | SG90的控制方式通常为PWM控制,可以使用Arduino,STM32等微控制器进行控制 |
SG90可以旋转多少度 | SG90可以旋转约180度 |
SG90的尺寸是多少 | SG90的尺寸约为23mm x 12.2mm x 29mm |
SG90转动角度与占空比的关系
SG90舵机通常使用50赫兹(Hz)的PWM信号进行控制,这意味着PWM周期为20毫秒(ms),每个周期内包含50个PWM脉冲。每个脉冲的宽度应该在0.5毫秒(ms)到2.5毫秒(ms)之间,对应的脉冲占空比为2.5%到12.5%。具体的PWM频率和占空比范围可能会因舵机型号和制造商而异,因此建议在使用之前查看SG90舵机的数据手册以获取准确的规格参数。
角度 | 占空比 |
---|---|
0 | 2.5% |
45 | 5% |
90 | 7.5% |
135 | 10% |
180 | 12.5% |
驱动SG90舵机代码
①确定控制引脚
将舵机的控制引脚连接到您的微控制器或电路板上的数字引脚。通常,您可以使用STM32或者Arduino或树莓派等单片机控制舵机。
②写代码
下面展示一些 内联代码片
。
void SETPWM(uint8_t flag)
{
switch(flag)
{
case 1:
if(duty>=150)
{
while(duty!=200)
{
TIM_SetCompare3(TIM1, duty+=1);//90-135度
delay_ms(10);
}
}
break;
case 2:
if(duty>=150)
{
while(duty!=150)
{
TIM_SetCompare3(TIM1, duty-=1);//135-90度
delay_ms(10);
}
}
break;
case 3:
if(duty>=100)
{
while(duty!=150)
{
TIM_SetCompare3(TIM1, duty+=1);//45-90度
delay_ms(10);
}
}
break;
case 4:
if(duty>=100)
{
while(duty!=100)
{
TIM_SetCompare3(TIM1, duty-=1);//90-45度
delay_ms(10);
}
}
break;
}
}
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
/* 高级定时器初始化 */
ADVANCE_TIM_Init();
TIM_SetCompare3(TIM1,duty); //初始化为90度方向
while(1)
{
SETPWM(1);//90-135度
SETPWM(2);//135-90度
SETPWM(4);//90-45度
SETPWM(3);//45-90度
}
}
/*********************************************END OF FILE**********************/
SG90舵机正常驱动现象
正确驱动舵机后可以看到舵机呈现45-135度左右晃头现象!
总结
在平时的DIY小车或者其他的DIY需要用到舵机的地方都可以采取此方式驱动,博文中仅贴出相关功能代码,需要源代码的可以留言邮箱获取哦,长期发布电子相关文章,喜欢的点个关注吧~~