智能车制作

标题: 舵机只能单方向转 [打印本页]

作者: nzfz_2    时间: 2014-3-9 11:38
标题: 舵机只能单方向转
本帖最后由 nzfz_2 于 2014-3-9 11:41 编辑

用野火KL26单片机控制舵机,周期是20ms,也就是频率是50Hz,计算的中间占空比是7.5,但是无论怎样调占空比舵机只往一个方向转。求指教!!!

作者: .o烏龍茶o灬    时间: 2014-3-9 12:03
木有与单片机共地?
作者: 简单丹    时间: 2014-3-9 12:07
怎么可能?那一个方向转到底了怎么办? 难道舵机是360度旋转的?
作者: 张永超    时间: 2014-3-9 12:10
共地!
作者: andyxu    时间: 2014-3-9 12:25
不可能吧,一个固定的占空比肯定对应一个角度  你居中值校准没  
作者: nzfz_2    时间: 2014-3-9 14:41
andyxu 发表于 2014-3-9 12:25
不可能吧,一个固定的占空比肯定对应一个角度  你居中值校准没

校准不到中值,无论我调的比理论中值大还是小都向一个方向偏转。接线也都接好这,稳压模块输出的6V电压,信号PWM模块输入。

#include "common.h"
#include "include.h"

/*!
*  @brief      main函数
*  @since      v5.0
*  @note       TPM PWM 测试 (TPM 类似 K60 的 FTM)
*/
void main(void)
{
   
    tpm_pwm_init(TPM0, TPM_CH3,50,8);        //初始化 TPM PWM ,使用 TPM0_CH3 ,占空比为8      
                                                    // fire_port_cfg.h 里 配置 TPM0_CH3 对应为 PTE30
   while(1)
    {
#if 1
      DELAY_MS(500);
      tpm_pwm_duty(TPM0, TPM_CH3,5.5);     //设置占空比 为 30 / TPM0_PRECISON
      DELAY_MS(500);
     tpm_pwm_duty(TPM0, TPM_CH3,7.5);     //设置占空比 为 30 / TPM0_PRECISON
     DELAY_MS(700);
       tpm_pwm_duty(TPM0, TPM_CH3,8.5);     //设置占空比 为 30 / TPM0_PRECISON
#endif
    }
}


作者: nzfz_2    时间: 2014-3-9 14:46
.o烏龍茶o灬 发表于 2014-3-9 12:03
木有与单片机共地?

什么叫共地?我们舵机接的是稳压模块输出的6V电压,单片机只输出PWM信号。

作者: andyxu    时间: 2014-3-9 15:01
nzfz_2 发表于 2014-3-9 14:41
校准不到中值,无论我调的比理论中值大还是小都向一个方向偏转。接线也都接好这,稳压模块输出的6V电压, ...

ni你先用示波器看一下  输出波形跟自己写的程序一不一致    还有 tpm_pwm_duty(TPM0, TPM_CH3,5.5);     //设置占空比 为 30 / TPM0_PRECISON   这里能设置5.5吗?我的意思是一般寄存器不是只能是整型的

作者: .o烏龍茶o灬    时间: 2014-3-9 16:18
nzfz_2 发表于 2014-3-9 14:46
什么叫共地?我们舵机接的是稳压模块输出的6V电压,单片机只输出PWM信号。

单片机与舵机的地有没有相连接?简单的说就是你单片机和舵机是不是公用一个电池来供电?

作者: nzfz_2    时间: 2014-3-9 16:26
andyxu 发表于 2014-3-9 15:01
ni你先用示波器看一下  输出波形跟自己写的程序一不一致    还有 tpm_pwm_duty(TPM0, TPM_CH3,5.5);      ...

用示波器看波形正确,那个小数是占空比,应该能兼容,我改成整数试了试还是不行,我把程序改成下面样子,一按开关只轻轻转一下就不动了。

uint8 i;
    uint32 duty;
    tpm_pwm_init(TPM0, TPM_CH3,100,duty);        //初始化 TPM PWM ,使用 TPM0_CH3 ,占空比为 duty/ TPM0_PRECISON
   
   
   
     while(1)
     {
      for(i = 93;i<100;i++)
        {
             tpm_pwm_duty( TPM0, TPM_CH3,100-i);
             DELAY_MS(500);
        }
        for(i=99;i>92;i--)
         {
             tpm_pwm_duty(TPM0, TPM_CH3,100-i);
             DELAY_MS(500);
   
         }
     }

作者: nzfz_2    时间: 2014-3-9 16:28
.o烏龍茶o灬 发表于 2014-3-9 16:18
单片机与舵机的地有没有相连接?简单的说就是你单片机和舵机是不是公用一个电池来供电?

不是同一个电源,单片机用电脑USB供电,舵机用稳压模块。这样不行吗?

作者: .o烏龍茶o灬    时间: 2014-3-9 16:40
nzfz_2 发表于 2014-3-9 16:28
不是同一个电源,单片机用电脑USB供电,舵机用稳压模块。这样不行吗?

那就没共地了,这样单片机与舵机就没有参考零电位,PWM就没效果了,你要接条线把两个地连起来


作者: virus    时间: 2014-3-9 18:39
你在装舵机的时候没有把舵机调到中间的位置吧  自己去调一下,正转到底再反转90°,不然可能你给的角度它打不了,虽说你没上电的时候可以转动舵机。
作者: nzfz_2    时间: 2014-3-9 19:05
.o烏龍茶o灬 发表于 2014-3-9 16:40
那就没共地了,这样单片机与舵机就没有参考零电位,PWM就没效果了,你要接条线把两个地连起来

好了,就按你说的把单片机和舵机公用一个电池来供电,多谢了!
作者: nzfz_2    时间: 2014-3-9 19:30
nzfz_2 发表于 2014-3-9 16:26
用示波器看波形正确,那个小数是占空比,应该能兼容,我改成整数试了试还是不行,我把程序改成下面样子, ...

谢谢啦!我调好了。

作者: vip101vip    时间: 2014-3-10 08:59
.o烏龍茶o灬 发表于 2014-3-9 16:40
那就没共地了,这样单片机与舵机就没有参考零电位,PWM就没效果了,你要接条线把两个地连起来

正解

作者: ★相★离    时间: 2014-3-19 20:29
请问你解决了吗、?我们也是这个问题啊?
作者: nzfz_2    时间: 2014-3-19 20:37
★相★离 发表于 2014-3-19 20:29
请问你解决了吗、?我们也是这个问题啊?

解决了,把单片机的GND和电源模块的 地 接在一起。
作者: ★相★离    时间: 2014-3-20 18:12
就是这样昨晚试了成功啊!谢啦




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2