找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于STM32驱动MG995舵机,请大神指点,纠结好长时间了,不知道问题出在哪?

查看数: 9753 | 评论数: 14 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-6-11 17:15

正文摘要:

TIM1_PWM_Init(4999,287);//50hz          while(1)          {                   ...

回复

ID:599517 发表于 2019-8-12 22:47
你用示波器量一下测人高电平然后用手挥看看有没有高低电平变更!
ID:158956 发表于 2019-8-12 15:12
学习一下,楼主搞出来了吗
ID:598763 发表于 2019-8-10 13:53
我也遇到过类似问题,没解决,也来学习一下
ID:542954 发表于 2019-8-8 09:55
我在51上面做的时候曾遇到过相同的问题,红外模块触发中断之后可能打乱了pwm的输出周期,可能需要调整的是外部中断和pwm生成的次序
ID:582082 发表于 2019-8-6 09:45
MG995舵机的功率较大,只用单片机的IO口是无法驱动的,必须加一个电机驱动模块才行。
即:舵机的电源口要与电机驱动模块相连接,控制口与单片机连接,就可以控制MG995舵机了。
ID:328753 发表于 2019-8-5 21:15
舵机的信号线加电阻连串口,抱歉说错了
ID:328753 发表于 2019-8-5 21:14
都是大神,膜拜了!也可以在电源线上加一个电阻
ID:406408 发表于 2018-10-10 10:57
都是大神,膜拜了!
ID:229016 发表于 2018-6-12 21:08
HC6800-ES-V2.0 发表于 2018-6-12 07:34
MG995舵机的功率较大,只用单片机的IO口是无法驱动的,必须加一个电机驱动模块才行。
即:舵机的电源口要 ...

TIM1_PWM_Init(4999,287);//50hz
         while(1)
         {
                 
                 delay_ms(100);
                 if(dir) t=t+20;
                 else t=t-20;
                 if(t>660)dir=0;
                 if(t==140)dir=1;
//                 printf("t:%d\n",t);
                  TIM_SetCompare1(TIM1,t);
         }
}
这段代码就可以使舵机来回转,pwm波形正确20ms的周期,高电平在0.5毫秒与2.5毫秒来回循环,但是下面这段程序就连pwm都是乱的,连周期都在变
   delay_ms(100);
                         dianpin= GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1);//红外检测是否有人,有人输出高电平
                        printf("%d\n",dianpin);用串口调试,观看对着人与不对着人的电平高低变化
                         if(!dianpin)//没检测到人,让舵机转动检测
                         {
                         delay_ms(20000);
                                 
                         if(dir) t=t+20;
                         else t=t-20;
                         if(t>660) dir=0;        
                         if(t==140)dir=1;               
                        TIM_SetCompare1(TIM1,t);
                        }
                          else//检测到人,舵机在原来的位置停止
                                {
                                delay_ms(1000);
                                TIM_SetCompare1(TIM1,t);
                                }
                                 printf("t:%d\n ",t); //用串口调试观察t的值
                                }         
ID:229016 发表于 2018-6-12 21:04
HC6800-ES-V2.0 发表于 2018-6-12 07:34
MG995舵机的功率较大,只用单片机的IO口是无法驱动的,必须加一个电机驱动模块才行。
即:舵机的电源口要 ...

我单独用单片机可以驱动它正反转,只是加了红外后连pwm波形都是乱的
ID:229016 发表于 2018-6-12 21:03
zsyzdx 发表于 2018-6-11 21:07
你检测人和没检测到人是怎么做的?会不会是你检测人的波形有问题?

检测到人理应是让舵机定住不动,一旦人离开舵机红外没检测到人的话,开始转动;红外检测到人直接会给单片机一个3.3v高电平
ID:164602 发表于 2018-6-12 07:34
MG995舵机的功率较大,只用单片机的IO口是无法驱动的,必须加一个电机驱动模块才行。
即:舵机的电源口要与电机驱动模块相连接,控制口与单片机连接,就可以控制MG995舵机了。
ID:320306 发表于 2018-6-11 21:07
你检测人和没检测到人是怎么做的?会不会是你检测人的波形有问题?
ID:349741 发表于 2018-6-11 19:45
支持下,帮顶

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表