Raspberry Pi Pico筆記(9):搖桿控制ULN2003APG步進馬達模組

從本篇開始研究馬達類的控制,學習如何使用 Pi Pico (使用 MicroPython 語言)控制馬達、步進及伺服馬達。早期開始學習 Raspberry Pi 時,曾用過 ULN2003APG 這個 IC 插在麵包板上,連接樹莓派及馬達,有關實作及步進馬達相關的知識可參考:Raspberry Pi 筆記(12):控制步進馬達。本篇將實作如何判斷搖桿左右或上下搖動,藉由讀取搖桿的類比訊號值,控制步進馬達正反轉及轉動步數。

[材料]

  • 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)
          count是要轉動的步數,derection是轉動的方向,1是正轉,-1是反轉
  • 轉動到特定角度:angle(r, direction=1)
          r是 0 ~ 360度的某個值,讓步進馬達轉到指定的角度。

搖桿接在類比訊號 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)     

[實作結果]



[參考資料]

Post a Comment

較新的 較舊