在现代工业自动化高速发展的时期,几乎所有的机械装备都离不开电机,形形色色的电机在不同领域发挥着很重要的作用。与之而来的问题是怎么控制好电机,对于不同的场合,对电机的要求是不同的,本文主要分析的是最典型、最实用的控制方法PWM调速,并采用霍尔效应原理测得电机的转速。
单片机是单片微型计算机的简称,它是在一块半导体芯片上集成了CPU、半导体存储器、I/O(Input/Output)接口、中断系统和定时器等计算机必备部件,所构成的一个完整的数字电子计算机。STCC52是内部有8KROM,512字节RAM,内带2K字节EEPROM存储空间,可通过串口下载。
本设计分为软、硬件,软件由段超负责,硬件由张文平负责,毕业设计报告与周记由两人共同完成。
2.设计任务及要求
2.1设计任务
以单片机为核心,设计一个直流电机测速的电子试验仪,该仪器能实时调速,并用液晶显示。
2.2设计要求
采用霍尔传感器采集电机的速度;
单片机实现直流电机的PWM的控制与实时测速;
电机转速的实时显示;
实用又美观的作品外壳制作;
其他可选功能。
速度显示范围10转/秒~100转/秒
3.系统总体设计
3.1方案论证
测速方法
模拟测速:即利用测速电机作为发电机,通过检测反电势E的大小和极性即可得到转速N和电机转向;采用这种方法直接可以得到转速N和输出电压的特性曲线,直观,但也有很多不足,比如在高速和低速情况下实际输出偏离理想特性。
数字检测技术:即通过分析数字信号产生的一系列脉冲间接获取电机转速。这种方法不会受高低速的,通过比较所以选择数字检测技术。
电源模块
①使用电压源供电,可提供较稳定,精确电源,缺点是电压源体积太大,不利于设计的小体积要求。
②使用220V转±15V,再使用三端集成稳压芯片LM7912、LM7812、LM7805将电压稳定至所需,缺点是散热不易,需加装散热片,体积小。
A/D模块
①串行:采用CMOS单通道8位逐次逼近A/D转换器TLC549,采用串行方法传输数据,分辨率为8位。优点:电路简单,缺点:单通道,速度慢。
②并行:采用8路模拟量输入8位并行数字输出的逐次逼近型A/D转换器ADC0809,分辨率为8位。优点:8通道,速度快,缺点:电路复杂。
显示模块
①采用数码管动态显示,但显示的内容有限,不丰富。
②采用LED点阵显示,但需要的I/O资源较多。
③采用LCD液晶显示,显示内容最丰富,只通过数据线和3条控制线与单片机连接。
最终方案:采用数字的检测,220V降压,并行,液晶显示以上4个方案进行制作。
3.2系统结构框图设计及说明
系统结构框图见图3-2-1
图3-2-1 系统结构框图
整体方案选定后,设计思路为:由AD板控制电机转速,数据处理由单片机进行,然后利用霍尔效应原理,当电机每转动一圈的时候就会发出相应的脉冲信号,脉冲信号的检测及收集储存由单片机定时器T0进行处理,然后由定时器T1计时,每隔一秒钟对数据进行显示,从而即达到了实时现实的目的了,这些显示数据由单片机控制,液晶模块进行显示。
4.软、硬件设计
4.1系统硬件设计
4.1.1系统硬件原理图及工作原理说明
硬件由电源部分、单片机最小系统、液晶显示、按键、电源端子、电源指示、并行AD及PWM调速电机等模块构成。
系统硬件原理图见附件原理图
4.1.2单元电路设计原理与元件参数选择
电源部分提供整块板所需电源(±12V及5V),其原理为将市电通过变压器转换成为±15V电压,再通过三端集成稳压器7812及7912将电压稳定至±12V,再将+12V经过7805稳至+5V。单片机最小系统由电源、复位电路及振荡电路构成。电源由电源模块提供,复位电路如原理图,它的作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。当RST引脚端保持2个周期以上高电平时,单片机进入复位状态。振荡电路提供振荡周期,晶振频率为11.0592MHz,机周为1us。液晶显示模块用于显示测量值及数据。它由数据线和3条控制线构成。
电源原理图见图4-1-2-1
图4-1-2-1 电源原理图
最小系统原理图见图4-1-2-2、4-1-2-3
图4-1-2-2 最小系统原理图
图4-1-2-3 最小系统原理图
AD转换原理图见图4-1-2-4
图4-1-2-4 AD转换原理图
电机调速原理图见图4-1-2-5
图4-1-2-5 电机调速原理图
4.1.3硬件PCB图
最小系统PCB,见图4-1-3-1
图4-1-3-1 最小系统PCB
AD转换模块PCB,见图4-1-3-2
图4-1-3-2 AD转换PCB
4.2系统软件设计
4.2.1软件系统总流程图及设计思路说明
总流程图,见图4-2-1-1
图4-2-1-1 软件总流程
设计思路:单片机上电运行后,通过读取AD的转换结果来控制电机的转速,霍尔元件发出的信号脉冲由单片机收集记录,并通过液晶显示模块显示出来。
4.2.2软件各功能模块的流程图设计及子程序列表
液晶模块流程图,见图4-2-2-1
图4-2-2-1 液晶模块工作流程图
设计思路:LCD模块三个引脚RS、RW和E的不同状态组合确定了单片机对LCD模块的4中基本操作:写命令操作读状态操作写数据操作读数据操作。
显示子程序流程图,见图4-2-2-2
图4-2-2-2 显示子程序流程图
设计思路:先是对液晶模块初始化,将显示的模式、样式定义完成,然后就是显示部分,固定字符的显示由查表得到(LCD标准字库表),实时显示数据由date3、date4、36H和37H寄存器读取,date3与date4的数据由CL将16进制数转成10进制子程序处理完成,36H与37H的数据由DTL占空比计算子程序处理完成。
中断子程序流程图,见图4-2-2-3
图4-2-2-3 中断子程序流程图
设计思路:中断子程序的主要工作就是记录电机的转速值,每隔一秒钟将数据送出一次,时间由定时器1来完成,计数由定时器0来完成,当一秒钟时间到的时候将定时器0和定时器1全部关闭,直到显示数据处理完成再将定时器0和定时器1打开,并且将定时器0的数据清0,从而达到实时显示数据的目的。
子程序列表,见表4-2-2-1
表4-2-2-1 子程序列表
名称 | 功能 | 入口参数 | 出口参数 |
adcon | 实现A/D转换 | 无 | A |
initial | 设置LCD显示状态 | 无 | 无 |
lcd_w_cmd | LCD写命令 | COM | 无 |
lcd_w_dat | LCD写数据 | DAT | 无 |
lcd_r_stat | LCD读状态字 | 无 | A |
delay | 实现延时 | A | 无 |
nop5 | 实现1..5个NOP的延时 | 无 | 无 |
delay1 | 实现延时100us | 无 | 无 |
cl | 将16进制转换成BCD码 | VALUEH、VALUEL | DATE1- DATE4 |
display | 计数值的处理显示 | DATE3、DATE4 | 无 |
dtl | 占空比的数据处理 | ADC | 36H、37H |
cont | 中断子程序 | 无 | VALUEH、VALUEL |
5.1安装调试过程
本作品的主要由AD(模/数转换)功能模块、PWM调速电机模块、最小系统模块以及电源模块共同组成,安装调试的过程遵循由简到繁、由易到难的原则进行。
最小系统板的应用与调试,将一些外部器件,例如液晶模块安装到实验板上,并检测是否可用。
电源板的制作与调试,本作品将会应用到+12V、-12V、+5V的电源,所以运用LM7912、LM7812、LM7805三块芯片获得此电压值。
AD功能模块由主芯片ADC0809提供模/数转换,首先通过PROTUES软件仿真,仿真通过后再进行实物的制作,然后再进行调试直到通过为止。
PWM调速电机模块由老师提供,本人只负责对该模块的学习了解以及使用,将以上模块准备完毕之后,再将此模块进行测试。
5.2故障分析
最小系统测试的时候,忽略了下载IO口有占用P1,一开始总会下载失败,后经同学讲解以及更换IO口得以解决。
电源板的制作出现不少麻烦,一是稳压芯片通电时间过长以后容易发烫,后来安装了散热片得以解决,二是稳压芯片的稳压范围,例如LM7812能将+18V~+13V的电压降为+12V,超出这个范围之后,+12V不稳定,后经使用220V~15V的变压器得以解决。
AD转换电路的PCB板制作以失败告终,原因是腐蚀电路板的时候FECL3放入的过多了,导致本应该保留的线路被腐蚀过度,造成整块电路无法在使用,后经老师同意改用万用板进行制作,AD转换电路的调试出现很大问题,一是对ADC0809的不熟悉,二是焊接时候的马虎造成一开始调试电路失败,后经上网查找资料以及再一次的检查电路使板顺利通过调试,还有之前就是时钟信号芯片有遗漏7脚、14脚的焊接,造成时钟信号芯片不工作,也致使AD板没有正常工作,后来也是通过上网查找资料得以解决。
通过老师提供的资料,对PWM调速模块了一个基本全面的认识,例如速度的调试以及速度的测量,不过却是本次试验的一个小小遗憾,希望以后在条件允许的情况下自己动手做做这个PWM调速模块。
6.结论与实验数据
6.1实验数据比较
数据分析见表6-1-1
PWM占空比 | 周期T | 幅度U | 矩形波占空比 | |
快 | 48% | 5ms/格*6 | 2V/格*2 | 5:6 |
慢 | 37% | 10ms/格*7 | 2V/格*2 | 6:7 |
6.2结论
作品基本完成,但是还有很多没有实现或者是瑕疵的地方,例如AD转换板的制作,调速模块的制作等等,希望以后有机会再次完善此作品,到目前为止自己对直流电机的测速也有了一个全新的认识,比如直流电机是一个不错的基样,在此基础上可以改进为测风速,测水速等等,从而得到一些与生活相关的实用信息,为人们的生活提供方便。
7.收获、体会和建议
经过多个星期的努力,终于把作品基本完成了,回想整个过程自己真是学到了很多知识,像是什么程序方面了,电路制作了,元器件应用的处理了等等,这其中的喜悦不言而喻,更不用说学到了更多的知识,而且更是锻炼了自己,这才是最宝贵的,懂得了做事的时候一定要事先做好准备,把准备工作做的细致才会使自己在事情进行的时候得心应手,在这就是遇事不急不燥,静下心来想想到底哪里除了问题,还有就是这次同学与老师给的帮助还是蛮大的,自己应该铭记,接下来呢,就是准备答辩的事宜了,希望也能顺利通过,这样自己的大学生活就此应该画一个句号了,不会留下什么遗憾,未来才会有更多的精力去奋斗,用自己三年的知识去创造自己的一片天。
8.使用仪器设备清单
仪器设备,见表8-1
表8-1 仪器设备
仪器设备、工具清单 | |
名称 | 作用 |
Proteus | 用于硬件仿真 |
Keil | 程序编写及调试 |
STC_ISP_V480 | 将程序从计算机下载到电路板 |
串口线 | 将计算机数据传送给电路板 |
电源线 | 用于下载程序时为电路板提供5V电 |
信号发生仪器 | 为调试电路板频率计功能模块提供一定频率信号 |
电压源仪器 | 为调试电路板电压功能模块提供0V—5V之间的电压 |
示波仪器 | 检测电路板信号发生功能模块的输出情况 |
数字式万用表 | 用于调试电路板时测试部分器件的电压值 |
电烙铁、焊锡 | 用于焊接电路板 |
表8-2 元器件
名称 | 规格(型号) | 数量 |
芯片 | STCC52RC | 1 |
ADC0809 | 1 | |
LM7812 | 1 | |
LM7912 | 1 | |
LM7805 | 1 | |
7474 | 1 | |
7402 | 1 | |
7400 | 1 | |
插槽 | 40脚 | 1 |
28脚 | 1 | |
14脚 | 3 | |
16脚液晶插槽 | 1 | |
排针 | 53 | |
按键 | 7 | |
晶振 | 11.0592 | 1 |
串口端子 | 1 | |
发光二极管 | 9 | |
二级管 | IN4001 | 4 |
液晶 | LCD1602 | 1 |
自锁开关 | 1 | |
三极管 | 9013 | 1 |
10Ω | 1 | |
220Ω | 1 | |
1K | 10 | |
5K | 14 | |
10K | 10 | |
1K排阻 | 1 | |
电容 | 电解220uF | 3 |
电解100uF | 2 | |
瓷片104 | 4 | |
瓷片103 | 3 |
1 张迎新等.单片机初级教程——单片机基础(第2版).北京:航空大学出版社,2009
2 张永枫等.单片机应用实训教程.北京:清华大学出版社,2008
3 张迎新等.单片机原理及应用.北京:电子工业出版社,2010
4 .www.21icsearch.com
10.附件
系统硬件原理图见图10-1
图10-1
PCB图见图10-2
10-2
实物图见图10-3、10-4
10-3
10-4
作品程序:
com equ 20h ;LCD指令寄存器
dat equ 21h ;LCD数据寄存器
rs bit p2.0 ;LCD指令数据控制线
rw bit p2.1 ;LCD读写控制线
e bit p2.2 ;LCD片选信号
pwm bit p3.7
valueh equ 暂存TH0的值
valuel equ 暂存TL0的值
暂存计数值的BCD码
equ h
equ h
DATE4 equ h
adc equ 40h ;A/D转换值暂存
equ 50h
sec equ 51h ;秒读数寄存器
speedl equ 52h ;速度值十位暂存器
speedr equ 53h ;速度值个位暂存器
p1
org 001bh
设置为定时器,T0设置为计数器
mov th1,#3ch ;为T1、T0设置初始值
mov tl0,#00h
th0,#00h
mov ie,#8ah ;定义与中断有关的寄存器
lcall initial
setb tr0 ;启动定时器0、1
setb tr1
mov adc,a 读取A/D转换结果
setb pwm 输出
a,adc
delay
pwm
a,#255
a,adc
delay
;lcall initial
loop1: lcall display
;;;;;;;;;读取A/D转换结果;;;;;;;;;;;;;;;;;;;;;;;;
adcon: p2.3
p2.3
p2.3
p2.4,$
p2.3
p0,#0ffh
a,p0
;;;;;;;;;LCD初始化子程序;;;;;;;;;;
initial: mov com,#3ch ;LCD工作方式设置
mov com,#01h ;清屏
mov com,#06h ;输入方式设置
;mov com,#0ch ;显示方式设置
;;;;;;;;LCD显示子程序;;;;;;;
display: mov com,#0ch
lcd_w_cmd
mov com,#80h
lcd_w_cmd
dptr,#tab
lcd_w_dat
lcd_w_dat
mov a,date3
movc a,@a+dptr
mov a,date4
movc a,@a+dptr
mov dat,a
mov dat,#"r"
lcall lcd_w_dat
lcall dtl
mov com,#0c0h
mov dptr,#tab1
mov r2,#11
mov r3,#00
wrin: mov a,r3
movc a,@a+dptr
mov dat,a
lcd_w_dat
inc r3
r2,wrin
mov dptr,#tab
mov a,36h
movc a,@a+dptr
mov dat,a
lcall lcd_w_dat
mov a,37h
movc a,@a+dptr
mov dat,a
lcall lcd_w_dat
mov dat,#25H
lcall lcd_w_dat
;;;;;;;;;;;占空比计算;;;;;;;;;;;;
d mov a,adc
mov b,#100
mul ab
mov a,b
mov b,#10h
div ab
mov 36h,b
mov b,#16
mul ab
add a,36h
mov b,#10
div ab
mov 36h,a
mov 37h,b
;;;;;;;;;;;;读状态子程序LCD_R_STAT;;;;;;;;;;;;;;;;;
lcd_r_stat:
;;;;;;;;;;;;;写命令字子程序LCD_W_CMD;;;;;;;;;
lcd_w_cmd:
lcd_w_cmd_a:
lcd_w_cmd_b:
;;;;;;;;;;写显示数据子程序LCD_W_DAT;;;;;;;;;;;;;;
lcd_w_dat:
lcd_w_dat_a:
lcd_w_dat_b:
;;;;;;;;;;;;;;;;;;;;;;
c m th1,#3ch
mov tl1,#0b0h
inc sec
mov a,sec
cjne a ;判断是否有到1秒钟
mov sec,#00h
TR0 ;关闭定时器
CLR ;关闭计数器
MOV 存放计数值
MOV VALUEH,TH0
cl
mov th0,#00h
mov tl0,#00h
setb tr1
;;;;;;将16进制数转成10进制并且把4位数依次存入DATE1至DATE4;;;;
c R2,VALUEH
R3,VALUEL
A
R4,A
R5,A
R7,#10H
n C
A,R3
A
R3,A
A,R2
A
R2,A
A,R5
A,R5
A
R5,A
A,R4
A,R4
A
R4,A
R7,next
SJ: R0,#DATE4
A,R5
A,#0FH
@R0,A
;;;;;;
A,R5
A
A,#0FH
@R0,A
R0 ;;;;;;;;;;;;
A,R4
A,#0FH
@R0,A
R0 ;;;;;;;;;;;;
A,R4
A
A,#0FH
@R0,A
R0 ;;;;;;;;;;;;
A,R3
A,#0FH
@R0,A
R0 ;;;;;;;;;;;;
A,R3
A
A,#0FH
@R0,A
R0 ;;;;;;;;;;;;;
A,R2
A,#0FH
@R0,A
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
tab: db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
delay: mov r6,#1
d1: djnz r6,d1
djnz acc,d1
ret
ret
end