单片机控制直流电机并测速(电压AD、DA转换以及pwm按键调速正转反转)

合集下载

单片机课设PWM控制微型直流电机调速、正反转、启停

单片机课设PWM控制微型直流电机调速、正反转、启停
(2)有刷直流电动机:又可分为永磁直流电动机和电磁直流电动机。
永磁直流电动机划分:稀土永磁直流电动机、铁氧体永磁直流电动机和铝镍钴永磁直流电动机。稀土永磁直流电动机:体积小且性能更好,但价格昂贵,主要用于航天、计算机、井下仪器等;铁氧体永磁直流电动机:由铁氧体材料制成的磁极体,廉价,且性能良好,广泛用于家用电器、汽车、玩具、电动工具等领域;铝镍钴永磁直流电动机:需要消耗大量的贵重金属、价格较高,但对高温的适应性好,用于环境温度较高或对电动机的温度稳定性要求较高的场合。
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一切就绪。

单片机实现 控制直流电机调速

单片机实现 控制直流电机调速

/********************************************************************* 名称: 电机调速.c* 功能: 通过P1.0口来控制直流电机的旋转的快慢/***********************************************************************/#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit s19 = P3^2; //定义调速的按键sbit PWM = P1^0; //定义直流电机的控制端口uchar CYCLE; //定义周期uchar PWM_ON ; //定义低电平时间void Delay(uint i){uchar x,j;for(j=0;j<i;j++)for(x=0;x<=148;x++);}void Time0(void){TMOD |=0x01; //定时器设置TH0=(65536-1000)/256;TL0=(65536-1000)%256; //定时1mSIE= 0x82; //打开中断TR0=1; //定时器打开}main(){uchar PWM_Num; //定义档位Time0();CYCLE = 10; //时间可以调整这个是10步调整周期10ms 8位PWM就是256步PWM = 0;while(1){if(!s19){Delay(15);if(!s19){ Delay(15);if(s19)PWM_Num++; //按一下P3.2口,就给直流电机换一个档位if(PWM_Num==4){PWM_Num=0;}switch(PWM_Num){case 0:P0=0x06; PWM_ON=0; break;//低电平时长//给P0口赋值,是让P0口显示:1,2,3,4 这四个档位case 1:P0=0x5B; PWM_ON=2;break;case 2:P0=0x4F; PWM_ON=4;break;case 3:P0=0x66; PWM_ON=6;break;default:break;}}}}}/********************************//* 定时中断*//********************************/void tim(void) interrupt 1 using 1{static unsigned char count;TH0=(65536-1000)/256;TL0=(65536-1000)%256;//定时1mSif(count==PWM_ON){PWM = 1; //直流电机转}count++;if(count == CYCLE){count=0;if(PWM_ON!=0) //如果左右时间是0 保持原来状态{PWM = 0; //直流电机不转}}}。

单片机实现直流电机测速和正反转

单片机实现直流电机测速和正反转
系统硬件原理图见附件原理图。
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资源较多。

用单片机控制直流电机正反转的系统设计

用单片机控制直流电机正反转的系统设计

用单片机控制直流电机正反转的系统设计一、系统设计内容用单片机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直流电动机调速控制系统方案

单片机课程设计PWM直流电动机调速控制系统方案

单片机原理及应用—— P W M直流电机调速控制系统概括直流电动机具有良好的启动性能和调速特性。

具有起动转矩大、调速平稳、经济大范围、调速容易、调速后效率高等特点。

本文设计的直流电机调速系统主要由51单片机、电源、H桥驱动电路、LED 液晶显示器、霍尔测速电路和独立按键组成的电子产品组成。

电源采用78系列芯片,采用PWM波方式实现电机+5V、+15V调速,PWM为脉宽调制,通过51单片机改变占空比实现。

通过独立的按键实现电机的启停、调速和转向的手动控制,LED实现测量数据(速度)的显示。

电机转速采用霍尔传感器检测输出方波,通过51单片机统计1秒内方波脉冲个数,计算电机转速,实现直流电机的反馈控制。

关键词:直流电机调速; H桥驱动电路; LED显示屏; 51单片机目录摘要2摘要错误!未定义书签。

目录3第 1 章引言41.1 概述41.2 国外发展现状41.3 要求51.4 设计目的及6第 2 章项目论证与选择72.1 电机调速模块72.2 PWM调速工作模式72.3 PWM脉宽调制方式错误!未定义书签。

2.4 PWM 软件实现错误!未定义书签。

第三章系统硬件电路设计83.1 信号输入电路83.2 电机PWM驱动模块电路9第 4 章系统的软件设计104.1 单片机选型104.2 系统软件设计分析10第 5 章 MCU 系统集成调试135.1 PROTEUS 设计与仿真平台错误!未定义书签。

18传统开发流程对比错误!未定义书签。

第一章简介1.1 概述现代工业的电驱动一般要求部分或全部自动化,因此必须与各种控制元件组成的自动控制系统相联动,而电驱动可视为自动电驱动系统的简称。

在这个系统中,生产机械可以自动控制。

随着现代电力电子技术和计算机技术的发展以及现代控制理论的应用,自动电驱动正朝着计算机控制的生产过程自动化方向发展。

以实现高速、高质量、高效率的生产。

在大多数集成自动化系统中,自动化电力牵引系统仍然是不可或缺的组成部分。

基于C51单片机的直流电机PWM调速控制(包含原理图及C源代码)

基于C51单片机的直流电机PWM调速控制(包含原理图及C源代码)

基于C51单片机的直流电机PWM调速控制--SQ这是最近一阶段自己学习所获,现分享与大家。

这里采用A T89C52单片机做主控制芯片,实现两路直流电机的PWM调速控制,另外还可以实现转向、显示运行时间、显示档位等注:考虑小直流电机自身因素,调速范围仅设有四级电路原理图:C语言程序源代码:/******************** 硬件资源分配*********************/数码管:显示电机状态(启停、正反、速度)、运行时间、是否转弯按键:K4 启动/暂停K3 正反转/转弯允许K2 加速/左转/运行时间清零K1 减速/右转/停止定时器:T0 数码管动态显示,输出PWMT1 运行时间记录********************************************************//*******主程序文件PWM.c******/#include <reg52.h>#include "Afx.h"#include "Config.c"#define CIRCLE 5 //脉冲周期//按键定义uchar key,key_tmp=0, _key_tmp=0;//显示定义uchar LedState=0xF0; //LED显示标志,0xF0不显示,Ox00显示uchar code LED_code_d[4]={0xe0,0xd0,0xb0,0x70}; //分别选通1、2、3、4位uchar dispbuf[4]={0,0,0,0}; //待显示数组uchar dispbitcnt=0; //选通、显示的位uchar mstcnt=0;uchar Centi_s=0,Sec=0,Min=0; //分、秒、1%秒//程序运行状态标志bit MotState=0; //电机启停标志bit DirState=0; //方向标志0前,1后uchar State1=-1;uchar State2=-1;uchar State3=0;uchar State4=-1;uchar LSpeed=0;uchar RSpeed=0;//其他uint RunTime=0;uint RTime_cnt=0;uint LWidth;uint RWidth; //脉宽uint Widcnt=1;uint Dispcnt;//函数声明void key_scan(void);void DisBuf(void);void K4(void);void K3(void);void K2(void);void K1(void);void disp( uchar H, uchar n );void main(void){P1|=0xF0;EA=1;ET0=1;ET1=1;TMOD=0x11;TH0=0xFC;TL0=0x66; //T0,1ms定时初值TH1=0xDB;TL1=0xFF; //T1,10ms定时初值TR0=1;Widcnt=1;while(1){key_scan();switch(key){case 0x80: K1(); break;case 0x40: K2(); break;case 0x20: K3(); break;case 0x10: K4(); break;default:break;}key=0;DisBuf();LWidth=LSpeed;RWidth=RSpeed;}}//按键扫描**模拟触发器防抖void key_scan(void){key_tmp=(~P3)&0xf0;if(key_tmp&&!_key_tmp) //有键按下{key=(~P3)&0xf0;}_key_tmp=key_tmp ;}//按键功能处理/逻辑控制void K4(void){if(State4==-1){State4=1;TR1=1;dispbuf[3]=1;LedState=0x00; //打开LEDMotState=1; //打开电机LSpeed=1;RSpeed=1; //初速设为1}else if(State4==1){State4=0;TR1=0;MotState=0; //关闭电机}else if(State4==0){MotState=1;if(State3==0){State4=1;TR1=1;}else if(State3==1){LSpeed=2;RSpeed=2;}}}void K3(void){if(State4==1)DirState=!DirState;if(State4==0){if(State3==0){State3=1; //可以转向标志1可以,0不可以TR1=1;dispbuf[3]=9;MotState=1;LSpeed=2;RSpeed=2;}else if(State3==1){State3=0;TR1=0;dispbuf[3]=0;MotState=0;}}}void K2(void){if(State4==1&&LSpeed<4&&RSpeed<4){LSpeed++;RSpeed++;}else if(State4==0){if(State3==0){//State4=-1;//LedState=0xF0;MotState=0;Sec=0;Min=0;}else if(State3==1&&LSpeed<4&&RSpeed<4){//TurnState=0;LSpeed=2;RSpeed++;}}}void K1(void){if(State4==1&&LSpeed>1&&RSpeed>1){LSpeed--;RSpeed--;}else if(State4==0){if(State3==0){State4=-1;LedState=0xF0;MotState=0;}else if(State3==1&&LSpeed<4&&RSpeed<4){//TurnState=1;LSpeed++;RSpeed=2;}}}//显示预处理void DisBuf(void){if(RTime_cnt==100){Sec++;RTime_cnt=0;}if(Sec==60){Min++;Sec=0;}if(State4==1){dispbuf[0]=Sec%10;dispbuf[1]=Sec/10;dispbuf[2]=Min;if(!DirState) //正转dispbuf[3]=LSpeed;if(DirState) //反转dispbuf[3]=LSpeed+4;}if(State4==0){if(State3==0){dispbuf[0]=Sec%10;dispbuf[1]=Sec/10;dispbuf[2]=Min;dispbuf[3]=0;}if(State3==1){dispbuf[0]=RSpeed;dispbuf[1]=LSpeed;dispbuf[2]=Min;dispbuf[3]=9;}}}//LED驱动void disp( uchar H, uchar n ){P1=n;P1|=LedState ;P1|=LED_code_d[H];}//T0中断**显示/方波输出void Time_0() interrupt 1{TH0=0xFC;TL0=0x66;Widcnt++;Dispcnt++;//电机驱动/方波输出if(Widcnt>CIRCLE){Widcnt=1;}if(Widcnt<=LWidth)LMot_P=!DirState&&MotState;elseLMot_P=DirState&&MotState;LMot_M=DirState&&MotState;if(Widcnt<=RWidth)RMot_P=!DirState&&MotState;elseRMot_P=DirState&&MotState;RMot_M=DirState&&MotState;//显示if(Dispcnt==5){disp(dispbitcnt,dispbuf[dispbitcnt]);dispbitcnt++;if(dispbitcnt==4){dispbitcnt=0;}Dispcnt=0;}}//T1中断**运行时间void Time_1() interrupt 3{TH1=0xDB;TL1=0xFF;RTime_cnt++;}/******配置文件Afx.h******/#ifndef _AFX_#define _AFX_typedef unsigned char uchar;typedef unsigned int uint;typedef unsigned long ulong;#endif/******IO配置文件Config.c******/#ifndef _Config_#define _Config_#include "Afx.h"#include <reg52.h>//显示定义sbit led=P3^2;//电机引脚定义sbit LMot_P=P2^2; sbit LMot_M=P2^3; sbit RMot_P=P2^0; sbit RMot_M=P2^1;#endif。

单片机控制的直流电机正反转和加速减速C程序

单片机控制的直流电机正反转和加速减速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;}结论通过上述示例程序,我们可以实现通过单片机控制直流电机的正反转和加速减速功能。

读者可以根据实际需求进行相应的参数调整和功能扩展。

请注意,上述示例程序仅为演示目的,具体的引脚配置和控制方式需根据实际硬件和单片机型号进行调整。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理及应用课程设计报告书题目:用单片机控制直流电动机并测量转速******学号:**********专业:电子信息工程指导老师:***设计时间: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 方案设计为了使用单片机对电动机进行控制,对单片机的基本要求应有足够快点速度;有捕捉功能。

总体设计方案如图所示图2.1总体设计方案(1)键盘向单片机输入相应控制指令,由单片机通过P3.0口输出信号,该编码通过DAC0832译成相应的模拟电压,经过信号放大实现电动机转向与转速的控制。

(2)可变电阻接ADC0808转变成相应电压的数字信号,单片机通过P1口读取,再由P2口输出与转速相应的8位BCD编码与DAC0832相接。

电动机的运转状态则通过四位数码管显示出来。

(3)电机的测速显示,采用光电传感器测量电机的转速,在设计中,在电机转轴末梢上安装纸卡,在纸卡上留出两个孔。

电机转轴每转一圈,发射二极管发出的光便通过纸卡的孔到达接受二极管,就可在接受二极管上产生相应的脉冲信号。

计算下1s内输出的脉冲信号的个数,把计数的结果取一半,就可得到电动机的转动速度。

(4)通过Max7219驱动器驱动4位共阴极LED灯,这样节省了许多I/O口。

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 单片机最小系统的设计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)ADC0808ADC0808是美国国家半导体公司生产的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上升沿将逐次逼近寄存器复位。

下降沿启动 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信号即有效,把转换数据送上数据总线,供单片机接受。

图3.3 AD转换电路的设计(2)工作原理如图3.3所示,外部电源通过滑动变阻器向ADC0808输入控制电压信号,经A/D处理后,输入到AT89C51中,交由AT89C51处理,进行下一步动作。

3.4 D/A转换模块(1)DAC0832DAC0832是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寄存器工作在锁存状态,提供锁存数据进行转换。

图3.4 DA转换电路的设计(2)工作原理如上图3.4所示,电压信号输入后经过AD转换输入到AT89C51,由单片机通过P1口输出与转速相应的8位BCD编码,该编码通过DAC0832译成相应的模拟电压,经过信号放大实现电动机转向与转速的控制。

3.5电机转速测量电路图3.5光电传感器测速设计采用光电传感器测量电机的转速,在设计中,在电机转轴末梢上安装纸卡,在纸卡上留出两个孔。

电机转轴每转一圈,发射二极管发出的光便通过纸卡的孔到达接受二极管,就可在接受二极管上产生相应的脉冲信号。

计算下1s内输出的脉冲信号的个数,把计数的结果取一半,就可得到电动机的转动速度。

3.6 显示电路(1) MAX7219MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的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。

相关文档
最新文档