5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: 让devo 7e 再升值100元(加旋钮)20楼代码 21楼接线图(更新完工图) [打印本页]

作者: babyken    时间: 2013-7-17 21:10
标题: 让devo 7e 再升值100元(加旋钮)20楼代码 21楼接线图(更新完工图)
本帖最后由 babyken 于 2013-7-22 23:57 编辑

一共可以加八个
更新图片

(, 下载次数: 171)

Arduino mini pro 配合 devo的 3.3v 输入 不用2s锂电都可以用了

(, 下载次数: 149)

安装好的样子


(, 下载次数: 160)

单手操作的样子






作者: chengyabcd    时间: 2013-7-17 21:54
呵呵把电位器模拟信号转成PPM信号了

作者: 柈峸烟乷    时间: 2013-7-17 22:07
目测大神降临  前排占位

作者: zjg2218    时间: 2013-7-17 22:11
本帖最后由 zjg2218 于 2013-7-17 22:15 编辑

期待中……
用个舵机测试器说不定也行~



作者: dingrenjun    时间: 2013-7-17 22:12
我来观摩!

作者: 草子    时间: 2013-7-17 22:14
关注~

作者: gale    时间: 2013-7-17 22:15
这个办法很好,强烈支持楼主!

作者: blandshot    时间: 2013-7-17 22:33
又见到大神了

作者: 信号旗    时间: 2013-7-17 22:33
表示严重关注

作者: Caballer    时间: 2013-7-17 22:38
Devo7快要被改得面目全非了

作者: quake_j    时间: 2013-7-17 22:50
哎,你再升值1000块,二手区还是只能卖100块

作者: 阿翠    时间: 2013-7-17 22:51
折腾折腾

作者: fbp2013    时间: 2013-7-17 22:53
这折腾来看看.

作者: lonely88love    时间: 2013-7-17 22:54
不错,帮顶~~~


作者: babyken    时间: 2013-7-17 23:36
本帖最后由 babyken 于 2013-7-18 20:30 编辑

啊。。。。其实一直想换控的。。就是没旋钮控制云台郁闷。。。。给力固件又这么给力 舍不得

改旋钮成本 一共30元 一个Arduino电位器 一个Arduino mini     

我用的是nano...成本比较 高 也比较大

7e 空间还是比较大的 塞两个旋钮问题不大

现在已经内置了。。。。。半完美

没控电。。。用4*5号供不起Arduino。。。 Arduino要5v-12v

明天去买控电去。。。懒得开孔直接在后面的洞塞出来。。反正就控制一下云台

(, 下载次数: 42)



作者: 盘锦老王    时间: 2013-7-18 06:36
ppm输入?

作者: babyken    时间: 2013-7-18 09:59
盘锦老王 发表于 2013-7-18 06:36
ppm输入?

是的,然后再PPM叠加

作者: dukecheng    时间: 2013-7-18 10:21
zjg2218 发表于 2013-7-17 22:11
期待中……
用个舵机测试器说不定也行~

有时间试试


作者: cyken    时间: 2013-7-18 19:59
babyken 发表于 2013-7-18 09:59
是的,然后再PPM叠加

能分享Arduino程序和接线图?



作者: babyken    时间: 2013-7-18 20:08
cyken 发表于 2013-7-18 19:59
能分享Arduino程序和接线图?
  1. //this programm will put out a PPM signal

  2. //////////////////////CONFIGURATION///////////////////////////////
  3. #define chanel_number 8  //set the number of chanels
  4. #define default_servo_value 1500  //set the default servo value
  5. #define PPM_FrLen 22500  //set the PPM frame length in microseconds (1ms = 1000μs)
  6. #define PPM_PulseLen 300  //set the pulse length
  7. #define onState 1  //set polarity of the pulses: 1 is positive, 0 is negative
  8. #define sigPin 10  //set PPM signal output pin on the arduino
  9. //////////////////////////////////////////////////////////////////


  10. /*this array holds the servo values for the ppm signal
  11. change theese values in your code (usually servo values move between 1000 and 2000)*/
  12. int ppm[chanel_number];

  13. void setup(){  
  14.   //initiallize default ppm values
  15.   for(int i=0; i<chanel_number; i++){
  16.     ppm[i]= default_servo_value;
  17.   }

  18.   pinMode(sigPin, OUTPUT);
  19.   digitalWrite(sigPin, !onState);  //set the PPM signal pin to the default state (off)
  20.   
  21.   cli();
  22.   TCCR1A = 0; // set entire TCCR1 register to 0
  23.   TCCR1B = 0;
  24.   
  25.   OCR1A = 100;  // compare match register, change this
  26.   TCCR1B |= (1 << WGM12);  // turn on CTC mode
  27.   TCCR1B |= (1 << CS11);  // 8 prescaler: 0,5 microseconds at 16mhz
  28.   TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt
  29.   sei();
  30. }

  31. void loop(){
  32.   //put main code here
  33.   
  34.   ppm[0] = analogRead(A0);
  35.   ppm[0] = map(ppm[0],0,1023,1000,2000);
  36.   delay(10);
  37. }

  38. ISR(TIMER1_COMPA_vect){  //leave this alone
  39.   static boolean state = true;
  40.   
  41.   TCNT1 = 0;
  42.   
  43.   if(state) {  //start pulse
  44.     digitalWrite(sigPin, onState);
  45.     OCR1A = PPM_PulseLen * 2;
  46.     state = false;
  47.   }
  48.   else{  //end pulse and calculate when to start the next pulse
  49.     static byte cur_chan_numb;
  50.     static unsigned int calc_rest;
  51.   
  52.     digitalWrite(sigPin, !onState);
  53.     state = true;

  54.     if(cur_chan_numb >= chanel_number){
  55.       cur_chan_numb = 0;
  56.       calc_rest = calc_rest + PPM_PulseLen;//
  57.       OCR1A = (PPM_FrLen - calc_rest) * 2;
  58.       calc_rest = 0;
  59.     }
  60.     else{
  61.       OCR1A = (ppm[cur_chan_numb] - PPM_PulseLen) * 2;
  62.       calc_rest = calc_rest + ppm[cur_chan_numb];
  63.       cur_chan_numb++;
  64.     }     
  65.   }
  66. }
复制代码

7e
D10 接 PPM in加一条地线








作者: babyken    时间: 2013-7-18 20:09
图片上传~~~~~


作者: babyken    时间: 2013-7-18 20:10
  1. #define sigPin 10  //set PPM signal output pin on the arduino
复制代码
这行是选择输出端口的 这里是 D10  有需要可以更改


作者: zjg2218    时间: 2013-7-19 07:15
学习了,谢谢楼主分享!

作者: flyhh    时间: 2013-7-19 08:11
可以用升压电路么

作者: happyfish2008    时间: 2013-7-19 08:41
你可以试试microduino能不能塞进控里,更小


作者: babyken    时间: 2013-7-19 10:27
flyhh 发表于 2013-7-19 08:11
可以用升压电路么

用控电就行

作者: whyz    时间: 2013-7-19 10:55
支持! 只是加了这么多模块,D7E脆弱的供电也需要改。

作者: flyhh    时间: 2013-7-19 17:11
babyken 发表于 2013-7-19 10:27
用控电就行

谢谢!
电路图都有了,能出个简单的倒程序进芯片的教程么,方便广大编程小白


作者: flyhh    时间: 2013-7-19 17:47
flyhh 发表于 2013-7-19 17:11
谢谢!
电路图都有了,能出个简单的倒程序进芯片的教程么,方便广大编程小白

按照这教程可以吗
http://blog.sina.com.cn/s/blog_69bcf45201016lcu.html

作者: babyken    时间: 2013-7-19 19:55
flyhh 发表于 2013-7-19 17:11
谢谢!
电路图都有了,能出个简单的倒程序进芯片的教程么,方便广大编程小白

按头追的也可以
http://bbs.5imx.com/bbs/forum.php?mod=viewthread&tid=803115&page=1


作者: cyken    时间: 2013-7-19 21:50
谢谢分享!


作者: flyhh    时间: 2013-7-20 14:24
babyken 发表于 2013-7-19 10:27
用控电就行

把neno的LDO去掉是否可行?用镍氢

作者: babyken    时间: 2013-7-20 16:09
flyhh 发表于 2013-7-20 14:24
把neno的LDO去掉是否可行?用镍氢

mini pro 有 3.3 的版本 没试过


作者: flyhh    时间: 2013-7-22 02:44
7e刷g大固件加开关,现在是8通,现在加旋钮能扩到10通以上吗,得改固件吧,期待g大再次出山


作者: flyhh    时间: 2013-7-22 08:56
gale 发表于 2013-7-17 22:15
这个办法很好,强烈支持楼主!

7e刷g大固件加开关,现在是8通,现在加旋钮能扩到10通以上吗,得改固件吧,期待g大再次出山



作者: babyken    时间: 2013-7-22 23:56
加了单边的旋钮。。。完工

作者: flyhh    时间: 2013-7-23 09:14
nano也可以直接用,nano上有低压差稳压片,就算电池降到3.3,输出还有两点几V,ATmega328电源电压范围是1.8~5.5V,完全没问题的,

作者: flyhh    时间: 2013-7-23 13:33
babyken 发表于 2013-7-20 16:09
mini pro 有 3.3 的版本 没试过

改好了,接了两个电位器,可是只有ch1输出,ch2没有,是不是要改程序呢

作者: flyhh    时间: 2013-7-23 14:01
我这完全没编程经验的小白研究了一下,修改如下
原码:
  ppm[0] = analogRead(A0);
  ppm[0] = map(ppm[0],0,1023,1000,2000);
  delay(10);

改成:
  ppm[0] = analogRead(A0);
  ppm[0] = map(ppm[0],0,1023,1000,2000);
  delay(10);
  ppm[1] = analogRead(A1);
  ppm[1] = map(ppm[1],0,1023,1000,2000);
  delay(10);

这样ch2就有输出了,后面的通道依次类推。


作者: 虎门-超    时间: 2013-8-2 13:55
可以把头追和旋钮同时加吗 变成一个体感控 又增加旋钮

作者: babyken    时间: 2013-8-2 14:04
虎门-超 发表于 2013-8-2 13:55
可以把头追和旋钮同时加吗 变成一个体感控 又增加旋钮

理论上可以用开关实现


作者: 虎门-超    时间: 2013-8-2 15:04
比如头追 PPM 1 2通道 旋钮 3-8通道

作者: 虎门-超    时间: 2013-8-2 16:49
不知道怎么样将代码加到一起呢

作者: tony3136    时间: 2013-8-8 19:50
帮顶!

作者: 王者.不归来    时间: 2013-8-9 08:53

新人学习,先顶后看,看帖必顶。回复是一种美德。

作者: 思考者    时间: 2013-8-23 09:54
不错

作者: 思考者    时间: 2013-8-23 09:55
天书看不懂

作者: fnliyaping    时间: 2013-9-19 14:49
请问Arduino mini pro 可以吗?


作者: happyxihua    时间: 2013-9-19 20:55
这贴必顶

作者: v1one    时间: 2013-10-3 23:02
学习中


作者: 24971602    时间: 2013-11-9 21:54
楼主辛苦了帮顶

作者: v1one    时间: 2013-11-10 11:23
试了我的舵机会跳

作者: k320    时间: 2014-1-24 05:23
頂一下

作者: 57185490    时间: 2014-1-24 10:48
haotie 好贴要顶

作者: angle123    时间: 2014-1-24 17:45
飮水不忘掘井人 !!
謝謝樓主,為7e小強控再加力!
再次多謝G 大,您的無私貢獻,造福我廣大模友!

作者: k320    时间: 2014-1-27 19:09
這怎麼使用?
是用G大開出來的7-8通道?
啟用的話,頭追就不能用,是這樣嗎
換句話說,頭追跟手動可以切換使用,這樣理解對嗎?

作者: cherry0213    时间: 2014-2-16 23:58
v1one 发表于 2013-11-10 11:23
试了我的舵机会跳

我的舵机也跳,像抽搐一样~你的好了吗?难道电位器质量不够好?


作者: cherry0213    时间: 2014-2-17 00:00
本帖最后由 cherry0213 于 2014-2-17 00:02 编辑

请问楼主的连接舵机会抽搐跳吗?我的偶尔会跳,比如我在通道监视那里看扭到50这样,不过会50  49  50   48   49  50这样跳动数值,云台舵机就跟着抽搐了,焊接是没有问题的~程序也按照楼主的~难道电压?还是说我电位器旋钮不够好?


作者: v1one    时间: 2014-2-17 16:59
cherry0213 发表于 2014-2-17 00:00
请问楼主的连接舵机会抽搐跳吗?我的偶尔会跳,比如我在通道监视那里看扭到50这样,不过会50  49  50   48  ...

我也不清楚,现在d7E改了ER9X


作者: swhl    时间: 2014-2-19 17:33
收藏,备用


作者: k320    时间: 2014-2-25 18:37
我的舵機也會抽蓄
在arduino 上觀察,值都很正常,介於 1000-2000 之間
但從教練線傳到 DEVO-7E 就不正常了
D7上的值一直飄,頻率也一直飄
不知哪邊出錯了
請大大幫忙看一看




作者: k320    时间: 2014-2-27 10:03
本帖最后由 k320 于 2014-2-27 15:02 编辑

好像知道是哪邊出問題(不確定)
好像是timer設定有關
這跟使用的晶片有關
我是用ATMEGA328P ,要查 Datasheet
http://www.atmel.com/ru/ru/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf
有大大可以教一下怎樣設定
謝謝


作者: k320    时间: 2014-2-28 10:08
又找到一篇教學文

Arduino系列教程之 – PWM的秘密(下)
http://www.diy-robots.com/?p=852

這篇說明ATmega328p內存的設定
這要參考 Datasheet 內,實際內存的位置,才能正確設置
也就是說,每塊板的設置會不一樣

該文下面有個回答,上面的小例子不錯
  1. 感谢博主的经验分享。
  2. 但是对于原文中以下部分我有一些疑惑。
  3. “这段代码看上去有点晕,其实很简单。_BV(n)的意思就是1< COM2A1,表示COM2A的第1位
  4. (靠,其实是第2位,不过程序员们是从0开始数数的)。
  5. 所以_BV(COM2A1)表示COM2A = 10;类似的,_BV(WGM21) | _BV(WGM20) 表示 WGM2 = 011。”
  6. 从ATmega328P datasheet 中的 Register summary中可以找到8位寄存器TCCR2A。COM2A1,COM2B1,WGM21,WGM20是TCCE2A中的位的名称,本身不是寄存器。
  7. Address Name Bit7 Bit6 Bit5 Bit4 Bit3Bit2 Bit1 Bit0
  8. (0xB0) TCCR2A COM2A1 COM2A0 COM2B1 COM2B0 – – WGM21 WGM20
  9. 所以_BV(COM2A0)即1<<COM2A0即01000000,依次类推命令
  10. TCCR2A = _BV(COM2A0) | _BV(COM2B1) | _BV(WGM21) |_BV(WGM20)
  11. 可以转化为
  12. TCCR2A = 01000000 | 00100000 | 00000010 | 00000001

  13. TCCR2A = 01100011
复制代码



作者: 小甘的小书包    时间: 2014-5-2 15:59
zjg2218 发表于 2013-7-17 22:11
期待中……
用个舵机测试器说不定也行~

Are you 确定?



作者: 小甘的小书包    时间: 2014-5-3 13:26
你好,我想问一下7e的油门电位器是什么型号的,有空的时候能帮我看下吗,谢谢!!


作者: er9x    时间: 2014-5-6 20:33
知道澄星6050可以用华科尔D7E加哪种高频头控制的望不吝赐教啊

作者: k320    时间: 2014-5-17 02:20
小甘的小书包 发表于 2014-5-3 13:26
你好,我想问一下7e的油门电位器是什么型号的,有空的时候能帮我看下吗,谢谢!!

是這個嗎?

(, 下载次数: 47)

(, 下载次数: 35)


作者: 小甘的小书包    时间: 2014-5-17 12:19
k320 发表于 2014-5-17 02:20
是這個嗎?

对,这个是什么型号的?别的遥控一般是B5K的。


作者: k320    时间: 2014-5-21 03:23
小甘的小书包 发表于 2014-5-17 12:19
对,这个是什么型号的?别的遥控一般是B5K的。

恩,沒錯,是 5k 的,剛用電表量一下。

作者: 小甘的小书包    时间: 2014-5-21 13:26
k320 发表于 2014-5-21 03:23
恩,沒錯,是 5k 的,剛用電表量一下。

好,谢谢


作者: cyx520    时间: 2014-5-23 23:01
太深奥了,留着研究研究

作者: k320    时间: 2014-6-12 17:38
本帖最后由 k320 于 2014-6-12 17:43 编辑

6/12
舵機抽蓄問題還是沒解決,感覺很難
昨天找到另一個PWM教學,感覺還不錯,持續關注中...
https://sites.google.com/site/qeewiki/books/avr-guide/pwm-on-the-atmega328

其中關於TIME1的部分,先把 Timer 搞懂再說

(, 下载次数: 25)

TIME0 跟 TIME2 也一併附上,省去查找時間

TIME0
(, 下载次数: 26)

TIME2
(, 下载次数: 33)


作者: k320    时间: 2014-6-13 03:30
本帖最后由 k320 于 2014-6-18 02:33 编辑

感謝樓主,測試成功了,不會抽蓄了
原來問題是教練線接錯了
附上照片
(, 下载次数: 23)
1.要依照g大的教學,把第三條剪斷,接到照片中的紅線銲點上。
2.黑色那條接地。

一共只用兩條線
D7E  <------------> Arduino
------------------------------
黑色(第1條)
白色(第2條)
紅色(第3條) -----------D10
白色(第4條)------------接地
------------------------------

我電位器使用3K,接線如下
左 中 右
----------
-  A0 +

代碼就是樓主20樓那個

折騰了好久,原來是我線接錯了,不過也讓我學習了PPM,感恩。






作者: k320    时间: 2014-6-14 23:34
本帖最后由 k320 于 2014-6-18 02:39 编辑

經測試,一個旋鈕可以正常工作
兩個旋鈕就不行了,應該是 PPM frame 長度要修正
但我不會怎辦呢,先貼兩個 PPM 長度參考,不知從哪個網址下載的
長度分別是 20 ms, 22.5ms,看有大大願意提供修正後的代碼嗎。

(, 下载次数: 29)

(, 下载次数: 46)

兩顆旋鈕增加了3行,測試失敗
void loop(){
  //put main code here
  ppm[0] = analogRead(A0);//取第一顆旋鈕
  ppm[0] = map(ppm[0],0,1023,1000,2000);
  delay(10);
  ppm[1] = analogRead(A1);//取第二顆旋鈕
  ppm[1] = map(ppm[1],0,1023,1000,2000);
  delay(10);  
}

6/18
剛剛測試,完全正常,我甚麼也沒做,就是重新接線,
兩顆旋鈕都能正常工作,真奇怪,可能是我的線路有問題。
謝謝大家。

準備裝上D7E了,我的用2S鋰電,8.4V,必須降下來到5V
我想到的是串5個二極體,可以降到4.9V,其中一個用LED來當指示燈,再接個開關。
明天去買材料。
 





作者: k320    时间: 2014-6-20 02:13
本帖最后由 k320 于 2014-6-20 15:33 编辑

6/20,我一定要完成它
裝上D7E後,書上說二極體一支壓降0.7V,那 5*0.7=3.5,就夠了,結果實測一支只有降低約0.2V,放棄這招
改用嵇納二極體ZD,它可以穩定輸出我要的電壓(如圖),但是又失敗了,做好時用電表量一下是5V,但裝上Arduino Pro Mini 後,一量只剩0.2V,怎會這樣
(, 下载次数: 21)


只剩最後一招了,就是用IC 7805,希望會成功。
(, 下载次数: 37)

6/20 成功了
使用7805 IC,可以正常供電。
謝謝樓主無私的分享。
(, 下载次数: 33)




作者: Jacky杰杰    时间: 2014-6-20 23:27
牛人在民间

来自安卓客户端
作者: WCQ329    时间: 2014-6-21 23:01
我也刷了, 不是G大的固件,改了3档开关,目前混控APM6个模式稳定中 (, 下载次数: 28) (, 下载次数: 29)



作者: apple1992    时间: 2014-7-9 18:55
babyken 发表于 2013-7-19 19:55
按头追的也可以
http://bbs.5imx.com/bbs/forum.php?mod=viewthread&tid=803115&page=1

楼主,按照头追的话,小板要刷什么固件呢


作者: 我只爱云    时间: 2014-8-25 15:03
增加旋钮的代码不全啊  就一行?


作者: 一定要爱你    时间: 2014-10-5 10:20
学习了

作者: 一定要爱你    时间: 2014-12-1 10:10
看看,学习一下

作者: 小甘的小书包    时间: 2014-12-5 20:25
flyhh 发表于 2013-7-23 09:14
nano也可以直接用,nano上有低压差稳压片,就算电池降到3.3,输出还有两点几V,ATmega328电源电压范围是1.8 ...

他们的单片机一样吗?所以都可以用吗?



作者: flywat    时间: 2014-12-5 22:59
路过

作者: fanqicai    时间: 2014-12-10 20:44
babyken 发表于 2013-7-18 20:08
7e
D10 接 PPM in加一条地线

这代码是什么意思呢?怎么全是English!!!看不明


作者: 充电器    时间: 2015-1-9 19:52
学习了

作者: Offer    时间: 2015-7-15 00:22
直接用3.3V带ADC PWM的MCU会比较简单点


作者: zjc1118mm    时间: 2015-12-22 10:30



前辈能麻烦发份d7e改旋钮烧写代码的教程给我么。。麻烦了。。谢谢241387777@qq.com


作者: Salem    时间: 2015-12-22 12:09
D10怎么加?

作者: zjc1118mm    时间: 2015-12-22 15:00



前辈看了你之前的老帖。请问前辈还有d7e控改旋钮的教程没。。能否发给我下。谢谢,还有就是给328p小板烧写程序的教程。谢谢


作者: 小甘的小书包    时间: 2016-7-4 11:23
flyhh 发表于 2013-7-23 14:01
我这完全没编程经验的小白研究了一下,修改如下
原码:
  ppm[0] = analogRead(A0);

你好,我下载好了后,控检测不到ppm,我按照你说的改了程序,A0有输入了,但A1依然没有信号,这是怎么回事?


作者: aigz    时间: 2016-7-5 13:47
求详细步骤,说明。





欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://wz.5imx.com/) Powered by Discuz! X3.3