Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
樓主: tommylin

arduino 的學習之路..( Part. 1~11 )

[複製鏈接]
 樓主| 發表於 2011-2-21 00:27:22 | 顯示全部樓層
本帖最後由 tommylin 於 2011-2-21 00:28 編輯

Part 7:
無刷馬達的控制..
在這個學習中使用了搖控直升機的 無刷馬達和電子變速器(ESC)
使用材料:
Align ESC BL15X
Align BL250 Brushless motor

動作說明:
提升馬達速度, 降低馬達速度, 暫停..

Code:
#include

Servo myservo;

void setSpeed(int speed)
{
int val = map(speed, 0, 100, 0, 180);
myservo.write(val);
}
void setup()
{
Serial.begin(115200);
myservo.attach(9);
}
void loop()
{
Serial.println("System Ready !!! Hit the 1 ");
do{ if ( Serial.read() == '1' ) break; } while(1);


int speed;

Serial.println("Throttle up");
for(speed = 37; speed <= 90; speed += 1) { setSpeed(speed); Serial.println(speed); delay(100); } setSpeed(30); delay(1000); Serial.println("Throttle down"); for(speed = 90; speed > 37; speed -= 1) {
setSpeed(speed);
Serial.println(speed);
delay(100);
}
Serial.println("waiting for 5 sec...");
setSpeed(30);
delay(5000);
}

//=============================
另外也可以用程式..取代使用遙控器油門設定電變(ESC)的方式
例如電變的 緩啟動, 煞車模式, 截止電壓...等..
依照不同廠商生產不同的電變而有所差異..

Code:
// 程式設定ESC 狀態
void AdjustESC ()
{
//plug ESC Battery first, when ESC start music ready, enter "1" in serial window
Serial.println("Enter Setup Mode");
do{ if ( Serial.read() == '1' ) break;
setSpeed(90);
} while(1);
delay ( 2000 );
setSpeed(30);

// waiting for ESC edit mode music and into brake edit mode,
// then enter "1" in serial window
Serial.println("Break Mode - soft Brake");
do{ if ( Serial.read() == '1' ) break; } while(1);
setSpeed(50);


Serial.println("Electronic Timing -Mid timing");
do{ if ( Serial.read() == '1' ) break; } while(1);
setSpeed(50);


Serial.println("Battery Protection - High cut off voltage protection");
do{ if ( Serial.read() == '1' ) break; } while(1);
setSpeed(30);


Serial.println("Aircraft Mode - normal airplane");
do{ if ( Serial.read() == '1' ) break; } while(1);
setSpeed(30);


Serial.println("Throttle response speed - Quick speed");
do{ if ( Serial.read() == '1' ) break; } while(1);
setSpeed(90);


Serial.println("BEC output voltage - 5.5V");
do{ if ( Serial.read() == '1' ) break; } while(1);
setSpeed(50);

}

影片:
發表於 2011-2-21 04:46:37 | 顯示全部樓層
由電腦連接Arduino控制DC馬達(可正反轉)最簡單的方式為何?
 樓主| 發表於 2011-2-21 10:52:17 | 顯示全部樓層
由電腦連接Arduino控制DC馬達(可正反轉)最簡單的方式為何?
vegewell 發表於 2011-2-21 04:46



   Vegewell 大大.. 您的問題很棒,也是我下一個想做的課目,
目前找到的資料都是針對 "碳刷馬達", "步進馬達"的方案,
我會繼續尋找 "無刷馬達"的正反轉方案...

如果有人已經玩過了, 也懇請幫忙解惑吧~
發表於 2011-2-21 13:11:42 | 顯示全部樓層
馬達好像可以用在非常多地方,好想有系統的學習馬達相關的知識
不知道這方面前輩都是看哪本書?
nichal 該用戶已被刪除
發表於 2011-2-21 13:19:37 | 顯示全部樓層
如果要控制無刷馬達
先確認有沒有感測器
有感測器的話要規畫三隻輸入腳

要透過Arduino控制的話
需要外接一片驅動板
(跟DC要外掛H Bridge一樣)
用六步方波控制需要六隻輸出腳
用弦波控制可以簡化到三隻輸出腳
不過要外接的硬體驅動板有支援dead time的調整
大致上是這樣

要知道無刷的控制方式
概念可以從這裡獲得
http://www.silabs.com/Support%20Documents/TechnicalDocs/An191.pdf
發表於 2011-2-21 15:14:52 | 顯示全部樓層
回復 23# tommylin


    聽說:
[目前無刷馬達主要的應用大多在遙控航空模型上當做動力來源,但在益智娛樂機器人的使用上並不多,
目前市面上用於益智娛樂機器人的伺服機都還是使用有刷馬達做為主要的動力來源,]

為何要用無刷馬達?
難道無刷馬達可以跟步進馬達一樣精準控制嗎?
發表於 2011-2-21 15:18:03 | 顯示全部樓層
本帖最後由 vegewell 於 2011-2-21 15:20 編輯

感謝nichal提供的資訊,

我的重點是由電腦直接控制 有減速電機的有刷馬達.
有一片arduino,
加上一顆 L298N 或是 SN754410 或是 TB6612FNG,
在加上電源.電阻. led 或二極體,
線接一接,應該就可以了,
拿到元件後就來試試,
如果成功,就po到這專題來.
 樓主| 發表於 2011-2-21 15:49:54 | 顯示全部樓層
本帖最後由 tommylin 於 2011-2-21 15:52 編輯
回復  vegewell


    聽說:
[目前無刷馬達主要的應用大多在遙控航空模型上當做動力來源,但在益智娛樂 ...
vegewell 發表於 2011-2-21 15:14


原因很單純的..
碳刷是直接接觸, 會磨耗...
 樓主| 發表於 2011-2-21 22:20:33 | 顯示全部樓層
Part - 8:

讀取 Futaba 2.4G 接收機油門信號..配件:
Futaba FF9 2.4G 發射器
Futaba R617FS 2.4G 接收器

Arduino Pin 9 連接 接收器 pin 3 信號
11.1V 鋰電 和 Arduino 共地 (GND)

執行結果:顯示數值
油門最低點 110
油門最高點 191











Code:

unsigned long TransmitterThrottle=0;

void setup()
{
  pinMode (9, INPUT);

  Serial.begin(57600);
  Serial.println("System Ready~");
}

void CheckTransmitter()
{
  TransmitterThrottle = (pulseIn (9, HIGH, 200000))/10;
}

void loop()
{
CheckTransmitter();
Serial.print ("pulse: ");
Serial.println (TransmitterThrottle);

delay (200);
}
發表於 2011-2-22 22:01:39 | 顯示全部樓層
無刷馬達, 比較貴.

大扭力無刷馬達:

----------------------------------------
 樓主| 發表於 2011-2-22 23:40:06 | 顯示全部樓層
回復 30# vegewell

看起來這個有 遊星減速齒了,而且好像是傳說中可以調進角的馬達?
有這顆馬達的相關規格嗎?
多少齒比? 多少 Kv ? ... 多少錢 $_$
發表於 2011-2-23 10:40:07 | 顯示全部樓層
回復 31# tommylin


    確實比較貴,
Mega Power TAURUS HV 4.5T
1/8車用感應式無刷馬達

訂         價 2000 元
ATM轉帳價 2000元
網路特惠價 2000元
每伏特轉速 4800rpm/V(KV)

http://rtc.ilinke.com/product/QyProductAction.do?func=detail&func=detail&pdt_mainid=P0066610
發表於 2011-2-23 11:03:24 | 顯示全部樓層
操作有刷馬達的 L298N 或是 SN754410 或是 TB6612FNG,
只能承受2A,
不適合大扭力馬達.
nichal 該用戶已被刪除
發表於 2011-2-24 18:14:01 | 顯示全部樓層
無刷馬達其實不貴
(找同等輸出能力的碳刷馬達來比較的話)
貴的是馬達控制器......
因為碳刷馬達通直流就可以動(不需要控制器)
無刷沒有控制板就一定不能動
而高扭力(>1KW)的無刷控制板基本都要兩千以上(不含電源)
而500W左右的電變也在千把元左右
如果是考慮使用壽命的話
我想應該是值得投資的~~~~
發表於 2011-2-24 21:56:56 | 顯示全部樓層
感謝nichal提供的資訊,

我的重點是由電腦直接控制 有減速電機的有刷馬達.
有一片arduino,
加上一顆 L ...
vegewell 發表於 2011-2-21 15:18


用MOSFET搭H-Bridge控制吧!!一般L298N這類控制IC的驅動電流太低,不適合用在航模。
發表於 2011-2-24 22:01:50 | 顯示全部樓層
回復  tommylin
為何要用無刷馬達?
難道無刷馬達可以跟步進馬達一樣精準控制嗎?
vegewell 發表於 2011-2-21 15:14

1.無刷沒有電刷磨耗問題。
2.相同大小的馬達,無刷可以做到較大的扭力。
3.精準控制,可以。不過通常是搭配減速機。不管無刷有刷,直驅的控制線性度都不好,尤其在低速時。但是搭配減速機就能改善。
另外相同大小的步進馬達也無法提供跟無刷一樣大的扭力輸出。
發表於 2011-2-24 22:02:07 | 顯示全部樓層
回復 34# nichal


    請問nichal:
我有一顆 6V大扭力直流有刷馬達,
馬達由 5v 100A電源供應器供電,
想接 5v雙刀雙擲繼電器,
並用Arduino控制, 控制正反轉.
大概如下圖:
http://slab.concordia.ca/wp-content/uploads/2008/09/img_0190-537x402.jpg
請問還要加上其餘元件嗎?
發表於 2011-2-24 22:03:49 | 顯示全部樓層
回復 35# g921002

想用一顆繼電器試試,
不知行否?
發表於 2011-2-24 22:07:41 | 顯示全部樓層
本帖最後由 vegewell 於 2011-2-24 22:08 編輯

此 超大扭力減速馬達
額定電壓:6V               
電壓範圍:3—9V
空載電流:700MA左右
額定電流:2A
轉速:6V電壓時,90轉/分
扭矩:20KG/CM
------------------------
看能否做為載重物的車輪.
發表於 2011-2-25 21:06:06 | 顯示全部樓層
本帖最後由 vegewell 於 2011-2-25 21:21 編輯

我自己摸索的結果:
可以改成四個固態繼電器SSR-DD控制轉向,
要再接一個relay,讓馬達停止通電,
再裝一個 VPC光電耦合器, 保護arduino,
想接一個電子變速器ESC 或 n型mosfet irfz44n調整馬達速度,
其實也不必, 車輪載重物, 能滾動就不錯了.

另外最重要是煞車部份, 想裝個 電磁剎車片,
或再接一個relay,讓馬達兩端和GND短路造成煞車.

看來還有得喬....
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-3-28 17:43 , Processed in 0.197734 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表