#这个是配套TB6600以及部分脉冲型步进驱动器写的类
#from PwmLrqMotor import Pwm_irq_motor
#a=Pwm_irq_motor(19,18,5,17) #en=19 dir=18 pul=5 irq=17 irq是ESP32 开的中断脚用来查脉冲到数量关脉冲
#a.start_motor(1,800,512,2000) #dir=1 (1,0)表示方向 freq=800 这个是电机速度越高越快,还看驱动的细分
# #duty=512 这个是占空比(0-1024) numstp=2000 这个是脉冲数量
#a.add 这个能看看脉冲个数
#a.hold 这个是步进脉冲是否空闲的指示,如果空闲则是0,在启动步进前要判断此标志,空闲才能启动步进否则会丢命令
''' 下面是主函数的例子
from PwmLrqMotor import Pwm_irq_motor
a=Pwm_irq_motor(19,18,5,17)
a.start_motor(1,500,512,2000)
print(a.hold)
while a.hold== 1:
pass
print(a.hold)
a.start_motor(0,1000,512,2000)
print(a.hold)
while a.hold== 1:
pass
print(a.hold)
a.start_motor(1,2000,512,4000)
'''
#
import machine
import time
from machine import Pin,PWM
class Pwm_irq_motor(object):
def __init__(self,en,dir,pul,irq):#
self.add=0
self.en=Pin(en,Pin.OUT)
self.dir=Pin(dir,Pin.OUT)
self.pul=Pin(pul)
self.hold=0
self.irqPin = machine.Pin(irq, machine.Pin.IN, machine.Pin.PULL_UP)
def callback(self,id):
self.add=self.add+1
self.id=id
if self.add > self.numStp :
self.hold=0
self.pwm2.deinit()
def start_motor(self,dir,freq,duty,numstp):
self.numStp=numstp
self.dir.value(dir)
self.add=0
self.hold=1
self.irqPin.irq(trigger=machine.Pin.IRQ_FALLING, handler=self.callback)
self.pwm2 = PWM(self.pul, freq=freq, duty=duty)
2021-11-10 micropyton TB6600步进驱动类
最新推荐文章于 2024-08-28 00:25:39 发布
该博客介绍了如何利用Python的`Pwm_irq_motor`类来控制TB6600步进电机驱动器,以及如何通过ESP32的中断脚检测脉冲数量。通过设置电机方向、频率、占空比和脉冲数量来启动和停止步进电机,并在空闲时检查`hold`标志以避免丢失命令。示例代码展示了如何在主函数中使用这些功能。
摘要由CSDN通过智能技术生成