amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 11289|回复: 30

XXD 新西达 HW 30A 无刷电调 初始化求助

[复制链接]
发表于 2012-7-14 15:22:37 | 显示全部楼层 |阅读模式
小弟买了XXD 新西达 HW 30A 无刷电调, 想要用STM32来驱动。上电了之后,电调会响三下,然后就一直“滴,滴,滴”地响,每次间隔在2s左右。
上网查了说是需要初始化, 先把油门调制最低之后,保持一段时间后,调高油门。

而且查到到得航模标准貌似是 0.5 ms --- 1.5 ms之间的高电平来表示油门的大小。
于是写了下面的代码:

int main(void)
{
        u16 pwm_val;
        SystemInit();
        delay_init(72);                                         // 系统的频率为 72Mhz
        NVIC_Configuration();
        PWM_Init(2000,720-1);                         // 设置PWM波的周期为 20ms
        TIM_SetCompare2(TIM3, 50);                 // 设置占空比为 :50/2000 = 2.5 % ,高电平持续时间为0.5ms

        delay_ms(5000);                         // 延时 5 s
        while (1) {
                for (pwm_val = 50; pwm_val < 150; pwm_val++) { //  油门逐渐变大,步进为 10 us
                        TIM_SetCompare2(TIM3, pwm_val);
                        delay_ms(20);                                                                                                                       
                }
        }
}

但是电调只是一直在“滴、滴、滴“地响

于是改成显示高电平,
        TIM_SetCompare2(TIM3, 150);                 // 设置高电平持续时间为1.5ms

然后,电调通电,响了三声,再滴滴几下之后,就不再响了,但是也没有转动,这个是怎么回事,求指教
发表于 2012-7-14 16:01:09 | 显示全部楼层
好好看看电调说明书吧
刚开始是没有找到最小油门
后来是进入油门行程校准了
发表于 2012-7-14 16:11:09 | 显示全部楼层
兄弟你玩过航模的话就知道了,如果用航模用的接收机连接电调,出现这种情况,那一定是接电调的那个通道(油门)在最大位置或是油门通道信号设置反了。

你这情况是电调刚一上电接收到的就是最大油门信号,所以电调保护了不启动,怕伤人。这种状态下是可以校正油门行程的。

还有就是航模驱动信号电平宽度应该是1ms-2ms的。
 楼主| 发表于 2012-7-14 16:17:25 | 显示全部楼层
@_@ 发表于 2012-7-14 16:01
好好看看电调说明书吧
刚开始是没有找到最小油门
后来是进入油门行程校准了 ...

第一次玩这个,所以不太清楚,但是我在论坛上找到的一些资料,比如:
http://www.amobbs.com/thread-5484019-1-1.html
作者貌似也遇到了类似的问题,好像没有提到油门行程校准?
 楼主| 发表于 2012-7-14 16:20:47 | 显示全部楼层
huntermax110 发表于 2012-7-14 16:11
兄弟你玩过航模的话就知道了,如果用航模用的接收机连接电调,出现这种情况,那一定是接电调的那个通道(油 ...

以前没有玩过四轴,很多东西都不懂,

1ms——2ms这个也试着用了
        TIM_SetCompare2(TIM3, 100);                 // 设置高电平持续时间为1ms

        delay_ms(5000);                         // 延时 5 s
        while (1) {
                for (pwm_val = 100; pwm_val < 200; pwm_val++) { //  油门逐渐变大,步进为 10 us
                        TIM_SetCompare2(TIM3, pwm_val);
                        delay_ms(2000);                                                                                                                       
                }
        }

我先把STM32 的开发板打开之后,再连通电调的电源,这样的话,电调一开始接受到得应该是较低的油门吧,但是貌似还是没有变化
 楼主| 发表于 2012-7-14 18:20:23 | 显示全部楼层
经过各种测试之后,情况改变了,现在如果不给电调输入信号,电调才会滴滴地响,所以开始的时候,电调在响应该是信号太弱的问题?

查阅了说明书之后,发现应该是8KHz的PWM波,改了代码之后,输出 1ms ---- 2ms 之间的高电平的时候,电调不会再响(一直都不响), 但是也不会转动。

.....真心蛋疼。
发表于 2012-7-14 18:34:35 | 显示全部楼层
看我发的帖子有的,上电时pwm高电平不能在0.5 ms --- 1.5 ms之间,要低于0.5ms,这是为了防止电机上电就伤人
 楼主| 发表于 2012-7-14 19:52:07 | 显示全部楼层
weixinal 发表于 2012-7-14 18:34
看我发的帖子有的,上电时pwm高电平不能在0.5 ms --- 1.5 ms之间,要低于0.5ms,这是为了防止电机上电就伤 ...

你的帖子我先前看到了,也试过这样子做,但是如果这样子做就一直只是滴滴地响。

而且,一些地方说是 1ms---2ms,也有0.9ms --- 2.1ms的,还有你说的0.5ms --- 1.5 ms 的,好混乱
发表于 2012-7-14 19:58:57 | 显示全部楼层
你拿不准的话,可以从低了往上加啊,我现在已经可以驱动了,也是stm32不过掉进水里,电调完蛋了
 楼主| 发表于 2012-7-14 20:27:27 | 显示全部楼层
weixinal 发表于 2012-7-14 19:58
你拿不准的话,可以从低了往上加啊,我现在已经可以驱动了,也是stm32不过掉进水里,电调完蛋了 ...

从零开始也试过,但是还是不行。

请教一下,PWM的频率指什么?貌似这个会影响到电调的初始化?
 楼主| 发表于 2012-7-14 20:28:14 | 显示全部楼层
weixinal 发表于 2012-7-14 19:58
你拿不准的话,可以从低了往上加啊,我现在已经可以驱动了,也是stm32不过掉进水里,电调完蛋了 ...

可以看看你的代码吗?谢谢了
发表于 2012-7-14 20:40:57 | 显示全部楼层
zyfwong 发表于 2012-7-14 18:20
经过各种测试之后,情况改变了,现在如果不给电调输入信号,电调才会滴滴地响,所以开始的时候,电调在响应 ...

新西达电调好像没有正规的说明书,但你可以参考一下好赢电调的说明书(看附件)。

有几个问题请注意:
1. 电调油门行程校正(进入电调编程模式,电调根据输入的脉冲最大最小值来确定脉冲宽度与转速的关系);
2.输入脉冲正反向的问题(不同品牌遥控器输出不同,其实这个问题就是:2ms对应最小油门还是1ms对应最小油门?)
3.电调应该是上电先检测油门大小,油门不为0则保护,知道油门归零后才能正常启动。


以上只是关于航模的一些经验,实际信号还得楼主自己确认。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2012-7-14 21:15:56 | 显示全部楼层
zyfwong 发表于 2012-7-14 20:28
可以看看你的代码吗?谢谢了

电调的程序段我已经改掉了,你自己配置下timer的分频器,细调TIM_TimeBaseStructure.TIM_Period ,用示波器看周期或频率,再调TIM_OCInitStructure.TIM_Pulse调出占空比
发表于 2012-7-14 21:27:45 | 显示全部楼层
//when ARR=1020@72m,1ms(,高电平)==51(CCR),102==2ms
//when ARR=65535@72m,1ms==3276,6552==2ms
//舵机1600-8200对应0-180+度       
  TIM_TimeBaseStructure.TIM_Period = 65535;       //当定时器从0计数到999,即为1000次,为一个定时周期
  TIM_TimeBaseStructure.TIM_Prescaler =21;            //设置预分频:不预分频,即为36MHz
  TIM_TimeBaseStructure.TIM_ClockDivision = 1;        //设置时钟分频系数:不分频
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数模式
这是配置定时器的程序,72MHz主频下的,上面的注释你懂得
发表于 2012-7-14 21:33:19 | 显示全部楼层
最好买一个成品的电调调试器
几块钱一个
可以给电调输出油门信号

内部没拆开过,要么单片机,要么就NE555之类吧

然后搞个示波器,捕捉波形自己慢慢对比吧
 楼主| 发表于 2012-7-14 22:42:57 | 显示全部楼层
weixinal 发表于 2012-7-14 21:27
//when ARR=1020@72m,1ms(,高电平)==51(CCR),102==2ms
//when ARR=65535@72m,1ms==3276,6552==2ms
//舵机16 ...

改了代码之后,像这样子:

        TIM_TimeBaseStructure.TIM_Period = 160;  //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
        TIM_TimeBaseStructure.TIM_Prescaler = 9000-1;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

TIM3 是72MHz的,分频后的频率是  72MHz / 9000 = 8KHz ,PWM的周期还是 20ms, 这时候 逐渐改变 Pulse 的值,也就是占空比,发现 当 Pulse的值在 8 -- 16 之间的时候,(1ms -- 2ms)之间的时候,电调不会响了(超出这个范围也还是会响)。虽然不响,但是还是不会动,难道这个(就是8Khz) 也有关系的吗?
发表于 2012-7-14 23:34:11 | 显示全部楼层
zyfwong 发表于 2012-7-14 22:42
改了代码之后,像这样子:

        TIM_TimeBaseStructure.TIM_Period = 160;  //设置在下一个更新事件装入活动 ...

8k是定时器的计数源,160的arr,出来的还是20ms,50hz的方波,我算了你的参数,确实是1ms-2ms,电机不响了应该就不是pwm信号的问题了吧
 楼主| 发表于 2012-7-14 23:42:14 | 显示全部楼层
weixinal 发表于 2012-7-14 23:34
8k是定时器的计数源,160的arr,出来的还是20ms,50hz的方波,我算了你的参数,确实是1ms-2ms,电机不响 ...

不会是电调的问题吧,电调是刚刚买回来的,试了两个都是一样的情况,调试了几天了
发表于 2012-7-14 23:43:59 | 显示全部楼层
电调你供电电压多少
 楼主| 发表于 2012-7-14 23:47:41 | 显示全部楼层
weixinal 发表于 2012-7-14 23:43
电调你供电电压多少

用的电池是11.5V的,不过输出是多少还没有测过,我试试看
发表于 2012-7-14 23:50:24 | 显示全部楼层
zyfwong 发表于 2012-7-14 23:47
用的电池是11.5V的,不过输出是多少还没有测过,我试试看

你看我的回复了没有?
 楼主| 发表于 2012-7-14 23:53:35 | 显示全部楼层
zyfwong 发表于 2012-7-14 23:47
用的电池是11.5V的,不过输出是多少还没有测过,我试试看

用万用表测出的输出电压竟然是12.5V的,这个电池貌似坑爹了
 楼主| 发表于 2012-7-14 23:58:24 | 显示全部楼层
huntermax110 发表于 2012-7-14 23:50
你看我的回复了没有?

那份说明书看了,说明书上说,这种滴滴地情况是没有信号输入造成的

然后我把频率改成8KHz之后,就不会响了。

按照它的做法,先把油门放到最高(2ms),接通电源,123升调响了三声之后,再等到滴滴两声之后,把油门调到最低(1ms),然后就不响了,但是再给其它时间的高电平也没有反应(即不响,也不会转动),但是如果高电平时间超过了2.5ms之后,电调又会开始滴滴地响(低于0.9ms左右也会这样)
发表于 2012-7-15 00:01:48 | 显示全部楼层
zyfwong 发表于 2012-7-14 23:58
那份说明书看了,说明书上说,这种滴滴地情况是没有信号输入造成的

然后我把频率改成8KHz之后,就不会响 ...

在哪找你说的你已经做的相当透彻了,再不行的话,帮不上你了
 楼主| 发表于 2012-7-15 00:14:03 | 显示全部楼层
weixinal 发表于 2012-7-15 00:01
在哪找你说的你已经做的相当透彻了,再不行的话,帮不上你了

好吧,我在试试看,谢谢了
发表于 2012-7-15 00:32:34 | 显示全部楼层
zyfwong 发表于 2012-7-15 00:14
好吧,我在试试看,谢谢了

解决问题了别玩了分享下原因
 楼主| 发表于 2012-7-15 22:17:26 | 显示全部楼层
weixinal 发表于 2012-7-15 00:32
解决问题了别玩了分享下原因

找了好久,然后无意中找到一个地方说,是没有接地的原因
对电路什么的一窍不通,只是把控制信号的那条线连到了开发板上,所以就出现了这种诡异的问题。

电调输出的5V电源可以不接上,接地必须接,然后信号线接好之后,

按照先低电平,后高电平,就能够转起来了。。。。

谢谢坛友帮忙了
发表于 2012-7-15 23:44:26 | 显示全部楼层
zyfwong 发表于 2012-7-15 22:17
找了好久,然后无意中找到一个地方说,是没有接地的原因 。
对电路什么的一窍不通,只是把控制 ...

这个表情完全能表达出我此刻的心情,可真有你的啊,呵呵
发表于 2012-8-14 20:28:35 | 显示全部楼层
楼主用的是多少HZ的PWM波啊
发表于 2012-8-14 21:36:27 | 显示全部楼层
兄弟,你太坑爹了!
发表于 2018-12-28 09:05:46 | 显示全部楼层
请教大家,最近玩成品电调。这个XXD,带载,启动失败率大于50%, 怎么回事啊
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-5-21 16:06

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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