時間過的很快,離上一次研究 NSR-150 RC 伺服馬達,到現在,又過了 2年半...
因為我也打算自己作一組RC電腦,目前用二期的電腦,在2000~3000轉左右,RC會全開一次,造成起步有點憨,如果作RC測試只在電門打開後開關個2、3幾次,應該就夠了,清積碳的頻率應該不需要縮短到每次起步都要清…
RC馬達上的【藍/綠】用途不明,嗯....
課題如下:
(Done) 一、利用Arduino A0 來取 RC馬達【綠、白/紅】的電阻值來判斷 RC目前的姿態。
(待驗證)二、D3 讀入引擎轉速。
(待驗證)三、D0、D1、D2 依照(一、二)來決定輸出給伺服馬達正反轉。
NSR-150 RC馬達控制方式學習,開機後開關二次,後面測試爬階梯,不會撞底跟撞頂。
課題如下:
(Done) 一、利用Arduino A0 來取 RC馬達【綠、白/紅】的電阻值來判斷 RC目前的姿態。
(待驗證)二、D3 讀入引擎轉速。
(Done) 三、D0、D1、D2 依照(一、二)來決定輸出給伺服馬達正反轉。
流程:
1、藉由開始初始化讀出最低點、最高點之電阻值,如 800Ω~3800Ω
min_data = 800Ω
max_data = 3800Ω
將之分成 7 等份。
(3800-800) / 7 = 428/每份
然後產生 ARRAY(7+1) 的陣列。
0級 = 800+0*428 = 800
1級 = 800 ~ 800+1*428 = 1228
2級 = 1228 ~ 800+2*428 = 1656
3級 = 1656 ~ 800+3*428 = 2084
4級 = 2084 ~ 800+4*428 = 2512
5級 = 2512 ~ 800+5*428 = 2940
6級 = 2940 ~ 800+6*428 = 3368
7級 = 800+7*428 = 3796
實際運轉安全範圍 = 1~6級,0級、7級低於 Lo、Hi 不用,避免馬達過度旋轉頂邊。
函式一:取得目前伺服馬達在第幾級別
函式二:什麼樣的轉速要用第幾級
函式三:馬達旋轉(RC開)
函式四:馬達旋轉(RC關)
函式五:馬達停止
函式六:依轉速自動旋轉至對應級別
函式一說明:取得目前伺服馬達在第幾級別
設馬達電阻值為 R2
return round((R2-min_data) / 428);
例 R2 = 1700 , 得 2 級
例 R2 = 3333 , 得 6 級
函式二說明:什麼樣的轉速要用第幾級
如果 rpm 低於 5500 轉,回應第1級
如果 rpm >= 5500 && rpm < 6000,回應第2級
如果 rpm >= 6000 && rpm < 6500,回應第3級
如果 rpm >= 6500 && rpm < 7000,回應第4級
如果 rpm >= 7000 && rpm < 7500,回應第5級
如果 rpm >= 7500 回應第6級
函式三說明:馬達旋轉(RC開)
D0 = true
D1 = false
D2 = true
函式四說明:馬達旋轉(RC關)
D0 = true
D1 = true
D2 = false
函式五說明:馬達停止
D0 = true
D1 = false
D2 = false
函式六說明:依轉速自動旋轉至對應級別
rpm = 目前轉速
rpm_step = 目前轉速應對應級別
R2_now_step = 伺服馬達目前級別
R2 = 伺服馬達目前電阻值
int rpm_step = 函式二(rpm);
int R2_now_step = 函式一(R2);
如果 rpm_step == R2_now_step (目前轉速對應級別==伺服馬達目前級別 )
函式五:馬達停止
如果 rpm_step < R2_now_step (目前轉速對應級別<伺服馬達目前級別 )
函式四:馬達旋轉(RC關)
如果 rpm_step > R2_now_step (目前轉速對應級別>伺服馬達目前級別 )
函式三:馬達旋轉(RC開)
這次在實作的過程,一度遇到困難,RC馬達一直不轉,後來發現是 L298N 的 INPUT
12V、地、5V,原來 5V 也要接電才會動~_~
之後再來把線路圖修正一下...
下一章,研究 Arduino 讀取轉速值。
差不多可以開始找同原廠的防水接頭~~