单片机控制直流电机_第1页
单片机控制直流电机_第2页
单片机控制直流电机_第3页
单片机控制直流电机_第4页
单片机控制直流电机_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

20122013 学年 第 一 学期 单片机原理及应用 课 程 设 计 报 告 题 目: 单片机控制直流电动机 专 业: 电子信息工程 班 级: 姓 名: 指导教师: 电气工程系 2012 年 10 月 21 日 I 1、任务书 课题名称 单片机控制直流电动机 指导教师(职称) 执行时间 20122013 学年 第一学期 第 周 学生姓名 学号 承担任务 设计目的 采用单片机设计一个控制直流电机并测量转速的装置。 单片机扩展有 A/D 转换芯片 ADC0809 和 D/A 转换芯片 DAC0832。 设计要求 (1)通过改变 A/D 输入端可变电阻来改变 A/D 的输入 电压,D/A 输入检测量大小,进而改变直流电机的转速。 (2)手动控制。在键盘上设置两个按键直流电动机 加速键和直流电机减速键。在手动状态下,每按一次键,电 机的转速按照约定的速率改变。 摘 要 电动机作为最主要的动力源,在生产和生活中占有重要地位。电动机的调速控制过 去多用模拟法,随着计算机的产生和发展以及新型电力电子功率器件的不断涌现,电动 机的控制也发生了深刻的变化,本系统利用直流电机的速度与施加电压成正比的原理, 通过滑动变阻器向 ADC0809 输入控制电压信号,经 AD 后,输入到 AT89C51 中,AT89C51 将此信号转发给 DAC0832,通过功放电路放大后,驱动直流电机。 关键字:电动机;AT89C51;单片机 III 目 录 单片机原理及应用 课 程 设 计 报 告 .I 任务书 .II 摘 要 III 第一章 整体设计 1 1.1 设计原理 1 1.2 整体设计 1 第二章 系统硬件设计 .3 2.1 按键电路 3 2.1.1 AT89C51 .3 2.1.2 按键电路 .4 2.2 显示电路 4 2.2.1 MAX7219 4 2.2.2 工作原理 .5 2.3 A/D 转换模块 .6 2.3.1 ADC0808.6 2.3.2 工作原理 .8 2.4 D/A 转换模块 .8 2.4.1 DAC0832.8 2.4.2 工作原理 .9 2.5 总电路图 9 第三章 系统软件设计 .11 3.1 系统主程序设计 11 4.1 按键扫描程序 12 4.2 显示子程序 14 4.3 定时中断处理程序 16 4.4 A/D 转换程序 .17 第四章 系统仿真 19 4.1 仿真步骤 19 4.2 仿真结果分析 20 结论 .21 附录 .22 参考文献 .32 第一章 整体设计 1.1 设计原理 直流电机是通过两个磁场的互作用产生旋转。其结构如下页图所示,固定部分(定 子)上,装设了一对直流励磁的静止的主磁极 N 和 S,在旋转部分(转子)上装设电枢铁 心。定子与转子之间有一气隙。在电枢铁心上放置了由 A 和 X 两根导体连成的电枢线圈, 线圈的首端和末端分别连到两个圆弧形的铜片上,此铜片称为换向片。换向片之间互相 绝缘,由换向片构成的整体称为换向器。换向器固定在转轴上,换向片与转轴之间亦互 相绝缘。在换向片上放置着一对固定不动的电刷 B1 和 B2,当电枢旋转时,电枢线圈通过 换向片和电刷与外电路接通。 定子通过永磁体或受激励电磁铁产生一个固定磁场,由于转子由一系列电磁体构成, 当电流通过其中一个绕组时会产生一个磁场。对有刷直流电机而言,转子上的换向器和 定子的电刷在电机旋转时为每个绕组供给电能。通电转子绕组与定子磁体有相反极性, 因而相互吸引,使转子转动至与定子磁场对准的位置。当转子到达对准位置时,电刷通 过换向器为下一组绕组供电,从而使转子维持旋转运动。 直流电机的速度与施加的电压成正比,输出转矩则与电流成正比。由于必须在工作 期间改变直流电机的速度,直流电机的控制是一个较困难的问题。直流电机高效运行的 最常见方法是施加一个 PWM(脉宽调制)方波,其占空比对应于所需速度。电机起到一 个低通滤波器作用,将 PWM 信号转换为有效直流电平。特别是对于微处理器驱动的直流 电机,由于 PWM 信号相对容易产生,这种驱动方式使用的更为广泛。 1.2 整体设计 为了使用单片机对电动机进行控制,对单片机的基本要求应有足够快点速度;有捕 捉功能。总体设计方案如图所示 1 图 1.1 总体设计方案 键盘向单片机输入相应控制指令,由单片机通过 P1 口输出与转速相应的 8 位 BCD 编 码,该编码通过 DAC0832 译成相应的模拟电压,经过信号放大实现电动机转向与转速的 控制。 可变电阻接 ADC0808 转变成相应电压的数字信号,单片机通过 P2 口读取,再由 P1 口输出与转速相应的 8 位 BCD 编码。电动机的运转状态则通过四位数码管显示出来。电 动机所处速度级以速度档级数显示。正转时最高位显示“三” ,其它三位为电机转速; 反转时最高位显示“F” ,其它三位为电机转速。每次电动机启动后开始显示,停止时数 码管显示出“0000” 。 单片机 DAC0832 数码管显示 按键控制 ADC0808 电压信号 信号放大 驱动电机 第 2 章 系统硬件设计 根据总设计方案可知硬件电路是以单片机为核心辅以适当的电路以完成要求功能。 主要包括显示模块,A/D 转换模块,D/A 转换模块等模块。 2.1 按键电路 2.1.1 AT89C51 AT89C51 是一种带 4K 字节 FLASH 存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗称单片机。 AT89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器 的单片机。单片机的可擦除只 读存储器可以反复擦除 1000 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造, 与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器 组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,AT89C2051 是它的一种 精简版本。AT89C51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 图 2.1 按键电路的设计 AT89C51 提供以下标准功能:4k 字节 Flash 闪速存储器,128 字节内部 RAM,32 3 个 I/O 口线,两个 16 位定时/计数器,一个 5 向量两级中断结构,一个全双工 串行通信口, 片内振荡器及时钟电路。同时,AT89C51 可降至 0Hz 的静态逻辑操作,并支持两种软件 可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/计数器,串行通 信口及中断系统继续工作。掉电方式保存 RAM 中的内容,但振荡器停止工作并禁止其它 所有部件工作直到下一个硬件复位。 2.1.2 按键电路 如图 2.1 所示,单片机的 P2.1 和 P2.2 口分别接一个按键用于控制电机。当按下 S1 键 时,电机转速提高,进入加速状态;当按下 S2 键时,电机转速减慢,进入减速状态。通 过 S1,S2 两个按键可以达到键盘控制电机的作用。 2.2 显示电路 2.2.1 MAX7219 MAX7219/MAX7221 是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理 器与 8 位数字的 7 段数字 LED 显示,也可以连接条线图显示器或者 64 个独立的 LED。 其上包括一个片上的 B 型 BCD 编码器、多路扫描回路,段字驱动器,而且还有一个 8*8 的静态 RAM 用来存储每一个数据。 只有一个外部寄存器用来设置各个 LED 的段电流。 MAX7221 与 SPI、 QSPI以及 MICROWIRE相兼容,同时它有限制回转电流的段 驱动来减少 EMI(电磁干扰) 。 一个方便的四线串行接口可以联接所有通用的微处理器。 每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221 同样允许用户 对每一个数据选择编码或者不编码。 整个设备包含一个 150A 的低功耗关闭模式,模拟 和数字亮度控制,一个扫描限制寄存器允许用户显示 1-8 位数据,还有一个让所有 LED 发光的检测模式。 功能特点: 1、10MHz 连续串行口 2、独立的 LED 段控制 3、数字的译码与非译码选择 4、150A 的低功耗关闭模式 5、亮度的数字和模拟控制 6、高电压中断显示 7、共阴极 LED 显示驱动 8、限制回转电流的段驱动来减少 EMI(MAX7221) 9、SPI, QSPI, MICROWIRE 串行接口(MAX7221) 10、24 脚的 DIP 和 SO 封装 2.2.2 工作原理 图 2.2 显示电路的设计 5 如图 2.2 所示,可变电阻接 ADC0808 转变成相应电压的数字信号,单片机通过 P0 口 读取,再由 P1 口输出与转速相应的 8 位 BCD 编码到 MAX7219。经由 MAX7219 处理后 通过四位数码管显示出来。电动机所处速度级以速度档级数显示。正转时最高位显示 “三” ,其它三位为电机转速;反转时最高位显示“F” ,其它三位为电机转速。每次电 动机启动后开始显示,停止时数码管显示出“0000” 。 2.3 A/D 转换模块 2.3.1 ADC0808 ADC0808 是美国国家半导体公司生产的 CMOS 工艺 8 通道,8 位逐次逼近式 A/D 模 数转换器。其内部有一个 8 通道多路开关,它可以根据地址码锁存译码后的信号,只选 通 8 路模拟输入信号中的一个进行 A/D 转换。是目前国内应用最广泛的 8 位通用 A/D 芯 片。 主要特性 1)8 路输入通道,8 位 A/D 转换器,即分辨率为 8 位。 2)具有转换起停控制端。 3)转换时间为 100s(时钟为 640kHz 时),130s(时钟为 500kHz 时) 4)单个+5V 电源供电。 5)模拟输入电压范围 0+5V,不需零点和满刻度校准。 6)工作温度范围为-40+85 摄氏度。 7)低功耗,约 15mW。 ADC0809 的工作过程 首先输入 3 位地址,并使 ALE=1,将地址存入地址锁存器中。此地址经译码选通 8 路模拟输入之一到比较器。START 上升沿将逐次逼近寄存器复位。下降沿启动 A/D 转换, 之后 EOC 输出信号变低,指示转换正在进行。直到 A/D 转换完成,EOC 变为高电平,指 示 A/D 转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当 OE 输入高电 平 时,输出三态门打开,转换结果的数字量输出到数据总线上。 转换数据的传送 A/D 转换后得到的数据应及时传送给单片机进行处理。数据传送的 关键问题是如何确认 A/D 转换的完成,因为只有确认完成后,才能进行传送。为此可采 用下述三种方式。 (1)定时传送方式 对于一种 A/D 转换器来说,转换时间作为一项技术指标是已知的和固定的。例如 ADC0809 转换时间为 128s,相当于 6MHz 的 MCS-51 单片机共 64 个机器周期。可据此 设计一个延时子程序,A/D 转换启动后即调用此子程序,延迟时间一到,转换肯定已经完 成了,接着就可进行数据传送。 (2)查询方式 A/D 转换芯片由表明转换完成的状态信号,例如 ADC0808 的 EOC 端。因此可以用 查询方式,测试 EOC 的状态,即可确认转换是否完成,并接着进行数据传送。 (3)中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。 不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首 先送出口地址并以信号有效时,OE 信号即有效,把转换数据送上数据总线,供单片机接 受。 7 图 2.3 AD 转换电路的设计 2.3.2 工作原理 如图 2.3 所示,外部电源通过滑动变阻器向 ADC0808 输入控制电压信号,经 A/D 处 理后,输入到 AT89C51 中,交由 AT89C51 处理,进行下一步动作。 2.4 D/A 转换模块 2.4.1 DAC0832 DAC0832 是 8 分辨率的 D/A 转换集成芯片。与微处理器完全兼容。这个 DA 芯片以 其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。 D/A 转换器由 8 位输入锁存器、8 位 DAC 寄存器、8 位 D/A 转换电路及转换控制电路构 成。 主要特性参数 1.分辨率为 8 位; 2.电流稳定时间 1us; 3.可单缓冲、双缓冲或直接数字输入; 4.只需在满量程下调整其线性度; 5.单一电源供电(+5V+15V ) ; 6.低功耗,20mW。 DAC0832 的工作方式 DAC0832 进行 D/A 转换,可以采用两种方法对数据进行锁存。 第一种方法是使输入寄存器工作在锁存状态,而 DAC 寄存器工作在直通状态。具体 地说,就是使 和 都为低电平,DAC 寄存器的锁存选通端得不到有效电平而直通;此外, 使输入寄存器的控制信号 ILE 处于高电平、 处于低电平,这样,当 端来一个负脉冲时, 就可以完成 1 次转换。 第二种方法是使输入寄存器工作在直通状态,而 DAC 寄存器工作在锁存状态。就是 使和为低电平,LE 为高电平,这样,输入寄存器的锁存选通信号处于无效状态而直通; 当和端输入 1 个负脉冲时,使得 DAC 寄存器工作在锁存状态,提供锁存数据进行转换。 图 2.4 DA 转换电路的设计 9 2.4.2 工作原理 如上图 2.4 所示,电压信号输入后经过 AD 转换输入到 AT89C51,由单片机通过 P1 口输出与转速相应的 8 位 BCD 编码,该编码通过 DAC0832 译成相应的模拟电压,经过 信号放大实现电动机转向与转速的控制。 2.5 总电路图 由各子模块设计给得出总硬件电路设计如下图 2.5 所示 图 2.5 硬件总电路图 11 第三章 系统软件设计 本系统编程部分工作采用 KELI-C51 语言完成,采用模块化的设计方法,与各子程序 做为实现各部分功能和过程的入口,完成键盘输入、按键识别、ADC0809 读取和 DAC0832 输出以及数码管显示等部分的设计。 3.1 系统主程序设计 N Y 图 3.1 主程序流程图 开始 系统初始化 按键是否按下 读取键值 将模拟电压转变为数字信号 调用显示子程序 显示速度 返回 加速 减速 电机加速 电机减速 主程序流程图如上图 3.1 所示。系统初始化后,主程序通过调用各子程序完成预定 动作,达到控制电机正反转及转速的目的。 4.1 按键扫描程序 按键扫描程序采用中断方式,按下键,完成延时去抖动、键码识别、按键功能执行。 要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按 键时,每进行一次增加/减少一定的占空比。按键扫描程序 流程图如下图 3.2 所示 N 、 Y 图 3.2 按键扫描程序流程图 由流程图设计程序如下: 开始 按键是否释放 延时去抖动 键码识别 按键功能执行 加/减占空比 返回 13 /*按键扫描*/ key() if(P12=0) /如果按下, while(!P12) /去抖动 display(); k=k; if(P16=0) /启动 while(P16=0); IE=0x8a; if(P13=0) /加速 while (P13=0); t+; if(t=5) t=5; if(P14=0) /减速 while(P14=0); t-; if(t #include“lcd1602.h“ #include“fonction.h“ uchar count=0,count2=1; uchar key_num=0; uint speed5;/ bit direct_flag=1,run_flag=0;/方向标志 运行标志 uchar pwmdata=50; sbit right=P27; sbit left=P26; /= void dsp() 25 if(run_flag) gotoxy(1,0);display_string(“running“);/ 显示电机的转动 去停止情况 else gotoxy(1,0);display_string(“ stop “); / if(direct_flag) gotoxy(12,0);display_string(“-“); /显示电机的转动 方向 箭头方向 else gotoxy(12,0);display_string(“=100)pwmdata=100; break; case 5: pwmdata-; if(pwmdata=100)pwmdata=0; break; key_num=0;/清零 /= void main() /-硬件初始化- EA=1; ET0=1; TMOD=0X51; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; /- TH1=0; TL1=0; TR1=1; /.- 27 EX0=1; IT0=1; /-控制端口初始化- right=0;left=0; init_lcd(); gotoxy(0,0); display_string(“ stop dt:- “);/stop 2 running 1 gotoxy(0,1); display_string(“ 000r/s 050% “);/2 11 /- for(;) count2+; if(count100)count2=1; if(run_flag=0)right=0;left=0; else if(count2=5) t=5; if(P14=0) /减速 while(P14=0); t-; if(t1) t=1; if(P15=0) /停止 while(P15=0); EA=0; P10=0; P11=0; ADC0809:/启动 AD 转换子程序/ void start_adc0804(void) /adcs=0; /允许进行 A/D 转换 adwr=0;delay_50us(2);adwr=1; /WR 由低变高

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论