极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 35653|回复: 19

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

[复制链接]
发表于 2014-8-20 16:50:47 | 显示全部楼层 |阅读模式
我是新手,程序怎么写,网上都是可调转速,太麻烦,看不太懂,简单一些,能让电机转起来就行
回复

使用道具 举报

发表于 2014-8-20 20:07:10 | 显示全部楼层
介绍一下你手中的硬件吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-20 20:55:40 | 显示全部楼层
zoologist 发表于 2014-8-20 20:07
介绍一下你手中的硬件吧

一块arduino due板,一个微型油泵,上面与一个电调相连
回复 支持 反对

使用道具 举报

发表于 2014-8-21 09:33:09 | 显示全部楼层
如果电机本身自带电调的话,你只需要按它的脉冲信号来就行了。如提供多少HZ,脉宽多少的脉冲。如与ARDUINO输出I/O口的PWM一至的话可以使用,要不然就要自己写一个脉冲输出的程序
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-21 09:59:49 | 显示全部楼层
无为 发表于 2014-8-21 09:33
如果电机本身自带电调的话,你只需要按它的脉冲信号来就行了。如提供多少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
http://www.51zxw.net/study.asp?vip=2413623

没有讲arduino的吧,在哪呢
回复 支持 反对

使用道具 举报

发表于 2014-8-21 12:48:23 | 显示全部楼层
先看一下你的电调的说明书吧......我只知道如果是普通模型上用的电调是需要先油门行程校准的,不然转不起来,电机只会叫!
回复 支持 反对

使用道具 举报

发表于 2014-8-21 13:51:09 | 显示全部楼层
发源地 发表于 2014-8-21 09:59
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);  
   
}  
回复 支持 反对

使用道具 举报

发表于 2014-8-21 13:53:07 | 显示全部楼层
貌似应该定义一个 Servo, 然后 Servo.attatch(8);  看看舵机的例子,类似的吧
回复 支持 反对

使用道具 举报

发表于 2014-8-21 21:10:12 | 显示全部楼层
本帖最后由 eddiewwm 于 2014-8-21 22:06 编辑
发源地 发表于 2014-8-21 09:59
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
先讓電調控制電機轉起來:

int pin = 8; //0~13  

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

使用道具 举报

发表于 2014-8-22 23:33:54 | 显示全部楼层
发源地 发表于 2014-8-22 10:48
把你这个程序输进去了,可是电机还是滴滴滴的叫,没有转起来,怎么弄

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

使用道具 举报

 楼主| 发表于 2014-8-23 15:31:23 | 显示全部楼层
eddiewwm 发表于 2014-8-22 23:33
這樣....,給清楚一點你手上的電調和電機的資料,同時拍個照貼上來,以便看看接線的情況。

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

使用道具 举报

发表于 2014-8-23 18:03:29 | 显示全部楼层
发源地 发表于 2014-8-23 15:31
奥,我找到原因了,是因为电调的一根地线也要接到电路板上!!1
另外一个问题是电机总是转一段时间后,休 ...

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

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 13:38 , Processed in 0.041846 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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