单片机控制光耦开关继而控制电机转动
时间:2022-10-12 23:30:00
实验二 单片机控制光耦开关,然后控制电机旋转
- 一、功能实现
控制单片机输出高低电平,然后控制光耦和继电器开关,从而控制电机旋转。
- 二、电路原理
当单片机检测到开关关闭时(P1.2引脚检测到低电平),单片机会输出高电平(P2.2引脚位置高),因此连接到后面的三极管和光电耦合器导通,使后面电路的三极管和继电器闭合,因此电机开始旋转。同样,当单片机检测到开关断开时(P1.2引脚检测到高电平),单片机会输出低电平(P2.2引脚较低),因此连接到后面的三极管被切断,光电耦合器被切断,从而切断后面电路的三极管和继电器,因此电机停止旋转。采用光电耦合器件实现隔离,避免后电路对前电路的影响。继电器的使用是为了提高驱动能力,为电机提供足够大的电流。
- 三、电路原理图
- 四、材料清单(小器件未计成本)
- 五、模拟工具选择讨论
现有的主流仿真工具有Altium Designer、Multisim、Proteus、Cadence、LTspice、Electronic Workbench、Matlab、TINA-TI、Infineon Designer。我用这个模拟Proteus,Proteus 软件是英国 Lab Center Electronics 公司出版的 EDA 支持电路图设计的工具软件PCB 布线和电路模拟。Proteus 支持单片机应用系统的模拟和调试,使软硬件设计在生产中 PCB 快速验证板前不仅节约了成本,而且缩短了单片机应用的开发周期。Proteus 是单片机工程师必须掌握的工具。Proteus 软件分为 ARES 和 ISIS 模块,ARES 用来制作 PCB,ISIS 用于绘制电路图和模拟电路。
- 六、模拟结果
1.开关关闭时模拟,电机转动(最终达到500转/s)
2.当开关断开时,电机停止转动
- 程序代码
//单片机:AT89S52
//系统晶振:12MHz
#include
#define uchar unsigned char
#define uint unsigned int
//引脚定义
sbit switch_1=P1^2;
sbit motor=P2^2;
//功能:延时1毫秒
//入口参数:x
//出口参数:无
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i
for(j=0;j<112;j );
}
//功能:电机开
void Motor_On(void)
{
motor=1;
}
//功能:电机关
void Motor_Off(void)
{
motor=0;
}
//主函数
void main(void)
{
Delay_xms(50);//等待系统稳定
motor=0;
while(1)
{
if(switch_1==0)
{
Motor_On();
Delay_xms(1000);
}
if(switch_1==1)
{
Motor_Off();
Delay_xms(1000);
}
}
}