xuwenhua625 发表于 2012-10-20 17:46:51

求助:用arduino控制无刷电机的问题

这个程序用电位器控制无刷电机转速,实验中为电机什么唧唧响,不转,,求大神帮助
#include <Servo.h>
Servo myservo;
int potpin = A0;
int val;   
void setup()
        {
          myservo.attach(9,1000,2000);
          delay(2500);
          myservo.writeMicroseconds(1000);
          delay(2000);
        }
void loop()
        {
          val = analogRead(potpin);
          val = map(val, 0, 1023, 0, 179);
          myservo.write(val);
          delay(15);
       }

dragonufo 发表于 2012-10-20 23:57:42

电压太小了吧

micro_听海 发表于 2012-11-18 17:14:52

你确定了解无刷电机?无刷电机与舵机,有刷电机区别很大,控制较为复杂。靠上面的几句程序别指望能让无刷电机转动。

小政哥 发表于 2013-1-12 12:19:02

用arduino里面的舵机控制函数试试看

小政哥 发表于 2013-1-12 12:19:32

要带电调的哦

金刚他大哥 发表于 2013-1-24 02:59:30

对 要加电调还要编一个 PWM 的函数当然使arduino 本身的 analogwrite 也可以

laji3865689 发表于 2013-3-16 07:40:06

micro_听海 发表于 2012-11-18 17:14 static/image/common/back.gif
你确定了解无刷电机?无刷电机与舵机,有刷电机区别很大,控制较为复杂。靠上面的几句程序别指望能让无刷电 ...

楼主没说清楚,他用了无刷电调,信号和控制舵机的一样。
几句程序有什么问题,主要内容都包括在库里了,servo库有几千行代码,还不够驱动无刷?

laji3865689 发表于 2013-3-16 07:40:57

小政哥 发表于 2013-1-12 12:19 static/image/common/back.gif
用arduino里面的舵机控制函数试试看

本来就是用了舵机控制函数:
#include <Servo.h>
Servo myservo;

laji3865689 发表于 2013-3-16 07:45:14

我来告诉楼主什么问题:
99%的无刷电调,接电后都会先检测油门信号,如果不是0的话就不会正常启动电机,而是唧唧响报警。
所以,setup那里应该给出一个0.5ms/20ms的PWM信号,延迟几秒,让电调检测。

dion0000 发表于 2013-3-26 09:36:09

拨一下试试

xuwenhua625 发表于 2013-3-27 20:05:42

laji3865689 发表于 2013-3-16 07:45 static/image/common/back.gif
我来告诉楼主什么问题:
99%的无刷电调,接电后都会先检测油门信号,如果不是0的话就不会正常启动电机,而 ...

myservo.writeMicroseconds(500);
delay(5000);
这样对吧?

软件-蹄飞 发表于 2013-4-24 00:46:52

这方面,用arduino控制无刷电机我已近做出来了。用Servo.h库可以控制。9楼的说的对,电调是要自检的,只有通过了才能控制无刷电机,好盈的电调是可以编程的,你可以写一个自检的程序来初始化电调,也可以用用模拟口读取电位器的阻值来模拟航模遥控器
控制电调的步骤是:
(1)初始化:如控制舵机一样调节脉宽为20ms,即控制舵机角度为180°,此时电机会发出一声响
(2)再调节脉宽为0ms,电机此时再次响一声;
(3)此时电调的初始化完成了;调节电位器,即可调节无刷电机的转速了
希望能给你帮助。

软件-蹄飞 发表于 2013-4-24 00:49:08

初始化程序也可以问我要QQ:932500391。我想做4轴飞控,正在努力研究中!!!
呵呵

LKYFLY0578 发表于 2013-4-29 11:26:29

myservo.attach(9,1000,2000);            这个表示什么意思,为什么要有个1000,2000
          delay(2500);                               为什么延时这么长时间
          myservo.writeMicroseconds(1000);               这个又是什么意思
          delay(2000);                                    为什么还有延时这么长的时间

camion 发表于 2013-5-16 13:57:56

问题出在
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 179);
你是在读电位器A0数值来控制无刷给入量的
将它注释掉,直接写 val =100;或其他数值
就可以了
页: [1] 2
查看完整版本: 求助:用arduino控制无刷电机的问题