智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1324|回复: 8
打印 上一主题 下一主题

为什么我的舵机转不到90度 虽然在车子上用不上90度 我想弄明白这是为什么

[复制链接]

1

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
41
威望
27
贡献
12
兑换币
14
注册时间
2013-12-20
在线时间
1 小时
跳转到指定楼层
1#
发表于 2014-1-3 22:41:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求解释:程序如下
/***************************************************************************************
功能说明:MC9S128----舵机控制
使用说明:实现通道3(PTP3)输出频率为50HZ的方波,用示波器观察。按键PTH3实现舵机左转45度
          按键PTH4实现舵机右转45度
程序设计:重庆机电职业技术学院车辆工程系汽车电子实验室
设计时间:2014年1月3日
***************************************************************************************/
#include <hidef.h>     /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include <mc9s12xs128.h>    /* derivative information */

/***************************************************************************************
函数名称?void setbusclk_40M(void)
功能简介:设置总线频率40MHz,晶振频率16MHz
入口参数:无
出口参数:无
***************************************************************************************/
void setbusclk_40M(void)
{
CLKSEL_PLLSEL=0;                      //不使能锁相环时钟
PLLCTL_PLLON=1;                       //锁相环电路允许
SYNR=0XC0|0x04;                       //时钟合成寄存器
                                       //VCO_clock=2*osc_clock*(1+SYNR)/(1+REFDV)=80MHz
                                       //VCOFRQ[1:0]=1:1,代表VCO_clock在80~160MHz之间
REFDV=0X80|0X01;                      //VCO_CLOCK=2*osc_clock*(1+SYNR)/(1+REFDV)=80MHz
                                       //REF_clock=osc_clock/(REFDV+1)=16/(1+1)=8MHz
                                       //REFFRQ[1:0]=1:0,因为参考时钟在6~12MHz之间
POSTDIV=0X00;                         //VOC_clock=PLL_clock
                                       //F(bus)=F(pll)/2
_asm(nop);
_asm(nop);                            //短暂延时,等待时钟频率稳定
while(!(CRGFLG_LOCK==1))              //时钟频率已稳定,锁相环频率锁定
{
   ;
}
CLKSEL_PLLSEL=1;                      // 使能锁相环
}
/***************************************************************************************
函数名称?void PWM_int(void)
功能简介:设置PWM模块初始化    开始输出高电平   左对齐   
          50HZ频率
入口参数:无
出口参数:无
***************************************************************************************/
//---------------------PWM通道3初始化程序-------------------//
void PWM_Init(void)
{
PWME_PWME3=0x00;                      // PWW is disabled                 禁止            
PWMPRCLK=0x20;                        // 0b0011 0011 A=B=40M/4=10M       时钟预分频寄存器设置
PWMSCLB=100;                          // SB=B/2/125=5000hz               时钟设置
PWMCTL=0x20;                          // 通道2,3级联                     控制寄存器设置                              
PWMCLK_PCLK3=1;                       // PWM3-----SB                      时钟源的选择
PWMPOL_PPOL3=1;                       // 开始输出高电平                  极性设置
PWMCAE_CAE3=0;                        // 左对齐                          对齐方式设置
PWMPER23=1000;                        // Frequency=SB/100=50             周期寄存器设置
PWMDTY23=75;                          // Duty cycle = 50%               占空比寄存器设置
PWME_PWME3=1;                         // enable                          使能
}
void main()
{
  DDRH=0X00;
  PTH=0XFF;
  setbusclk_40M();
  PWM_Init();
while(1)
{
    switch(PTH)
    {
      case 0XF7WMDTY3=50;  break;     //左转45度
      case 0XEF:PWMDTY3=100; break;     //右转45度*/
      case 0xfb:PWMDTY3=25;  break;     //左转90度
      case 0xdf:PWMDTY3=125; break;     //右转90度
      case 0x7f:PWMDTY3=75;  break;     //舵机回正
    }
}
}

93

主题

1166

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7879

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章论坛骨干奖章

QQ
威望
4108
贡献
2161
兑换币
2705
注册时间
2013-8-14
在线时间
805 小时
2#
发表于 2014-1-3 23:10:24 | 只看该作者
。。。。。  看看说明吧。
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
41
威望
27
贡献
12
兑换币
14
注册时间
2013-12-20
在线时间
1 小时
3#
 楼主| 发表于 2014-1-3 23:20:03 | 只看该作者
头上两只角 发表于 2014-1-3 23:10
。。。。。  看看说明吧。

看过了   脉冲为1.5ms时就是-90度  2.5ms时就是+90度   我觉得我的算法没问题   周期用示波器测出来也 是20ms
就是不能实现90度   我实在不知道为何   书也看了
回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1247
威望
698
贡献
385
兑换币
359
注册时间
2012-7-18
在线时间
82 小时
4#
发表于 2014-1-4 09:38:48 | 只看该作者
是不是机械上卡住了?
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
41
威望
27
贡献
12
兑换币
14
注册时间
2013-12-20
在线时间
1 小时
5#
 楼主| 发表于 2014-1-4 09:53:16 | 只看该作者
wzp1992 发表于 2014-1-4 09:38
是不是机械上卡住了?

应该不是卡住了吧    压根一点都没有反应   转45度的时候正常      
回复 支持 反对

使用道具 举报

8

主题

427

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3745

优秀会员奖章活跃会员奖章

威望
1724
贡献
1033
兑换币
1170
注册时间
2013-2-1
在线时间
494 小时
6#
发表于 2014-1-4 13:28:47 | 只看该作者
为什么不用级联输出,23通道一起给总比3单独给精度高
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
41
威望
27
贡献
12
兑换币
14
注册时间
2013-12-20
在线时间
1 小时
7#
 楼主| 发表于 2014-1-4 13:48:30 | 只看该作者
liningbo888 发表于 2014-1-4 13:28
为什么不用级联输出,23通道一起给总比3单独给精度高

感谢你的回答  我明白你的意思  这个是我的大意     我照你的改成了23通道   效果还是一样的啊
回复 支持 反对

使用道具 举报

8

主题

427

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3745

优秀会员奖章活跃会员奖章

威望
1724
贡献
1033
兑换币
1170
注册时间
2013-2-1
在线时间
494 小时
8#
发表于 2014-1-4 13:59:17 | 只看该作者
Poised 发表于 2014-1-4 13:48
感谢你的回答  我明白你的意思  这个是我的大意     我照你的改成了23通道   效果还是一样的啊

感觉还是你的精度设置的不对,要是正常双通道合并输出,周期至少可以10000以上,现在周期精度都不够舵机控制精确
回复 支持 反对

使用道具 举报

24

主题

251

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3743

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
1825
贡献
1052
兑换币
1036
注册时间
2011-10-2
在线时间
433 小时
9#
发表于 2014-1-5 15:50:11 | 只看该作者
那个1.5ms不是精确的,我看3010舵机说明书上是1520us
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-30 12:25 , Processed in 0.064657 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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