一个基于51单片机控制直流电机的设计
基于C51单片机直流电机测速仪设计
基于C51单片机直流电机测速仪设计摘要:电机的转速是各类电机运行过程中的一个重要监测量,测速装置在电机调速系统中占有非常重要的地位,特别是数字式测速仪在工业电机测速方面有独到的优势。
本文介绍了一种基于C51单片机的光电传感器转速测量系统的设计。
系统采用对射式光电传感器产生与齿轮相对应的脉冲信号,使用AT89C51单片机采样脉冲信号并计算每分钟内脉冲信号的数目,即电机对应的转速值,最终系统通过LCD实时显示电机的转速值。
经过软硬件系统的搭建,分别通过Protues软件系统仿真实验和实际电路搭建检查实验。
仿真实验表明本系统满足设计要求,并且结构简单、实用。
整个直流电机测速系统在降低测速仪成本,提高测速稳定性及可靠性等方面有一定的应用价值。
关键词:转速测量;光电传感器;单片机Based On C51 SCM Single DC Motor Speedometer DesignABSTRACT:Motor speed is all kinds of motor operation is an important process to monitor the amount of speed measuring device in the motor control system occupies a very important position, Especially the digital speedometer in the industrial motor speed has unique advantage. This paper describes a photoelectric sensor 51 SCM-based speed measurement system design. System uses a beam photoelectric sensor generates a pulse signal corresponding to the gear, the use of a sampling pulse signal AT89C51 SCM and calculating the pulse per minute, the number of signals that the speed of the motor corresponding to the value of the final system time through the LCD display the motor speed value.After a hardware and software system structures, respectively, through Protues software system to build the actual circuit simulation and experimental examination. Simulation results show that the system meets the design requirements, and the structure is simple and practical. DC Motor Speed entire system in reducing speedometer costs, improve reliability, speed stability and a certain application value.Keywords: Speed measurement; Photoelectric; Single chip micyoco目录1 绪论 (1)1.1 数字式转速测量系统的发展背景 (1)1.2 转速测量在国民经济中的应用 (1)1.3主要研究内容 (2)1.4 设计的目的和意义 (2)2 转速测量系统的原理 (4)2.1 转速测量原理 (4)2.2 转速测量计算方法 (5)3转速测量系统设计方案 (7)3.1 直流电机转速测量方法 (7)3.2 设计任务及方案 (8)4 直流电机测速系统设计 (9)4.1 单片机AT89C51介绍 (9)4.2 转速信号采集 (14)4.2 转速信号处理电路设计 (16)4.4 最小系统的设计 (17)4.4.1复位电路 (17)4.4.2 晶振电路 (20)4.5 显示部分设计 (20)5 直流测速系统仿真 (24)5.1 直流测速系统仿真 (24)5.1.1单片机最小系统仿真 (25)5.1.2 数码管显示仿真 (25)5.2 主程序流程设计 (26)5.2.1 主程序流程设计 (26)5.2.2 定时器的初始化 (27)5.3 实际电路实验 (28)参考文献 (30)致谢 (31)1 绪论1.1 数字式转速测量系统的发展背景在现代工业自动化高度发展的时期,几乎所有的工业设备都离不开旋转设备,形形色色的电机在不同领域发挥着很重要的作用。
51单片机控制直流电机调速系统流程图:
51单片机控制直流电机调速系统流程图:
题目:单片机控制直流电机调速系统——软件设计
1. 编一段显示程序分别显示当前的转速和我们所需要的转速。
显示用4段数码管来实现。
2:编一段PWM调速的程序,来控制脉冲的宽度从而来控制电机的转速。
3:通过霍尔传感器测速,利用霍尔把信号传给单片机,单片机利用计数器的功能来记录转速,并同时把转速用数码管显示出来。
4:由于真实的转速和我们所设订的转速可能存在很大的误差,所以要编一段PID调速的程序,通过PID调节来减少误差。
5.要3个按键,键1实现设定转速的功能,键2实现切换功能(从所设定的转速切换到真实的转速的显示,键3实现开关的功能。
基于51单片机红外遥控电机课程设计说明书
课程实训报告课程名称:单片机与接口技术实训题目:红外控制直流电机正反转任务书一、实训任务设计一款基于AT89C51单片机用红外遥控控制电机的正反转加减速。
二、设计要求1. 基本要求1).用无线模块控制电机的正反转加减速,实现自动化控制。
2).通过对AT89C51单片机的编程,实现直流电机的正反转,加减速。
3).写出详细的设计报告。
4).给出全部电路和源程序。
2. 发挥部分1).可通过PC机,对系统编程,实现直流电机转速的快慢。
摘要随着科技的不断进步,人们进入了无线电时代,它为我们的生活带来了极大的方便。
像现在的移动电话,无线网络,无线鼠标,无线键盘等都已经融入了我们的生活当中。
从我们身边的电子产品就可以看出我们已经进入了无线电时代。
本设计就是一款基于AT89C51的用无线模块控制的电机的正反转以及它的加减速。
这非常适应于在工厂使用,特别是在工业控制中。
可以想象,机器在工厂运转时,我们只需要用无线遥控来控制电机的转速以及它的转向,这样我们就可以在远处来控制了,用不着再跑到电机的旁边来控制开关,为工厂生产带来了极大的方便。
软件上采用C51编程,主要编写了主程序,直流电机驱动程序,中断程序延时程序等。
经过调试,实现了对电机的控制。
关键词:AT89C51 L298 PWM 直流电机无线模块目录第一章绪论 (5)1.1 概述 (5)1.2 设计目的 (5)1.3 设计任务和内容 (5)第二章总体设计及核心器件简介 (7)2.1总体设计 (7)2.2 AT89C51 (7)2.3 L298 (9)引脚介绍: (10)2.4 伺服电机介绍 (11)2.5 PT2262/PT2272 (12)第三章单元电路模块设计 (17)3.1 复位电路 (17)3.2时钟电路 (18)3.3电机驱动电路图 (18)3.4PWM调速系统设计 (19)第四章软件编程设计 (21)4.1 设计思想 (21)4.2 流程图 (21)4.3源程序 (22)第五章设计心得和存在问题 (26)第一章绪论1.1 概述近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
51单片机PID控制直流电机实验报告
iError = sptr->SetPoint - NextPoint; //计算增加量
iIncpid = sptr->Proportion * iError //E[k]项
- sptr->Integral * sptr->LastError //E[k-1]项
+ sptr->Derivative * sptr->PrevError; //E[k-2]项
static PID *sptr = &sPID;
void IncPIDInit()
{
sptr->SumError = 0;
sptr->LastError =0; //Error[-1]
sptr->PrevError =0; //Error[-2]
sptr->Proportion =0.5; //比例系数
sptr->Integral =0.3; //积分系数
sptr->Derivative = 0.3; //微分系数
sptr->SetPoint =sudu_lilun; Nhomakorabea}
51单片机直流无刷电机控制.
基于MCS-51单片机控制直流无刷电动机学号:3100501044班级:电气1002姓名:王辉军摘要直流无刷电机是同步电机的一种,由电动机本体、位置传感器和电子开关线路三部分组成。
其定子绕组一般制成多相(三相、四相、五相不等),转子由永久磁钢按一定极对数(2p=2,4,…)组成。
电机转子的转速受电机定子旋转磁场的速度及转子极数(P)影响:N=120.f / P。
在转子极数固定情况下,改变定子旋转磁场的频率就可以改变转子的转速。
直流无刷电机即是将同步电机加上电子式控制(驱动器),控制定子旋转磁场的频率并将电机转子的转速回授至控制中心反复校正,以期达到接近直流电机特性的方式。
也就是说直流无刷电机能够在额定负载范围内当负载变化时仍可以控制电机转子维持一定的转速。
MCS-51单片机是美国英特尔公司生产的一系列单片机的总称,是一种集成电路芯片,采用超大规模技术把具有数据处理能力的微处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、输入输出接口电路、定时计算器、串行通信口、脉宽调制电路、A/D转换器等电路集成到一块半导体硅片上,这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。
本论文将介绍基于MCS-51单片机控制直流无刷电动机的设计,它可以实现控制直流无刷电动机的启动、停止、急停、正反转、加减速等功能。
关键词:单片机,直流无刷电动机,控制系统直流无刷电动机是在直流电动机的基础之上发展而来的,它是步进电动机的一种,继承了直流电动机的启动转矩大、调速性能好等特点克服了需要换向器的缺点在交通工具、家用电器及中小功率工业市场占有重要的地位。
直流无刷电动机不仅在电动自行车、电动摩托车、电动汽车上有着广泛的应用,而且在新一代的空调机、洗衣机、电冰箱、吸尘器,空气净化器等家用电器中也有逐步采用的趋势,尤其是随着微电子技术的发展,直流无刷电动机逐渐占有原来异步电动机变频调速的领域,这就使得直流无刷电动机的应用范围越来越广。
基于51单片机的PWM直流电机调速
基于51单片机的PWM直流电机调速在现代社会,PWM直流电机已经成为各类机械设备不可或缺的动力源。
为了更好地控制电机的转速和输出功率,我们需要进行PWM调速操作。
本文将简要介绍如何基于51单片机实现PWM直流电机的调速。
一、PWM调速原理PWM调速是一种通过改变电机供电电压的占空比来调整电机转速和功率的方法。
当一个周期内高电平所占的时间比较短时,电机得到的平均电流和平均转矩也相应减小,电机的速度和功率也随之降低。
反之,当高电平所占的时间比较长时,电机得到的平均电流和平均转矩也相应增大,电机的速度和功率也随之提高。
因此,通过改变PWM信号的高电平占空比,可以实现直流电机的调速、调功等功能,极大地提高了电机的效率和可控性。
二、硬件电路搭建根据上述PWM调速原理,我们需要搭建一个控制板,将51单片机的PWM输出与直流电机相连。
具体电路如下:1、选择合适的电源供电,一般为12V/24V直流电源。
2、使用L298N模块作为直流电机驱动模块,将模块的电源接到电源供电上,将模块的IN1和IN2引脚分别接到51单片机的P1^0和P1^1引脚上,将直流电机的正负极分别接到模块的OUT1和OUT2引脚上。
3、将51单片机的P1^2引脚连接到一个脉冲宽度计波形滤波器(LCF)的输入端,并将输出端接到L298N模块的ENA引脚上。
4、调整脉冲宽度计波形滤波器的参数,以达到合理的PWM输出波形。
5、建立一个按键,将按键的一端接到51单片机的P3^2引脚上,将另一端接到单片机的地端。
6、根据需要进行其他接线。
三、软件程序设计根据上述硬件电路,我们需要进行相应的软件程序设计,以实现基于51单片机的PWM 直流电机调速。
以下是程序设计的主要步骤:1、在程序中定义需要使用的IO口。
2、调用定时器初始化程序,设置定时器的时钟频率、计数器值和工作方式等参数。
3、编写一个PWM输出函数,实现对PWM信号的输出。
4、编写一个ADC采样函数,读取ADC转换器的值,并根据采样值输出一定的PWM信号。
基于51单片机的步进电机控制系统设计
基于51单片机的步进电机控制系统设计步进电机是一种特殊的直流电动机,具有定角度、定位置、高精度等特点,在许多领域得到广泛应用,如机械装置、仪器设备、医疗设备等。
本文将基于51单片机设计一个步进电机控制系统,主要包括硬件设计和软件设计两部分。
一、硬件设计步进电机控制系统的硬件设计主要包括51单片机、外部电源、步进电机驱动模块、以及其他辅助电路。
1.51单片机选择由于步进电机控制需要执行复杂的算法和时序控制,所以需要一个性能较高的单片机。
本设计选择51单片机作为主控芯片,因为51单片机具有丰富的外设接口、强大的计算能力和丰富的资源。
2.外部电源步进电机需要较高的电流供给,因此外部电源选择稳定的直流电源,能够提供足够的电流供电。
电源电压和电流的大小需要根据具体的步进电机来确定。
3.步进电机驱动模块步进电机驱动模块是连接步进电机和51单片机的关键部分,它负责将51单片机输出的脉冲信号转化为对步进电机的驱动信号,控制步进电机准确转动。
常用的步进电机驱动芯片有L297、ULN2003等。
4.其他辅助电路为了保证步进电机控制系统的稳定运行,还需要一些辅助电路,如限流电路、电源滤波电路、保护电路等。
这些电路的设计需要根据具体的应用来确定。
二、软件设计1.系统初始化系统初始化主要包括对51单片机进行外部中断、定时器、串口和IO 口等初始化设置。
根据实际需求还可以进行其他模块的初始化设置。
2.步进电机驱动程序步进电机的驱动程序主要通过脉冲信号来控制电机的转动。
脉冲信号的频率和脉冲宽度决定了电机的转速和运行方向。
脉冲信号可以通过定时器产生,也可以通过外部中断产生。
3.运动控制算法步进电机的运动控制可以采用开环控制或闭环控制。
开环控制简单,但无法保证运动的准确性和稳定性;闭环控制通过对电机转动的反馈信号进行处理来调整脉冲信号的生成,从而实现精确的运动控制。
4.其他功能设计根据具体的应用需求,可以加入其他功能设计,如速度控制、位置控制、加速度控制等。
基于51单片机的直流电机转速PI控制
… …
图 xx 电路原理图
上图中 LED 数码管显示中的 74LS164 芯片的引脚及功能如下所述:
芯片引脚功能对照表
符号 SA、SB Q0~Q7 CP(CLK) VCC GND /MR(/CLR)
功能 串行数据输入端 并行数据输出端 时钟输入端(上升沿有效) 电源正(5V) 接地 清零端(低电平有效)
直流电机 PI 转速控制—基于 51 单片机
1.项目系统组成
本项目由 STC89C52RC 单片机最小系统,12MHZ 晶振。直流电机驱动电路、直流电机(5V)、光电测 速电路以及数码管显示电路组成。详细器件见下文电路图。
2.直流电机转速控制电路原理
直流调速的方法有多种,本文是基于 PWM(脉冲宽度调制)技术,改变直流电机等效电枢电压,以此 在一定范围实现直流电机的调速。
void timer1() interrupt 3 {
TR1=0; TH1=pwmh; TL1=pwml; PWM1=0;
//T1 中断响应函数
//关闭定时器 T1 //T1 重置初值 //T1 重置初值,改变 PWM 占空比 //输出低电平
}
void PID_pwm()
{
unsigned int speed=0,pwm=0,pwmhh=0,pwmll=0; speed=10*pulse; //脉冲数换算为转速(转/分)speed=60*pulse*1000/(12*50*10)
综上所述,要想电机正转,则需要 PWM1=1,同时 PWM2=0;要想电机反转,则需要 PWM2=1,同时 PWM1=0;要想电机停止,则需要 PWM1=1,同时 PWM2=1,或者 PWM1=0,同时 PWM2=0。
基于51单片机的大功率直流有刷电机的PWM调速控制
基于51单片机的大功率直流有刷电机的PWM调速控制本人最近一直想用51 单片机来设计制作一个大功率直流有刷电机PWM 调速控制器。
由于平时工作忙,没时间。
所以,这个东东花了我很长时间。
每天晚上下了班,回家就弄,一直搞到十一二点钟才休息。
期间,也花了我不少钱,也失败了N 次。
终于,功夫不负有心人,我终于成功了,哈哈~~。
由于这个是大功率的直流有刷电机PWM 调速控制器,所以就不能用晶体管来驱动了,必须用MOS 管来驱动。
MOS 管不仅驱动能力强,而且效率高。
为了提高系统的稳定性,可靠性,适用范围广等特点,本系统,采用双电源供电。
控制电路一组电源,电压分别为5V 和15V。
功率输出部分一组电源,以适应不同电压的电动机。
至于功率,可以根据实际情况,通过并联MOS 管来决绝,但同时也要修改下驱动电路的相关参数,否则就很有可能炸MOS 管!另外,本人也考虑过在单片机的PWM 脉冲输出端与驱动电路之间,通过光耦来连接,实现光电隔离,提高系统的稳定性。
但后来又担心光耦的频率响应速率,可能会给驱动电路带来信号的衰减或者错误的信号等因素,造成降低系统的效率或者损坏MOS 管。
也许是我多虑了吧。
呵呵,不过我看到网上好多资料都是用的光电隔离。
目前,这个版本的调速控制器,共4 路PWM 脉冲输出,分别提供给:上,下MOS 管驱动电路正转信号。
上,下MOS 管驱动电路反转信号。
待机状态下一个红色的LED 灯闪烁,电机运行的各种状态指示,可以低速,中速,高速三个档运行。
并可以实现刹车和倒车功能。
这个目前可以达到至少100W 不成问题。
我现在采用的是一个12V 80W 的直流有刷电机。
低速运行时的电压为:3.7V,中速时:6.5V,高速时:10.5V。
目前这个东东只是实现了最基本的控制功能。
还不具有其它功能,如,电机过流保护,欠压保护(用蓄电池做电源时,。
基于C51单片机步进电机综合控制实验
重庆工商大学计算机与信息工程学院学院《单片机原理及应用》课程实验报告实验名称:步进电机综合控制实验实验班级:2010级自动化专业班级:2010级自动化三班指导老师:文远熔组员:陶园2010133330 王路2010133344江洋2010133335陈娅2010133326张琴芳2010133317张丹2010133320(组长)一、摘要:本实验利用8051单片机达到控制步进电机的启动、停止、正转、反转、点动、转过指定角度、状态显示和数据指示的目的,使步进电机控制更加灵活。
步进电机驱动芯片采用ULN2003,ULN2003具有大电流、高电压,外电路简单等优点。
利用ZLG7290模块驱动LED数码管显示速度设定值。
通过这个单片机控制系统的设计来掌握步进电机的工作原理和驱动过程以及LED显示原理和ZLG7290模块的使用方法,用LED数码管显示实验要求的状态结果,设计电路的硬件接线图和实现上述要求的程序。
关键词:51单片机步进电机ZLG7290 ULN2003二、设计内容与要求:1、任务介绍:实现步进电机按规定的速度正转、反转,转过指定的角度,要有点动功能。
所有命令通过键盘输入,步进电机在运行过程中要有状态和数据指示。
2、每套设计文档应包括:系统原理说明、程序框图、电路原理图和程序清单。
三、实验器件介绍及原理:本实验采用单片机来控制步进电机,实现了软件与硬件相结合的控制方法。
在单片机环境下,用ULN2003驱动芯片驱动步进电机,用ZLG7290芯片作用下的按键控制步进电机的运行,从而达到实验要求。
其控制框图(图一)为:图一:控制框图1、系统硬件介绍1.1步进电机1.1.1相关的技术指标:a、相数:指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机,本实验用的是四相步进电机。
电机相数不同,其步距角也不同。
b、步距角:表示控制系统每发一个步进脉冲信号,电机所转动的角度。
本实验程序运行前要先测量步进电机的步距角。
51单片机控制直流电机设计
单片机控制小功率直流电机一. 设计要求:用单片机控制直流电机加速、减速、正反转和停止。
二. 设计方案分析1、方案设计:直流电机只要能提供一定的直流就可以转动,改变电压极性可以改变转动方向,可以通过给直流电机提供脉冲信号来驱动它,脉冲信号的占空比可以影响到直流电机的平均速度,因此可以通过调整占空比从而能实现调速的目的。
直流电机的驱动电路要有过流保护作用,可用二极管来实现,另外电机的驱动电流是比较大的所以需要用三极管来放大电流。
程序的关键就是如何实现占空比的调整,这个可以通过对51单片机定时器重装初值进行改变,从而改变时间。
设计中用到的元件:STC89C52、晶振(12MHz)、小按键、三极管、二极管、电容、电阻等。
2、背景知识介绍:直流电机调速原理本设计的主要思想为利用PWM控制占空比从而达到改变电机速度。
下面为PWM控制原理;图1为PWM降压斩波器的原理电路及输出电压波形。
在图1a中,假定晶体管V1先导通T1,秒(忽略V1的管压降,这期间电源电压Ud全部加到电枢上),然后关断T2秒(这期间电枢端电压为零)。
如此反复,则电枢端电压波形如图1b中所示。
电动机电枢端电压Ua为其平均值。
图1 PWM降压斩波器原理电路及输出电压波形a) 原理图 b)输出电压波形 1112a d d d T T U U U U T T Tα===+ (3) 式(3)中1112T T T T Tα==+ (4)α为一个周期T 中,晶体管V1导通时间的比率,称为负载率或占空比。
使用下面三种方法中的任何一种,都可以改变α的值,从而达到调压的目的:(1)定宽调频法:T1保持一定,使T2在0~∞范围内变化;(2)调宽调频法:T2保持一定,使T1在0~∞范围内变化(3)定频调宽法:T1+T2=T 保持一定,使T ,在0~T 范围内变化。
不管哪种方法,α的变化范围均为0≤α≤l ,因而电枢电压平均值Ua 的调节范围为0~Ud ,均为正值,即电动机只能在某一方向调速,称为不可逆调速。
单片机课程设计完整版《PWM直流电动机调速控制系统》
单片机原理及应用课程设计报告设计题目:学院:专业:班级:学号:学生姓名:指导教师:年月日目录设计题目 (1)1 设计要求及主要技术指标: (1)1.1 设计要求 (1)1.2 主要技术指标 (2)2 设计过程 (2)2.1 题目分析 (4)2.2 整体构思 (4)2.3 具体实现 ................... 错误!未定义书签。
3 元件说明及相关计算 (5)3.1 元件说明 (5)3.2 相关计算 (6)4 调试过程 (6)4.1 调试过程 (6)4.2 遇到问题及解决措施 (7)5 心得体会 (7)参考文献 (8)附录一:电路原理图 (9)附录二:程序清单 (9)设计题目:PWM直流电机调速系统本文设计的PWM直流电机调速系统,主要由51单片机、电源、H桥驱动电路、LED 液晶显示器、霍尔测速电路以及独立按键组成的电子产品。
电源采用78系列芯片实现+5V、+15V对电机的调速采用PWM波方式,PWM是脉冲宽度调制,通过51单片机改变占空比实现。
通过独立按键实现对电机的启停、调速、转向的人工控制,LED实现对测量数据(速度)的显示。
电机转速利用霍尔传感器检测输出方波,通过51单片机对1秒内的方波脉冲个数进行计数,计算出电机的速度,实现了直流电机的反馈控制。
关键词:直流电机调速;定时中断;电动机;PWM波形;LED显示器;51单片机1 设计要求及主要技术指标:基于MCS-51系列单片机AT89C52,设计一个单片机控制的直流电动机PWM调速控制装置。
1.1 设计要求(1)在系统中扩展直流电动机控制驱动电路L298,驱动直流测速电动机。
(2)使用定时器产生可控的PWM波,通过按键改变PWM占空比,控制直流电动机的转速。
(3)设计一个4个按键的键盘。
K1:“启动/停止”。
K2:“正转/反转”。
K3:“加速”。
K4:“减速”。
(4)手动控制。
在键盘上设置两个按键----直流电动机加速和直流电动机减速键。
基于51单片机的直流电机PWM调速控制系统设计
基于51单片机的直流电机PWM调速控制系统设计I摘要本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。
本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的阐述。
另外,本系统中使用了霍尔元件对直流电机的转速进行测量,经过处理后,将测量值送到液晶显示出来。
关键词:PWM信号,霍尔元件,液晶显示,直流电动机II目录目录 (III)1 引言 (1)1.1 课题背景 (1)1.1.2 开发背景 (1)1.1.3 选题意义 (2)1.2 研究方法及调速原理 (2)1.2.1 直流调速系统实现方式 (4)1.2.2 控制程序的设计 (5)2 系统硬件电路的设计 (6)2.1 系统总体设计框图及单片机系统的设计 (6)2.2 STC89C51单片机简介 (6)2.2.1 STC89C51单片机的组成 (6)2.2.2 CPU及部分部件的作用和功能 (6)2.2.3 STC89C51单片机引脚图 (7)2.2.4 STC89C51引脚功能 (7)3 PWM信号发生电路设计 (10)3.1 PWM的基本原理 (10)3.2 系统的硬件电路设计与分析 (10)3.3 H桥的驱动电路设计方案 (11)5 主电路设计 (13)5.1 单片机最小系统 (13)5.2 液晶电路 (13)5.2.1 LCD 1602功能介绍 (14)5.2.2 LCD 1602性能参数 (15)5.2.3 LCD 1602与单片机连接 (17)5.2.4 LCD 1602的显示与控制命令 (18)5.3 按键电路 (19)5.4 霍尔元件电路 (20)III5.4.1 A3144霍尔开关的工作原理及应用说明 (21)5.4.2 霍尔传感器测量原理 (22)6 系统功能调试 (23)总结 (24)致谢 (25)参考文献 (26)IV1 引言1.1 课题背景1.1.2 开发背景在现代电子产品中,自动控制系统,电子仪器设备、家用电器、电子玩具等等方面,直流电机都得到了广泛的应用。
MCS51单片机控制直流无刷电机程序
;*************************************************;MCS51单片机控制直流无刷电机程序;*************************************************org 00hajmp startorg 30h;**********检测键盘状态的程序****************START:mov p0,#0ffh ;置p0为输入口,将P0口置为1,用于检查按键是否按下jnb p0.0,QIDONG ;按键S2按下,p0.0为0,进入启动(正转)程序jnb p0.1,FANZHUAN ;按键S3按下,p0.1为0,进入反转程序jnb p0.2,JITING ;按键S4按下,p0.2为0,进入急停程序jnb p0.3,JIASU ;按键S5按下,p0.3为0,进入加速程序jnb p0.4,JIANSU ;按键S6按下,p0.4为0,进入减速程序jnb p0.5,TINGZHI ;按键S7按下,P0.5为0,进入停止程序ajmp start;************启动程序,默认为顺时针转动,转速为2000RPM*********** QIDONG:LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.0,QILJMP START ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序QI:clr p0.6 ;p0.6接电机R/S端,将其清零表示电机可以运行setb p0.7 ;p0.7接DIR端,为1,则与COM端断开,电机正转mov p2,#0Bh ;p2.0接CH1,p2.1接CH2,p2.2接CH3,将速度设定为2000RPM lcall XIANSHI ;显示设定速度LJMP START ;执行完启动程序后,回到检测按键状态程序;***************反转程序,也即逆时针转动***************** FANZHUAN:LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.1,FANLJMP START ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序FAN:clr p2.3 ;接通BRK端,使电机急停lcall PANTING ;调用判停程序,能从判停程序中返回,说明机已停setb p2.3 ;断开BRK端,解除急停状态clr p0.7 ;接通DIR端,使电机逆时针转动lcall XIANSHI ;显示设定速度LJMP START ;执行完启动程序后,回到检测按键状态程序;*****************急停程序*********************JITING:LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.2,JILJMP START ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序JI:clr p2.3 ;接通BRK端,使电机急停lcall PANTING ;调用判停程序,若能从中返回,说明电机已停LJMP START ;执行完启动程序后,回到检测按键状态程序;***************加速程序,每按一次键,加速500rpm**************** JIASU:LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.3,JIALJMP START ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序JIA:mov a,p2 ;将p2的值复制到累加器a中anl a,#07h ;取ch3ch2ch1的值,并放到累加器a中jz START ;若a中值为0,则速度已经最大,不再加速,回到检测按键状态程序mov r0,p2dec r0mov p2,r0 ;加速500rpm(参考电机驱动器说明中的多段速度选择部分)lcall XIANSHI ;显示设定的速度LJMP START ;执行完启动程序后,回到检测按键状态程序;********************减速程序,每按一次键,减速500rpm**************** JIANSU:LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.4,JIANLJMP START ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序JIAN:mov a,p2anl a,#07h ;取ch3ch2ch1的值cjne a,#07h,JS ;若a中数值为07h,则速度已为0,ljmp START ;若速度为0,则程序回到开始程序,不再减速,以防出错JS:mov a,P2inc amov P2,a ;减速500rpm(参考电机驱动器说明中的多段速度选择部分)lcall XIANSHI ;显示设定的速度ljmp START ;执行完启动程序后,回到检测按键状态程序;********************停止程序***********************TINGZHI:LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动JNB P0.5,TINGLJMP START ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序TING:setb p0.6 ;p0.6接R/S端,为1,则与COM端断开lcall PANTING ;调用判停程序,若能从中返回,说明电机已停LJMP START ;执行完启动程序后,回到检测按键状态程序;*****************延时10ms,这是一个子程序,功能是延时10毫秒************* YANSHI:mov a,#0 ;对累加器a置零,延时用y:mov r1,#00h ;对寄存器r1置零,延时用inc r1cjne r1,#0ffh,y ;延时1msinc acjne a,#10,y ;延时10×1=10msret;*******判停程序,这是一个子程序,若能从判停程序中返回,则说明电机已停******** PANTING:jnb p2.4,yanshi250ms ;若speed端为0,则进入延时程序ajmp PANTING ;若speed端为1,则返回PANTING,等待speed端出现0电平yanshi250ms:clr p2.6 ;允许对计数器置数mov p3,#08h ;对计数器置入数8setb p2.6 ;计数器开始计数mov a,#0 ;对累加器a置零,延时用y250:mov r1,#00h ;对寄存器r1置零,延时用inc r1jb p2.5,PANTING ;若期間Tc为1,则电机未停,返回PANTING,继续判断cjne r1,#0ffh,y250 ;延时1msinc acjne a,#250,y250 ;延时250ms,ret;若至延时结束Tc一直不改变状态,则说明speed端口无脉冲输出,认为电机停转,程序;返回。
51单片机控制直流电机设计
51单片机控制直流电机设计51单片机是一种常用的单片机,广泛应用于嵌入式系统中。
在直流电机控制方面,51单片机可以通过控制IO口输出高低电平来控制电机的转动方向和速度。
本文将介绍如何使用51单片机控制直流电机,并进行详细的设计过程。
一、硬件设计1.电源部分直流电机通常需要较高的电压才能正常运转,因此需要设计一个稳定的电源电路。
可以使用稳压电源模块或者线性稳压电源芯片作为电源模块,并根据电机的额定电压选择合适的电源电压。
2.驱动电路直流电机需要通过驱动电路来控制其转动方向和速度。
驱动电路可以使用电机驱动模块,如L298N驱动模块或者H桥驱动芯片等。
根据电机的额定电流选择合适的驱动模块,并连接正确的引脚。
3.51单片机与驱动模块连接将51单片机的IO口与驱动模块的控制引脚相连,以实现对电机的控制。
通常情况下,驱动模块的使能引脚需要接高电平使能驱动电路,转向引脚控制电机的转向,速度引脚控制电机的转速。
4.电机连接将直流电机的两根引线与驱动模块的输出端相连,确保极性正确。
二、软件设计1.51单片机初始化首先,在主函数中进行51单片机的初始化,包括设置IO口的输入输出方向、初始化定时器等。
2.设置电机转动方向通过控制驱动电路的转向引脚,可以控制电机的正转和反转。
通过设置IO口输出不同的高低电平即可实现。
3.设置电机转动速度通过占空比控制电机的转速,可以使用定时器来设置。
4.电机控制代码我们可以通过编写一些函数来实现电机的控制,例如设置方向的函数、设置速度的函数等。
然后在主函数中调用这些函数来实现电机的控制。
三、实际控制测试在完成硬件设计和软件编写后,可以将51单片机与电源和电机连接起来,并上传软件代码。
然后通过触发相应的输入信号,来控制电机的方向和速度。
通过观察电机的运动情况,可以验证电机控制系统的正确性。
总结本文介绍了51单片机控制直流电机的设计过程,包括硬件设计和软件设计。
通过控制IO口输出高低电平来实现电机的转动方向和速度。
基于51单片机对直流电机和步进电机的红外控制
数 据结构是 计算 机科学 与技术 专业 的核 心课程 , 也是 与计算机技 术 关系 密切 的信 息管 理 、 信 、 通 电子 、 自动控制 等专 业 的一 门基础课 程 。在整 个课 程体系 中也起着承上启下的作用 , 它上承离散数学 、 程序 设计 , 下启操 作系统 、 数据库概论 、 软件工程等多 门专业课程 , 而且也作 为 考研 中计算 机学科专业基 础综合里 的- i课程 , -' q 其地 位是不言而喻 的。但 由于数据 结构一般是 在第 一 门程序设计 语言之后开设 , 相对来 说 比较早 , 对学生来 说往往 比较难学 , 由于本 身 CC + 比较 难学 , /+ 就 容 易使 学生对整 个计算 机课程都 提不起学 习的兴趣 。 所 以对此 进行教
U ■
一
图4
() 2 转速 的调节 在小 车的调速方 面主要是利用 P WM技术实 现对 小车 占空比的调
节来 实现对小车 速度的调节 。其原理 是在一个周 期 T , 内 导通 时间为 t电机 两端 的 电压 为 U V c t ) a c 。即电机 的转速与 电机两 , = c ×(T = V c / x 端的 电压值大小成 比例 。当给直流 电机 的高电平时间在整个周期 中所 占比例越 高时其速度也 随之越大 , 反之 随着高 电平所 占比例越小其 速 度也会 随之 降下来 。为 了实现对小车 速度 的准确控 制 , 在利用单 片机 调节时利用程序实现 , 以占空 比为 1 %为基准 , 同电视机两位数原理 , 如 在按 下两位数键后 , 单片机接收信号 , 继续按下 a 键和 b , 键 使单片机接
制 一一
图2遥控信号编码波形 图
的 卜
>
图3遥控信号 的周期性波形 () 1正反转 向的调节
基于51单片机的PWM直流电机调速系统
基于51单片机的PWM直流电机调速系统一、本文概述随着现代工业技术的飞速发展,直流电机调速系统在众多领域如工业自动化、智能家居、航空航天等得到了广泛应用。
在众多调速方案中,基于脉冲宽度调制(PWM)的调速方式以其高效、稳定、易于实现等优点脱颖而出。
本文旨在探讨基于51单片机的PWM直流电机调速系统的设计与实现,以期为相关领域的技术人员提供一种可靠且实用的电机调速方案。
本文将简要介绍PWM调速的基本原理及其在直流电机控制中的应用。
随后,将详细介绍基于51单片机的PWM直流电机调速系统的硬件设计,包括电机选型、驱动电路设计、单片机选型及外围电路设计等。
在软件设计部分,本文将阐述PWM信号的生成方法、电机转速的检测与控制算法的实现。
还将对系统的性能进行测试与分析,以验证其调速效果及稳定性。
本文将总结基于51单片机的PWM直流电机调速系统的优点与不足,并提出改进建议。
希望通过本文的阐述,能为相关领域的研究与应用提供有益参考。
二、51单片机基础知识51单片机,也被称为8051微控制器,是Intel公司在1980年代初推出的一种8位CISC(复杂指令集计算机)单片机。
尽管Intel公司已经停止生产这种芯片,但由于其架构的通用性和广泛的应用,许多其他公司如Atmel、STC等仍然在生产与8051兼容的单片机。
51单片机的核心部分包括一个8位的CPU,以及4KB的ROM、低128B 的RAM和高位的SFR(特殊功能寄存器)等。
它还包括两个16位的定时/计数器,四个8位的I/O端口,一个全双工的串行通信口,以及一个中断系统。
这些功能使得51单片机在多种嵌入式系统中得到了广泛的应用。
在PWM(脉冲宽度调制)直流电机调速系统中,51单片机的主要作用是生成PWM信号以控制电机的速度。
这通常是通过定时/计数器来实现的。
定时/计数器可以设置一定的时间间隔,然后在这个时间间隔内,CPU可以控制I/O端口产生高电平或低电平,从而形成PWM信号。
基于51单片机的直流无刷电机调速控制设计
基于51单片机的直流无刷电机调速控制设计下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!一、引言随着科技的发展,直流无刷电机在工业控制领域有着广泛的应用。
课程设计---直流电动机测速系统设计
专业课程设计题目三直流电动机测速系统设计院系:专业班级:小组成员:指导教师:日期:前言1.题目要求设计题目:直流电动机测速系统设计描述:利用单片机设计直流电机测速系统具体要求: 8051 单片机作为主控制器、利用红外光传感器设计转速测量、检测直流电机速度,并显示。
元件: STC89C52、晶振(12MHz)、小按键、 ST151、数码管以及电阻电容等2.组内分工(1)负责软件及仿真调试:主要由完成(2)负责电路焊接:主要由完成(3)撰写报告:主要由完成3.总体设计方案总体设计方案的硬件部分详细框图如图一所示 :数码管显示按键控制单片机 PWM 电机驱动一、转速测量方法转速是指作圆周运动的物体在单位时间内所转过的圈数,其大小及变化往往意味着机器设备运转的正常与否,因此,转速测量一直是工业领域的一个重要问题。
按照不同的理论方法,先后产生过模拟测速法 (如离心式转速表) 、同步测速法(如机械式或闪光式频闪测速仪) 以及计数测速法。
计数测速法又可分为机械式定时计数法和电子式定时计数法。
本文介绍的采用单片机和光电传感器组成的高精度转速测量系统,其转速测量方法采用的就是电子式定时计数法。
对转速的测量实际上是对转子旋转引起的周期脉冲信号的频率进行测量。
在频率的工程测量中,电子式定时计数测量频率的方法一般有三种:①测频率法:在一定时间间隔t 内,计数被测信号的重复变化次数N ,则被测信号的频率fx 可表示为f x =Nt(1)②测周期法:在被测信号的一个周期内,计数时钟脉冲数m0 ,则被测信号频率fx = fc/ m0 ,其中, fc 为时钟脉冲信号频率。
③多周期测频法:在被测信号m1 个周期内, 计数时钟脉冲数m2 ,从而得到被测信号频率fx ,则fx 可以表示为fx =m1 fcm2, m1 由测量准确度确定。
电子式定时计数法测量频率时, 其测量准确度主要由两项误差来决定: 一项是时基误差 ; 另一项是量化± 1 误差。
基于51单片机控制直流电机的设计
基于51单片机控制直流电机的设计设计目标:1.实现电机的正反转控制。
2.实现电机的速度控制。
3.实现电机的位置控制。
硬件设计:1.51单片机控制器:选择一款性能较好的51单片机,如STC89C522.直流电机:选择合适的直流电机,根据设计需求确定功率和转速。
3.驱动电路:为直流电机提供合适的驱动电路,可以选择H桥驱动芯片,如L298N。
4.传感器:根据设计需求,选用合适的传感器,如编码器、讯号灯等。
软件设计:1.系统初始化:对51单片机进行初始化设置,包括端口方向、定时器等配置。
2.速度控制:设计PID算法,实现对直流电机的速度控制。
通过读取传感器反馈的速度信息,与设定值进行比较,输出控制信号控制电机速度。
3.正反转控制:设计控制程序,读取输入信号控制直流电机的正反转。
可以通过输入按键、外部信号或者串口通信来实现控制。
4.位置控制:通过编码器等传感器读取直流电机的位置信息,与设定值进行比较,输出控制信号控制电机运动到目标位置。
5.通信功能:如果需要与其他设备进行通信,可以使用串口、蓝牙等通信模块实现数据传输。
设计步骤:1.确定设计需求:根据具体应用场景,确定控制电机的功能需求,包括速度控制、正反转控制和位置控制等。
2.硬件搭建:按照设计需求,选取合适的电机、驱动电路和传感器,并进行搭建和连接。
3.软件开发:根据设计目标,编写相应的程序代码,实现功能要求。
5.优化改进:根据实际使用情况,对系统进行优化改进,提高系统的性能和稳定性。
总结:基于51单片机控制直流电机的设计是一种常见的嵌入式系统开发方案。
通过合理选择硬件和设计软件,可以实现控制电机的速度、方向和位置等功能。
在实际应用中,还可以根据具体需求进行优化改进,使系统更加稳定和可靠。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
今天做的一个基于51单片机控制直流电机的设计
2010-09-12 18:47
可以实现的功能是:
按下左转键则开始向左转动
按下右转键则向右转动
按下停止键则开始逐渐停止转动
按下调速键一次则会加速一档
按下调速键二次则会加速二档
按下调速键三次则会加速三档
按下调速键四次则会加速四档
按下调速键五次则会回到最初速度重新记档位
设计思路:
直流电机只要能提供一定的直流就可以转动,改变电压极性可以改变转动方向,可以通过给直流电机提供脉冲信号来驱动它,脉冲信号的占空比可以影响到直流电机的平均速度,因此可以通过调整占空比从而能实现调速的目的。
直流电机的驱动电路要有过流保护作用,图中的二极管就直到这个作用,另外电机的驱动电流是比较大的所以需要用三极管来放大电流。
程序的关键就是如何实现占空比的调整,这个可以通过对51单片机定时器重装初值进行改变,从而改变时间。
用51实现PWM信号的输出,相对麻烦点,要是AVR就可以方便地实现PWM 信号,由见51单片机的局限性与AVR单片机的优势。
原理图
详细程序:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit PW1=P2^0 ;
sbit PW2=P2^1 ; //控制电机的两个输入
sbit accelerate=P2^2 ; //调速按键
sbit stop=P2^3 ; //停止按键
sbit left=P2^4 ; //左转按键
sbit right=P2^5 ; //右转按键
#define right_turn PW1=0;PW2=1 //顺时针转动
#define left_turn PW1=1;PW2=0 //逆向转动
#define end_turn PW1=1;PW2=1 //停转
uint t0=25000,t1=25000; //初始时占空比为50%
uint a=25000; // 设置定时器装载初值 25ms 设定频率为20Hz uchar flag=1; //此标志用于选择不同的装载初值
uchar dflag; //左右转标志
uchar count; //用来标志速度档位
void keyscan(); //键盘扫描
void delay(uchar z);
void time_init(); //定时器的初始化
void adjust_speed(); //通过调整占空比来调整速度
void main()
{
time_init(); //定时器的初始化
while(1)
{
keyscan(); //不断扫描键盘程序,以便及时作出相应的响应
}
}
void timer0() interrupt 1 using 0
{
if(flag)
{
flag=0;
end_turn;
a=t0; //t0的大小决定着低电平延续时间
TH0=(65536-a)/256;
TL0=(65536-a)%256; //重装载初值
}
else
{
flag=1; //这个标志起到交替输出高低电平的作用
if(dflag==0)
{
right_turn; //右转
}
else
{
left_turn; //左转
}
a=t1; //t1的大小决定着高电平延续时间
TH0=(65536-a)/256;
TL0=(65536-a)%256; //重装载初值
}
}
void time_init()
{
TMOD=0x01; //工作方式寄存器软件起动定时器定时器功能方式1 定时器0
TH0=(65536-a)/256;
TL0=(65536-a)%256; //装载初值
ET0=1; //开启定时器中断使能
EA=1; // 开启总中断
TR0=0;
}
void delay(uchar z) //在12M下延时z毫秒{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void keyscan()
{
if(stop==0)
{
TR0=0; //关闭定时器0 即可停止转动end_turn;
}
if(left==0)
{
TR0=1;
dflag=1; //转向标志置位则左转
}
if(right==0)
{
TR0=1;
dflag=0; //转向标志复位则右转
}
if(accelerate==0)
{
delay(5) ; //延时消抖
if(accelerate==0)
{
while(accelerate==0) ; //等待松手
count++;
if(count==1)
{
t0=20000;
t1=30000; //占空比为百分之60
}
if(count==2)
{
t0=15000;
t1=35000; //占空比为百分之70 }
if(count==3)
{
t0=10000;
t1=40000; //占空比为百分之80 }
if(count==4)
{
t0=5000;
t1=45000; //占空比为百分之90 }
if(count==5)
{
count=0;
}
}
}
}。