1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
舵机是用PWM波控制的,学完PWM就可以简单的控制舵机啦。
我用的是stm32c8t6单片机,高级定时器TIM1_CH1,使用通用定时器也行,大同小异,结果都一样。定时器部分的知识,代码网上都有,我这里不再赘述。 开始之前我们先了解一下舵机的特点:①舵机的确是有顺时针,逆时针转动,但是舵机不需要知道原来的角度位置,只要有新的PWM信号,该信号的角度是多少,它就会转到多少度(百度网友的回答)。 ②舵机需要MCU产生一个20ms(即50Hz)的脉冲信号。在这个信号中,0.5ms对应0度,1.0ms对应45度,1.5ms对应90度,2.0ms对应135度,2.5ms对应180度。 程序配置: PERIOD - 199 PSC - 7199 PULSE - 200 main.c程序如下: while( 1 ) { //顺时针:先从0度转到45度位置,然后回到0度位置,再转到90度的位置, //逆时针:在90度位置逆时针转45度,再回到90度的位置,再逆时针转90度,回到起点。 TIM_SetCompare1(TIM1, 195); //0度位置 SysTick_Delay_ms(3000); TIM_SetCompare1(TIM1, 190); //45度位置 SysTick_Delay_ms(3000); TIM_SetCompare1(TIM1, 195); //0度位置 SysTick_Delay_ms(3000); TIM_SetCompare1(TIM1, 185); //90度位置 SysTick_Delay_ms(3000); TIM_SetCompare1(TIM1, 190); SysTick_Delay_ms(3000); TIM_SetCompare1(TIM1, 185); SysTick_Delay_ms(3000); TIM_SetCompare1(TIM1, 195); } 调用 TIM_SetCompare1(TIM1, 195)这个函数就可以输出相应的PWM波了。 有一个小插曲:我的单片机用Stlink下载不进去,经同学的帮助,原来串口也可以下载。串口上分别有5V,VCC,3V3,TXD,RXD,GND.其中,TXD连接单片机的USART1的RXD引脚,即PA9,RXD连接TXD引脚,即PA10。另外下载时要把Boot0拉高,而Boot1拉低。当执行程序时,要把Boot0拉低,Boot1依然是低电位。执行程序时有时还要按一下复位键才会执行程序。 |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9055 浏览 16 评论
4086 浏览 18 评论
1174浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 18:02 , Processed in 1.455244 second(s), Total 78, Slave 59 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号