单片机控制直流电机并测速(电压AD、DA转换以及pwm按键调速正转反转)
更新时间:2023-09-22 12:51:01 阅读量: 经管营销 文档下载
- 51单片机直流电机测速推荐度:
- 相关推荐
单片机原理及应用
课程设计报告书
题 目:用单片机控制直流电动机并测量转速
姓 名:徐银浩 学 号:1110702225 专 业:电子信息工程 指导老师:沈兆军 设计时间: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显示数码移动的速度,及时形象地跟踪直流电动机转速的变化情况。
2 方案设计
为了使用单片机对电动机进行控制,对单片机的基本要求应有足够快点速度;有捕捉功能。总体设计方案如图所示
1
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
数码驱动 单片机 ADC0808 数码显示 按键控制 DAC0832 信号放大
电压信号
图2.1总体设计方案
驱动电机 光电管脉冲计数
(1)键盘向单片机输入相应控制指令,由单片机通过P3.0口输出信号,该编码通过DAC0832译成相应的模拟电压,经过信号放大实现电动机转向与转速的控制。
(2)可变电阻接ADC0808转变成相应电压的数字信号,单片机通过P1口读取,再由P2口输出与转速相应的8位BCD编码与DAC0832相接。电动机的运转状态则通过四位数码管显示出来。
(3)电机的测速显示,采用光电传感器测量电机的转速,在设计中,在电机转轴末梢上安装纸卡,在纸卡上留出两个孔。电机转轴每转一圈,发射二极管发出的光便通过纸卡的孔到达接受二极管,就可在接受二极管上产生相应的脉冲信号。计算下1s内输出的脉冲信号的个数,把计数的结果取一半,就可得到电动机的转动速度。
(4)通过Max7219驱动器驱动4位共阴极LED灯,这样节省了许多I/O口。
2
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
3硬件设计
3.1AT89C51最小系统
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
图3.1 单片机最小系统的设计
3
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 3.2 按键电路
单片机的P3.6和P3。7口分别接一个按键用于控制电机。当按下“叫”键时,电机转速提高,进入加速状态;当按下“减”键时,电机转速减慢,进入减速状态。通过“加”“减”两个按键可以达到键盘控制电机的作用。 3.3 A/D转换模块 (1)ADC0808
ADC0808是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式
A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片。 主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。 2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时) 4)单个+5V电源供电。
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。 6)工作温度范围为-40~+85摄氏度。 7)低功耗,约15mW。 ADC0809的工作过程
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿
4
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。 (1)定时传送方式
对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。 (2)查询方式
A/D转换芯片由表明转换完成的状态信号,例如ADC0808的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。 (3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
5
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
图3.3 AD转换电路的设计
(2)工作原理
如图3.3所示,外部电源通过滑动变阻器向ADC0808输入控制电压信号,经
A/D处理后,输入到AT89C51中,交由AT89C51处理,进行下一步动作。
3.4 D/A转换模块
(1)DAC0832
DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA
芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
主要特性参数
1.分辨率为8位; 2.电流稳定时间1us;
3.可单缓冲、双缓冲或直接数字输入;
6
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
4.只需在满量程下调整其线性度; 5.单一电源供电(+5V~+15V);
6.低功耗,20mW。 DAC0832的工作方式
DAC0832进行D/A转换,可以采用两种方法对数据进行锁存。 第一种方法是使输入寄存器工作在锁存状态,而DAC寄存器工作在直通状态。具体地说,就是使 和 都为低电平,DAC寄存器的锁存选通端得不到有效电平而直通;此外,使输入寄存器的控制信号ILE处于高电平、 处于低电平,这样,当 端来一个负脉冲时,就可以完成1次转换。
第二种方法是使输入寄存器工作在直通状态,而DAC寄存器工作在锁存状态。就是使和为低电平,LE为高电平,这样,输入寄存器的锁存选通信号处于无效状态而直通;当和端输入1个负脉冲时,使得DAC寄存器工作在锁存状态,提供锁存数据进行转换。
图3.4 DA转换电路的设计
7
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
(2) 工作原理
如上图3.4所示,电压信号输入后经过AD转换输入到AT89C51,由单片机通过P1口输出与转速相应的8位BCD编码,该编码通过DAC0832译成相应的模拟电压,经过信号放大实现电动机转向与转速的控制。
3.5电机转速测量电路
图3.5光电传感器测速设计
采用光电传感器测量电机的转速,在设计中,在电机转轴末梢上安装纸卡,在纸卡上留出两个孔。电机转轴每转一圈,发射二极管发出的光便通过纸卡的孔到达接受二极管,就可在接受二极管上产生相应的脉冲信号。计算下1s内输出的脉冲信号的个数,把计数的结果取一半,就可得到电动机的转动速度。
3.6 显示电路
(1) MAX7219
MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64
8
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。 只有一个外部寄存器用来设置各个LED的段电流。 MAX7221与SPI?、 QSPI?以及 MICROWIRE?相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。 一个方便的四线串行接口可以联接所有通用的微处理器。 每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。 整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。
功能特点:
1、10MHz连续串行口 2、独立的LED段控制 3、数字的译码与非译码选择 4、150μA的低功耗关闭模式 5、亮度的数字和模拟控制 6、高电压中断显示 7、共阴极LED显示驱动
8、限制回转电流的段驱动来减少EMI(MAX7221) 9、SPI, QSPI, MICROWIRE串行接口(MAX7221) (2) 工作原理
如图3.6所示,可变电阻接ADC0808转变成相应电压的数字信号,单片机通过P0口读取,再由P1口输出与转速相应的8位BCD编码到MAX7219。经由MAX7219处理后通过四位数码管显示出来。采用光电传感器测量电机的转速,在设计中,在电机转轴末梢上安装纸卡,在纸卡上留出两个孔。电机转轴每转一圈,发射二极管发出的光便通过纸卡的孔到达接受二极管,就可在接受二极管上产生相应的脉冲信号。计算下1s内输出的脉冲信号的个数,把计数的结果取一半,就可得到电动机的转动速度。
9
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
图3.6 显示电路的设计
3.7 总电路图
由各子模块设计给得出总硬件电路设计如下图3.7所示
图3.7硬件总电路图
10
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
4 软件设计
4.1 系统主程序设计
本系统编程部分工作采用KELI-C51语言完成,采用模块化的设计方法,与各子程序做为实现各部分功能和过程的入口,完成键盘输入、按键识别、ADC0809读取和DAC0832输出、脉冲计数以及数码管显示等部分的设计。
开始
系统初始化
N 按键是否按下
Y 读取键值 减速 加速
电机减速 电机加速 电机转动产生脉冲
脉冲计数
11
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
调用 MAX7219 驱动 显示速度 返回
图4.1 主程序流程图
4.2 按键扫描程序设计
按键扫描程序采用中断方式,按下键,完成延时去抖动、键码识别、按键功
能执行。要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少一定的占空比。 4.3显示子程序
Max7219驱动显示子程序用于处理DAC0832处理出来的8位BCD,利用数组方式定义显示缓存区,缓存区有8位,分别存放各个数码管要显示的值。流程图如下图4.3所示
初始化 MAX7219 开始
读取计数数据 调用显示子程序 12
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
8附 录A;源程序
#include
#define uint unsigned int #define uchar unsigned char
#define da1_7 P2 //da转换口 #define ad1_7 P0 //ad转换口
sbit ST=P1^3; sbit OE=P1^7;
sbit EOC=P1^6; //ad转换完成标志 sbit LOAD=P1^1; //max7219 load sbit DIN=P1^0; //max7219输入 sbit CLK=P1^2; //max7219clk sbit Motor=P3^0;
sbit Inc=P3^6; //速度增加 sbit Dec=P3^7; //速度减小 uchar flag_add=0,flag_dec=0; uchar speed=90,t=0;
uint motorspeed,counter=0,calsp; uint temp; uchar disp[4];
uchar code dispaly_list[]= { 0x00,0x01,0x02,0x03,0x04, 0x05,0x06,0x07,0x08 } ; void key();
void display(); //max7219显示 void calspeed(); //速度计数 void delay(uint z); //延时 void InitDis(); //max7219 初始化 void init_timer0(); //中断初始
void w_max7219(unsigned char addr,unsigned char wdata);
void main (void ) {
InitDis(); init_timer0();
while(1){ key();
18
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
ST=0; ST=1;
ST=0; //start 降 ,AD开始转换 delay(10); OE=0;
while(EOC==0); //等待转换结束 OE=1; temp=ad1_7;
da1_7=temp; // OE=0; // display(); calspeed(); } }
/*******按键检测函数 ***********/ void key() //按键检测函数 {
if(flag_add==0) {
if(!Inc) //p3.6 加 {
flag_add=1; //标志 speed+=5;
if(speed>=100)
speed=100; } }
if(Inc)
flag_add=0; if(flag_dec==0) {
if(!Dec) {
flag_dec=1; speed-=5; if(speed<=5) speed=5; } } if(Dec)
flag_dec=0;
19
用单片机控制直流电动机并测量转速 单片机原理及应用课程设计
}
/*******初始化 定时**************/ void init_timer0() { EA=1; EX0=1;
IT0=1; //外中断1 TMOD=0X01;
TH0=(65535-10000)/256; //10MS TL0=(65535-10000)%6; TR0=1; //定时1 ET0=1; }
/******脉冲计数**********/ void calspeed() {
if(calsp>=100) //100*10ms=1s {
motorspeed=counter; counter=0;//计数清零 calsp=0; //标志清零 } }
void _timer0 () interrupt 1 //硬件调用 { TH0=(65535-10000)/256; //10MS TL0=(65535-10000)%6;
calsp++; //定时次数 等待100次 及1s ////
t++; //10ms加1 if(t>=100) {
t=0; }
if(t Motor=0; } 20 用单片机控制直流电动机并测量转速 单片机原理及应用课程设计 void _INT0() interrupt 0 {counter++;} //外中断计数 void delay(uint z) //延时 { uint x,y; for(x=z;x>0;x--) for(y=19;y>0;y--); } /*------------------------------------------------- MAX7219初始化 -------------------------------------------------*/ void InitDis (void) { w_max7219(0x0b,0x07); /*设置扫描界限*/ w_max7219(0x09,0xff); /*设置译码模式*/ w_max7219(0x0a,0xf5); /*设置亮度*/ w_max7219 (0x0c,0x01); /*设置电源工作模式*/ } void w_max7219(unsigned char addr,unsigned char wdata) { unsigned int ADS,j,i; LOAD=0; i=0; while(i<16) { if(i<8) ADS=addr; else ADS=wdata; for(j=8;j>=1;j--) { DIN=ADS&0x80; ADS=ADS<<1; CLK=1; CLK=0;} i+=8; } LOAD=1;} /***************调用显示****************/ void display( ) { uint i; 21 用单片机控制直流电动机并测量转速 单片机原理及应用课程设计 disp[0]=motorspeed; //求速度个位值,送到个位显示缓冲区 disp[1]=(motorspeed/10); //求速度十位值,送到十位显示缓冲区 disp[2]=(motorspeed/100); //求速度百位值,送到百位显示缓冲区 disp[3]=motorspeed/1000; //求速度千位值,送到千位显示缓冲区 for(i=0;i<4;i++) { if(i==0) //显示个位 { w_max7219(0x04,dispaly_list[disp[0]]); delay(10); } else if(i==1) //显示十位 { w_max7219(0x03,dispaly_list[disp[1]]) ; delay(10); } else if(i==2) //显示百位 { w_max7219(0x02,dispaly_list[disp[2]]); delay(10); } else if(i==3) //显示千位 { w_max7219(0x01,dispaly_list[disp[3]]); delay(10); } } } 22 用单片机控制直流电动机并测量转速 单片机原理及应用课程设计 9附 录B;电路原理总图、作品实物图片 23
正在阅读:
单片机控制直流电机并测速(电压AD、DA转换以及pwm按键调速正转反转)09-22
关于安全教育致家长的一封信03-29
电话口译员的翻译个人简历模板-精选word文档(2页)03-21
模糊Smith智能温度控制器的设计与仿真05-30
三极管丝印代码查询08-08
北京邮电大学人力资源总监(CHO)高级研修班招生简章03-29
2014计算机一级考试题目(附答案)04-02
贴片二极管三极管丝印一览表02-02
2017年宜昌市中职学校教学质量监测考试(宜都职教中心)11-05
议论文如何使用事例论据203-29
- 教育局拟征求中考升学奖励制度
- 2020房地产销售主管年终工作总结
- 虚拟多台位互感器检定装置投资项目可行性分析
- 车间工人辞职报告范本
- 溴投资项目可行性分析
- 改名字申请书怎么写
- 忧与爱作文素材
- 溴苯腈投资项目可行性分析
- 2020清华大学考研复试时间:3月6日至22日
- 2020年蚌埠高考查分系统网址
- 2020年二建《建筑工程实务》测试题及答案(13)
- 生死感悟——人间世观感一
- 武陵源区军地小学观看魏书生《如何当好班主任》讲座录像
- 全球10大安全旅游国出炉日本排名第9
- 企业策划书模板
- 高中英语教师工作总结3篇
- 法定代表人证明范本
- 大学助学金申请书范文1700字
- 案外人申请不予执行仲裁裁决司法解释施行首份申请书递交齐齐哈尔...
- 环球国际房地产开发项目策划
- 直流电机
- 测速
- 调速
- 反转
- 单片机
- 电压
- 按键
- 转换
- 以及
- 控制
- pwm
- 高速电气化接触网施工关键技术(一) - 图文
- 课外阅读书目(1--6年级)
- 光伏发电工程项目施工组织设计方案 - 图文
- 文学批评(2)
- 青麦
- 中国石拱桥阅读题
- 楼宇对讲基础知识培训
- 经济学专业推荐书单(专业类) - 图文
- 小汤普森第二册教案
- 为人师表
- 最新初中九年级数学圆题库 的性质及切线基本题测试题
- 旅游法规课标 - 图文
- 昆明市城乡规划管理技术规定2012
- 0205统计数据整理之统计汇总和整理结果的显示
- 自动检测复习题
- 小学生的家庭教育
- 沪科版生命科学高一上3-2《细胞核和细胞器》讲义 - 图文
- 微机接口课设-步进电机控制系统设计
- Unit1 翻译
- 联梁型钢悬挑脚手架计算书(小横杆排脚手架,横杆与立杆连接方式为单扣件,连墙件扣件连接方式为双扣件)