1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python控制步进电机驱动器_树莓派操作案例1-使用python GPIO+TB6612驱动步进电机

python控制步进电机驱动器_树莓派操作案例1-使用python GPIO+TB6612驱动步进电机

时间:2021-04-27 06:30:40

相关推荐

python控制步进电机驱动器_树莓派操作案例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 ------- 接地

该实验的基础是两块并联在一起的驱动模块,所以和单独一个驱动模块有些许差别。

其他关于该驱动模块的介绍详见百度。

不多说,上代码。

importRPi.GPIO as GPIOimporttime

PWMA= 18AIN1= 22AIN2= 27PWMB= 23BIN1= 25BIN2= 24

#该驱动模块调速区间为[0-100]

#前进

deft_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)

#停止deft_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)

#后退deft_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)

#左转deft_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)

#右转deft_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:whileTrue:

t_up(50,3)

t_down(50,3)

t_left(50,3)

t_right(50,3)

t_stop(3)exceptKeyboardInterrupt:

GPIO.cleanup()

需要注意的是由于该电机模块的峰值电流能达到2A/3A,如果发现代码运行一段时间出现了电机停止运行,那么很有可能是电压不够导致了PWM复位。

代码参考://04/tb6612fng-arduino/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。