ESP32(MicroPython) 编码器电机闭环控制

这篇具有很好参考价值的文章主要介绍了ESP32(MicroPython) 编码器电机闭环控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本人最近查找资料时,发现ESP32上的使用MicroPython的编码器电机相关程序较少,闭环控制程序都是Pyboard上的,与ESP32不完全兼容。本人通过micropython编程 esp32+drv8833+霍尔编码器_micropython 编码器_青右的博客-CSDN博客

上的程序读取编码器计数,然后另写了控制程序,有两个版本。程序把目标速度与实际速度的差乘以预设的倍数载加到PWM占空比上,相当于PID控制中的P,后续视实际需要做其它功能。

这个程序每隔一段时间取随机目标转速,并且可以从串口输出相关数据,主要用于调参。

from machine import *
import time
from moto import *
import random

# 编码器初始化
pin27 = Pin(27, Pin.IN)
pin14 = Pin(14, Pin.IN)   
encoder = encoder(pin27, pin14, 0)   # 参数(编码器A相引脚,编码器B相引脚,定时器序号)

# 电机初始化
motor=PWM(Pin(15),freq=1000,duty=0)
duty=0
target=50
count=0
  
while True:
    count+=1
    speed = encoder.read()
    offset=target-speed
    adjustment=offset*2
    duty+=offset
    if duty<0:
        duty=0
    elif duty>1023:
        duty=1023
    motor.duty(duty)
    print(target,speed,offset,duty)
    time.sleep(0.05)
    if count==100:
        count=0
        target=random.randint(0,70)

这个程序用于通过串口输入目标速度并调速文章来源地址https://www.toymoban.com/news/detail-566596.html

from machine import *
import time
from moto import *
import random
import _thread

# 编码器初始化
pin27 = Pin(27, Pin.IN)
pin14 = Pin(14, Pin.IN)   
encoder = encoder(pin27, pin14, 0)   # 参数(编码器A相引脚,编码器B相引脚,定时器序号)

# 电机初始化
motor=PWM(Pin(15),freq=1000,duty=0)
duty=0
target=50
i=0

def set_target(duty,i):
    global target
    while True:
        target=int(input("input target"))
_thread.start_new_thread(set_target, (duty, i))

while True:
    speed = encoder.read()
    offset=target-speed
    adjustment=offset*2
    duty+=offset
    if duty<0:
        duty=0
    elif duty>1023:
        duty=1023
    motor.duty(duty)
    time.sleep(0.05)

到了这里,关于ESP32(MicroPython) 编码器电机闭环控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP32蓝牙+EC11旋转编码器实现对电脑音量控制

    ✨本项目基于Arduino开发框架下功能实现。 🛠蓝牙设备添加和连接 ⚡需要有带蓝牙硬件支持的电脑才能实现连接并控制,当然手机也可以连接但是不能实现对手机音量控制, 🌿以 Win10 系统电脑为例。在设置里面找到,添加 蓝牙和其他设备 🌿会搜索到 ESP32-keyboard 设备。 🌿

    2024年01月18日
    浏览(56)
  • stm32霍尔编码器电机测速原理

            本次选用的编码器电机为13线的霍尔编码器电机,电机减速比为30:1,转动一圈输出13*30=390个脉冲。轮胎直径为75mm,轮胎周长为pi*d=3*75=225mm.定时器采用四倍频计数,则一圈输出390*4=1560个脉冲。具体编码器知识这里就不多说了。          根据测速原理:假设编

    2024年02月15日
    浏览(48)
  • stm32编码器电机测速(hal库)

    记录一下今天参考别人的代码实现了四个电机的测速。   编码器被广泛应用于电机测速,实现电机闭环控制 。所以不论是自己做小车还是后续参加各种比赛,必须要学会编码器测速。         编码电机其实就是一个带有编码器的电机,我的这个电机是一个带霍尔传感器的

    2024年02月13日
    浏览(47)
  • STM32F407 电机编码器测量

    STM32的定时器功能非常强大,根据官方手册,定时器的功能如下 高级定时器 TIM1 和 TIM8 主要特性 TIM1 和 TIM8 定时器具有以下特性: ● 16 位递增、递减、递增/递减自动重载计数器。 ● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数 介于

    2023年04月08日
    浏览(46)
  • STM32之增量式编码器电机测速

    编码器,是一种用来测量机械旋转或位移的传感器。它能够测量机械部件在旋转或直线运动时的位移位置或速度等信息,并将其转换成一系列电信号。 . 按监测原理分类 光电编码器 光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器

    2024年02月13日
    浏览(36)
  • SimpleFOC移植STM32(九)—— ABZ编码器电机

      SimpleFOC、ODrive和VESC 教程链接汇总:请点击     在SimpleFOC代码中,ABZ信号和霍尔电机信号处理方式很像,都是信号边沿触发中断,在中断中获取状态计算角度。 本次移植驱动板103和官方代码保持一致。 驱动板405采用的是定时器计数脉冲,处理方式不同。   ABZ或者ABI,叫

    2023年04月11日
    浏览(88)
  • Stm32-使用TB6612驱动电机及编码器测速

    最近在 学习编码电机以及尝试使用编码电机测速 。遇到了很多问题,花费了很多时间,在这里做一个记录,对自己学习到的知识进行一个总结 找了很多资料,看了很多视频,这些太多了,以至于让我不知道究竟哪一个是正确的,今天看这个,明天看这个,导致自己的学习效

    2023年04月16日
    浏览(67)
  • STM32自学笔记16-步进电机驱动项目-磁编码器的校准

    上节我把MT6816的驱动给大致整明白了,接下去需要看看如何 校准 。 为什么编码器需要校准? 如上节所说,MT6816是一款 绝对值编码器 ,它为每个测量位置分配了唯一的二进制代码或字, 即使断电,也可以跟踪编码器的确切位置 。 但是由于硬件或其他因素的影响,编码器输

    2024年02月16日
    浏览(108)
  • STM32(HAL库)——光电编码器、M/T法测量电机转速

    目录 一 编码器 二 电机测试的三种方法 三 STM32CubeMx配置 四 程序编写 五 实验结果 常见的用于电机测速的编码器有霍尔编码器和光电编码器两种。两者测速的基本原理不同,但都是输出两路相位差90°的脉冲信号。这里以光电编码器为例介绍一下测速原理。 光电编码器是由光

    2024年02月07日
    浏览(56)
  • STM32自学笔记17-步进电机驱动项目-磁编码器的正常使用

    上节有这样一句话: 步进电机旋转角度和编码器输出数据之间的关系通常是非线性的。在校准过程中,可以通过采集一系列已知角度位置的数据点,并拟合出角度与编码器数据之间的关系。这个拟合可以使用曲线拟合算法或其他数学方法来实现。通过拟合,可以建立编码器输

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包