發表文章

目前顯示的是 1月, 2012的文章

DSM2 讀書心得 2

圖片
上次根據RC group上的討論做了一個給Futaba FF9用的DSM2 用的low power module後, 信心大增... 傳說DX4e裏的module是full range的, 弄了一個來看看....沒錯....18dbm..... 背面.... 產線上裝配時應該是先用雙面膠黏起來,再焊排針的....拆的時候, 我先用尺把泡棉雙面膠搞破, 再在排針面上一堆錫, 來回加熱 慢慢拔起....要小心... 這個module除了是full range外, 他還支援DSMX.....我沒有很清楚DSMX跟DSM2是改了哪些地方...但是這個模組是兩者共用的,應該是軟體的差異.... RC group上給 futaba 用的chematic是這樣接的...這個先生的code使用了arduino的 internal pull high, 所以沒有pull high D8... 這回要接的是SD-10G, SD10G的PPM 訊號型態跟futaba相同, 但是信號準位約在6~8V,要看當時的電池電壓.... 我第一次試著用10K可變電阻去分壓, 不知為何, 一接上去, 訊號元的準位就低到一個不行....放棄.... 改用這樣接, 將D8 pull high到3.3V(我還是用3.3V的8Mhz pro mini), 再接一個蕭基特二極體, 這樣當PPM low的時候就會把D8 拉到low了... 這樣也有個問題, 那個 Low的時候, 不會到0V,而且跟pull high的阻值有關...可能是跟SD-10G PPM signal的內部線路有關吧...我試過,那個電阻約4K, arduino就能讀到信號了....最後我是拿17.8K(因為手頭上只有這個),這時low的準位看起來比較好.... 接好後, 程式看來也沒問題, C2PO的程式有個debug的選項, 可以先在PC上用serial monitor用115200去看要傳的資料有沒有對.... 幾個小心得: 1.使用debug,請把原來的#define DE_BUG 改成 #define DEBUG 2. 他的程式有rising edage跟falling edage選項, ( 很奇怪 他把Sanwa歸類跟JR成falling edage, 可是我的情況是跟futaba一

Timer of 168/328 and Arduino/ servo PPM

話說花了一個晚上去看, mega168其實提供3個timers, Timer0, Timer1, Timer2 Timer1是16bits, timer0跟timer2都是8bits.... Timer 是根據system clock(當然clock source 也是可以另外選的),再去用prescale做除頻的動作.... 可以config的function很多.... arduino本身在wiring.c裏的initial 對 timer0 作了規劃,用來做 millis()跟micro() 的基本....他選了64當prescale 16Mhz/64=250Khz, 也就是說Timer一格是0.000004 s=4us, 這就是為什麼micros()的精確度最多到4us 8bit的timer0,over flow 是:4us*256=1024us=1.024ms,millis()就是用這個去做計算, 但是它有做誤差的補償... arduino另外對 timer1 也做了 PWM 輸出的規劃....拿來做analog.write,不幸得很, 他也是用64當prescale,所以解析度也是4us 解析度4us,其實用來輸出servo PPM時最大誤差會到7-8us,這就會有飄來飄去的問題... 4us對RC servo來說, 勉強而已....一般servo的death band約就在4us.... 其實以16Mhz, 16 bits timer, prescale=1, 解析度:0.0625us , overflow period:4.096ms prescale=8, 解析度:0.5us , overflow period:32.768ms Prescale=16, 解析度:1us overfolw period:65.536ms prescale=32, 解析度:2us overflow period:131.072ms prescale 選8 很適合需要快速反應的servo application. mega168在 timer1上還有一個capture mode, 有 noise filter可以選(其實就是要4個訊號都一

Q-axis

圖片
最近做了一塊板子, 用了 ST 3軸gyro, Acc, Mag sensor, 再加上ATMEGA 328, 手工上件, 死了一堆sensor.... http://code.google.com/p/q-axis/ 這是做來玩的, 算是為了喝牛奶養一群牛的案例吧.... 四軸我想做輕巧米你的, 先從網路上買了motor間距14cm的機體, 可是單層的結構讓振動在3S實很嚴重, 再加買一層結構, 讓振動減少..... 那個槳我也是在做過平衡的, 改天再寫一篇如何平衡 這是所用的電裝: 不含電池還是爬上了這個重量: 電池用我的3S 850mah 後來想到用碳刷馬達跟電池也許可以做得更輕巧....無刷馬達跟電變是很重的.... 用了LEGO, 應該有機會再少一點, 用N channel MOSFET做了PWM的碳刷電變, 配上小電直的7mm motor減速組..... 由於當初設計時, 飛控板是可以跑3.3V的, 所以打算用1S來做動力.... 一切運作正常.... 到模型店買了小的正逆槳才發現這個槳真是太爛了, 完全不平衡.... 跑到GWS,最小的反槳只有5030, 平衡有好一些, 但是就算剪過還是大了些.... 不知道是槳太大造成重拖或是還是太重了, 用1S只能勉強浮起來.... 2S,可以飛起來, 但是馬達很快就有燒焦味了... 下一步應該是改輕一點, 或是改更小的無刷....

DSM2 讀書心得

圖片
這一陣子在RC group上有讀了一些關於DSM2的東西, 主要有兩篇: 1. Build your own DSM2 transmitter module (its working!) 2. DSM2 compatible TX module 非常有意思, 跟大家分享一下.... 之前有一陣子 大家都在討論 2.4G latency的事情, 說PPM多落伍多落伍, 其實如果看了AM-FM-PPM-PCM-digital 2.4G的演變, 會覺得PPM其實算是一代功臣(其實latency最大的是PCM,但是大家當時可是把她當寶啊) DSM2不論他科技的程度如何, 已經大量攻下市場, 再說去哪找那麼便宜的接收, 一顆6動不到300NT.....以前72PPM多要1000NT.... DSM2也有出DM9/DM8的模組, 給FF9 or 9XII等來改, 基本上是用了一顆MCU解開PPM, 再丟進去RF module裏, 只是不知道為什麼, Spektrum的DM8只能解8 channel, DM9才能解9 channel, 聽說解9以下的會出問題.....也許是市場考量吧.... 老外拿起了MCP的小四動, 拆開, 一步一步解出了DSM2的接收介面跟格式,細節請參照原鍊結, 這算是很多人的努力: UART, boudrate 125000(這算是特殊一點了), 8,N,1 拆了我的LP4DSM, 跟著老外接, 接到我的3.3V UART轉USB, 正確的設定terminal, 125000,8,N,1 出現了!! 00 00 00 AA 05 FF 0A 1B 0D E3 13 54 14 AA 00 00 00 AA 05 FF 0A 1B 0D E3 13 54 14 AA 00 00 00 AA 05 FF 0A 1B 0D E3 13 54 14 AA 00 00 00 AA 05 FF 0A 1B 0D E3 13 54 14 AA 00 00 00 AA 05 FF 0A 1B 0D E3 13 54 14 AA 00 00 00 AA 05 FF 0A 1B 0D E3 13 54 14 AA 根據老外的記載, 00 00是 header bytes, 後面各是各channel的high/low b