5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 5963|回复: 11
打印 上一主题 下一主题

arduino电调(一)

[复制链接]
跳转到指定楼层
楼主
发表于 2013-11-21 15:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mig21wang 于 2013-11-21 16:04 编辑

   时间过的真快, 2011-5-29发帖M60制作视频后已经两年多的时间,有很多人都把M60作为自制航模的第一种机型,这让我感觉无比喜悦。只要有时间我就不断的尝试改进M60,想把更多的知识融入进去。去年冬天我尝试教初学者自己焊电调,想以此为切入点学习电子知识,在5imx论坛里还发了图纸、使用元件和电路板。但很快我就终止了这项工作因让初学者去焊一块模拟电路难度有些大,而且我也觉得没什么意思:-(。
   今年春天我便开始筹划用单片机制作遥控、电调、飞控什么的给M60制作增加乐趣,但一直苦恼的是从简单的航模制作到单片机编程跨度好像有点大了,很多初学者可能会被拒之门外。直到我了解到了Arduino,这是一个将复杂问题简单化的东西,是神作,是年轻人都该了解的东西。所以我决定把arduino融入到m60制作当中去。具体arduino是什么,请您百度一下。
   10月份,冬天到了假期来了。我的计划开始了,还是从电调做起,我把它称之为arduino电调。这次我要认真做,改改虎头蛇尾的毛病。
   设计很简单,用arduino板处理接收机发出的信号并转换输出控制一颗场效应管驱动电机。并留有11个数字接口和6个模拟输入端口,用于以后的扩展使用。
   软件部分由于是自己编写的功能自己说的算,所以设置了一个油门保护功能,当电调通电后推动油门电机是不转的,用来防止电机突然转起伤人。并设置了一个电位器控制功能,不用遥控器也可以控制电机转速。方便板子的多重开发。







arduino 通过下载器是可以轻松的编辑程序


源程序:
//arduino电调源程序
//Mig21wang QQ57113788
//此程序为 M60 arduino电调编写,供爱好者学习开发使用。
//mig21wang 2013/11/21发表于 5imx
int pin = 5;//定义 5 油门输入
int pin1 = 10;//定义 10 PWM输出
int pin2 = 2;//定义 2
int duration;//油门输入变量
void setup()
{
  pinMode(pin, INPUT); //5为输入
  pinMode(pin2,OUTPUT); //10为输出
  pinMode(pin1,OUTPUT); //2为输出
  digitalWrite(pin2, HIGH);//设定2脚为高电平
  duration = pulseIn(pin, HIGH);//捕获油门变量
}
void loop()
{
duration = pulseIn(pin, HIGH);
if (duration > 500) //判断油门是否有输入
{
while (duration < 1800)//进入油门保护循环,当油门推到最大并归位时跳出此循环(红色部分删除取消油门保护)   
{
duration = pulseIn(pin, HIGH);
analogWrite(pin1,0);
}
while (duration > 1200){
duration = pulseIn(pin, HIGH) ;
analogWrite(pin1,15);
delay(100);
analogWrite(pin1,0);
delay(100);
}
while(1)//进入待机循环
{
duration = pulseIn(pin, HIGH);
if(duration < 1000) //限制油门界限(同一不同遥控器)
{
  duration = 1000;
}
if(duration > 2200)
{
  duration = 2200;
}
duration = map(duration,1000,2200,0,255);//转换油门量,分成0-255 (增加蓝色部分,改变油门有效行程 如:1200
analogWrite(pin1,duration);//把变量以PWM方式从10脚送出
}
}
else //开机没有接通接收机时,进入电位器控制循环
{
duration = analogRead(A5);//A5获取油门变量
while (duration < 900)
{
duration = analogRead(A5);
analogWrite(pin1,0);
}
while (duration > 200){
duration = analogRead(A5);
analogWrite(pin1,15);
delay(100);
analogWrite(pin1,0);
delay(100);
}
while(1)
{
duration = map(analogRead(A5),0,1023,0,254);
analogWrite(pin1,duration);
}
}
}




欢迎继续阅读楼主其他信息

沙发
 楼主| 发表于 2013-11-21 15:56 | 只看该作者
3
 楼主| 发表于 2013-11-21 16:03 | 只看该作者
站一个位,上arduino板驱动 场效应管的图纸
4
发表于 2013-11-21 16:46 | 只看该作者
杀鸡用牛刀了。。
5
发表于 2013-11-21 17:09 | 只看该作者
弄个无刷的更好。MK方案也是AVR的单片机,Arduino也是。
6
 楼主| 发表于 2013-11-21 21:00 | 只看该作者
sd3114336 发表于 2013-11-21 17:09
弄个无刷的更好。MK方案也是AVR的单片机,Arduino也是。

也考虑过无刷,考虑有四:1、无刷电机太贵 2、电路、程序过于复杂初学者入手困难 3、一颗场效应管不影响主板结构,主板写入其他程序还可以开发它用。4、准备开发一块扩展无刷板,插上就是无刷电调。

7
发表于 2013-11-22 12:02 | 只看该作者
mig21wang 发表于 2013-11-21 21:00
也考虑过无刷,考虑有四:1、无刷电机太贵 2、电路、程序过于复杂初学者入手困难 3、一颗场效应管不影响主 ...

无刷的话也可以参考下MK方案,电路图代码都有,就查自己画画电路板了,还有本书《无刷电调设计攻略》也可以看看.
8
发表于 2013-11-22 22:34 | 只看该作者
学习了。
9
发表于 2013-11-24 20:16 | 只看该作者
本帖最后由 狐狸 于 2013-11-24 20:17 编辑

单片机的高级语言开发程序与ARDNIUO是很相近的,比如PICBASIC PRO,还有oshonsoft的AVR SIMULATOR,pic simutaor 等。当然还有MICRO PICBASIC等等;
单片机的高级开发语言编制的程序数据量多少比汇编的多一点,但开发程序的速度要快得多;后续是的优化是很有必要的,程序的流程也很重要。

10
发表于 2014-4-4 15:51 | 只看该作者
赞一个!!!!
这个东西好,我是倒腾Arduino的,以前(倒腾Arduino)之前也玩过模型,后来都去搞油动了。今天闲着没事来论坛里搜索了下"arduino"关键词!这个东西很赞啊!
11
发表于 2014-4-9 02:40 | 只看该作者
upup
12
发表于 2014-5-12 08:19 | 只看该作者
楼主pcb和原理图能发一份给我吗   406664485@qq.com
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

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