目录
PWM技术简介
PWM重要参数
PWM实现呼吸灯
脉宽调制波形
PWM案例
电路图
keil文件
直流电机
直流电机的控制
直流电机的驱动芯片L293D
L293D引脚图
L293D功能表
直流电机案例
电路图
keil文件
步进电机
步进电机特点
步进电机驱动芯片L298
L298引脚图
L298逻辑功能表
四相步进电机原理
步进电机案例
电路图
keil文件
PWM技术简介
- PWM即脉宽调制技术,在具有惯性的系统中,可通过对一系列脉冲的宽度进行调制,来等效的获得所需要的模拟参量,常适用于电机控速度,开关电源等领域
- 占空比:在一个周期内,其高电平持续的时间除以整个周期的值就是占空比;其一般用D表示。
PWM重要参数
- 频率:f=1/Ts
- 占空比:D=Ton/Ts
注意:
- 由右图可知,Ts内电机两端的平均电压为:U=(Ton/Ts)*Umax=D*Umax
- 左图就是由PWM调制技术所获得的模拟量电压。
- 通常我们的PWM会保证一个周期的时间是一样的
PWM实现呼吸灯
呼吸灯:呼吸灯是指在控制器的控制下,灯光实现由亮到暗或由暗到亮的逐渐变化(感觉就像是人在呼吸一样)。
脉宽调制波形
- t:高电平时长
- T:脉冲周期
- Up:脉冲电压幅度值
- 占空比:D=t/T
- 均值电压:U=t/T*Up
注意:
- 通过改变相同周期内U的占空比就可以实现呼吸灯的效果。
- 若上面的脉宽调制状态中灯用共阳极连接,那么就可以实现灯的由亮到灭
PWM案例
需求:实现发光二极管的呼吸效果。
电路图
keil文件
#include "REGX52.H"
void delay(unsigned int n){int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++);}
}
void pwm(unsigned char k){unsigned int n=0;for(n=0;n<10;n++){P2=0xff;delay(k);P2=0x00;delay(10-k);}
}
void main()
{unsigned int t;while(1){//由亮到暗for(t=1;t<10;t++){pwm(t);}//由暗到亮for(t=9;t>0;t--){pwm(t);}}
}
注意:因为我的LED二极管为共阳极连接,所以从单片机输出的信号0为亮,1为灭。
直流电机
前言:
- 定义输出或输入为直流电能的旋转电机称为直流电机,他是能实现直流电能和机械能相互转化的电机。
- 当他做电动机运行时是直流电动机,将电能转化为机械能;当作发电机运行时是直流发电机,将机械能转化为电能。
- 直流电机主要由永磁体(定子)线圈(转子)和换向器组成。
- 除去直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等
直流电机的控制
- 方向控制:直流电机只有正负极,只需要交换正负极就可以调节正反转。
- 转速控制:在负载变化不大的时候,加在直流电机两端的电压大小与其速度近似成正比
直流电机的驱动芯片L293D
前言:
- 单片机的驱动电流不足以直接驱动直流电机,所以我们需要去外接一个驱动电路来完成单片机对直流电机的一个操作。
- L293D支持逻辑控制电压和电机驱动电压4.5——36V,最大输出电流为600ma,由于其驱动能力有限,多应用于小型电器
- L293D是4通道高电流半H桥输出驱动电路。L293D提供双向驱动电流高达600ma。兼容所有TTL输入。驱动电路shang水水水水内部ESD保护,内有过热关断保护,每个输出都是推拉式驱动电路,可以驱动感性负载
- 作用:单片机可以发挥控制优势,发出控制电机的信号,让大电流从这个模块流通不经过单片机,保护了单片机,进而实现了电机驱动,同时也发挥了单片机的控制优势。
L293D引脚图
L293D功能表
注意:
- 上面的EN为使能引脚,也就类似于开关引脚。
- L293D可以驱动两个直流电机
- 功能表中两个X分别代表两个输入,也就是上面芯片的1a和4a部位,上面芯片的y部位为对应的输出
- 停止是自然而然的停止,不受外力干扰;刹停是紧急置停。
直流电机案例
需求:使电机按顺时针转动,并且转动的速度占总速度的1/4。
电路图
注意:IN1引脚给1,IN2引脚给0,电机顺时针转动;IN1引脚给0,IN2引脚给1,电机逆时针转动(通过调整占空比可以调整电机的转速)。
keil文件
#include "reg51.h"
sbit IN1=P2^0;
sbit IN2=P2^1;
sbit E=P2^2l;
void delay(unsigned int n){int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++);}
}
void motor(){IN1=1;delay(25);//电压延时占1/4IN1=0;delay(75);//空电压延时占3/4IN2=0;E=1;
}
void main()
{while(1){motor();}
}
步进电机
含义:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机一个脉冲信号,电机则转过一个步距角。
步进电机特点
- 当步进电机接收到一定顺序的脉冲时,他就会根据脉冲的控制时序进行顺时针和逆时针的转动,脉冲的顺序决定了步进电机旋转的方向,脉冲的个数决定了步进电机转动的角度,脉冲的频率决定了步进电机的转速;
- 有脉冲时步进电机就会转动一定的角度,没有脉冲时他就会保持当前位置
- 步进电机具有快速启动和快速停止的特性
- 当负载在一定范围内时,步进电机的转速与负载无关
- 步进电机转动的方向很容易的通过反方向给脉冲时序来改变
步进电机驱动芯片L298
前言:L298是一种二相和4相单机的专用驱动器,即内含两个H桥的高电压大电流双全桥式驱动器,接受标准TTL逻辑电平信号,可用来驱动器电感性负载。H桥可承受46V电压,相电流高达2.5A。L298的逻辑电路使用5V电源。
L298引脚图
- 引脚1和引脚15是电流监测端,分别为2个H桥的电流反馈脚,不用时可以直接接地
- 引脚2和引脚3为电机驱动输出端
- 引脚4为功率电源电压,此引脚需接100nf电容器
- 引脚5和引脚7为电机控制信号输入端,TTL电平兼容
- 引脚6和引脚11为TTL电平兼容输入使能端,低电平禁止输出
- 引脚8为接地端
- 引脚9为逻辑电源电压端。此引脚需并接100nf电容器
- 引脚10和引脚12为电机控制信号输入端,TTL电平兼容
- 引脚13和引脚14为电机驱动输出端
L298逻辑功能表
四相步进电机原理
理解:四相步进电机中心抽头接地(或电源),在四相线圈分别加以控制信号,就可以使之步进旋转。控制方法有4步法和8步法。四步法即按照如下电平变化在A、B、C、D引脚上产生控制信号:1001、1100、0110、0011,然后循环(每步90度)。若要使电机反向旋转,则在A、B、C、D引脚上逆序输入上述控制信号即可。8步法是四步法的分解,每步是四步法的步脚之半。其控制信号是:1001、1000、1100、0100、0110、0010、0011、0001(每步45度)
步进电机案例
需求:让步进电机每1s逆时针转动45度。
电路图
keil文件
#include "reg51.h"
#逆时针输入控制信号(8步法的倒序)
unsigned char str[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
#近似延时Nms
void delay(unsigned int n){int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++);}
}
void stepper(){int i=0;for(i=0;i<8;i++){P2=str[i];delay(1000);}
}
void main()
{while(1){stepper();}
}