從本篇開始研究馬達類的控制,學習如何使用 Pi Pico (使用 MicroPython 語言)控制馬達、步進及伺服馬達。早期開始學習 Raspberry Pi 時,曾用過 ULN2003APG 這個 IC 插在麵包板上,連接樹莓派及馬達,有關實作及步進馬達相關的知識可參考:Raspberry Pi 筆記(12):控制步進馬達。本篇將實作如何判斷搖桿左右或上下搖動,藉由讀取搖桿的類比訊號值,控制步進馬達正反轉及轉動步數。
這個函式庫內有兩個重要的功能:
搖桿接在類比訊號 ADC 的兩個 Pin 腳 26 及 27,類比訊號值的範圍是2^12,也就是訊號值介於 0 ~ 65535 之間,判斷搖桿值小於 5000 時,表示控制步進馬達正轉,大於 60000 時,控制馬達反轉。
[材料]
- Raspberry Pi Pico x1
- 28BYJ-48步進馬達(ULN2003APG)模組 x1
- 搖桿 JoyStick x1
- 麵包板 x1
- 麵包板電源模組 x1
- 排線 n 條
[接線圖]
麵包板供給的 5V 電源直接接在 ULN2003APG 模組的正負兩極,其他接腳如下:Pi Pico接腳 | ULN2003APG模組 | 搖桿 |
---|---|---|
Pin 36(3.3V) | - | VCC |
Pin 38(GND) | - | GND |
Pin 1(GP0) | IN1 | - |
Pin 2(GP1) | IN2 | - |
Pin 4(GP2) | IN3 | - |
Pin 5(GP3) | IN4 | - |
Pin 21(GP16) | - | Button/SCL |
Pin 31(GP26) | - | VRy |
Pin 32(GP27) | - | VRx |
[程式]
本程式運用函式庫: Stepper這個函式庫內有兩個重要的功能:
- 轉動步數:step(count, direction=1)
- 轉動到特定角度:angle(r, direction=1)
搖桿接在類比訊號 ADC 的兩個 Pin 腳 26 及 27,類比訊號值的範圍是2^12,也就是訊號值介於 0 ~ 65535 之間,判斷搖桿值小於 5000 時,表示控制步進馬達正轉,大於 60000 時,控制馬達反轉。
from machine import Pin, ADC import Stepper import utime s1 = Stepper.create(Pin(0,Pin.OUT),Pin(1,Pin.OUT),Pin(2,Pin.OUT),Pin(3,Pin.OUT), delay=2) xAxis = ADC(Pin(27)) #讀取類比訊號 yAxis = ADC(Pin(26)) button = Pin(16,Pin.IN, Pin.PULL_UP) while True: xValue = xAxis.read_u16() yValue = yAxis.read_u16() buttonValue = button.value() print(xValue, end = '') #不要跳行加上 end='' print(' ', end = '') print(yValue) if xValue ≤ 5000 or yValue ≤ 5000: #向左或向上移動 s1.step(5) elif xValue ≥ 60000 or yValue ≥ 60000: #向右或向下移動 s1.step(5,-1) utime.sleep(0.1)
張貼留言