樹莓派操作案例1-使用python GPIO+TB6612驅動步進電機


 

原理圖:

 

接口說明

                A控制信號輸入------PWMA               VM ------電機驅動電壓輸入端(4.5V-15V)

                   A電機輸入端2 ------AIN2                VCC ------邏輯電平輸入端(2.7V-5.5V)

                   A電機輸入端1 ------AIN1                GND ------ 接地

正常工作/待機狀態控制端------STBY                 AO1 ------- A電機輸出端1

                    B電機輸入端1------BIN1                AO2 ------ A電機輸出端2

                    B電機輸入端2------BIN2                BO2 ------ B電機輸出端2

            B控制信號輸入端------PWMB                BO1 ------ B電機輸出端1

                                   接地------GND                GND ------- 接地

 

 該實驗的基礎是兩塊並聯在一起的驅動模塊,所以和單獨一個驅動模塊有些許差別。

其他關於該驅動模塊的介紹詳見百度。

不多說,上代碼。

import  RPi.GPIO as GPIO
import time

PWMA = 18
AIN1   =  22
AIN2   =  27

PWMB = 23
BIN1   = 25
BIN2  =  24

#該驅動模塊調速區間為[0-100]
#前進 def t_up(speed,t_time): L_Motor.ChangeDutyCycle(speed) GPIO.output(AIN2,False)#AIN2 GPIO.output(AIN1,True) #AIN1 R_Motor.ChangeDutyCycle(speed) GPIO.output(BIN2,False)#BIN2 GPIO.output(BIN1,True) #BIN1 time.sleep(t_time) #停止 def t_stop(t_time): L_Motor.ChangeDutyCycle(0) GPIO.output(AIN2,False)#AIN2 GPIO.output(AIN1,False) #AIN1 R_Motor.ChangeDutyCycle(0) GPIO.output(BIN2,False)#BIN2 GPIO.output(BIN1,False) #BIN1 time.sleep(t_time) #后退 def t_down(speed,t_time): L_Motor.ChangeDutyCycle(speed) GPIO.output(AIN2,True)#AIN2 GPIO.output(AIN1,False) #AIN1 R_Motor.ChangeDutyCycle(speed) GPIO.output(BIN2,True)#BIN2 GPIO.output(BIN1,False) #BIN1 time.sleep(t_time) #左轉 def t_left(speed,t_time): L_Motor.ChangeDutyCycle(speed) GPIO.output(AIN2,True)#AIN2 GPIO.output(AIN1,False) #AIN1 R_Motor.ChangeDutyCycle(speed) GPIO.output(BIN2,False)#BIN2 GPIO.output(BIN1,True) #BIN1 time.sleep(t_time) #右轉 def t_right(speed,t_time): L_Motor.ChangeDutyCycle(speed) GPIO.output(AIN2,False)#AIN2 GPIO.output(AIN1,True) #AIN1 R_Motor.ChangeDutyCycle(speed) GPIO.output(BIN2,True)#BIN2 GPIO.output(BIN1,False) #BIN1 time.sleep(t_time) GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(AIN2,GPIO.OUT) GPIO.setup(AIN1,GPIO.OUT) GPIO.setup(PWMA,GPIO.OUT) GPIO.setup(BIN1,GPIO.OUT) GPIO.setup(BIN2,GPIO.OUT) GPIO.setup(PWMB,GPIO.OUT) L_Motor= GPIO.PWM(PWMA,100) L_Motor.start(0) R_Motor = GPIO.PWM(PWMB,100) R_Motor.start(0) try: while True: t_up(50,3) t_down(50,3) t_left(50,3) t_right(50,3) t_stop(3) except KeyboardInterrupt: GPIO.cleanup()

 

需要注意的是由於該電機模塊的峰值電流能達到2A/3A,如果發現代碼運行一段時間出現了電機停止運行,那么很有可能是電壓不夠導致了PWM復位。

代碼參考:http://bildr.org/2012/04/tb6612fng-arduino/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM