51单片机PWM控制直流电机正反转
单片机课设PWM控制微型直流电机调速、正反转、启停

永磁直流电动机划分:稀土永磁直流电动机、铁氧体永磁直流电动机和铝镍钴永磁直流电动机。稀土永磁直流电动机:体积小且性能更好,但价格昂贵,主要用于航天、计算机、井下仪器等;铁氧体永磁直流电动机:由铁氧体材料制成的磁极体,廉价,且性能良好,广泛用于家用电器、汽车、玩具、电动工具等领域;铝镍钴永磁直流电动机:需要消耗大量的贵重金属、价格较高,但对高温的适应性好,用于环境温度较高或对电动机的温度稳定性要求较高的场合。
1.2
任务:1.通过单片机产生可调的PWM信号驱动微型直流电机;
2.通过按钮可控制电机启停、正反转以及加减速;
3.显示电机的工作状态以及速度档位。
要求:进行控制系统硬件电路设计,编写程序、画出电路原理图、利用proteus进行仿真。
1.3
硬件:keil和proteus软件、PC机一台
开发语言:C语言
对51系列单片机来说,最小系统一般应该包括:单片机、复位电路、晶振电路。 复位电路:使用了独立式键盘,单片机的P1口键盘的接口。考虑到对控制功能的扩展,本设计使用了6路独立式键盘。复位电路采用手动复位,所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态,晶振电路用30PF的电容和一个12M晶体振荡器组成为整个电路提供时钟频率。89C51单片机的时钟信号通常用两种电路形式电路得到:内部震荡方式和外部中断方式。在引脚XTAL1和XTAL2外部接晶振电路器(简称晶振)或陶瓷晶振器,就构成了内部晶振方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。其电容值一般在5~30pf,晶振频率的典型值为12MHz,采用6MHz的情况也比较多。内部振荡方式所得的时钟信号比较稳定,实用电路实用较多。复位及时钟振荡电路如图3.2.1所示。
51单片机电机正反转控制程序

51单片机电机正反转控制程序以下是一个基于51单片机的电机正反转控制程序示例:#include <reg52.h>sbit motorPin1 = P0^0; // 电机接口1sbit motorPin2 = P0^1; // 电机接口2void delay(unsigned int delayTime) {unsigned int i, j;for(i=delayTime; i>0; i--)for(j=200; j>0; j--);}void motorClockwise() {motorPin1 = 1; // 电机接口1为高电平motorPin2 = 0; // 电机接口2为低电平delay(500); // 延时一段时间motorPin1 = 0; // 电机接口1为低电平motorPin2 = 0; // 电机接口2为低电平}void motorAnticlockwise() {motorPin1 = 0; // 电机接口1为低电平motorPin2 = 1; // 电机接口2为高电平delay(500); // 延时一段时间motorPin1 = 0; // 电机接口1为低电平motorPin2 = 0; // 电机接口2为低电平}void main() {while(1) {motorClockwise(); // 电机正转delay(1000); // 延时一段时间motorAnticlockwise(); // 电机反转delay(1000); // 延时一段时间}}以上代码中,我们通过定义两个sbit变量来表示电机接口1和接口2。
通过控制接口1和接口2的高低电平状态,可以控制电机的正反转。
在motorClockwise函数中,我们将接口1设置为高电平,接口2设置为低电平,电机开始正转;在motorAnticlockwise函数中,我们将接口1设置为低电平,接口2设置为高电平,电机开始反转。
51单片机直流电机正反转程序

51单片机直流电机正反转程序在工业自动化、机器人、电子设备等领域,直流电机是一种常见的电动机。
直流电机具有结构简单、转速范围广、转矩大、控制方便等优点,因此被广泛应用。
在直流电机的控制中,正反转是一种常见的操作。
本文将介绍如何使用51单片机控制直流电机的正反转。
1. 直流电机的原理直流电机是一种将电能转化为机械能的电动机。
它的基本结构由定子、转子、电刷和电枢组成。
当电枢通电时,电枢内部会产生磁场,与定子磁场相互作用,从而产生转矩,使转子转动。
电刷则用来改变电极的极性,使电极的磁场方向与定子磁场方向相互作用,从而使电机正反转。
2. 51单片机控制直流电机的原理51单片机是一种常用的微控制器,具有体积小、功耗低、易于编程等优点。
在控制直流电机时,我们可以使用51单片机来控制电机的正反转。
具体实现方法是通过控制电机的电极极性来改变电机的转向。
3. 51单片机直流电机正反转程序下面是一段使用51单片机控制直流电机正反转的程序:#include <reg52.h>sbit IN1 = P1^0; //定义IN1引脚sbit IN2 = P1^1; //定义IN2引脚void delay(unsigned int t) //延时函数 {unsigned int i, j;for(i=0; i<t; i++)for(j=0; j<125; j++);}void main(){while(1){IN1 = 1; //IN1引脚输出高电平 IN2 = 0; //IN2引脚输出低电平 delay(1000); //延时1秒IN1 = 0; //IN1引脚输出低电平 IN2 = 1; //IN2引脚输出高电平 delay(1000); //延时1秒}```上述程序中,我们使用了P1口的0、1引脚来控制电机的正反转。
当IN1引脚输出高电平、IN2引脚输出低电平时,电机正转;当IN1引脚输出低电平、IN2引脚输出高电平时,电机反转。
基于51单片机的直流电机PWM调速系统

基于51单片机的直流电机PWM调速系统作者:宫晓明来源:《科学家》2017年第16期摘要脉冲宽度调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。
本设计用单片机做微处理器来实现对直流电机的调速。
因此在设计中,对直流调速的原理、直流调速控制方式以及调速特性、PWM基本原理及实现方式进行了全面的阐述。
关键词单片机;PWM;直流电机中图分类号 TP3 文献标识码 A 文章编号 2095-6363(2017)16-0151-01随着电子技术、微电子技术的飞速发展,微型计算机发展很快,单片机技术成为自动控制技术的核心之一。
直流电机由于具有良好的启动,制动,调速性能也被广泛应用。
基于单片机的PWM调速系统对直流电机进行调速,通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗,其控制简单,灵活。
1 硬件电路的设计1.1 控制电路的设计控制电路主要由STC89C51单片机来控制,编写一段程序使单片机发出的PWM脉冲来实现对驱动的控制。
1.2 霍尔元件测速部分电路的设计霍尔传感器是基于霍尔效应的一种磁敏式传感器。
由于霍尔元件产生的电势差很小,故通常将霍尔元件与放大器电路、温度补偿电路及稳压电源电路等集成在一个芯片上,称之为霍尔传感器。
1.3 电机控制正反转电路设计通过调节直流电机的电压可以改变电机的转速,本系统用脉宽调制(PWM)来实现调速。
方波的有效电压跟电压幅值和占空比有关,通过占空比实现改变有效电压。
用软件模拟PWM可以有延时和定时两种方法,延时方法占用大量的CPU,所以这里采用定时方法。
一个典型的直流电机控制电路,电路得名于“H桥驱动电路”。
4个三极管组成H的4条垂直腿,而电机就是H中的横杠。
H桥式电机驱动电路包括4个三极管和一个电机,要使电机运转,必须导通对角线上的一对三极管。
根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。
本系统直接用L293D芯片来实现。
51单片机直流电机反转

51单片机直流电机反转在现代工业生产中,直流电机作为一种重要的动力装置,广泛应用于各种机械设备中。
其中,电机的正反转控制是直流电机应用中的一个重要环节。
本文将以为主题,探讨其原理与实现方法。
直流电机是将电能转换为机械能的装置,其结构简单、运行可靠,在工业生产中应用广泛。
在很多情况下,需要对电机进行正反转控制,以满足不同的工作需求。
而使用51单片机进行直流电机反转控制,是一种简单有效的方法。
首先,我们需要了解直流电机的结构与工作原理。
直流电机主要由定子、转子和碳刷组成。
当定子上通入直流电流时,形成一个磁场,引起转子旋转。
电机的正反转实际上就是改变定子磁场方向的问题。
通过改变定子和转子之间的相对位置,可以实现电机的正反转。
在51单片机直流电机反转控制中,一般采用H桥驱动电路。
H桥电路由四个晶体管组成,可以实现电机的正反转控制。
通过控制H桥中各个晶体管的导通与断开,可以改变电机的正反转方向。
在实际应用中,需要根据具体需求设计合适的控制算法。
控制算法的设计涉及到脉宽调制、速度控制、位置控制等方面。
通过合理设计算法,可以实现对直流电机的精确控制。
另外,在51单片机直流电机反转控制中,还需要考虑到电机的保护问题。
在工作过程中,电机可能会出现过载、过热等情况,需要设置相应的保护装置,以保证电机的安全运行。
让我们总结一下本文的重点,我们可以发现,51单片机直流电机反转控制是一种简单有效的方法,通过合理设计控制算法和保护装置,可以实现对直流电机的精确控制。
在工业生产中,这种控制方法具有重要的应用价值,可以提高生产效率,降低能耗成本,值得进一步研究与推广。
基于51单片机的 红外遥控电机正反转程序 要求:P3.2接红外接收头 控制两个电机正反

cord=irdata[k];
// if(cord>7)//大于某值为1, 1.792mS
if(cord>6)//大于某值为1,11.0592M
Hale Waihona Puke { value=value|0x80;
unsigned char irtime;//红外用全局变量
bit irpro_ok,irok;
unsigned char IRcord[4]; //一次发射有4个编码值,还是5个 应该是4个,但编号为0-3
unsigned char irdata[33];//一次发射其有33 位
//////////////////////////////////////////////
数据码以及他们的反码的先导。同步位(SY)是标志最后一位编码是“0”或“1”的标识位,它只有0.56ms的有载波信号构成。*/
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
////////////////////////////////////////////////
}
///////////////////////////////////////////////////////////////////
void EX0init(void)
{
IT0 = 1; // Configure interrupt 0 for falling edge(下降沿) on /INT0 (P3.2)
void TIM0init(void)//定时器0初始化
{
TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值,约256US
基于51单片机的直流电机PWM调速系统

DOI:10.16660/ki.1674-098X.2018.13.108基于51单片机的直流电机PWM调速系统吴一平(浙江农林大学工程学院 浙江杭州 311300)摘 要:本文介绍了以单片机STC89C51和L298控制的直流电机PWM (脉宽调制)调速系统,主要介绍了用单片机软件实现PWM调整电机转速的基本原理及选择。
硬件电路实现了对电机的正转、反转、快速停止、加速,停止的控制。
软件电路给出了主程序、子程序流程图以及Proteus的仿真结果。
关键词:单片机STC89C51 脉宽调制 直流电机中图分类号:TN710 文献标识码:A 文章编号:1674-098X(2018)05(a)-0108-02直流电动机是将直流电能转换为机械能的电动机,相比其他类型电动机具有更好的调速性能,因此,直流电动机在工农业中被广泛应用。
本文对基于单片机STC89C51的直流电机PWM调速系统进行介绍,以期实现直流电机最优化方案。
1 直流电机PWM调速选择及原理直流电动机的调速方法有改变改变磁通量、改变电枢回路串联电阻以及改变电枢电压三种。
在电枢回路串联电阻,调速范围不大并且铜耗大,不经济。
弱磁调速中当磁通量Φ在低速时受磁极饱和限制,在高速时受换向器结构强度和换向火花的限制,而且由于励磁圈电感较大,动态响应较差,因此采用改变电枢电压的调速方法。
PWM(Pulse Width Modulation),全称为脉冲宽度调制,可以改变电枢电压值。
PWM的优点是精度高,易于控制,运行稳定。
PWM调速方法有三种,分别为定频调宽法、调宽调频法和定频调宽法。
前两种方法在调速时会改变控制脉冲的频率,而控制脉冲的频率与系统固有频率接近时会引起震荡,因此本文选用定频调宽法。
调速原理计算如下:占空比,D=t1t1+t2=t1T式中,T为电压变化周期;t1为一个周期内高电平持续时间;t2为一个周期内低电平持续时间;电机电压平均值U=DU0,式中,U0为总电压。
基于51单片机控制步进电机正反转

基于51单片机控制步进电机正反转此次采用uln2003模块来链接步进电机;## 步进电机工作原理步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。
每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。
步进电动机的结构形式和分类方法较多,一般按励磁方式分为磁阻式、永磁式和混磁式三种;按相数可分为单相、两相、三相和多相等形式。
因此我们可以控制单片机I/O口的电平来控制步进电机,此次设计中采用四相单拍工作方式,在这种工作方式下,A、B、C、D 三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。
因此这种通电方式叫做四相单四拍工作方式。
1.电机正转代码unsigned char code tableZ[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};2.电机反转代码unsigned char code tableF[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};代码如下#include <reg52.h>#define uint unsigned int #define uchar unsigned charunsigned char code tableZ[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};unsigned char code tableF[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//²½½øµç»úzhengvoid delay(unsigned int t);sbit S3=P3^4; //反转sbit S4=P3^5; //反停sbit S5=P3^6; // 正停//正转写入数据void motor_z() { unsigned char i,j; for (i=0; i<8; i++) { if(S5==0){break;} for(j=0;j<8;j++){ P1 = tableZ[i]&0x1f; delay(50); } } }//反转写入数据void motor_f(){ unsigned char i,j; for (i=0; i<8; i++) { if(S4==0){break;} for(j=0;j<8;j++){ P1 = tableF[i]&0x1f;delay(50); } }}void delay(unsigned int t)//延时函数{ unsigned int k; while(t--) { for(k=0; k<60; k++) { } }}void main(){while(1){motor_z();if(S3 == 0){motor_f();}}}•1•2•3•4•5•6•7•8•9•10•11•12•13•14•15•16•17•18•19•20•21•22•23•24•25•26•27•29 •30 •31 •32 •33 •34 •35 •36 •37 •38 •39 •40 •41 •42 •43 •44 •45 •46 •47 •48 •49 •50 •51 •52 •53 •54 •55 •56 •1•3 •4 •5 •6 •7 •8 •9 •10 •11 •12 •13 •14 •15 •16 •17 •18 •19 •20 •21 •22 •23 •24 •25 •26 •27 •28 •29 •30 •31•33•34•35•36•37•38•39•40•41•42•43•44•45•46•47•48•49•50•51•52•53•54•55•56protel仿真图如下。