Assembed Gertboard (Rev2.0) - 利用 Raspberry Pi (樹莓派) 學習與開發電子 (週邊) 的最佳拍檔
PiGertboard 套件 (A) - Raspberry Pi (樹莓派) Gertboard 嵌入式套件
PiGertboard 套件 (B) - Raspberry Pi (樹莓派) Gertboard 外接式套件
Gertboard - Motor Controller ( 粉紅色框線 ),source: Gertboard User Manual (Rev 2.0) |
Gertboard - Open Collector Driver 電路圖,source: Assembled Gertboard Schematics |
馬達控制器內建溫度保護電路 (TSD)、過電流保護電路 (OCP)、過電壓保護電路 (OVP)、防止低電壓誤動作電路 (UVLO) 等保護電路,因此能在各種條件下對驅動IC或負載提供保護,達到裝置的高可靠性。電流由 GertBoard 提供 2A 的保險絲保護。
GertBoard 控制直流有刷馬達是利用 J5 的 MOTA 與 MOTB 兩個接腳,對這兩支接腳輸入高、低準位或是 PWM 訊號會有不同的變化,不但可以控制轉向也可以控制轉速,如下表所示:
Gertboart - 直流有刷馬達驅動控制邏輯表,source: ROHM BD6222HFP Datasheet |
直流有刷馬達驅動 - 接線圖:
ROHM BD6222HFP 的電壓最大可到 18V,供應電壓應在 DC 6V 以上;PWM 操作頻率在 20 ~ 100kHz 之間。
在 GertBoard J19 提供四個螺絲端子座,上面的 ⊥ 接馬達驅動電源負極、MOT+ 接馬達驅動電源正極、MOTA 與 MOTB 分別接馬達的正負極。
直流有刷馬達控制接線圖,source: Gertboard User Manual (Rev 2.0) |
直流有刷馬達控制接線照片 |
直流有刷馬達驅動 - 程式測試:
C 語言的測試程式為 motor ( hardware PWM ),Python 是 motor-rg.py ( software PWM ) 和 motor-wp.py ( hardware PWM ) ( "程式名稱-rg.py" 表示是使用 RPi.GPIO 函式庫, "程式名稱-wp.py"表示是使用 wiringpi 函式庫 ),程式的說明請自行參考 Assembled Gertboard Manual Rev2.0, Page 29 - 32。
不管是使用 software PWM 或是 hardware PWM 兩種方式的執行結果都一樣,請看如下影片的展示:
software pwm
hardware pwm
直流有刷馬達驅動 - 程式測試 ( 使用 wiringPi 函式庫 ):
接下來,我們要使用 C 語言搭配 wiringPi 函式庫來做 software PWM 和 hardware PWM 的測試程式。開始之前,照著下面指令下載程式的原始碼以及執行檔
pi@raspberrypi ~ $ mkdir codes pi@raspberrypi ~ $ cd codes pi@raspberrypi ~/codes $ wget -O - http://goo.gl/K9LB2 | tar -xvf - ... << 中間省略 >> ... pi@raspberrypi ~/codes/temp $ ls -l 總計 4 drwxr-xr-x 2 pi pi 4096 5月 5 18:17 p_motor pi@raspberrypi ~/codes $ cd p_motor/ pi@raspberrypi ~/codes/p_motor $ ls -l 總計 120 -rwxr-xr-x 1 pi pi 61440 5月 5 18:10 hwpwm_motor -rw-r--r-- 1 pi pi 8245 5月 5 17:39 hwpwm_motor.c -rwxr-xr-x 1 pi pi 11143 5月 5 17:22 swpwm_motor -rwxr-xr-x 1 pi pi 10968 5月 5 17:51 swpwm_motor_2 -rw-r--r-- 1 pi pi 10777 5月 5 17:59 swpwm_motor_2.c -rw-r--r-- 1 pi pi 10661 5月 5 17:21 swpwm_motor.c pi@raspberrypi ~/codes/p_motor $
總共有三個程式,分別使用 wiringPi 函式庫中輸出入指令 ( digitalWrite() )、軟體 PWM 指令 ( softPwmWrite() )和硬體 PWM 指令 ( pwmWrite() ) 來完成 ROHM BD6222HFP 控制邏輯表 a - h 中的控制方式。
ROHM DB6222HFP 控制邏輯表中,a - d 是一般馬達正反轉 ( Forward,Reverse ) 的控制,使用時都是全速控制,另外還有怠速 ( Idling ) 及煞車 ( Break ) 的控制;e - h 是馬達的轉速控制,使用 PWM 調變的方式,分為低準位 PWM 控制和高準位 PWM 控制 ( 也就是上面的 PWM 控制模式 A 與 B ),主要不同是在停止時是在怠速模式還是在煞車模式。
每個程式使用不同的控制指令輸入 a -h 邏輯表中所需要的訊號,我們定義了兩個 GPIO 接腳 GPIO #17 和 GPIO #18 在程式裡,分別叫做 MA 和 MB,分述如下:
- swpwm_motor.c 由於 wiringPi 函式庫的問題,pin 一旦被定義為 Soft PWM 就無法被 disable,所以 a-d 執行之後可以跳到 e- h 執行,但是反過來就不行,必須重啟程式才可以正常控制馬達。
- a - d digitalWrite( MA/MB, HIGH/LOW )
- e - h digitalWrite( MA/MB, HIGH/LOW ),softPwmWrite( MA/MB, 0 ~ 100 )
- swpwm_motor_2.c swpwm_motor_2.c 修正了 swpwm_motor.c 的問題,全部使用軟體 PWM 調變的指令來完成 a - h 所需的輸入訊號,因為
- a - d softPwmWrite( MA/MB, 0 / 100 )
- e - h softPwmWrite( MA/MB, 0 ~ 100 )
- hwpwm_motor.c 使用硬體 PWM 調變必須使用 GPIO #18,因此原本的 PWM 調變方式只剩下兩種 ( f 和 g ) 可以做且調變的範圍變成 0 - 1024,而且
- a - d digitalWrite( MA/MB, HIGH/LOW ),pwmWrite( MA/MB, 0 / 1024)
- e - h digitalWrite( MA/MB, HIGH/LOW ),pwmWrite( MA/MB, 0 ~ 1024)
softPwmWrite( MA/MB, 0 ) 的結果等效於 digitalWrite( MA/MB, LOW )
softPwmWrite( MA/MB, 100 ) 的結果等效於 digitalWrite( MA/MB, HIGH )
pwmWrite( MA/MB, 0) 的結果等效於 digitalWrite( MA/MB, LOW )
pwmWrite( MA/MB, 1024) 的結果等效於 digitalWrite( MA/MB, HIGH )
馬達驅動的接線方式都一樣,程式執行時會列出選單讓你選擇要執行的馬達驅動方式,swpwm_motor 和 swpwm_motor_2 有八種 ( 1- 8 ),hwpwm_motor 有六種 ( 1 - 4, 6 - 7)。執行之後的樣子如下所示,可以自己試試並看看這幾種驅動方式的不同之處。
DC Brush Motor Control --------------------------------- 1: Stand-by (idling) mode 2: Forward mode 3: Reverse mode 4: Break (stop) mode --------------------------------- 5: Forward (PWM control mode A) 6: Reverse (PWM control mode A) 7: Forward (PWM control mode B) 8: Reverse (PWM control mode B) --------------------------------- 0: EXIT --------------------------------- MODEL: 5 ### ← 輸入馬達驅動方式再按下 <ENTER> ### ↓ 列出驅動馬達的方式,從樹莓派到 Gertboatd 再到輸出 --- Raspberry Pi --- GPIO P1 | MA | MB | PWM | L --- Gertboard --- ROHM | FIN | RIN | VREF | OUT1 | OUT2 MOTOR | | MOTA | MOTB ___ | PWM | L | VCC | H | PWM MOTOR: FORWARD (PWM control mode A ... speed: 0 % ### ← 轉速百分比會顯示在這裡,從 0 → 100 再從 100 → 0 Press <ENTER> to continue... ### ← 完成動作之後等待使用者輸入 <ENTER>,再跳回去選單
以上就是 GertBoard 驅動直流有刷馬達的控制方式介紹,有關更詳細的資料,請下載 ROHM - BD6222HFP 資料手冊,相關需要的連結也在下方的資料文件下載區。
下一個單元,我們將說明 GertBoard 上的 ADC 與 DAC 晶片的使用方法。
賣場部落格 "認識 GertBoard " 系列文章:
- [ 認識與使用 Gertboard ] 首部曲 - 瞭解 GertBoard 電路板、建置編輯環境與測試程式碼下載與安裝
- [ 認識與使用 Gertboard ] 第二部曲 - 輸出入緩衝線路 ( 開關和 LED )
- [ 認識與使用 Gertboard ] 第三部曲 - ULN2803 開集極驅動 ( Open Collect Driver )
- [ 認識與使用 Gertboard ] 第四部曲 - 馬達驅動控制器 ( Motor Controller )
- [ 認識與使用 Gertboard ] 第五部曲 - 數位轉類比 ( MCP4802 ) 和類比轉數位 ( MCP3002 ) 轉換器 ( D to A and A to D converters )
- [ 認識與使用 Gertboard ] 第六部曲 - 各部分組合測試
- [ 認識與使用 Gertboard ] 第七部曲 - Atmel Atmega chip
撰寫中...
撰寫中...
<< Gertboard 相關資料文件下載>>
- ROHM - BD6222HFP ( PDF ) DC Brush Motor Drivers ( 18V / 2A max. )
- Assembled Gertboard Manual Rev2.0 ( PDF ) Gertboard 使用手冊 (Rev 2.0)
- Assembled Gertboard Schematics ( PDF ) Gertboard (Rev2.0) 電路圖
- Gertboard: Application Library for Gertboard Kit (Linux) Application Library for Gertboard Kit (Linux), contains test/example programs written in C.
Gertboard 應用函式庫 (由 C 語言寫成) 裡面包括原始檔與範例程式
- Gertboard Test Suite in Python 2.7 Gertboard Python 函式庫與範例程式
沒有留言:
張貼留言
留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!
發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?
不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !