中级会员
- 积分
- 491
- 威望
- 225
- 贡献
- 20
- 兑换币
- 0
- 注册时间
- 2009-1-16
- 在线时间
- 123 小时
|
本帖最后由 zf12862177 于 2009-7-3 22:50 编辑
首先把舵机拆下来。一定要拆下来。不能安装在车上。不然不好调整。然后编写一个程序。
让舵机从占空比0加到满。注意舵机的转向就好了。。记下你需要的舵机偏转最左值和最右值。以及中值。
智能车的舵机的转角是0-200度
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
void PllInit()//锁相环初始化
{
CLKSEL=0x00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR=(4|SYNR_VCOFRQ0_MASK| SYNR_VCOFRQ1_MASK);
REFDV=(1|REFDV_REFFRQ1_MASK);
POSTDIV=0; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=160MHz;
_asm(nop); //BUS CLOCK=80M
_asm(nop);
_asm(nop);
_asm(nop);
while (CRGFLG_LOCK==0); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}
void Pwminitial(void){
//开1,3通道为速度控制,5为方向控制
WME=0x00;//关闭所有pwm输出
PWMPRCLK=0x00;//pwm预分频为总线时钟,A,B均为总线时钟
PWMSCLA=0x03;//pwm a 时钟进一步分频为10M ClockSA=ClockA/(2×pwmsclA)
PWMCTL=(PWMCTL_CON01_MASK|PWMCTL_CON23_MASK|PWMCTL_CON45_MASK);//通道连级,1,3通道输出速度,5通道输出舵机
PWMCLK=(PWMCLK_PCLK5_MASK);//1,3选clockA,B, 5选clocksB
//PWMSCLA=0X7D;
//PWMSCLB=0X7D;
PWMPOL=0xff; //在周期开始时,全部为高电平,意味着值越大,能量越高
PWMCAE=0x00; //pwm全部左对齐
//占空比初始化
PWMPER01=10000; //周期为100
PWMDTY01=3000;
PWMPER23=10000; //周期为100
PWMDTY23=0;
PWMPER45=60000; //周期为100
PWMDTY45=mid_derection;
PWME=(PWME_PWME1_MASK|PWME_PWME3_MASK|PWME_PWME5_MASK);
}
void main(){
unsigned int i,j,k;
PllInit()
Pwminitial();
PWMDTY45=0;
for(i=0; i<60000; i++){
PWMDTY45=PWMDTY45+1;//占空比增加 改变后面的数字可以改变占空比变化快慢
for(j=0;j<40; j++){//延时程序
for(k=0; k<j;k++){
asm nop;
asm nop;
}
}
}
}
程序不要直接拷贝。因为cw直接拷贝网页文字不行
这个程序测试舵机的。频率好像是100hz,是比较适合智能车的
如果你的舵机从车上拆下来 信号线接单片机PWM5脚后不能逆时针转200度那么就表示你的舵机坏了。
坏了的话,可以先把舵机拆开往里面上高级润滑油。然后重新试下。如果上了润滑油还不行的话,那么就是舵机坏了。但是一般情况下舵机不容易坏 |
|