前言
在智能衣柜系统中,试用SG90旋转0°-180°,模拟衣柜的开关门,舵机正转开门,180°-0°反转模拟一个关门的现象。
一,SG90舵机
1.1SG90链接:
【淘宝】https://m.tb.cn/h.UjfPasG?tk=10CNdeeB4Il CZ0001 「SG90 9g舵机MG996R mg90s MG995模块马达遥控飞机航模9克360度180」
点击链接直接打开 或者 淘宝搜索直接打开
1.2SG90舵机
图:1.1.1SG90舵机图片
舵机是一种角度伺服的驱动器,使用于不断变换角度的控制系统,舵机可以接收单片机PWM信号,PWM周期为20ms,通过调整电平pwm不同的占空比,实现舵机不同角度的驱动,如下图所示
二,舵机----STM32CUBEMAX部分
2.1 时钟树配置
第一步:时钟树配置频率为72Mhz,挂载在APB1和APB2上的定时器频率也设置为72Mhz。
第二步:RCC时钟配置如下。
第三步:开启定时器3,时钟来源为内部时钟,使用PWM通道1驱动舵机
第四步:定时器基础配置如下所示,预分频计数值为720-1,重装载计数值为2000,pwm配置1000-1
数值参考以下公式:
计算过程,可以根据自己不同的定时器频率计算。
第六步:定时器配置好之后,可以靠芯片引脚为PA6。
三 ,软件部分---Keilv5代码部分
第一步:在main函数中调用HAL库函数,实现pwm初始化
代码如下:
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
第二步:在main函数中测试舵机不同占空比的选择角度
代码段:
printf("45\r\n");__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,50);HAL_Delay(1000);printf("90\r\n");__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,100);HAL_Delay(1000);printf("135\r\n");__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,150);HAL_Delay(1000);printf("180\r\n");__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,200);HAL_Delay(1000);printf("0\r\n");__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,250);HAL_Delay(1000);
四:测试
SG舵机接线说明:橙色线接信号线(PA6),红色线:接芯片3.3V/5V电源,棕色接GND注意电源线不要接反了。三根线是合并在一起的,测试时候不太方便,建议买一点公母杜邦线,把舵机的接口引出来好接线测试
sscom串口输出测试:
实际控制测试:
9d6204de08c013f3dd4a569b19bd03bf
五:总结
sg90舵机工作驱动频率为50mhz,定时器产生的20时钟周期,通过pwm调制高低电平实现不同的占空比,使其旋转不同角度。文章可能还是有点问题,希望大家多多交流指正。
说一下可能后面的步进电机部分不会很快发出来了,先把蓝牙模块和显示屏模块给更出来。公司项目有点忙,有点分身乏术。
对STM32单片机感兴趣的同学可以在b站搜索 up洋桃电子 ,观看stm32物联网入门30步,这个up说的比较通俗易哦。