完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本章将介绍使用stm32Cubemx软件配置PWM来控制SG90舵机角度。
一、SG90角度与PWM转换关系 舵机参数:f=50hz,t=20ms 根据选用的SG90参数,我们需要给出周期为20ms,其中高电平时间为 0.5ms-2.5ms的信号 0.5ms-------------0度; 2.5% 1.0ms------------45度; 5.0% 1.5ms------------90度; 7.5% 2.0ms-----------135度; 10.0% 2.5ms-----------180度; 12.5% 二、Cubemx参数配置 1、时钟配置 2、定时器配置PWM输出设置 根据SG90的参数,我们需要设置PWM输出一个周期时间为20ms,初始值为0.5ms高电平的信号。 计算方法:Timer定时器时钟我们设置为240Mhz,这里我们将预分频设置为239,则一个周期为240Mhz/(239+1)=1Mhz(即1us),所以20ms的周期我们需要计数20000-1=19999个填入Counter Period参数中。 另外,我们还需要一个默认脉冲宽度为0.5ms的,0.5/20*20000=500 其他设置如下图所示: 三、MDK代码修改与运行 1.PWM与SG90转换角度转换函数 方便实验我们将所需要的角度与PWM计数值对应关系封装成一个函数。只需要输入我们所需要的角度和相关定时器参数即可。 代码如下(示例): //设置SG90为参数范围内(0~180°)任意度数 /* * htim:要设置的定时器句柄 * Channel:PWM输出通道 * countPeriod:pWM一个周期计数值,这里为20000 * CycleTime:一个周期多少ms,这里为20 * */ void Set_SG90_angle(TIM_HandleTypeDef * htim,uint32_t Channel,uint8_t angle,uint32_t countPeriod,uint32_t CycleTime) { uint16_t compare_value=0; if(angle<=180) { //角度转化为数值 compare_value=0.5*countPeriod/CycleTime+angle*countPeriod/CycleTime/90; __HAL_TIM_SET_COMPARE(htim, Channel, compare_value); } } 2.实验现象 这里在主函数增加了按键扫描通过按键控制SG90正反转180°。 另外还增加了串口printf函数,打印SG90旋转时的角度变化。 代码如下(示例): key=KEYPRESS(); //按键 if(key==1)//按键1按下SG90从0°旋转到180° { for(u8 i=0;i<180;i++)//从0到180°递增 { Set_SG90_angle(&htim5,TIM_CHANNEL_1,i,20000,20); printf("SG90角度:%d°",i); HAL_Delay(5); } } if(key==2)//按键2按下SG90从180°旋转到0° { for(u8 j=180;j>0;j--)//从180°到0°递减 { Set_SG90_angle(&htim5,TIM_CHANNEL_1,j,20000,20); printf("SG90角度:%d°",j); HAL_Delay(5); } } 可以看到按键按下SG90按照我们预期的动作变化。实验成功。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
568浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:20 , Processed in 0.788637 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号