• micropython与电机舵机(给初学者)


    本来这应该是个很大的课题,毕竟电机舵机型号繁多,驱动方式各不相同,这里之讲讲最最基础的。
    因为我是半路出家的,所以对电子学基础可以说极差,有一些基础的概念都不太懂,只能给初学者讲讲,难一些的就没资格说啦。
    先说电机,大致分为直流电机和步进电机,有关步进电机,需要编码做驱动,比如用常见的l298n作为驱动板,这部分稍微复杂,网上资料很多,我就不讲了。
    直流电机,就是我们小时候最常见的玩的那种,比如四驱车,小电扇等等,接到5号电池两端就可以转,但是这个东西怎么用esp32驱动呀,这个问题还真把我难住好一会儿,网上也没有很直接的答案,我发现直接接到esp32的vcc gnd就可以转,反接反转,但是用Io怎么不转呀,不管是高低点评还是pwm驱动,就是不转,我也很纳闷,这么简单的东西咋就不转,这里就暴漏我基础差了,划重点,驱动这类基础直流电机也用芯片的,最常见的可以考虑drv8833,因为单片机的io驱动能力很弱,也就是电流小,所以自然是带不动啦,这么简单的原理我搞了两年单片机才知道,也不怕被人笑话了。
    drv8833基本是两个io驱动一个电机,原理也比较简单,核心的就是这个
    在这里插入图片描述
    说人话就是两个io电平相同就不转,一个0,一个1,就是正转或者反转,相同pwm驱动,只需一个io用pwm,另外一个高或者低都i可以,那么这个fast decay 和 slow decay是啥呢,我问了下团队的硬件,是快衰减和慢衰减的意思,实际项目中,快衰减动作快,但是瞬间功率也大,如果驱动电机发现esp32重启很可能是功率过大导致,可以尝试用慢衰减,同样的如果发现正转变反转,esp32重启,就在中间加个停止再换反向,也可能解决问题,这是实践的经验!!!
    下面说说舵机,最常见的9g舵机之类的,基础不难,就是pwm控制,不说太多了,大家自己理解原理,核心就是duty不同对应不同角度,知道你们想要现成的代码,我直接上了,主要是数学的换算问题:
    -90到90度的舵机方法:

    def servo_write_angle(pin,angle):
        pwm=PWM(Pin(pin))
        pwm.duty(int(((angle+90)*2/180+0.5)/20*1023))
        pwm.freq(50)
    
    • 1
    • 2
    • 3
    • 4

    是的,就是这么朴实无华,给引脚和想要的角度就转了,如果是0-180度呢,换算一下就好了。。。

    def servo_write_angle(pin,angle):
        pwm=PWM(Pin(pin))
        anglereal=angle-90
        pwm.duty(int(((anglereal+90)*2/180+0.5)/20*1023))
        pwm.freq(50)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    **如果是0-270度呢?**这种舵机比较冷们,但是确实有,比如乐高电机,我写好了测好了,拿去吧

    def lego_servo_write_angle(pin,angle):
        pwm=PWM(Pin(pin))
        anglereal=angle-135
        pwm.duty(int(((anglereal+135 )*2/270+0.5)/20*1023))
        pwm.freq(50)
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    【数字信号去噪】小波软阈值+硬阈值+改进阈值数字信号去噪【含Matlab源码 1025期】
    Fiddler - The system proxy was changed. Click to reenable capturing.
    红米ac2100路由器刷入openwrt教程
    国科大卜东波算法设计作业
    微信,支付宝在线换钱平台系统源码
    基于Java毕业设计影院网上售票系统演示录像源码+系统+mysql+lw文档+部署软件
    阿里云SLB负载均衡产品基本概念与购买流程
    Java核心知识经典面试题来啦(基础语法篇)
    Netty 入门 — Bootstrap,一切从这里开始
    Leetcode hot 100之前缀和、差分数组、位运算
  • 原文地址:https://blog.csdn.net/jd3096/article/details/126436589