2021-11-10 micropyton TB6600步进驱动类

该博客介绍了如何利用Python的`Pwm_irq_motor`类来控制TB6600步进电机驱动器,以及如何通过ESP32的中断脚检测脉冲数量。通过设置电机方向、频率、占空比和脉冲数量来启动和停止步进电机,并在空闲时检查`hold`标志以避免丢失命令。示例代码展示了如何在主函数中使用这些功能。
摘要由CSDN通过智能技术生成

#这个是配套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)   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值