此篇文章免费分享给大家,这篇文章结合笔者所学以及在往上参考大神的讲解,通过自己的理解整理成文档,在此免费分享给大家,由于笔者是一名在读学生,文中难免有不当之处,如有错误,望大家指正!! | 实现的主要功能:
1.控制正反转
2.加减速
3.停止
视频链接:后续再补吧,还要审核好麻烦的
PWM控制直流电机额,,,,由于笔者是一名学生(主要还是经验不丰富),所以,当然,此次,又掉进坑里了。
此次所用的芯片,主要是L298N、直流电机、51单片机;程序非常简单,在此,我也会贴出来的,工程文件放在附件中,需要的直接下载!
话不多说,看图讲坑:
第一个坑:首先,讲一下L298N使能端,L298N的使能端买回来的时候是被一个跳线帽给连接着的呢,那么此时,该如何连接呢?
对于连接有俩种情况:1.如果你只需要控制正反转,对速度没有要求的话,跳线帽需要插上去。只需要控制控制端就可以控制正反转了。2.如果你需要PWM调速,那么此时就要格外小心了,因为笔者就是跳进这个坑了。看图~~,使能端拔掉跳线帽有个插头,红色箭头的是1,绿色箭头的是2,特别注意,如果调速的话,一定要使输出PWM波的那段连接在1处,如果连接在2处,则会毫无作用。切记,切记,切记
第二个坑:我是通过外接电源盒来给直流电机供电的,这个时候,记得外接电源盒的地端一定要和单片机地端共地、共地、共地。否则。不转······
图2.电池盒和单片机共地
之前写过一篇详细介绍L298N的用法的文章,如果有需要的可以直接去下载,
此次主要讲这俩个容易忽略的坑,链接:http://www.51hei.com/bbs/dpj-83045-1.html
程序代码如下:
1.按键程序
#ifndef key_h
#define key_h
sbit key_1=P1^0; //顺时针转动
sbit key_2=P1^1; //逆时针转动
sbit key_3=P1^2; // 加速转动
sbit key_4=P1^3; //减速转动
sbit key_5=P1^4; //停止转动
unsigned char PWM_Count=20; //占空比控制字
unsigned char n=5; //速度增减量5
sbit in1=P3^0;
sbit in2=P3^1;
sbit ena=P3^2;
void delays()
{
unsigned char i;
for(i=80;i>0;i--);
}
void key()
{
P1=0XFF;
if(key_1==0)
{
delays();
if(key_1==0)
{
in1=0;
in2=1;
} //顺时针转动
while(!key_1);
}
if(key_2==0)
{
delays();
if(key_2==0)
{
in1=1;
in2=0;
}
while(!key_2);
} //逆时针转动
if(key_3==0)
{
delays();
if(key_3==0)
{
PWM_Count=PWM_Count+n;
if(PWM_Count>=100)
PWM_Count=100;
}
while(!key_3);
} //加速转动 ,如果大于等于100就全速转动
if(key_4==0)
{
delays();
if(key_4==0)
{
if(PWM_Count>10)
{
PWM_Count=PWM_Count-n;
}
else
PWM_Count=5; //减速转动,最低转速为5
}
while(!key_4);
}
if(key_5==0)
{
delays();
if(key_5==0)
{
in1=0;
in2=0;
}
while(!key_5);
} //电机停止转动
}
#endif
2.主程序
#include<reg51.h>
#include "key.h"
unsigned char count=0;
void Timer_Init()
{
TMOD=0X01; //T0定时方式1
TH0=0Xfc;
TL0=0X66; //计数初值设置为1ms
ET0=1; //打开定时器0的中断
TR0=1; //打开定时器0
EA=1; //开总中断
}
void main()
{
in1=0;
in2=1;
ena=1;
Timer_Init();
while(1)
{
key();
}
}
void Timer() interrupt 1 //特别注意此处,0--外部中断0,1--定时器中断0,2--外部中断1,3--定时器中断1,4--串行口中断1
{
TR0=0;
TH0=0Xfc;
TL0=0X66; //重新赋计数初值为1ms
if(count<=PWM_Count)
{
ena=1;
}
else
{
ena=0;
}
count++;
if(count>=100)
{
count=0;
}
TR0=1;
}
全部资料51hei下载地址:
浅谈PWM控制直流电机.docx
(407.24 KB, 下载次数: 75)
PWM直流电机调速程序.zip
(19.22 KB, 下载次数: 142)
|