直流电机

直流电机(direct current machine)是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。

在这里插入图片描述

直流电机原理

下图是分析直流电机的物理模型图
在这里插入图片描述

固定部分有:

  • 磁铁
    这里称作主磁极
  • 电刷

转动部分有:

  • 环形铁心
  • 绕在环形铁心上的绕组

硬件连接为:它的固定部分(定子)上,装设了一对直流励磁的静止的主磁极 N 和 S,在旋转部分(转子)上装设电枢铁心。在电枢铁心上放置了两根导体连成的电枢线圈,线圈的首端和末端分别连到两个圆弧形的铜片上,此铜片称为换向片。换向片之间互相绝缘,由换向片构成的整体称为换向器。换向器固定在转轴上,换向片与转轴之间亦互相绝缘。在换向片上放置着一对固定不动的电刷 B1 和 B2,当电枢旋转时,电枢线圈通过换向片和电刷与外电路接通。

转动原理为:在电刷上施加直流电压 U,电枢线圈中的电流流向为:N 极下的有效边中的电流总是一个方向,而 S 极下的有效边中的电流总是另一个方向。这样两个有效边所受的洛伦兹力的方向一致(可以根据左手法则判定),电枢开始转动。
具体来说就是,把上图中的+和-分别接到电池的正极和负极,电机即可转动;如果是把上图中的+和-分别接到电池的负极和正极,则电机会反方向转动。电机的转速可以理解为和外接的电压是正相关的(实际是由电枢电流决定)。

总结:调节施加在电机上面的直流电压大小,即可实现直流电机调速,改变施加电机上面直流电压的极性,即可实现电机换向。

减速器

为什么要加减速器
一般直流电机的转速都是一分钟几千上万转的,所以一般需要安装减速器。

减速器的功能
减速器是一种相对精密的机械零件,使用它的目的是降低转速,增加转矩
减速后的直流电机力矩增大、可控性更强。

减速器的分类
按照传动级数不同可分为

  • 单级减速器
  • 多级减速器

按照传动类型可分为

  • 齿轮减速器
    齿轮减速箱体积较小,传递扭矩大,但是有一定的回程间隙。
  • 蜗杆减速器
    蜗轮蜗杆减速机的主要特点是具有反向自锁功能,它的减速比较大,但是一般体积较大,传动效率不高,精度不高
  • 行星齿轮减速器
    行星减速机其优点是结构比较紧凑,回程间隙小、精度较高,使用寿命很长,额定输出扭矩可以做的很大,但价格较高

在这里插入图片描述

直流电机和减速器一般是装好在一起的
在这里插入图片描述

编码器

编码器简介

编码器是一种将角位移或者直线位移转换成一连串电数字脉冲的一种传感器。

可以通过编码器测量电机转动的位移或者速度信息。

编码器按照工作原理,可以分为

  • 增量式编码器
    常用的编码器为增量式编码器
  • 绝对式编码器
    绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有
    关,而与测量的中间过程无关。

从编码器检测原理上来分,还可以分为

  • 光学式
  • 磁式
  • 感应式
  • 电容式

常见的是光电编码器(光学式)和霍尔编码器(磁式)。一般来说光电编码器是霍尔编码器精度的几十倍。

编码器的工作原理

光电编码器是由光码盘和光电检测装置组成。光码盘是在一定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴,电动机旋转时,检测装置检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。
在这里插入图片描述
霍尔编码器是由霍尔码盘和霍尔元件组成。霍尔码盘是在一定直径的圆板上等分地布置有不同的磁极。霍尔码盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。

然后就可以通过单片机采集 AB 相的脉冲数据,根据脉冲换算即可得到电机位置数据。

四倍频采集

四倍频是通过程序提升我们的编码器的精度的一种数据处理方法,可以有效的最大化我们的编码器的精度和测量精度。

在这里插入图片描述
上图是一个我们编码器输出的波形图,正常我们一般的处理方式是通过 A 相去计数,B 相去判断目前的转动方向。具体实现比如:A 相的上升沿计数或者下降沿计数,同时在 A 相的上升沿或者下降沿来根据 B 相此时的电平状态来判断转向。

四倍频则是同时计算 AB 两相的每个跳边沿,这样子原本在 A 相计数的一个脉冲周期内就实现了四次计数,从而实现了精度的提升。

编码器采集程序实现

因为编码器输出的是标准的正交方波,所以我们可以使用单片机(STM32 STM8 51等)直接读取。在软件中的处理方法是分两种,自带编码器接口的单片机如 STM32,可以直接使用编码器硬件接口(定时器 CH1&CH2)计数,然后从对应的寄存器读出相应的数据即可。没有编码器硬件接口的单片机,可以通过外部中断接口测量,比如把编码器 A 相输出接到单片机的外部中断接口,这样就可以通过跳边沿触发中断,然后在对应的中断服务函数里面,通过 B 相的电平来确定正反转。如当 A 相来一个跳变沿的时候,如果 B 相是高电平就认为是正转,低电平就认为是反转。

void Encoder_Init_TIM4(u16 arr,u16 psc)
{
    GPIO_InitTypeDef GPIO_InitStructure; //定义一个引脚初始化的结构体  
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//定义一个定时器初始化的结构体
  TIM_ICInitTypeDef TIM_ICInitStructure; //定义一个定时器编码器模式初始化的结构体

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //使能TIM4时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能CPIOB时钟

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;    //PB6、PB7
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
    GPIO_Init(GPIOB, &GPIO_InitStructure);    //根据GPIO_InitStructure的参数初始化GPIOB0

    TIM_TimeBaseStructure.TIM_Period = arr; //设定计数器自动重装值
    TIM_TimeBaseStructure.TIM_Prescaler = psc; // 预分频器 
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //选择时钟分频:不分频
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
    TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct的参数初始化定时器TIM4

    TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//使用编码器模式3:CH1、CH2同时计数,四分频
    TIM_ICStructInit(&TIM_ICInitStructure); //把TIM_ICInitStruct 中的每一个参数按缺省值填入
    TIM_ICInitStructure.TIM_ICFilter = 10;  //设置滤波器长度
    TIM_ICInit(TIM4, &TIM_ICInitStructure); //根TIM_ICInitStructure参数初始化定时器TIM4编码器模式

    TIM_Cmd(TIM4, ENABLE); //使能定时器4
}

//读取编码器计数
int Read_Encoder_TIM4(void)
{
    int Encoder_TIM;
    Encoder_TIM=TIM4->CNT; //读取计数
    if(Encoder_TIM>0xefff)Encoder_TIM=Encoder_TIM-0xffff; //转化计数值为有方向的值,大于0正转,小于0反转。
                                                          //TIM4->CNT范围为0-0xffff,初值为0。
    TIM4->CNT=0; //读取完后计数清零
    return Encoder_TIM; //返回值
}

驱动器

需要驱动器原因
改变施加给电机电源+-极之间的电压来调整转速,手动去改变电压太过于麻烦,可以通过微控制器(单片机)去输出对应的控制信号来实现控制过程。但是单片机的 IO 带负载能力较弱,而直流电机是大电流感性负载,所以这里需要对 IO 输出的信号进行功率放大。

TB6612FNG 电机驱动器

TB6612FNG 是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H 桥结构,双通道电路输出,可同时驱动 2 个电机。

TB6612FNG实物图如下:
在这里插入图片描述

和L298N的使用情况基本一致。相比 L298N 的热耗性和外围二极管续流电路,它无需外加散热片,外围电路简单,只需外接电源滤波电容就可以直接驱动电机,利于减小系统尺寸。对于 PWM 信号输入频率范围,高达 100 kHz 的频率更是足以满足大部分的需求。

TB6612FNG 的主要参数

  • 最大输入电压:VM = 15V
  • 最大输出电流:Iout = 1.2A(平均)/3.2A(峰值)
  • 正反转/短路刹车/停机功能模式
  • 内置过热保护和低压检测电路

引脚说明

以下是 TB6612 模块测试一个电机的接线图:

在这里插入图片描述
必须要有 PWM 输入才有 AO1 和 AO2 的信号,只接 AIN1 和 AIN2不会产生 AO1 和 AO2 的信号。

VM 直接接电池即可,VCC 是内部的逻辑供电,一般给 3.3 或者5V 都行,模块的 GND 建议一个接电源地,一个接单片机地,STBY置高模块才能正常工作。

完成上面的接线之后,就可以开始控制电机了,上图中红色部分的 5 个引脚控制一路电机,蓝色部分的控制另外一路电机,这里只讲其中的 A 路,B 路的使用是一样的。AO1 和 AO2 分别接到电机的+和-。然后通过 PWMA、AIN2、AIN1 控制电机。其中 PWMA 接到单片机的 PWM 引脚,一般 10Khz 的 PWM 即可,并通过改变占空比来调节电机的速度。下面是真值表:
在这里插入图片描述

如果手头上没有单片机的话,一样可以测试的,直接接电源的引脚即可。
AIN1 接 3.3 ~ 5V、 AIN2 接 GND、 PWMA 接 3.3 ~ 5V。这样相当于控制电机满占空比正转;
AIN1 接 GND、 AIN2 接 3.3 ~ 5V、 PWMA 接 3.3 ~ 5V。这样相当于控制电机满占空比反转;

STM32 例程接线如下图

在这里插入图片描述

电机整体接线

在讲解完上面各部分后,下面则是将上面所有的元器件接到一起,完成电机的控制

  • 直流电机
  • 减速器
  • 编码器
  • 驱动器

电机后面的图如下
在这里插入图片描述
电机侧面的图如下

在这里插入图片描述