作者: zonebaby 時間: 2009-8-20 23:14 標題: 新手試試 --- Arduino L298N Motor擴展板
係網上搵到E塊板既兩條link,
http://item.taobao.com/auction/i ... 3408dc9106c88a6.htm
http://blog.arduino.cn/2009/04/1 ... %E5%B1%95%E6%9D%BF/
E度就有粒chip既資料
http://www.st.com/stonline/products/literature/ds/1773.pdf
可以了解多D。
睇完先知道料L298N可以用去推動電感負載,好似繼電器,電磁開關,直流同步進電機。
E塊板既介紹就用三個接口去推一隻直流摩打,推兩個摩打就要佔用6個接口,感覺上好似多了一點。
按網頁資料,6個接口分別安排如下:
摩打接口A+A-:
轉動方向一控制:digital pin 13;
轉動方向二控制:digital pin 12;
轉動速度控制 :digital pin 10;
摩打接口B+B-:
轉動方向一控制:digital pin 11;
轉動方向二控制:digital pin 8;
轉動速度控制 :digital pin 9;
另外塊板既digital pin 0-7就特別提供配套既+V(Vcc/5v)同Gnd更方便接駁senor同配件。
L298N Motor
https://www.hkepc.com/forum/attachment.php?aid=930549&k=1b2147f1627473892410fed41dadc811&t=1788211762&sid=57Z7Iw6vFG

作者: zonebaby 時間: 2009-8-20 23:17
因為摩打好大機會用比較大的電力,所以線路設計容許使用外接電源供電。
電源接口係圖中最下面的左邊三個中左外面係VEX正電源,右入面係Gnd接地。
中間係通Arduino既外部+5V供電,所以要小心唔好接錯。
至於其它接口,由最右外邊數起分別為A+,A-,B+,B-。
但因塊板設計有兩個摩打電源供電,所以要小心睇下最上面個組Jumper,叫VM,係唔係插在VEX那邊。
如果塊Arduino係使用9V外接電源,同埋9V又啱個摩打用的話,E個Jumper就可以改為插VIN果邊。
即係將個Jumper向上移一格,因為同Arduino既VIN相通,所以摩打變左改為由塊Arduino外接9V電源供電。
因此要小心睇下電源供電規格,同埋兩個摩打的用電要求。基本考慮係兩隻摩打電壓相同,電流用量要求相加。
除此之外更加要留意毎一隻摩打既電壓電流一定要低過L298N既規格好多,以策安全,特別係E塊板粒chip既散熱貼近板面,可
能因此散熱不良而升溫,導致降低左原有既可持續工作規格。
按網頁說明塊板可推動既DC摩打規格為
“...最高工作電壓可達46V,持續工作電流為2A,瞬間峰值電流更是可達3A。...”
但切記實際應用一定要低過E個規格好多好多,以策安全,切記切記。
L298N Supply
https://www.hkepc.com/forum/attachment.php?aid=930550&k=8bf3799f45fd801eb76a8235640272c9&t=1788211762&sid=57Z7Iw6vFG

作者: zonebaby 時間: 2009-8-20 23:17
睇番datasheet跟番D接綫口,方便寫code...
OUT1(2)=A+
OUT2(3)=A-
In1(5)=pin13
In2(7)=pin12
EnA(6)=pin10
OUT3(13)=B+
OUT4(14)=B-
In3(10)=pin11
In4(12)=pin8
EnB(11)=pin9
搞番兩個8cm風扇減速試下....
補充:
E個code主要係試下個Arduino PWM係塊L298N Motor擴展板既應用,詳情可參考post#5
code
- // motor A
- int In1 = 13;
- int In2 = 12;
- int EnA = 10;
- // motor B
- int In3 = 11;
- int In4 = 8;
- int EnB = 9;
- unsigned long time;
- int startspeed;
- int topspeed;
- int dir;
- int value;
- void setup() {
- pinMode(In1, OUTPUT);
- pinMode(In2, OUTPUT);
- pinMode(In3, OUTPUT);
- pinMode(In4, OUTPUT);
- // set plus direction
- digitalWrite(In1, HIGH);
- digitalWrite(In2, LOW);
- digitalWrite(In3, HIGH);
- digitalWrite(In4, LOW);
-
- }
- void loop() {
- // set start speed
- startspeed = 15;
- topspeed = 255 + startspeed;
- // set 4 duty cycles for testing
- for(value = startspeed ; value <= 255; value+=120)
- {
-
- analogWrite(EnA, value);
- analogWrite(EnB, topspeed - value);
- // delay to see the result or waiting the fan to stop completely
- delay(12000);
- }
- }
1. 增加“重要補充:”一段 [ 於 2009-8-21 11:16 編輯 ]
2. 依據post#5修改左段code,並因此改番個“重要補充:”
[ 本帖最後由 zonebaby 於 2009-8-22 11:21 編輯 ]
作者: zonebaby 時間: 2009-8-20 23:17
E個Code都係放在examples\L285N\fanSpeed入面....
L285N Location
為左安全計先關掉摩打外接電源,再等Compile同upload成功後,再開番試機。
插左電兩把風扇開如唔會轉,要等一陣,兩把風扇就會轉。因純粹試機,冇執個code,識轉就ok。
L285NSuccessA
L285NSuccessB
L298N Motor擴展板試機成功.......
https://www.hkepc.com/forum/attachment.php?aid=930551&k=0bd1d1fb3b795db360ee204732dcff32&t=1788211762&sid=57Z7Iw6vFG

https://www.hkepc.com/forum/attachment.php?aid=930552&k=8b801c00fc64bc0a9c7cfb60c8723acd&t=1788211762&sid=57Z7Iw6vFG

作者: zonebaby 時間: 2009-8-20 23:17
後記:
參考左
http://arduino.cc/en/Reference/AnalogWrite
http://arduino.cc/en/Tutorial/PWM
先知道
1. 用analogWrite前係唔需要預先用pinMode去設定個接口為輸出既。
2. PWM signal frequency 係預設左大約 490-500Hz.
3. 而analogWrite就用作設定個Duty Cycle。最細0代表長關,而最大255代表長開。
如果要調整個PWM Frequency就要睇下E度......
http://www.arduino.cc/playground/Main/TimerPWMCheatsheet....
http://www.arduino.cc/playground/Main/TimerPWMCheatsheet
睇完就將post#3個code作出修改重post,當中改了.......
1. 刪除冇用既 pinMode(EnA, OUTPUT); 同埋 pinMode(EnB, OUTPUT);
2. 把風扇試過Duty Cycle大约130已經可以起動,所以個startspeed就改為........
startspeed = 15;
3. 為左簡化個code同埋試下唔同Duty Cycle下既輸出情況,改個for loop為.....
for(value = startspeed ; value <= 255; value+=120)
即Duty Cycle由15,135,255...,等3個不停地循環落去。
4. 笫二個寫EnB既analogWrite改為.......
analogWrite(EnB, topspeed - value);
令到輸出B剛好同輸出A既Duty Cycle次序反過來,即輸出B=255,135,15...;輸出A=15,135,255...。
5. 為左睇到Duty Cycle變動所帶來的效果,將delay延長,改為
delay(12000);
經修改後.........
等Compile同upload成功後,再開番試機。
重新再插個USB,塊板會重新reset,要等一陣,.....
塊L298N Motor擴展板上面既B+紅灯就會好光,同埋B接口既風扇會轉,因為B接口既Duty Cycle=255,量度個平均電壓=10.6V。
另外板上面既A+紅灯就會暗D,同時把風扇唔會轉,因為A接口既Duty Cycle=15。
再等一陴,delay(12000);,....
塊L298N Motor擴展板上面既B+紅灯仍然光,同埋B接口既風扇都會轉慢D,因為B接口既Duty Cycle變少左得番135,量度個平均電壓=6.2V。
另外板上面既A+紅灯就會變光D,同時把風扇開始會轉,因為A接口既Duty Cycle變大左有135。
又再等一陴,delay(12000);,....
塊L298N Motor擴展板上面既B+紅灯又再變暗D,同埋B接口既風扇開始停,因為B接口既Duty Cycle變少左得番15,量度個平均電壓=0.6V。
另外板上面既A+紅灯就會再變光D,同時把風扇會再轉快D,因為A接口既Duty Cycle再變大左有255。
L285NSuccessC
個code改過後,個Arduino PWM係塊L298N Motor擴展板試機成功..........
[ 本帖最後由 zonebaby 於 2009-8-22 11:21 編輯 ]
https://www.hkepc.com/forum/attachment.php?aid=931313&k=9915c4294118f9e6440272a2595ae8f0&t=1788211762&sid=57Z7Iw6vFG

作者: avdaemon 時間: 2009-8-21 08:44
is it a PWM control?
作者: zonebaby 時間: 2009-8-21 11:05
E個code係參考有關E塊板既兩條link(post#1),附例再簡化。
個code入面既analogWrite好似冇乜作用,同埋個for loop既功能應用方面亦不大理想,遟D會再搞清跫。所以註明.........
“因純粹試機,冇執個code,識轉就ok。”
但E塊板應該可以通過軟件由pin10,9控制EnA,B達到PWM控制。
PS: 個code已搞清楚,並作出修改達到應用arduino PWM控制的目的後,在post#3重貼。
[ 本帖最後由 zonebaby 於 2009-8-22 11:45 編輯 ]
作者: zonebaby 時間: 2009-8-22 11:22
個code已作出修改去達到應用個Arduino PWM的目的。
不過要留意E個code既用法有
PWM signal frequency 係預設左大約 490-500Hz.
既限制。
作者: avdaemon 時間: 2009-8-22 12:31
so L298N is not a PWM chip? or just a H-bridge?
作者: avdaemon 時間: 2009-8-22 12:33
I found it

作者: zonebaby 時間: 2009-8-22 12:46
可以睇下post#1有關粒L298N chip既datasheet link
http://www.st.com/stonline/products/literature/ds/1773.pdf
仲有多D應用方法同資料,......


