该知识点来源于B站知弦,本章便是对其直流电机应用的简单总结!!!
一、直流电机
二、L293D
由于51单片机不能直接对直流电机进行控制,因此需要通L293D进行控制,可以通过调节占空比的方式调节直流电机的运转速度。
三、仿真
器件搜索:89c51、l293、motor-dc
正传:
反转:
四、程序
功能:可以直接使用普通延时函数进行占空比调整调节速度
可以进行正反转测试
使用定时器进行占空比调整
#include "reg51.h"
sbit IN1=P2^4;
sbit IN2=P2^5;
sbit EN1=P2^6;
unsigned char s[]={0x07,0x1F};
unsigned char s1[]={0xD0,0x40};
unsigned char s2[]={2000,8000} ;
int v=8000;
unsigned int num=0;
void delay(unsigned int n)
{
int i=0,j=0;
for(i=0;i<n;i++)
{
for(j=0;j<120;j++);
}
}
void motor_dc() //顺时针转动
{
EN1=1;
IN2=0;
IN1=1;
delay(25);//占空比为1/2,可以更改延时比例更改占空比
IN1=0;
delay(75);
}
void motor_dc1() //逆时针转动
{
EN1=1;
IN1=0;
IN2=1;
delay(50);//占空比为1/2,可以更改延时比例更改占空比
IN2=0;
delay(50);
}
void inittime()
{
TMOD=0x01;
TH0=(65536-10000)/256;//10MS 定时
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
EN1=1;
IN2=0;
}
void main()
{
inittime();
while(1)
{
//motor_dc();
}
}
void inittime_isr() interrupt 1
{
TH0=(65536-v)/256;
TL0=(65536-v)%256;
IN1=~IN1;
v=10000-v;
// num++;
// if(num==2)
// {
// num=0;
// }
}
五、总结
直流电机的控制比较简单,只需看懂功能表即可写程序
对于定时器占空比调整需要注意时间更改方式!!