单片机实现直流电机测速和正反转
单片机课设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所示。
单片机控制直流电机正反转调速--基础简单实现

单片机控制直流电机正反转调速--基础简单实现
如何使用单片机控制直流电机呢?
真正控制之前我们要知道以下三点:
1、直流电机的控制是通过设置PWM波的占空比来控制直流电机的转速,占空比越大,转速越快,越小转速越低。
2、单片机的I/O口是不能直接驱动电机的,所以你还需要用一个驱动芯片。
像LG9110、CMO825L298等。
驱动芯片可以将单片机I/O输出信号放大,这样电机中流过的电流足够大,电机才能转起来。
本文采用的是L298
3、为了实现调节转速功能必须来个滑动变阻器和数模转化器
ADC0831,同时使用开关控制电机正反转。
开始行动~
OK一切就绪。
用单片机来控制直流电动机的正反转

现在是分段控制的,按一下键占空比60%,再按一下70%,再按80%,再按90%,再按回到 50% 这个 ADJUST 函数需要两个键,一个增,一个减,改变占空比,占空比由 T1,T0两个变量 来定(注意这里不是定时器 T0,T1) 加在键盘检测函数里。
追问
能给我实物图吗,刚才我运行你的程序的,编译能通过,但我的电机没运行,也许是硬件的 问题吧
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; //右转
最简单的就是 一个51 ,用一个 p0的两个口来控制(P0^0和 P0^1),四个端口 A、B、C、D.分为2组 AB CD 一组分开接电源正极,一组分开接 电源 副 极。 两组 的另外一段 分别接电机的 正极 和副 极,然后通过 P^0 和 P^1给信号 正转 Y=AB /C/D 反转 Y=/a/b CD
//转向标志置位则左转
}
if(right==0)
{
TR0=1; dflag=0;
//转向标志复位则右转
}
if(accelerate==0)
{ delay(5) ; //延时消抖
if(accelerate==0)
{ while(accelerate==0) ; //等待松手
count++;
if(count==1)
//**********************************//
单片机实现直流电机测速和正反转

4.2.2单元电路设计原理。
(1)电源模块设计
使用220V转±15V,再使用集成稳压芯片LM7805将电压稳定至所需。
电源原理图见图2
图2
(2)单片机核心控制模块
系统采用单片机STC89C52RD为中心控制器件,显示部分采用液晶显示屏显示。控制系统采用5V电源供电,外接11.0592MHz晶振。
西南科技大学
自动化专业方向设计报告
设计名称:直流电机数控器设计与制作
姓 名:汪少华
学 号:20105191
班 级:电气1002
指导教师:聂诗良
起止日期:2013.10.19-2013.11.9
西南科技大学信息工程学院制
方向设计任务书
学生班级:电气1002班学生姓名:汪少华学号:20105191
设计名称:直流电机(12,0,temp);
}
if(ENA==0)
{
sprintf(temp,"STO",SPEED);
LCD_Write_String(12,1,temp);
}
}
/*---------------------------------------
按键扫描
---------------------------------------*/
电源模块
①使用电压源供电,可提供较稳定,精确电源,缺点是电压源体积太大,不利于设计的小体积要求。
②使用220V转±15V,再使用集成稳压芯片LM7805将电压稳定至所需,缺点是散热不易,需加装散热片,体积小。
显示模块
①采用数码管动态显示,但显示的内容有限,不丰富。
②采用LED点阵显示,但需要的I/O资源较多。
基于单片机的直流电机调速系统设计

直流电机转速 :
根据基尔霍夫第二定律,得到电枢电压电动势平衡方程式 U=Ea+Ia(Ra+Rc)……………式1
式1中,Ra为电枢回路电阻,电枢回路串联保绕阻与电刷 接触电阻的总和;Rc是外接在电枢回路中的调节电阻
由此可得到直流电机的转速公式为:
n=(Ua-IR)/CeΦ ………………………式2
式2中, Ce为电动势常数, Φ是磁通量。 由1式和2式得
n=Ea/CeΦ ……………………………式3
由式3中可以看出, 对于一个已经制造好的电机, 当励磁电压和 负载转矩恒定时, 它的转速由回在电枢两端的电压Ea决定, 电 枢电压越高, 电机转速就越快, 电枢电压降低到0V时, 电机就 停止转动;改变电枢电压的极性, 电机就反转。
PWM脉宽调速
PWM(脉冲宽度调制)是通过控制固定电压的 直流电源开关频率, 改变负载两端的电压, 从 而达到控制要求的一种电压调整方法。在PWM 驱动控制的调整系统中, 按一个固定的频率 来接通和断开电源, 并且根据需要改变一个 周期内“接通”和“断开”时间的长短。通 过改变直流电机电枢上电压的“占空比”来 达到改变平均电压大小的目的, 从而来控制 电动机的转速。也正因为如此, PWM又被称为 “开关驱动装置”。
, 软件简单。但每个按键需要占用一个输入口线, 在 按键数量较多时, 需要较多的输入口线且电路结构复杂, 故此种键盘适用于按键较少或操作速度较高的场合。
数码管显示部分 本设计使用的是一种比较常用的是四位数码 管, 内部的4个数码管共用a~dp这8根数据线, 为使用提供了方便, 因为里面有4个数码管, 所以它有4个公共端, 加上a~dp, 共有12个引 脚, 下面便是一个共阴的四位数码管的内部 结构图(共阳的与之相反)
51单片机直流电机反转

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

用单片机控制直流电机正反转的系统设计一、系统设计内容用单片机AT89C51控制直流电机正反转。
在此将由89C51的P2.0、P2.1通过晶体管控制继电器,当P2.0输出低电平,P2.1输出高电平时,三极管Q1导通,而三极管Q2截止,从而导致与Q1相连的继电器吸合,电机因两端产生电压而转动。
由P3.0、P3.1,P3.2控制电机的正转、反转和停止。
在图中,在两个继电器的两端都反向接了一个二极管,这非常重要,当使用电磁继电器时必须接。
原因如下:线圈通电正常工作时,二极管对电路不起作用。
当继电器线圈在断电的一瞬间会产生一个很强的反向电动势,在继电器线圈两端反向并联二极管就是用来消耗这个反向电动势的,通常将这个二极管称为消耗二极管,如果不加这个消耗二极管,反向电动势就会直接作用在趋动三极管上,很容易将三极管烧毁。
二、系统设计目标(1)掌握趋动电机正反转的电路。
(2)用PROTEUS实现电机正反转电路的设计,进行实时交互仿真。
三、系统设计步骤1、PROTEUS电路设计实现用单片机A T89C51控制直流电机正反转原理图,如图所示。
(1)选取元器件:①单片机:A T89C51②电阻:RES③直流电机:MOTOR④按钮:BUTTON⑤三极管:NPN⑥继电器:RELAY⑦二极管:DIODE(2)放置元器件、放置电源和地、连线、元器件属性设置。
直流电机正反转的原理如图所示,整个电路设计操作都在ISIS平台中进行。
关于元器件属性的设置在此实例中需要特别注意:①三极管基极的限流电阻更改为1KΩ。
②双击电机图标,弹出如图所示的电机属性对话框,在Nominal V oltage 一栏中将默认值改为5V。
双击继电器图标,在弹出如图所示的继电器属性对话框中,在Component Value 一栏中将默认值更改为5V。
2、源程序设计与目标代码文件生成1)程序流程图2)源程序设计①汇编语言源程序:ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,P3ANL A,#07HCJNE A,#6,PZZMOV P2,#01HLCALL DELAYAJMP MAINPZZ: CJNE A,#5,PFZMOV P2,#02HLCALL DELAYAJMP MAINPFZ: CJNE A,#3,MAINMOV P2,#03HLCALL DELAYDELAY: MOV R5,#195C1: MOV R6,#255DJNZ R6,$DJNZ R5,C1RETEND3、PROTEUS仿真加载目标代码文件俺,双击编辑窗口的A T89C51器件,在弹出属性编辑对话框Program File 一栏中单机打开按钮,出现文件浏览对话框,找到dianji.hex文件,单机“打开”按钮,完成添加文件。
单片机控制电机正反转接线方法及运用

如何用单片机控制电机正转、反转?电机在日常使用中需要正反转,可以说电机的正反转在广泛使用。
例如行车、木工用的电刨床、台钻、刻丝机、甩干机、车床等。
本文以大功率双路PWM直流电机驱动器驱动有刷直流电机为例,讲述如何用单片机控制直流电机正反转。
该驱动器可以同时控制两个电机正反转,可以使用一个单片机分别控制两个电机正反转,广泛应用于玩具、小车、机器人等项目,可以灵活控制小车等正、反转,控制方式简便、安全可靠,方便维护。
使用单片机控制电机转动的接线方法如图1所示。
单片机的电源与驱动板控制信号电源应共地,但不要与电机电源PGND共地。
当使用5V单片机时,驱动板+5V接电源+5V;当使用3.3V单片机时,驱动板+5V接电源+3.3V。
单片机和驱动板控制信号可共用一电源或各自独立供电(但一定要共地)。
ENA为与单片机的一个GPIO或PWM输出端口相连,当ENA为高电平时,驱动板使能,正反转或刹车有效,如果是PWM信号,那么可对电机进行调速;低电平时,驱动板禁能,电机接口无输出。
IN1和IN2与单片机的两个GPIO相连(可支持51单片机任意IO端口,无需上拉电阻),控制电机正反转及刹车,驱动逻辑见表1。
6.8-26V电源+5VIN1IN2GNDPGND9-24VMOUT2OUT1 ENA单片机IO1/PWM IO2IO3GND5V/3.3VVCC图错误!文档中没有指定样式的文字。
使用单片机控制电机转动接线示意图表错误!文档中没有指定样式的文字。
电机接口1控制信号逻辑此驱动器适用于有刷直流电机,可以同时控制两个电机工作。
第二路电机相关信号的连接方法于以上方式相同,此接线方式只需要使用一个单片机,即可分别控制两个电机的正、反转,操作方便灵活。
下图为有刷直流电机驱动器正面:。
单片机控制直流电机并测速(电压AD、DA转换以及pwm按键调速正转反转)要点

单片机原理及应用课程设计报告书题目:用单片机控制直流电动机并测量转速******学号:**********专业:电子信息工程指导老师:***设计时间:2014年 11月信息工程学院目录1. 引言 (1)1.1 设计意义 (1)1.2 系统功能要求 (1)2. 方案设计 (1)3. 硬件设计 (3)3.1 AT89C51最小系统 (3)3.2 按键电路 (4)3.3 A/D转换模块 (4)3.4. D/A转换模块 (6)3.5 电机转速测量电路 (7)3.6 显示电路 (8)3.7 总电路图 (10)4. 软件设计 (111)4.1 系统主程序设计 (12)4.2 按键扫描程序设计 (12)4.3 显示子程序 (12)4.4 定时中断处理程序 (12)4.5 A/D转换程序 (13)5. 系统调试 (14)6. 设计总结 (16)7. 参考文献 (17)8. 附录A;源程序 (18)9. 附录B;电路原理总图、作品实物图片 (23)用单片机控制直流电动机并测量转速1 引言1.1. 设计意义电动机作为最主要的动力源,在生产和生活中占有重要地位。
电动机的调速控制过去多用模拟法,随着计算机的产生和发展以及新型电力电子功率器件的不断涌现,电动机的控制也发生了深刻的变化,本系统利用直流电机的速度与施加电压成正比的原理,通过滑动变阻器向ADC0809输入控制电压信号,经AD后,输入到AT89C51中,AT89C51将此信号转发给DAC0832,通过功放电路放大后,驱动直流电机。
1.2.系统功能要求单片机扩展有A/D转换芯片ADC0809和D/A转换芯片DAC0832。
通过改变A/D输入端可变电阻来改变A/D的输入电压,D/A输入检测量大小,进而改变直流电动机的转速。
手动扩展。
在键盘上设置两个按键——直流电动机加速键和直流电动机减速减。
在手动状态下,每按一次键,电动机的转速按照约定的速率改变。
用显示器LED或LCD显示数码移动的速度,及时形象地跟踪直流电动机转速的变化情况。
单片机控制直流电动机调速和正反转

指导教师评定成绩:审定成绩:重庆邮电大学移通学院课程设计报告设计题目:单片机控制直流电动机调速和正反转学校:重庆邮电大学移通学院学生姓名:魏星玥专业:电气工程与自动化班级:05131101学号:0513110105指导教师:杨佳义设计时间:2013 年12 月重庆邮电大学移通学院目录综述 (3)一、直流电动机的工作原理 (4)二、直流电动机的结构 (5)三、直流电动机的分类 (6)四、电动机的机械特性 (7)五、他励直流电动机起动与调速 (8)六、直流电机H桥驱动电路 (14)七、PWM的控制技术 (19)八、直流电动机调速系统的设计 (21)九、设计结论····························十、心得体会····························参考文献·······························综述直流电动机是人类最早发明和应用的一种电机。
基于单片机软件实现直流电机PWM以及电机测速

基于单片机软件实现直流电机PWM以及电机测速叶祥祥温州大学物理与电子信息学院一、摘要利用AT89C51设计一个直流电机的软件模拟PWM驱动及测速系统。
单片机读取键盘值来设定转速和正反转,并且通过红外对管来测量转速。
本系统具有精度高,成本低,使用方便等优点。
关键词:AT89C51;PWM;测速。
引言随着社会的发展,各种智能化的产品日益走入寻常百姓家。
为了实现产品的便携性、低成品以及对电源的限制,小型直流电机应用相当广泛。
对直流电机的速度调节,我们可以采用多种办法,本文给出一种用单片机软件实现PWM调速的方法及红外对管测转速。
二、直流电机调速知道通过调节直流电机的电压可以改变电机的转速,但是一般我们设计的电源大都是固定的电压,而且模拟可调电源不易于单片机控制,数字可调电源设计麻烦。
所以这里用脉宽调制(PWM)来实现调速。
方波的有效电压跟电压幅值和占空比有关,我们可以通过站空比实现改变有效电压。
一般用软件模拟PWM可以有延时和定时两种方法,延时方法占用大量的CPU,所以这里采用定时方法。
三、直流电机旋转方向一般利用H桥电路来实现调速。
H桥驱动电路:图4.12中所示为一个典型的直流电机控制电路。
电路得名于“H桥驱动电路”是因为它的形状酷似字母H。
4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图4.12及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。
如图所示,H桥式电机驱动电路包括4个三极管和一个电机。
要使电机运转,必须导通对角线上的一对三极管。
根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。
图4.12 H桥驱动电路要使电机运转,必须使对角线上的一对三极管导通。
例如,如图4.13所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。
按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。
单片机控制的直流电机正反转和加速减速C程序

单片机控制的直流电机正反转和加速减速C程序简介本文档旨在向读者介绍如何使用单片机控制直流电机实现正反转和加速减速功能的C程序。
程序实现正反转控制以下是控制直流电机正反转的C程序示例:include <avr/io.h>void motor_forward(){// 设置引脚控制直流电机正转}void motor_reverse(){// 设置引脚控制直流电机反转}int main(){// 初始化单片机引脚设置和其他必要的配置while (1){// 检测是否需要正转或反转,根据需要调用motor_forward()或motor_reverse()函数}return 0;}加速减速控制以下是控制直流电机加速减速的C程序示例:include <avr/io.h>void motor_speed_up(){// 调整引脚控制直流电机的占空比以加速电机转速}void motor_slow_down(){// 调整引脚控制直流电机的占空比以减速电机转速}int main(){// 初始化单片机引脚设置和其他必要的配置while (1){// 检测是否需要加速或减速,根据需要调用motor_speed_up()或motor_slow_down()函数}return 0;}结论通过上述示例程序,我们可以实现通过单片机控制直流电机的正反转和加速减速功能。
读者可以根据实际需求进行相应的参数调整和功能扩展。
请注意,上述示例程序仅为演示目的,具体的引脚配置和控制方式需根据实际硬件和单片机型号进行调整。
单片机控制直流动机调速正反转

指导教师评定成绩:审定成绩:重庆邮电大学移通学院课程设计报告设计题目:单片机控制直流电动机调速和正反转学校:重庆邮电大学移通学院学生姓名:魏星玥专业:电气工程与自动化班级:05131101学号:0513110105指导教师:杨佳义设计时间:2013 年12 月重庆邮电大学移通学院目录综述 (3)一、直流电动机的工作原理 (4)二、直流电动机的结构 (5)三、直流电动机的分类 (6)四、电动机的机械特性 (7)五、他励直流电动机起动与调速 (8)六、直流电机H桥驱动电路 (14)七、PWM的控制技术 (19)八、直流电动机调速系统的设计 (21)九、设计结论····························十、心得体会····························参考文献·······························综述直流电动机是人类最早发明和应用的一种电机。
基于单片机的直流电机控制(正反转、开关控制)

基于单片机的直流电机控制(正反转,开关控制)原理图如下:程序如下:/*用电机来代表门的转动情况*/#include <reg51.h>//定义变量sbit kaimen=P0^0;sbit zanting=P0^1;sbit fanxiang=P0^2;sbit P2_0=P2^0;sbit P2_1=P2^1;bit Flag = 1;//定义电机正反向标志//函数声明void motor_turn(void); //正反向控制void Timer0_init(void); //定义定时器0初始化/******************************延时处理***************************/void Delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/***************************************************************/void Timer0_int(void) interrupt 1 using 1//定时器0中断处理主要用来处理换方向的时候{TR0 = 0;TL0=(65536-50000)/ 256; //定时50msTH0=(65536-50000)% 256;TR0 = 1;if(Flag == 1)//代表改变方向{P2_0 = 0;P2_1 = 1;}else //方向不变{P2_1 = 0;P2_0 = 1;}}/****************开始转动:人满时候开始转动**************/void motor_start(void){ if(kaimen==1){//Delay(10);if(kaimen==1){P2_0 = 0;P2_1 = 1;}}}/***************有人但是人未满时或者有夹到人的时候暂停*************/void motor_pause(void){ if(zanting==1){Delay(10);if(zanting==1){EA=0;P2_0 = 0;P2_1 = 0;}}}/**********************电机方向转动**************************/ void motor_turn(void)//电机反向转动{if(fanxiang == 1){Delay(10);if(fanxiang == 1){Flag = ~Flag;}while(fanxiang == 1);}}/***********************定时器0初始化**************************/ void Timer0_init(void)//定时器0初始化{TMOD=0x01;TH0=(65536-50000)/ 256;TL0=(65536-50000) % 256;TR0=1;ET0=1;}/**********************主函数***********************/void main(void)//主函数{Timer0_init();while(1){ if(kaimen==1)EA=1; //开始时候开启中断motor_start();motor_pause();motor_turn();}}。
单片机课程设计报告 电机正反转

C51课程设计报告设计课题:正反转可控的直流电动机设计要求:按下K1时可使直流电动机正转,按下K2时可使直流电动机反转,按下K3按钮时停止,在进行相应的操作时,对应LED 将被点亮。
设计目的:通过这次课程设计,进一步巩固我们对单片机编程的掌握,自己学会调试;同时向老师反映我们学习中不足的地方经过调试,最终得到如下程序:#include<reg51.h>sbit K1=P3^0; //正转开关sbit K2=P3^1; //反转开关sbit K3=P3^2; //停止开关sbit P1_0=P1^0;sbit P1_1=P1^1;sbit D1=P0^0;sbit D2=P0^1;sbit D3=P0^2; //端口位定义void main(){P1_0=0; P1_1=0; D3=0;while(1){if(K1==0) //按下正转按钮K1{while(K1==0); //等待K1按下结束,即断开K1P1_1=0; P1_0=1; //禁止反转,启动正转D2=1;D3=1; D1=0; //关闭反转指示灯D2与停止指示灯D3,点亮正转指示灯D1}else if(K2==0) //按下反转按钮K2{while(K2==0); //等待K2按下结束,即断开K2P1_0=0;P1_1=1; //禁止正转,开始反转D1=1;D3=1;D2=0; //关闭穤正转指示灯D1与停止指示灯D3,点亮反转指示灯D2}else if(K3==0) //按下停止按钮K3{while(K3==0); //等待K3按下结束,即断开K3P1_0=0; P1_1=0; //停止正转与反转D1=1; D2=1; //关闭正转与反转指示灯D1与D2D3=0; //点亮停止指示灯D3}}附图学习心得与体会:这次课程设计让我们进一步掌握了单片机编程,并且对以前所学的知识再进行熟识与整理。
这个程序的编写还很顺利,关键在于直流电动机控制电路的搭建,(如上图所示);当A点为低电平时,Q3,Q2截止,Q7,Q1导通,电机左端呈现高电平;当B点为高电平时,Q8,Q4截止,Q6,Q5导通,电机右端呈现低电平,因此当A为0,B为1时,电机正转。
单片机控制直流电机并测速(电压AD、DA转换以及pwm按键调速正转反转)

单片机原理及应用课程设计报告书题目:用单片机控制直流电动机并测量转速姓名:徐银浩学号:1110702225专业:电子信息工程指导老师:沈兆军设计时间:2014年 11月信息工程学院目录1. 引言 01.1 设计意义 01.2 系统功能要求 02. 方案设计 03. 硬件设计 (2)3.1 AT89C51最小系统 (3)3.2 按键电路 (4)3.3 A/D转换模块 (4)3.4. D/A转换模块 (6)3.5 电机转速测量电路 (7)3.6 显示电路 (8)3.7 总电路图 (10)4. 软件设计 (101)4.1 系统主程序设计 (12)4.2 按键扫描程序设计 (12)4.3 显示子程序 (12)4.4 定时中断处理程序 (12)4.5 A/D转换程序 (13)5. 系统调试 (14)6. 设计总结 (16)7. 参考文献 (17)8. 附录A;源程序 (18)9. 附录B;电路原理总图、作品实物图片 (23)用单片机控制直流电动机并测量转速1 引言1.1. 设计意义电动机作为最主要的动力源,在生产和生活中占有重要地位。
电动机的调速控制过去多用模拟法,随着计算机的产生和发展以及新型电力电子功率器件的不断涌现,电动机的控制也发生了深刻的变化,本系统利用直流电机的速度与施加电压成正比的原理,通过滑动变阻器向ADC0809输入控制电压信号,经AD后,输入到AT89C51中,AT89C51将此信号转发给DAC0832,通过功放电路放大后,驱动直流电机。
1.2.系统功能要求单片机扩展有A/D转换芯片ADC0809和D/A转换芯片DAC0832。
通过改变A/D输入端可变电阻来改变A/D的输入电压,D/A输入检测量大小,进而改变直流电动机的转速。
手动扩展。
在键盘上设置两个按键——直流电动机加速键和直流电动机减速减。
在手动状态下,每按一次键,电动机的转速按照约定的速率改变。
用显示器LED或LCD显示数码移动的速度,及时形象地跟踪直流电动机转速的变化情况。
单片机驱动直流电机正反转程序

(1)主程序main.c#include<reg51.h>#include"ds1302.h"sbit Xianwei1=P1^0;sbit Xianwei2=P1^1;sbitMotor_A=P1^2;sbitMotor_B=P1^3;sbitMotor_EN=P1^4;unsigned char Num=0;unsigned intdisp[8]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};/*//---存储顺序是秒分时日月周年,存储格式是用BCD码---//uchar TIME[7] = {0, 0, 0x12, 0x01, 0x01, 0x02, 0x13};*/void main(){uchar state=0;Motor_A=1;Motor_B=1;Motor_EN=0;Ds1302Init();while(1){Ds1302ReadTime();if((TIME[2]==0x06)&&(TIME[1])==0) //06:00{state++;if(state>2)state=1;}if(state==1){while(Xianwei1!=0){Motor_A=1; //正转Motor_B=0;Motor_EN=1;}}if(state==2){while(Xianwei2!=0){Motor_A=0; //反转Motor_B=1;Motor_EN=1;}}}}(2)ds1302.h#ifndef __DS1302_H_#define __DS1302_H_//---包含头文件---//#include<reg51.h>#include<intrins.h>//---重定义关键词---//#ifndefuchar#define uchar unsigned char#endif#ifndefuint#define uint unsigned int#endif//---定义ds1302使用的IO口---//sbit DSIO=P3^4;sbit RST=P3^5;sbit SCLK=P3^6;//---定义全局函数---//void Ds1302Write(ucharaddr, uchardat); uchar Ds1302Read(ucharaddr);void Ds1302Init();void Ds1302ReadTime();//---加入全局变量--//extern uchar TIME[7]; //加入全局变量(3)ds1302.c#include"ds1302.h"//---DS1302写入和读取时分秒的地址命令---////---秒分时日月周年最低位读写位;-------//uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};//---DS1302时钟初始化2013年1月1日星期二12点00分00秒。
单片机控制直流电机正反转

目录第1章总体设计方案 (1)1.1 总体设计方案 (1)1.2 软硬件功能分析 (1)第2章硬件电路设计 (2)2.1 单片机最小系统电路设计 (2)2.2直流电机驱动电路设计 (2)2.3 数码管显示电路设计 (4)2.4 独立按键电路设计 (5)2.5 系统供电电源电路设计 (5)2.5.1直流稳压电路中整流二极管的选取: (6)2.5.2直流稳压电路中滤波电容的选取: (6)第3章系统软件设计 (7)3.1 软件总体设计思路 (7)3.2 主程序流程设计 (7)附录1 总体电路图 (10)附录2 实物照片 (11)附录3 C语言源程序 (12)第1章总体设计方案1.1 总体设计方案早期直流传动的控制系统采用模拟分离器件构成,由于模拟器件有其固有的缺点,如存在温漂、零漂电压,构成系统的器件较多,使得模拟直流传动系统的控制精度及可靠性较低。
随着计算机控制技术的发展,微处理器已经广泛使用于直流传动系统,实现了全数字化控制。
由于微处理器以数字信号工作,控制手段灵活方便,抗干扰能力强。
所以,全数字直流调速控制精度、可靠性和稳定性比模拟直流调速系统大大提高。
所以,本次实习采用了驱动芯片来驱动直流电机,并运用单片机编程控制加以实现。
系统设计采用驱动芯片来控制的,所以控制精度和可靠性有了大幅度的提高,并且驱动芯片具有集成度高、功能完善的特点,从而极的大简化了硬件电路的设计。
图1.1 直流电机定时正反转方案1.2 软硬件功能分析本次实习直流电机控制系统以STC89C52单片机为控制核心,由按键输入模块、LED显示模块及电机驱动模块组成。
采用带中断的独立式键盘作为命令的输入,单片机在程序控制下,定时不断给L293D直流电机驱动芯片发送PWM波形,H型驱动电路完成电机正,反转控制;同时单片机不停的将变化的定时时间送到LED数码管完成实时显示。
第2章硬件电路设计2.1 单片机最小系统电路设计单片机最小系统设计是单片机应用系统设计的基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西南科技大学自动化专业方向设计报告设计名称:直流电机数控器设计与制作姓名:汪少华学号: 20105191班级:电气1002指导教师:聂诗良起止日期: 2013.10.19-2013.11.9西南科技大学信息工程学院制方向设计任务书学生班级:电气1002班学生姓名:汪少华学号:20105191设计名称:直流电机数控器设计与制作起止日期:2013.10.19--2013.11.9 指导教师:聂诗良方向设计学生日志直流电机数控器设计与制作摘要STC89C52RC是一个典型的,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,可通过串口下载的单片机。
Lm298是ST公司生产的一种高电压、大电流电机驱动芯片。
本文设计了基于Lm298芯片的直流电机驱动,用TCRT5000光电管进行转速测量的硬件电路,用LCD显示电机转速。
并采用STC89C52RC单片机作为控制芯片,进行直流电机正反转和加减调速控制的直流电机数控器。
本文设计的电路中主要包含4个模块:测速模块(光电传感器测量电机的转速)、电源模块(LM7805集成稳压芯片)、显示模块(LCD液晶显示)和控制模块(利用PWM控制电机转速以及LM298控制正反转)。
关键词单片机直流电机光电管测速DC motor design and production of CNCSummarySTC89C52RC is a typical, built 4KB EEPROM, MAX810 reset circuit, three 16-bit timer / counter, can be downloaded via the serial port of SCM. Lm298 is ST produces a high voltage, high current motor driver chip. This article is designed based on Lm298 chip DC motor drives, optical tube with TCRT5000 speed measurement hardware circuit, the motor speed with the LCD display. And using STC89C52RC chip microcontroller as control for DC motor reversing and subtraction NC DC motor speed control device. This design of the circuit mainly includes four modules: speed module (photoelectric sensor to measure the motor speed), power supply module (M7805 integrated voltage regulator chips), displays (LCD liquid crystal display) and a control module (with PWM control motor speed, and LM298 positive control inversion).CategoriesDC motor microcontroller Photoelectric tachometer一、设计目的和意义随着现代科技的不断发展,现在的电子产品越来越多,在早期,电子产品一般是纯硬件电路,没有使用单片机,电路复杂难以设计,也难以检查问题,随着微控制技术的不断完善和发展,集成芯片越来越多,单片机便出来了,换言之,单片机的应用是对传统控制技术的一场革命。
具有划时代的意义。
在电机控制方面也是靠人的感觉,没有侧速和侧距的概念,以前人机界面一般采用LED数码二极管,随着LCD液晶显示器的出现,人机界面更加人性化、智能化,它能显示数字、汉字和图象,控制LCD液晶显示器也很方便,电路设计也比较简单;加上单片机,组合实现的功能也比较强大,还可方便以后电路的升级与扩展。
本设计结合LCD显示、电机控速、光电管测速等多种技术,实现了基于单片机的电机转速测量控制系统的设计,以达到对直流电机负载(与电机连结的运行装置)运行状况控制的目的。
二、控制要求采用单片机、LM298等器件设计制作一个可进行直流电机正反转和加减调速控制的电路板,电机实际转速可在LED或LCD上显示。
三、设计方案论证测速模块①模拟测速:即利用测速电机作为发电机,通过检测反电势E的大小和极性即可得到转速N和电机转向;采用这种方法直接可以得到转速N和输出电压的特性曲线,直观,但也有很多不足,比如在高速和低速情况下实际输出偏离理想特性。
②数字检测技术:即通过分析数字信号产生的一系列脉冲间接获取电机转速。
这种方法不会受高低速的限制,通过比较所以选择数字检测技术。
③采用光电传感器测量电机的转速,在设计中,在电机转轴末梢上安装纸卡,在纸卡上留出两个孔。
电机转轴每转一圈,发射二极管发出的光便通过纸卡的孔到达接受二极管,就可在接受二极管上产生相应的脉冲信号。
计算下1s内输出的脉冲信号的个数,把计数的结果取一半,就可得到电动机的转动速度。
电源模块①使用电压源供电,可提供较稳定,精确电源,缺点是电压源体积太大,不利于设计的小体积要求。
②使用220V转±15V,再使用集成稳压芯片LM7805将电压稳定至所需,缺点是散热不易,需加装散热片,体积小。
显示模块①采用数码管动态显示,但显示的内容有限,不丰富。
②采用LED点阵显示,但需要的I/O资源较多。
③采用LCD液晶显示,显示内容最丰富,只通过串口通信与单片机连接。
调速模块采用集成芯片Lm298及其外部辅助电路和电机构成驱动电路,利用LM298的功能引脚控制电路正反转。
通过单片机的接口,利用PWM控制电机的转速及其加减速。
最终方案:采用光电传感器测量电机的转速,使用集成稳压芯LM7805将电压稳定至所需,LCD液晶显示,利用PWM控制电机转速并利用LM298控制正反转。
四、系统设计4.1控制系统原理框图系统原理框图如图1所示。
总系统主要包括:LCD显示、键盘输入、测速模块、PWM调速模块和电机驱动模块5个部分。
图14.2系统硬件设计4.2.1系统硬件原理图及工作原理说明硬件由电源部分、单片机最小系统、液晶显示、独立按键、电源指示、光电对管及PWM调速电机等模块构成。
系统硬件原理图见附件原理图。
4.2.2单元电路设计原理。
(1)电源模块设计使用220V转±15V,再使用集成稳压芯片LM7805将电压稳定至所需。
电源原理图见图2图2(2)单片机核心控制模块系统采用单片机STC89C52RD为中心控制器件,显示部分采用液晶显示屏显示。
控制系统采用5V电源供电,外接11.0592MHz晶振。
单片机核心控制模块主要实验一下功能:1、控制电机的运行;2、控制测速模块测量电机的速度;3、控制液晶显示器显示电机的设定转速及当前转速。
单片机电路设计原理图如图3.图3(3)PWM调速及正反转模块本设计采用集成芯片Lm298及其外部辅助电路和电机构成驱动电路。
Lm298是 SGS 公司的产品, 其内部包含 4 通道逻辑驱动电路, 即内含二个H 桥的高电压大电流双全桥式驱动器, 接收标准TTL 逻辑电平信号, 可驱动46V、2A以下的电机。
由 Lm298构成的通过单片机的接口,利用PWM控制电机的转速及其加减速。
通过按键P2.4、P2.5分别控制电机的加速减速。
电路原理图如图4。
图4(4 )测速模块采用光电传感器测量电机的转速,在设计中,在电机转轴末梢上安装纸卡,在纸卡上留出两个孔。
电机转轴每转一圈,发射二极管发出的光便通过纸卡的孔到达接受二极管,就可在接受二极管上产生相应的脉冲信号。
计算下1s内输出的脉冲信号的个数,把计数的结果取一半,就可得到电动机的转动速度。
为提高精度,将输出信号经LM324整流后送入单片机T1口。
测速原理图如图6,实物如图5。
图5 图6(5)显示模块采用LCD液晶显示,显示内容最丰富,只通过8条数据线与单片机连接,采用了串口通信的原理。
显示原理图如图7,实物图如图8。
图7图8 4.2.3硬件PCB图图94.3软件各功能的流程图4.3.1定时计数模块4.3.2PWM调速模块4.4主程序及注解#include<reg52.h>#include <stdio.h>#include "1602.h"sbitKEY_CTRl=P2^7;sbit KEY_UP=P2^6;sbit KEY_DOWN=P2^5;sbit KEY_REVERSE=p2^4;sbit IN1=P1^0;sbit IN2=P1^1;sbit IN3=P1^2;sbit IN4=P1^3;sbit ENA=P1^4;sbit ENB=P1^5;unsigned char temp[16];unsigned char SwitchZT,LEVEL,SPEED,REVERSE,ENA,SPEED_COUNT;/*---------------------------------------系统延时---------------------------------------*/void Delay(unsigned int z){unsignedintx,y;for(x=0;x<z;x++){for(y=0;y<120;y++);}}/*---------------------------------------所有东西初始化---------------------------------------*/ voidEVE_Init(void){LEVEL=50;REVERSE=0;ENA=1;SPEED_COUNT=0;TMOD =0X11;TH0 = (65536-10000) /256;TL0 = (65536-10000) %256;TH1 = (65536-50000) /256;TL1 = (65536-50000) %256;EA = 1;IT0=1;EX0=1;ET0 = 1;TR0 = 1;ET1 = 1;TR1 = 1;}/*---------------------------------------显示---------------------------------------*/ void Show(void){sprintf(temp,"LEVEL:%3d",LEVEL); LCD_Write_String(0,0,temp); sprintf(temp,"SPEED:%3d",SPEED); LCD_Write_String(0,1,temp);if(REVERSE==1){sprintf(temp,"REV",SPEED);LCD_Write_String(12,0,temp);}if(ENA==0){sprintf(temp,"STO",SPEED);LCD_Write_String(12,1,temp);}}/*---------------------------------------按键扫描---------------------------------------*/voidKey_Scan(void){KEY_UP=1;KEY_DOWN=1;KEY_CTRL=1;KEY_REVERSE=1;if(KEY_UP==0){Delay(1);if(KEY_UP==0){if(LEVEL>=0&&LEVEL<100) LEVEL++;while(KEY_UP==0){Show();}}}if(KEY_DOWN==0){Delay(1);if(KEY_DOWN==0){if(LEVEL>0&&LEVEL<=100) LEVEL--;while(KEY_DOWN==0){Show();}}}if(KEY_CTRL==0){Delay(1);if(KEY_CTRL==0){ENA=~ENA;while(KEY_CTRL==0){Show();}}}if(KEY_REVERSE==0){Delay(1);if(KEY_REVERSE==0){REVERSE=~REVERSE;while(KEY_REVERSE==0){Show();}}}}/*---------------------------------------计算速度---------------------------------------*/void COUNT_SPEED() interrupt 0{SPEED_COUNT++;}void CHECK_SPEED() interrupt 3{static unsigned char s_count=0;TH1 = (65536-50000) /256;TL1 = (65536-50000) %256;s_count++;if(speed_count>=20){s_count=0;SPEED=SPEED_COUNT;SPEED_COUNT=0;}}/*---------------------------------------PWM速度调制---------------------------------------*/void PWM() interrupt 1{static unsigned char PWM_switch=0,PWM_COUNT; switch(PWM_switch){case 0:{if(LEVEL==100) {PWM_switch=2;}else if(LEVEL==0) {PWM_switch=3;}else{PWM_COUNT=LEVEL;IN1=REVERSE&1;IN2=(~REVERSE)&1;PWM_switch=1;}}break;case 1:{PWM_COUNT--;if(PWM_COUNT==0){IN1=0;IN2=0;PWM_switch=0;}}break;case 2:{IN1=REVERSE&1;IN2=(~REVERSE)&1;if(LEVEL!=100) {PWM_switch=0;}}break;case 3:{IN1=0;IN2=0;if(LEVEL!=0) {PWM_switch=0;}}break;}TH0 = (65536-10000) /256;TL0 = (65536-10000) %256;}/*---------------------------------------状态机---------------------------------------*/voidMain_Fun(void){static unsigned char SwitchZT=0; switch(SwitchZT){case 0:{DATA=CHECK_SPPED();SwitchZT=1;}break;case 1:{Show();SwitchZT=0;}break;}}void main(){EVE_Init();LCD_Init();while(1){Main_Fun();Key_Scan();}}五、设计结果及分析5.1调试过程本作品的主要由PWM调速电机模块、电源模块、显示模块、测速模块以及单片机核心控制模块同组成,安装调试的过程遵循由简到繁、由易到难的原则进行。