【OpenMV小车——第1.3篇】使用OpenMV驱动单个直流减速电机

直流减速电机简洁:

直流减速电机,即齿轮减速电机,是在普通直流电机的基础上,加上配套齿轮减速箱。齿轮减速箱的作用是,提供较低的转速,较大的力矩。

电机速比:将电动机的额定转速nN(r/min) 与减速器 输出轴的转速nL的比值称为速比I(亦称为传动比),i=nN/nL

如下这款为 i = 171:1
【OpenMV小车——第1.3篇】使用OpenMV驱动单个直流减速电机_第1张图片
通常会有6条接线,2条电机线,4条属于编码盘的。我们先从简单入手,忽略编码盘。

使用电机驱动模块驱动电机:

  • 为什么要用电机驱动模块?
    因为单片机输出逻辑电平5V,电流为毫安级,是弱电;而电机输入电压一般为6V、12V,电流为最大会有2A。所以驱动逻辑是:
    【OpenMV小车——第1.3篇】使用OpenMV驱动单个直流减速电机_第2张图片

下面以 TB6612FNG电机驱动板模块 为例:

进阶拓展:【学习笔记】TB6612当排除法知道是它有问题的时候就来看数据手册
【OpenMV小车——第1.3篇】使用OpenMV驱动单个直流减速电机_第3张图片

引脚 含义
VM 电机供电,接10V以内
VCC 逻辑控制电路输入,5V
GND 共地端,连单片机地端
AIN1 AIN2 与单片机IO口连接,控制A路电机转动,即向A01,A02口输出电压
BIN1 BIN2 与单片机IO口连接,控制B路电机转动,即向B01,B02口输出电压
PWMA PWMB 与单片机可输出PWM波IO口连接,控制电机转速
A01 A02 与A电动机线连接,正负调换即改变转向
B01 B02 与B电动机线连接,正负调换即改变转向

程序一:car.py

看连线:
驱动板引脚 OpenMV IO口
ain1 P0
ain2 P1
bin1 P2
bin2 P3
pwma P7
pwmb P8

其他引脚连接看上上表。

程序:效果为两个电机低速转动
from pyb import Pin, Timer
inverse_left=False  #change it to True to inverse left wheel
inverse_right=False #change it to True to inverse right wheel

ain1 =  Pin('P0', Pin.OUT_PP)
ain2 =  Pin('P1', Pin.OUT_PP)
bin1 =  Pin('P2', Pin.OUT_PP)
bin2 =  Pin('P3', Pin.OUT_PP)
ain1.low()
ain2.low()
bin1.low()
bin2.low()

pwma = Pin('P7')
pwmb = Pin('P8')
tim = Timer(4, freq=1000)
ch1 = tim.channel(1, Timer.PWM, pin=pwma)
ch2 = tim.channel(2, Timer.PWM, pin=pwmb)
ch1.pulse_width_percent(0)
ch2.pulse_width_percent(0)

def run(left_speed, right_speed):
    if inverse_left==True:
        left_speed=(-left_speed)
    if inverse_right==True:
        right_speed=(-right_speed)

    if left_speed < 0:
        ain1.low()
        ain2.high()
    else:
        ain1.high()
        ain2.low()
    ch1.pulse_width_percent(abs(left_speed))

    if right_speed < 0:
        bin1.low()
        bin2.high()
    else:
        bin1.high()
        bin2.low()
    ch2.pulse_width_percent(abs(right_speed))

#调用
while(True):
	run(30,30)  #pwm输出为30,速度为30,向前跑

------------------------------------------------------------分割线---------------------------------------------------------------

编码盘的使用知识:

常用的减速电机是带AB相测速编码盘,通过读取输出的脉冲可以知道电机转向转速
【OpenMV小车——第1.3篇】使用OpenMV驱动单个直流减速电机_第4张图片
如果通过脉冲来测试速度,需要用到中断来实现。
霍尔编码盘AB相输出方波如上图,将其中的A相(1相)接到单片机外部中断IO口,B相接到普通IO口,则中断响应为脉冲计数,通过定时器判断一定时间比如1s累计的脉冲,跟每圈11个脉冲计算便可算出电机速度为60/1*脉冲数/11, 检测转向方法为如A相下降沿中断时同时检测B相电平,若为低电平,则为正转。

PID调速:

由于没有OPENMV在手,只能通过C51单片机和Proteus仿真验证。
理论分析:
根据编码器脉冲累加测量电机得位置信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制。
公式:Pwm=Kpe(k)+Ki∑e(k)+Kd[e(k)-e(k-1)]
e(k):本次偏差
e(k-1):上一次的偏差
∑e(k):e(k)以及之前的偏差的累积和;其中k为1,2,k;
其中KP为比例系数;Ti为积分时间常数;Td为微分时间常数,每个系统不一样所以需要实验调试获得较为理想的,即能满足稳定性、快速性、准确性。
原理图:
【OpenMV小车——第1.3篇】使用OpenMV驱动单个直流减速电机_第5张图片

结语:

骐骥一跃,不能十步;驽马十驾,功在不舍。——《荀子》

此篇收录于专栏【手把手教你做OpenMV小车】,总篇链接:https://blog.csdn.net/qq_42807924/article/details/86585757

作者:吾本虚无
来源:CSDN
原文:https://blog.csdn.net/qq_42807924/article/details/86682369
(本文为吾本虚无原创,禁止任何形式转载)
完。

你可能感兴趣的:(手把手教你做OpenMV小车)