用一块Arduino输出多路PWM

【经wwwtiger同学提醒,关于Arduino原生PWM的频率,我之前的理解是错的,应该是490Hz左右,特此更正】

周末有朋友来家里玩,看到了放在角落里的那个大的四轴飞行器。拿下来看了看,发现上面已经落满了灰尘。应该有几个月没动了,当时写的攻略目录也好久没更新了。这段时间打算抽空陆陆续续把这个页面里的目录内容都补齐,免得成为烂尾工程。可惜实验还没有成功,所以不能算是经验,各位兄弟权当教训看吧 :)

四轴飞行器最终的控制手段,就是分别调节4个电机的转速。对于常见的无刷电机,一般通过高电平在0.9ms~2.1ms左右的PWM来控制转速。这就涉及到如何用arduino输出多路PWM的问题,在Arduino中,一般可以通过下面这些方式来输出PWM方波:

1. 用原生的PWM输出功能
把pinMode定义为输出,然后用analogWrite就可以输出PWM。以Arduino Mega 1280为例,它有14路PWM输出。analogWrite的参数范围是0~255,对应的是0~2ms的高电平。
一般情况下,原生的PWM频率固定为490Hz,通过一些参数的修改,可以提高PWM频率,但是参数范围只能是0~255。

int pin = 8; //0~13

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

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

2. 通过普通的输出管脚手动控制PWM

PWM归根结底无非就是输出0,1序列的方波,所以我们还可以简单的通过digitalWrite和delay来生成PWM方波。
这种方式的特点是可以非常精确的控制高电平时间和PWM周期,缺点是CPU时间不好充分利用,多路时编程有点复杂。

void loop()
{
  long t0 = micros(); //记录进入loop的时间
  double T = 20000; //一个周期的微秒值
  double len = 900;  //高电平时间
  for(int i = 0; i < 4; i++) digitalWrite(pins[i], HIGH);
  delayMicroseconds(len);
  for(int i = 0; i < 4; i++) digitalWrite(pins[i], LOW);
  /*
   *在这里干别的事情
   */
  int leftMs = (int) (t0 + T - micros()); //剩余时间
  if(leftMs < 0 ) leftMs = 0; //万一超出周期,只能立刻中止
  delayMicroseconds(leftMs);
}

3. 用servo库
Servo库是Arduino用来控制伺服电机的,印象中是使用了内部中断来触发的,所以主程序只管干自己的事情,时间到了PWM就会自动触发。
它默认的频率是50Hz,但是可以在头文件中修改。文件位置是arduino-0023\libraries\Servo.h,修改下面这行可以把PWM频率升到400Hz:
#define REFRESH_INTERVAL 2500

具体的细节在之前的一篇小结里提到了:Arduino自带的Servo库小实验

先记录这些,希望在把全部的“教训”写完之前,能有空把四轴飞起来 :)



对 “用一块Arduino输出多路PWM” 的 52 条 评论

  1. 老薛 说:

    很有实用价值,多谢!

    不知动力哥是否把你的四轴给曾经做成过的人看过,让他们亲眼看一看说不定就能很快找出问题所在。北京藏龙卧虎,这样的人肯定有吧

    • 嗯,北京这里有好多朋友。比如wnq,不过约了两次都没见上面 :)
      我的调试环境太不理想,家里杂物太多,小朋友又到了到处乱翻的阶段,所以都装箱收起来了……

  2. 小浩 说:

    用一块Arduino输出多路PWM,这个题目跟文章内容好像不怎么搭边吧,还是说题目只是一个疑问?不知道能否实现。
    我的理解是,产生多路PWM,这多路PWM应该有一个比例关系的。如果产生没比例关系的多路PWM,可能比较难实现吧。
    这个问题也困扰我,如果老男孩解决了,麻烦共享一下你的方法啊。不吝赐教

    题外话:
    一方面DIY,一方面工作,一方面照顾小孩。还真不容易啊。佩服老男孩这样的人!

  3. darkorigin 说:

    最近工作忙了,来看的多,写的少了。嘿嘿
    加上昨天才从张家界回来。
    动力兄 不要放弃啊,继续做下去啊!有时候看你的博客就能激发斗志呢

    • sunny 说:

      小四轴难度低啊。。。。目测用薄的万能版都有戏。。。。现在已经画好电路了。。。。马上准备开始印板子。。。。你们有没有要的。。。邮费自理

      • 哈,厉害,你是打算连那些小芯片都自己焊吗?

        • sunny 说:

          936的烙铁换一个平头的刀然后再来一个热风枪就ok了。。。其实还可以用烤箱。。。新车间这边来了个人准备出烤箱套件。。。。

      • darkorigin 说:

        神马样的板子???需要焊哪些?空PCB?额~~这个 哎我焊接技术不行啊

        • sunny 说:

          不然飞不起来//焊接其实不难。。。。焊了300+ 0603led后表示基本掌握贴片焊 实际发现贴片速度要比直插快 接至于itg3205么。表示可以热风枪焊。。焊锡量相当关键。。//我现在打算把nrf24l01遥控改成红外的

          • 嘿嘿,我绝对贴片对我来说太困难了,不过我打算买一个新的电烙铁,原来那个太挫了,焊出来都是锡豆

    • 多谢鼓励:) 没放弃,呵呵。
      不过最近也是工作很忙,所以没啥动作

  4. Jeck164 说:

    一直关注和追随,坚持真是一件不容易的事,加油!

  5. 菜鸟来看看 说:

    固定翼飞机的升力中心与其重心不在一点,重心越低越稳定,四轴飞行器由于结构对称造成升力中心与其重心重合,不稳定,在静止状态下用一根针顶住飞行器中心看是否稳定与平衡,螺旋浆安装是否能朝外倾斜一点,用模糊控制可能会好一点。不过小弟都没试过没发言权(因为没m ),都只是些想象,不足为提。

    • 我也想过重心的问题,所以把电池装在下面,理论上重心是要低一点。
      事实上小四轴的平衡好像相对比较容易,我还没有把PID的算法加进去,只是简单的让四个轴功率加大,飞起来的时候摇摇晃晃却也不会像大四轴那样扣盘子

  6. 菜鸟来看看 说:

    如果重心不能调低,将螺旋浆朝内倾斜安装应能自动平衡,稳定度与倾斜角度有关,朝外倾斜的话会降低稳定度,我想应该如此,请高手指点。

    • 可能还是垂直向下比较好,主要是动力比较集中,向内倾斜也许可以增加稳定性,但是对称的两个电机,其实有一部分动力是互相抵消浪费了。
      对于寸土寸金的小四轴来说,浪费能源太可惜了,平衡应该由PID来做

    • darkorigin 说:

      内倾和外倾都会导致合力降低,不管是大四轴还是迷你四轴都会影响动力性能和能源利用率.

  7. 叁颠 说:

    前辈,最近我也和朋友一起在学着做四轴,因为说电调的控制还是用I2C总线来比较灵敏,但是要自己做电调的I2C接口,找了好久没有找到相关的资料。请问这个I2C接口应该怎么来做啊?小弟还是菜鸟,希望前辈能分享一下经验!

  8. buaa 说:

    北航校庆了

  9. SSS_SXS 说:

    兄弟,最近在忙什么呢?好久没看到更新了

  10. SSS_SXS 说:

    难怪了很久没有看到更新新作品了:)

  11. 筱梓 说:

    我是来继续跟踪学习小四轴的,最近工作太忙,哎…

  12. LOWLOW 说:

    請問一下我現在剛會控制電調!!

    我該怎麼寫PID使他飛起來?

  13. wwwtiger 说:

    原生的PWM频率不是50Hz吧,
    The frequency of the PWM signal is approximately 490 Hz.
    http://arduino.cc/en/Reference/AnalogWrite

    64分频,相位PWM
    16M/64/2/255 = 490 Hz

    • 啊,为什么我觉得自己穿越了,以前查资料的时候,好像到处看到的PWM周期都是20ms,现在看到都是2ms,真是糊涂了。
      从链接看,确实应该是490Hz,多谢纠正!

  14. allankliu 说:

    原来Arduino的PWM和Servo是这么个区别。

  15. 剑舞飞花 说:

    请问arduino输出pwm的最高频率是多少

  16. 开放七大职业封神英雄技能!开放刺客卫士,超眩超酷新技能!随身商店,随身仓库等功能让你惊喜重重!随身车夫(任何时间任何地点实现车夫处传送功能)随身杂货(随身的高级 低级杂货,不用找NPC一样可以购买)超级传送(可直接传送到所有国家大臣处,天姑和挂机地图)特别技能(长达3600秒的特别技能,加10%魔攻,加10%物攻,加10%生命,加10%魔法)会员魔法增加了一张会员BOSS新地图叫BOSS集中营里面拥有官方所有的BOSS包括你见都没见过的BOSS里面的BOSS必爆补天和超级魂魄必须要用会员凭证进入。。。。会员凭证请找各大游戏的GM购买。。。。。支持装备升18星可以用积分升级武器到12星在高级钱庄

  17. 天堂版本:7.6C經驗倍率:2000 金錢倍率:30掉寶倍率:1 武防強化成功機率:4%武器屬性強化成功機率:5%正義倍率:2 手點能力上限:創腳即贈送全能力35無須手點萬能藥上限:45(共60罐)等級上限:99 轉生等級:99轉生上限:10轉 保留血量:50%王族宣戰:85等每日重啟時間:晚間24:00每週六晚上九點至十點(開服那個禮拜不開放攻城)紅人死亡會噴物品,掉落經驗及遺失技能,技能噴出是無法撿回的,紅人會被怪追,經驗無法買全%【一般指令】中文指令: 英文指令:/誰    /who/對話   /chat/創立   /create/加入   /join

  18. 游戏版本 仿国服3.0等级上限 120级 开服限制80级 每过一周解锁20级人物经验倍率 1-50 4倍/50-80 3倍/ 80-110 2倍/ 110-120 原始经验魔石价格倍率 2倍战斗技能经验 10倍生产技能经验 生产采集3倍 鉴定 修理5倍 医生4倍声望值设定 800/落叶 1300/小草 1900/歌声 2700/月影 3700/春风 5200/风云 7000金星9000/慈雨 12000/太阳 16000/寂静 30000/星空 50000/咆哮 80000/灵魂消失时间 宠物72小时、道具10分钟、魔币10分钟魔石堆叠数目 1个。血瓶堆叠数目 5个/组料理堆叠数目 5个

  19. 上线即送VIP6, 官方都没有的新怪,新地图,新装备,新玩法,新体验,全新感觉升级经验官方1000倍,技能500倍官方。 太阳石999自动入包 省事方便本服版本绝对是前所未有 全国独家版本,超爽设置, 是 玩家们理想的的游戏环境等级狂升, 最高可升到255级,狂爆太阳石,绝对的超爽体 验。。更多特色请到游戏里体验吧,绝对超爽。久久至尊机战 私服网,新开机战私服网,新开机战SF网为保证服务器运行质量,每六个月自动清理超过半年没上过线的游戏帐号上线直送VIP6,全新255级装备(在钢铁巨舰那个圆圈那 SUPER超级贩卖机–坐标:509 822-选择-我要进入超级装备专卖店-直接购买+12装备),

  20. 游戏设置如下:★经验100倍 浩然100倍 心法、步法85.01出效果.可直接修练灵动八方老侠客处购买。★三层神武仿官版本,招式,三层武功,装备可升段。★升段成功率,1段99% 2段75% 3段35% 4段5% 只要大家努力升成4段不是梦!★不灭戒指均到中央市场戒指领取员处领取(需1个金元)★开放任务地图为极乐洞、狐狸洞,帝王陵,太极剑门,帝王石窟,王陵三层,可以做技能武器及技能药品。★游戏币获得,建议打狂犬掉落5皮5肉。★掌风:半月掌、韦陀掌、霹雳掌、铁砂掌、寒冰掌、火焰掌游戏中获得千年装备升段成功率正式公布。1段成功率99%2段成功率75%3段成功率35%4段成功率5%只要大家努力升成4段

  21. 本服设置是以本人2001年内测及2002公测记忆打造,尽力还原原版1.0,如有不符实际,请各位见谅,多多包涵1.版本设置为1.0,开放乍莫里为主城,满级110级,一个月一区2.装备属性不重复,最高50血25抗10回避5力敏智!3.首饰最高1技能,开放守护和无我!可用冰封水晶洗极品首饰70+14.最高等级怪物90级,角龙-机器人-坦克!5.开放4个boss:战神—蝎子王—鱼妈妈—魔罗王(boss会爆超级灵石、超级晶石、古代石)6小时刷新一次6.物理攻速3速满(105不需要速度武器),法师没有限制 ,开放各职业80级魔法,开放100级大盾!7.开放要塞战争,军团成员+50血,每周六晚上

  22. 1:上线10级,经验200倍,加入门派119心法,本服最高119级,长久仿官,适合骨灰玩家长久入驻。2:上线即送新手套装・时装、坐骑扭蛋(使用即得炫彩染色时装、最新绚丽坐骑)3:没有垃圾门派,我们以官方宝石系统计算伤害,做到了真正的平衡,门派之间零差距4:随时同步更新官服新时装.坐骑.宝宝.技能.地图.发型等所有一切新资源游戏注意①:请不要在赠点商店购买大量垃圾物品出售给NPC换取金币否则系统自动封号,后果自负!游戏注意②:账号密码请勿随便给人!切记超级密保找回密码唯一方式,否则后果自负! 本服永久仿官、简单耐玩、门派平衡、技能真实、PK刀刀见血拳拳入肉…没任何BT元素…且BOSS有1

  23. 2.0版本已解決LAG機問題!已封鎖全部洗經帳號1.新手怕让人低枪低血,升lv升到想死? 不!开帐号就已经是士官长!!再送一千万游戏币!所有红条枪都免费!正服十五倍经验,可以轻松升级官网有新手补给物资,双经,点枪免费让你拿!2.玩故让人用3楼BUG玩炸鸡,玩沙让人BUG卡报位?制作封左BUG既沙漠同故宫地图 包你不会再受BUG狗骚扰日后会增加更多防bug地图3.依家市面上既私服再用到微速,透视,无!独创反外挂是统,团战不需要再影相,不需要再报时!会不会让人破解? 有破解会立即进行更新!4.上将,中将好难升? 独创大幅增加上将,中将限额全部将级名额提高十倍!要用龙刀,直刀!5.有无活动/让赛?

  24. 扩展 英雄皮肤/罗兰攻城/附魔/军衔抢夺/魔头击杀/BOSS集中营/曝气装备/ BOSS偷袭/积分赌博 赌斗/召唤宝宝/黄金宝箱樱花合成/宝石抽奖等等,全新副本,让你嗨翻!福利 ★第一满1 5 0转奖励金牌会员或100元宝,全民参与,不管方式,截图网站英雄排名,按转生数排名给GM,各新区仅限第一名!★ 福利 ★★积分无限回收,300万积分找客服兑换200元宝,全员参与,只要你花时间一样可以顶级 吊丝首选★挂机捡物助手:F7控制设置,F8启动助手,为上班族带来方便的挂机,打宝 ★★ 福利 ★★★玩家同一个账号内,5个不同职业(召唤除外),满150转3000大师,即可联系客服,奖励300元宝,

  25. 一、新增新手区域1、狮子城增加新手教育区(位于狮子城大银行后方)新手教育区任务:解完会送一只宠物 跟 1级能用能力相当于30级装备的套装与武器外表是哈比套装但能力跟哈比装完全不同宠物也是外表是咕咕宝宝但能力完全不同基本上只要对话就能解完了(约2分钟)总之按一按是16级了完成新手教育以后40级以内可以透过此NPC传送到某些练功地图/城镇二、新增职业—-饕客三、全新技能学习方式—-技能树新版本中无需找NPC、做任务学习技能啦~直接点击学习技能按钮,即可召唤技能树界面,直接学习!四、物品栏调整——超大空间、相同材料堆垒新增道具-64格背包扩充卷 使用后将获得第二物品栏哦。而且相同的材料可以多

  26. 新区注入新的元素,耗时打造新的功能。游戏功能设置:属性面板添加自动加点系统,需要递加属性点自行勾选。在线洗恶系统:属性面板实行洗恶,做到无法用洗恶来做技能连招。内挂系统:内挂做了大幅度优化,曾加了1-40栏的使用。商城系统:泡点和元宝商城合并为一,泡点购买物品无法交易。智能提示系统:游戏内只要你做了错误操作,屏幕会温馨提示。称号系统:怎加了200多种称号,不一样的称号应有尽有。注册/挂机键设置:Alt+Q隐藏/显示游戏,F5开/关内挂,F9复活窗口(注册账号需进入游戏到基面注册)祝福功能:祝福达到要求的品质装备会变为不同的颜色。游戏基本设置:下架多福和祝福,体验组合带来的乐趣(多福和祝福地图王

  27. 游戏版本:EP2版本类型:仿官方经验倍数:20倍技能倍数:50倍金钱倍数:50倍爆率倍数:30倍制造倍数:30倍职业等级:最高20级技能等级:最高长老,攻击技能最高大师变身次数:最高2变制造功能:开放国战系统:开放任务功能:100%还原官方任务副本功能:开放黄昏之湖、雷纳驿站、亡灵冰封塔1层,亡灵冰封塔2层,黑火神殿,天灾遗迹1层、幽灵船DT副本; 上线设置:等级1级,职业18级(任务可升至20阶)技能新手,名誉0,任务系统和装备制作全部开放副本掉落设置黄昏之湖(75级可进):掉落神灯,中级磁盘,中级芯片,名誉药水,洗点药水,中级升级,中级力量,中级精炼,中级加孔,+5护肩,小怪掉落闪耀装备制

  28. 服务端说明:此端最大程度上做到了仿官方,同步官方时装,坐骑,翅膀,元神,外观,特效等。商场全部添加了新的时装坐骑等,没有多余的NPC,和其他的一些BT设置,属性仿官方。玩法不BT。副本的话,基本上主流的副本都可以单人游戏。UI做了调整仿官方的界面,当然那些界面上的侧边栏都只是摆设而已,因为端的很多不支持,为的只是尽量仿官方吧!菩提说明:上面已经说到菩提职业并不可以直接创建,只是个体验的角色而已,那么需要体验菩提的朋友可以先注册个4级GM的账号,然后进入游戏,随便创建个职业。个人推荐医生职业因为菩提和医生很多地方相像,进入游戏后先不要着急先去接傲来太白金星的任务,这样就方便以后体验任务的朋友,接

  29. 游戏基础10倍经验 晚间12倍 周末20倍 长久稳定 另有免费经验豆 纯净设置 无VIP不出售变态宠物和顶级装备!无需点卡!无变态宠 无变态技能 无变态装备 讲求最佳配合 带您重温各式免费商业宠物 多变的进化宠物!游戏详细介绍:●【版本设定】保留石器时代最原汁原味的玩法,完美平衡,打造耐玩不枯燥史诗级养老服;●【全新客户端】支持32位色登陆游戏、STW及ASSA外挂全面支持;●【游戏线路】开放暴龙兽及加鲁鲁两条线路(暴龙兽:经验共享、掉率低 ;加鲁鲁:无经验共享、掉率高)玩家可自行选择喜好的线路进行游戏;●【便捷按钮】ESC键集成了游戏内大部分需求,包括支票兑换、原地遇敌、陪练系统、传送、在

  30. 希望版本介绍1.装备系统2.英雄系统3.宠物系统4.秘境系统5.技能介绍6.附魔卡图鉴7.英雄卡图鉴简要新手攻略创建角色直接50级,商城的药水BUFF都已经吃好了,而且都是永久的。先找新手美眉领取宠物,再去找技能大师学习技能后就去升级升级线路推荐回升山脉—–50-65封印洞穴—–65-90十字林——-90-130黑暗森林—–130-150 150的时候可以找技能大师二转奇峰南部北部-150-180初级地图都有掉落宝箱、钱袋、鉴定卡,宝箱可以开出防具、武器、饰品、初级宠物封印洞穴和黑暗森林会掉落全职业装备哈比套,定做套、女仆套、蛋糕套、冰城套、将军套、塔西斯套等强化几

  31. 正式开F经验设置: 经验 5B 金钱 10倍 掉宝 5倍 其他经验全部5倍 新人加宝设置如下1、天牌、地牌、人牌、各一个 3、本职武器-15-50% +15-50% 610攻击武器1把 +15-50%玉米项链4、初始基本值不变 内力:1500 5、加宝送草上飞10成 送5000个初级干补0重7、在游戏客站,玩家可以买到0重肉。8、为了减轻大家做任务各处奔跑,gm会在洛阳广场把任务npc刷在那里。9、转身任务怪5倍(老和尚、僵尸王、山猪王、熊皇、绿衣酋长、骑马将军俑、炎天魔帝)网站可以兑换P点 1000TB/1P点武

  32. 【经典养老半BT散人服】【配置:1000倍经验/无三转/进阶2转】★ 服务器定位:FGF+微变 后期直接半BT★ 等级上限:120★ 素质上限:120★ 服务器版本:特色版,二转职业★ 经验倍率:1000倍★ 普通掉率:500倍★ 物品掉率-:200倍★ BOSS卡掉率:10倍★ BOSS刷新:GF(道场)BOSS区★ 转生次数:3转,可混转★ 最大HP:无★ 最大SP:无★ 最大攻速:197★ 无念DEX:150 ★ MVP卡片掉率:10倍★ 是否拆卡:可拆卡 ★ 箭矢消耗:所有弹药均消耗★ 常用补给品:冰淇淋(双回15%) ★ 箭矢消耗:所有弹药均消耗★ 开放命令:@allskill,@m

发表评论

可以使用下列 XHTML 标签:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>