0基础 | Proteus电路仿真 | 电机使用
目录
电机类型
51单片机对直流电机的控制
基于89C51主控的直流电机控制电路仿真
代码《基于Keil C51》
51单片机对步进电机的控制
控制代码《基于Keil C51》
基于89C51主控的步进电机控制电路仿真
直流电机 | 步进电机 |
51单片机对直流电机的控制
直流电机:
定义输出或输入为直流电能的旋转电机,称为直流电机,它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。
直流电机的控制:
1、方向控制:直流电机只有正负极,只需交换正负极就可以调节正反转。
2、转速控制:在负载变化不大的时候,加在直流电动机两端的电压大小与其速度近似成正比。
【Proteus电路仿真及应用(51单片机系列)】https://www.bilibili.com/video/BV1H7411n7AY?p=20&vd_source=7a24b4197f48af6ccce3973153ba4b39
PWM技术 |
|
电动机的电枢绕组两端的电压平均值U U =( t1/T) XUs=D*Us 其中D为PWM信号的占空比: D= t1/T |
L293D功能表 | ||||
1A/3A | 2A/4A | EN | 电机状态 | |
X | X | 0 | 停止 | |
1 | 0 | 1 | 顺时针转动 | |
0 | 1 | 1 | 逆时针转动 | |
0 | 0 | 1 | 停止 | |
1 | 1 | 1 | 刹停 | |
L293D引脚图 | L293D真值表 | |||
|
| |||
基于89C51主控的直流电机控制电路仿真 |
代码《基于Keil C51》
/*************** writer:shopping.w ******************/
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit K1 = P3^0;
sbit K2 = P3^1;
sbit K3 = P3^2;
sbit LED1 = P0^0;
sbit LED2 = P0^1;
sbit LED3 = P0^2;
sbit MA = P1^0;
sbit MB = P1^1;void main(void)
{LED1 = 1;LED2 = 1;LED3 = 0;while(1){if(K1 == 0){while(K1 == 0);LED1 = 0;LED2 = 1;LED3 = 1;MA = 0;MB = 1;}if(K2 == 0){while(K1 == 0);LED1 = 1;LED2 = 0;LED3 = 1;MA = 1;MB = 0;}if(K3 == 0){while(K1 == 0);LED1 = 1;LED2 = 1;LED3 = 0;MA = 0;MB = 0;}}
}
51单片机对步进电机的控制
L298是步进电机控制芯片(也可以驱动直流电机)
L298引脚定义:
1)引脚1(Current SensingA)和引脚15 (CurrentSensingB):电流监测端,分别为两个H桥的电流反馈脚不用时可以直接接地
2)引脚2(OUTPUT1)和引脚3(OUTPUT2):电机驱动输出端
3)引脚4(SUPPLY VOLTAGE VS):功率电源电压,此引脚须并接100nF电容器
4)引脚5(INPUT1)和引脚7(INPUT2):电机控制信号输入端,TTL电平兼容
5)引脚6(Enable A)和引脚11(Enable B):TTL电平兼容输入使能端,低电平禁止输出
6)引脚8(GND):接地端
7)引脚9(VSS):逻辑电源电压端。此引脚须并接100nF电容器
8)引脚10(INPUT3)和引脚12(INPUT4):电机控制信号输入端,TTL电平兼容
9)引脚13(OUTPUT3)和引脚14(0UTPUT4):电机驱动输出端
L298逻辑功能表 | |||
IN1 | IN2 | ENA | 电机工作状态 |
X | X | 0 | 停止 |
1 | 0 | 1 | 顺时针转动 |
0 | 1 | 1 | 逆时针转动 |
0 | 0 | 1 | 停止 |
1 | 1 | 1 | 刹停 |
|
| |
通过Mos管的不同打开方式,让磁铁分别停在不同的位置 | 如果能任意调节两个线圈的磁场强度,就能合成不同的磁场方向→让磁铁停留在任意位置 | |
如何改变磁场强度B | ||
线圈产生磁场强度的公式
|
| |
→精准控制线圈电流I,如何控制电流呢? | ||
线圈中有寄生电阻、电感, 上电:电流慢慢抬升,电压直接为U 下电:电流慢慢下降,电压直接为0 |
导通时电路等效为上述 | |
直流电机和步进电机的区别 |
控制代码《基于Keil C51》 |
#include <reg52.h> unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格 unsigned char code B_Rotation[4]={0x10,0x08,0x040,0x02};//反转表格 void Delay(unsigned int i)//延时 {while(--i);} main(){ unsigned char i; while(1) {for(i=0;i<4;i++) //4相 { P1=F_Rotation[i]; //输出对应的相 Delay(500); //调整电机转速} } } |