完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
在这篇博客中,我讲解的是SG90的180°型号的舵机。其它型号的舵机也可以参考。
首先,舵机的控制方式是采用PWM方式进行控制的。在使用STM32对舵机进行控制时就需要STM32的引脚输出PWM信号,PWM信号可以通过定时器,delay延时函数等方式产生。 STM32控制SG90舵机其次,舵机的PWM控制信号是有一定的规律的。例如下图的SG90的180°舵机的0°和180°控制信号。 图中所示,当STM32引脚输入0.5ms的高电平和19.5ms的低电平时,舵机就可以转到0°位置。相应当输入2.5ms的高电平和17.5ms的低电平时,舵机就会转到180°位置。 如果要想控制舵机转到其它的位置,就需要配置好高电平和低电平在一个周期中的比例。(注意:高低电平需要连续发送) 实例: 我通过STM32F103C8T6来控制SG90的180°型号舵机。我使用的是delay延时函数产生PWM信号。 部分程序如下: case’1’: { delay_us(100); printf(“左转”); for(int i=0;i<2;i++) { c+=b; GPIO_SetBits(STEERPORT,STEER); delay_us(500+c); GPIO_ResetBits(STEERPORT,STEER); delay_us(19500-c); if(c==200) { printf(“停止”); GPIO_ResetBits(STEERPORT,STEER); break; } } break; } case’2’: { delay_us(100); printf(“右转”); for(int j=0;j<2;j++) { c-=b; GPIO_SetBits(STEERPORT,STEER); delay_us(500+c); GPIO_ResetBits(STEERPORT,STEER); delay_us(19500-c); if(c==0) { printf(“停止¹”); GPIO_ResetBits(STEERPORT,STEER); break; } } break; } 在程序中,我用到了static静态变量(就是程序中的变量c)。 可以通过串口发送’1’(控制舵机左转),‘2’(控制舵机右转)。(注意:每发送一次舵机只会转动一定的角度,如果想让舵机转动较大的角度可以通过多次发送指令完成(在串口的上位机软件中一般都有定时发送功能,可借助该功能完成多次发送)) |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1602 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1536 浏览 1 评论
967 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
680 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1579 浏览 2 评论
1860浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
640浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
513浏览 3评论
527浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
500浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 12:20 , Processed in 0.668263 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号