OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2794|回复: 13

舵机动不了

[复制链接]

1

主题

8

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-12-1
在线时间
2 小时
发表于 2017-12-1 17:41:03 | 显示全部楼层 |阅读模式
1金钱
求助大神,弄了三天了动不了,外接5v的电源给舵机,开发板是接的USB口,开发板的PA8输出PWM给舵机信号线
用的历程里面的PWM输出实验,就主函数改变了空占比
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"

int main(void)
{       
        u16 led0pwmval=499;   
        delay_init();                     //延时函数初始化          
        LED_Init();                          //初始化与LED连接的硬件接口
        TIM1_PWM_Init(9999,143);//不分频。PWM频率=72000/(899+1)=80Khz
           while(1)
        {
                delay_ms(100);                                                     
                TIM_SetCompare1(TIM1,led0pwmval);          
        }
}

最佳答案

查看完整内容[请看2#楼]

两块板之间有没共地,好像一个电池 一个电脑,没看到共地线
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-12-1 17:41:04 | 显示全部楼层
两块板之间有没共地,好像一个电池 一个电脑,没看到共地线
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-12-1
在线时间
2 小时
 楼主| 发表于 2017-12-1 17:42:56 | 显示全部楼层
这是用的历程里面的pwm文件
void TIM1_PWM_Init(u16 arr,u16 psc)
{  
         GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);//
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);  //使能GPIO外设时钟使能
                                                                                    

   //设置该引脚为复用输出功能,输出TIM1 CH1的PWM脉冲波形
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //TIM_CH1
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

       
        TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值         80K
        TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值  不分频
        TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
        TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位


        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
        TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
        TIM_OC1Init(TIM1, &TIM_OCInitStructure);  //根据TIM_OCInitStruct中指定的参数初始化外设TIMx

  TIM_CtrlPWMOutputs(TIM1,ENABLE);        //MOE 主输出使能       

        TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);  //CH1预装载使能         
       
        TIM_ARRPreloadConfig(TIM1, ENABLE); //使能TIMx在ARR上的预装载寄存器
       
        TIM_Cmd(TIM1, ENABLE);  //使能TIM1

   
}
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-12-1
在线时间
2 小时
 楼主| 发表于 2017-12-1 17:49:50 | 显示全部楼层
这是连接的图,舵机电源和地线接的稳压模块的5V,信号线接的PA8口
235438863163090278.jpg
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2017-12-1 18:09:37 | 显示全部楼层
舵机接收的PWM信号周期一般是20ms,相当于控制频率为50Hz,并且高电平时间在在1ms~2ms之间,这个时间和舵机的舵臂所在的角度为一一对应的关系。

你程序中计算的参数也不正确啊,比50Hz多一些。

建议先尝试先PA8接LED能否做出呼吸灯效果,然后再接上舵机找问题。
十六进制带我飞。
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2017-12-1 18:10:03 | 显示全部楼层
舵机接收的PWM信号周期一般是20ms,相当于控制频率为50Hz,并且高电平时间在在1ms~2ms之间,这个时间和舵机的舵臂所在的角度为一一对应的关系。

你程序中计算的参数也不正确啊,比50Hz多一些。

建议先尝试先PA8接LED能否做出呼吸灯效果,然后再接上舵机找问题。

可参考:
http://blog.csdn.net/Wekic/article/details/51761525

十六进制带我飞。
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-12-1
在线时间
2 小时
 楼主| 发表于 2017-12-1 19:31:35 | 显示全部楼层
DreamWaterPro 发表于 2017-12-1 18:10
舵机接收的PWM信号周期一般是20ms,相当于控制频率为50Hz,并且高电平时间在在1ms~2ms之间,这个时间和舵机 ...

你好,(1+9999)*(1+143)/72000000=50hz啊
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-12-1
在线时间
2 小时
 楼主| 发表于 2017-12-1 22:04:25 | 显示全部楼层
找到问题了,稳压模块接触不好,然后又有了新的问题,while循环里面什么都没写舵机居然乱动
回复

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-12-1 22:25:00 | 显示全部楼层
按4楼的把脉宽设置成0.5ms-2.5ms
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2017-12-2 09:39:50 | 显示全部楼层
dadarou 发表于 2017-12-1 19:31
你好,(1+9999)*(1+143)/72000000=50hz啊

啊不好意思是我自己算错了= =

另外参考9楼,确实从你的图上看的话,由于舵机和开发板没有共地,会导致你所说的舵机乱抖动的现象。
十六进制带我飞。
回复

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-12-2 12:42:44 | 显示全部楼层
再看看舵机是不是坏了。
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-12-1
在线时间
2 小时
 楼主| 发表于 2017-12-2 21:23:39 | 显示全部楼层
xdzhang 发表于 2017-12-1 22:25
按4楼的把脉宽设置成0.5ms-2.5ms

谢谢问题都解决了,非常感谢
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-12-1
在线时间
2 小时
 楼主| 发表于 2017-12-2 21:24:12 | 显示全部楼层
DreamWaterPro 发表于 2017-12-2 09:39
啊不好意思是我自己算错了= =

另外参考9楼,确实从你的图上看的话,由于舵机和开发板没有共地,会导致 ...

谢谢啦
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-12-1
在线时间
2 小时
 楼主| 发表于 2017-12-2 21:25:20 | 显示全部楼层
DongInker 发表于 2017-12-1 17:41
两块板之间有没共地,好像一个电池 一个电脑,没看到共地线

谢谢你的帮助,我的问题才顺利解决了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 06:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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