导航

    • 登录
    • 搜索
    • 版块
    • 产品
    • 教程
    • 论坛
    • 淘宝
    1. 主页
    2. ml4p
    M
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 帖子
    • 楼层
    • 最佳
    • 群组

    ml4p

    @ml4p

    0
    声望
    3
    楼层
    434
    资料浏览
    0
    粉丝
    0
    关注
    注册时间 最后登录

    ml4p 关注

    ml4p 发布的帖子

    • 编码器测速,为什么有脉冲有输出,速度没有?
      import pyb
      from pyb import Timer, Pin
      import cmath
      
      #配置编码器AB相读取模式,利用定时器中断进行读取
      p1_A = Pin("P7"); p2_A = Pin("P8");
      tim_A = pyb.Timer(4)
      tim_A.init(prescaler=0,period=10000)
      ch1_A = tim_A.channel(1,pyb.Timer.ENC_AB,pin=p1_A);
      ch2_A = tim_A.channel(2,pyb.Timer.ENC_AB,pin=p2_A);
      
      class Encoder:
          def __init__(self, encoder_freq, tim_A):
              '''
              入口参数:编码器读取频率
              修改:
                  1.需要自行定义编码器引脚及其相关定时器配置
                  2.需要自行定义编码器精度
              #速度值=(采集到的脉冲数/编码器分辨率)*轮子周长*控制频率
              '''
              # 初始化常量
              self.pi = cmath.pi # pi的值
              self.encoder_precision = 4*13*30 # 编码器精度 = 倍频数*编码器精度(电机驱动线数)*电机减速比
              # self.control_time = 1/encoder_freq # 单位为 s
      
              self.encoder_freq = encoder_freq
              self.tim_A = tim_A
      
              self.encoder_A = 0
      
              # 定时器中断:固定时间读取编码器数值
              timer_read = Timer(3,freq=self.encoder_freq,callback=self.encoder_cb)
      
          def encoder_cb(self, encoder):
              '''
              函数功能:通过定时器中断读取编码器A、B计数值,并重置编码器
              '''
              # self.encoder_A = self.tim_A.counter()
      
              self.encoder_A = (10000 - self.tim_A.counter())
      
              if self.encoder_A == 10000:
                  self.encoder_A = 0
                   # print("encoder_A:", self.encoder_A)
              self.tim_A.counter(0)
      
          def get_speed_A(self):
              '''
              函数功能:读取编码器A计数值,将编码器A计数值转化为速度值,同时将编码器值置零
              入口参数:编码器对应定时器
              返回值  :编码器值
              #速度值=(采集到的脉冲数/编码器分辨率)*轮子周长*控制频率
              '''
              print("encoder_A:", self.encoder_A)
              speed = (self.encoder_A / (self.encoder_precision )) * (2*self.pi*0.03) * self.encoder_freq
              print("-------------speed_A:", speed)
              return speed
      
      
      
      
      
      
      
      import encoder
      import car
      
      if __name__ == '__main__':
          # 编码器初始化
          enc = encoder.Encoder(5, encoder.tim_A)
      
          speed_A = enc.get_speed_A() # 获取当前速度值
      
      while True:
          car.run (50,50)
          print("enc.encoder_A:",enc.encoder_A)
          print("speed_A",'%.5f'%speed_A)
      
      
      发布在 OpenMV Cam
      M
      ml4p
    • TB6612和openmv自己的LCD模块可以一起使用吗?

      TB6612和openmv自己的LCD模块可以一起使用吗?

      发布在 OpenMV Cam
      M
      ml4p
    • openmv M4 H7 就只有1.3.4三个定时器吗?

      openmv M4 H7 就只有1.3.4三个定时器吗?

      发布在 OpenMV Cam
      M
      ml4p