发源地 发表于 2014-8-20 16:50:47

新人求助——用PWM控制电调,进而电机固定转速旋转。

我是新手,程序怎么写,网上都是可调转速,太麻烦,看不太懂,简单一些,能让电机转起来就行

zoologist 发表于 2014-8-20 20:07:10

介绍一下你手中的硬件吧

发源地 发表于 2014-8-20 20:55:40

zoologist 发表于 2014-8-20 20:07 static/image/common/back.gif
介绍一下你手中的硬件吧

一块arduino due板,一个微型油泵,上面与一个电调相连

无为 发表于 2014-8-21 09:33:09

如果电机本身自带电调的话,你只需要按它的脉冲信号来就行了。如提供多少HZ,脉宽多少的脉冲。如与ARDUINO输出I/O口的PWM一至的话可以使用,要不然就要自己写一个脉冲输出的程序

发源地 发表于 2014-8-21 09:59:49

无为 发表于 2014-8-21 09:33 static/image/common/back.gif
如果电机本身自带电调的话,你只需要按它的脉冲信号来就行了。如提供多少HZ,脉宽多少的脉冲。如与ARDUINO输 ...

int pin = 8; //0~13

void setup()
{
    pinMode(pin,OUTPUT);
}   

void loop()
{
    analogWrite(pin,128);
    delay(5000);
   
}
我写了这个,可是电调还是电机一直在叫,电机也没有旋转,是怎么回事

低调 发表于 2014-8-21 10:33:33

http://www.51zxw.net/study.asp?vip=2413623

发源地 发表于 2014-8-21 11:18:58

低调 发表于 2014-8-21 10:33 static/image/common/back.gif
http://www.51zxw.net/study.asp?vip=2413623

没有讲arduino的吧,在哪呢

拾瑞 发表于 2014-8-21 12:48:23

先看一下你的电调的说明书吧......我只知道如果是普通模型上用的电调是需要先油门行程校准的,不然转不起来,电机只会叫!

ent173 发表于 2014-8-21 13:51:09

发源地 发表于 2014-8-21 09:59 static/image/common/back.gif
int pin = 8; //0~13

void setup()


int pin = 8; //0~13

void setup()
{
    pinMode(pin,OUTPUT);
    delay(1500);    // 这部分好像需要有个延时,具体看电调说明
}   

void loop()
{
    analogWrite(pin,128);
    delay(5000);
   
}

ent173 发表于 2014-8-21 13:53:07

貌似应该定义一个 Servo, 然后 Servo.attatch(8);看看舵机的例子,类似的吧

eddiewwm 发表于 2014-8-21 21:10:12

本帖最后由 eddiewwm 于 2014-8-21 22:06 编辑

发源地 发表于 2014-8-21 09:59 static/image/common/back.gif
int pin = 8; //0~13

void setup()

先讓電調控制電機轉起來:

int pin = 8; //0~13
int count =0;
int up =1;

void setup()
{
pinMode(pin,OUTPUT);
while (count<500) // 等待電調初始化,可按需要增長或減短
{
    digitalWrite (pin, HIGH);
    delayMicroseconds(800);
    digitalWrite (pin, LOW);
    delayMicroseconds(19200);
    count++;   
}
count = 1000;
}   

void loop()//脈寬循環地 從 1ms 遞增至 2ms 後遞減回 1ms,以改變電機轉速
{
digitalWrite (pin, HIGH);
delayMicroseconds(count);
digitalWrite (pin, LOW);
delayMicroseconds(20000-count);

if ( count == 2000 and up ==1)
{
    count--;
    up=0;
}
else if (count == 1000 and up == 0)
{
    count++;
    up = 1;
}
else if (up ==1)
{
    count++;
}
else if (up == 0)
{
    count--;
}
}


发源地 发表于 2014-8-22 10:48:48

eddiewwm 发表于 2014-8-21 21:10 static/image/common/back.gif
先讓電調控制電機轉起來:

int pin = 8; //0~13


把你这个程序输进去了,可是电机还是滴滴滴的叫,没有转起来,怎么弄

eddiewwm 发表于 2014-8-22 23:33:54

发源地 发表于 2014-8-22 10:48 static/image/common/back.gif
把你这个程序输进去了,可是电机还是滴滴滴的叫,没有转起来,怎么弄

這樣....,給清楚一點你手上的電調和電機的資料,同時拍個照貼上來,以便看看接線的情況。

发源地 发表于 2014-8-23 15:31:23

eddiewwm 发表于 2014-8-22 23:33 static/image/common/back.gif
這樣....,給清楚一點你手上的電調和電機的資料,同時拍個照貼上來,以便看看接線的情況。

奥,我找到原因了,是因为电调的一根地线也要接到电路板上!!1
另外一个问题是电机总是转一段时间后,休息一段时间,我想让它一直转,我就稍微改了一下程序。
void loop()//脉宽循环地从1ms递增至2ms後返減回1ms,以改变电机转速
{
digitalWrite (pin, HIGH);
delayMicroseconds(2000);
digitalWrite (pin, LOW);
delayMicroseconds(18000);
}
下面的都删掉了,结果电机没反应,应该怎么改才行。谢谢啦

eddiewwm 发表于 2014-8-23 18:03:29

发源地 发表于 2014-8-23 15:31 static/image/common/back.gif
奥,我找到原因了,是因为电调的一根地线也要接到电路板上!!1
另外一个问题是电机总是转一段时间后,休 ...

"电机总是转一段时间后,休息一段时间 "?看來你的電調工作得有點奇怪,但既然已可以轉,就說明基本的控制方法仍是有效的,試試其它的控制時序吧,例如:
digitalWrite (pin, HIGH);
delayMicroseconds(1000);
digitalWrite (pin, LOW);
delayMicroseconds(19000);

页: [1] 2
查看完整版本: 新人求助——用PWM控制电调,进而电机固定转速旋转。