DM542 採用共陽接法, 如圖。
其中加了ULM2003達靈頓是因為Pi4輸出準位是3.3V, 無法推動DM542驅動器,故須加上當作緩衝器,一來調整準位至+5V, 另外為加大推動電流, 很多朋友沒成功就是這個原因。
測試程式是用Python寫的, 有兩種方式, 提供給朋友參考 :
Program 1是 Time sleep方式。
Program 2是PWM方式。
#----------------------------------------------------------------
#
Program
1: StepMotor_TIME.py
#----------------------------------------------------------------
from time import sleep
import RPi.GPIO as gpio
PUL = 11
DIR = 12
ENA = 13
CW = 1
CCW = 0
gpio.setmode(gpio.BOARD)
gpio.setup(PUL, gpio.OUT)
gpio.setup(DIR, gpio.OUT)
gpio.setup(ENA, gpio.OUT)
gpio.output(ENA, gpio.HIGH)
# Main body of code
try:
gpio.output(ENA, gpio.LOW)
while True:
sleep(2)
gpio.output(DIR, CW)
for x in range(51200):
gpio.output(PUL, gpio.LOW)
sleep(0.00001)
gpio.output(PUL, gpio.HIGH)
sleep(0.00001)
sleep(2)
gpio.output(DIR,CCW)
for x in range(51200):
gpio.output(PUL, gpio.LOW)
sleep(0.00001)
gpio.output(PUL, gpio.HIGH)
sleep(0.00001)
except KeyboardInterrupt: # If there is a KeyboardInterrupt (when you press ctrl+c), exit the program and cleanup
print("Cleaning up!")
gpio.cleanup()
#----------------------------------------------------------------
#Program 2: StepMotor_PWM.py
#----------------------------------------------------------------
from time import sleep
import RPi.GPIO as gpio
PUL = 11
DIR = 12
ENA = 13
CW = 1
CCW = 0
gpio.setmode(gpio.BOARD)
gpio.setup(PUL, gpio.OUT)
gpio.setup(DIR, gpio.OUT)
gpio.setup(ENA, gpio.OUT)
gpio.output(ENA, gpio.HIGH)
pwm = gpio.PWM(PUL, 100000)
bDir = False
# Main body of code
try:
gpio.output(ENA, gpio.LOW)
pwm.start(50)
while True:
if bDir == True:
gpio.output(DIR, CW)
bDir = False
sleep(5)
else:
gpio.output(DIR, CCW)
bDir = True
sleep(5)
except KeyboardInterrupt: # If there is a KeyboardInterrupt (when you press ctrl+c), exit the program and cleanup
print("Cleaning up!")
gpio.cleanup()
DM542 採用共陽接法, 如圖。
其中加了ULM2003達靈頓是因為Pi4輸出準位是3.3V, 無法推動DM542驅動器,故須加上當作緩衝器,一來調整準位至+5V, 另外為加大推動電流, 很多朋友沒成功就是這個原因。
測試程式是用Python寫的, 有兩種方式, 提供給朋友參考 :
Program 1是 Time sleep方式。
Program 2是PWM方式。
#----------------------------------------------------------------
#
程式1
: stepmotor _ time. Py
#----------------------------------------------------------------
從時間進口睡眠
匯入rpi. Gpio作為gpio
泳池= 11
Dir = 12
ENA = 13
Cw = 1
Ccw = 0
Gpio. 設定模式(gpio). 年十二月()
Gpio. 設定(pul, gpio). 出局
Gpio. 設定(你, gpio). 出局
Gpio. 設定(ena, gpio). 出局
Gpio. 輸出(ena, gpio). 高(高)
#
主要程式碼
嘗試:
Gpio. 輸出(ena, gpio). 低)
雖然事實:
睡眠(2)
Gpio. 輸出(dir, cw)
X在範圍(51200):
Gpio. 輸出(pul, gpio). 低)
睡眠(0.00001)
Gpio. 輸出(pul, gpio). 高(高)
睡眠(0.00001)
睡眠(2)
Gpio. 輸出(dir, ccw)
X在範圍(51200):
Gpio. 輸出(pul, gpio). 低)
睡眠(0.00001)
Gpio. 輸出(pul, gpio). 高(高)
睡眠(0.00001)
除了鍵盤中斷如果有鍵盤中斷(當你按下ctrl+c), 退出程式並清理
列印("清理!")
Gpio. 清理()
#----------------------------------------------------------------
#
項目2
: stepmotor _ pwm. Py
#----------------------------------------------------------------
從時間進口睡眠
匯入rpi. Gpio作為gpio
泳池= 11
Dir = 12
ENA = 13
Cw = 1
Ccw = 0
Gpio. 設定模式(gpio). 年十二月()
Gpio. 設定(pul, gpio). 出局
Gpio. 設定(你, gpio). 出局
Gpio. 設定(ena, gpio). 出局
Gpio. 輸出(ena, gpio). 高(高)
Pwm = gpio. Pwm (pul, 100000)
Bdir =假
#
主要程式碼
嘗試:
Gpio. 輸出(ena, gpio). 低)
Pwm. 開始(50)
雖然事實:
如果bdir ==真的:
Gpio. 輸出(dir, cw)
Bdir =假
睡眠(5)
其他:
Gpio. 輸出(dir, ccw)
Bdir =真實
睡眠(5)
除了鍵盤中斷如果有鍵盤中斷(當你按下ctrl+c), 退出程式並清理
列印("清理!")
Gpio. 清理()
·
查看原文
·
為此翻譯評分