精度高、稳定性好的89C51单片机直流电机转速测控系统设计

控制/MCU

1879人已加入

描述

引言

目前使用的电机模拟控制电路都比较复杂,测量范围与精度不能兼顾, 且采样时间较长, 难以测得瞬时转速。本文介绍的电机控制系统利用PWM控制原理, 同时结合霍尔传感器来采集电机转速, 并经单片机检测后在显示器上显示出转速值, 而单片机则根据传感器输出的脉冲信号来分析转速的过程量, 并超限自动报警。本系统同时设置有按键操作仪表, 可用于调节电机的转速。

1 系统方案的制定

直流电机控制系统主要是以C8051单片机为核心组成的控制系统, 本系统中的电机转速与电机两端的电压成比例, 而电机两端的电压与控制波形的占空比成正比, 因此, 由MCU内部的可编程计数器阵列输出PWM波, 以调整电机两端电压与控制波形的占空比, 从而实现调速。本系统通过霍尔传感器来实现对直流电机转速的实时监测。系统的设计任务包括硬件和软件两大部分,其中硬件设计包括方案选定、电路原理图设计、PCB绘制、线路调试; 软件设计包括内存空间的分配, 直流电机控制应用程序模块的设计, 程序调试、软件仿真等。

2 硬件设计

C8051是完全集成的混合信号系统级MCU芯片, 具有64个数字I/O引脚, 片内含有VDD监视器、看门狗定时器和时钟振荡器, 是真正能独立工作的片上系统, 并能快捷准确地完成信号采集和调节。同时也方便软件编程、干扰防制、以及前向通道的结构优化。

本单片机控制系统与外部连接可实时接收到外部信号, 以进行对外部设备的控制, 这种闭环系统可以较准确的实现设计要求, 从而制定出一个合理的方案, 图1所示是电机测控系统框图。

电机

图1 电机测控系统框图。

本系统先由单片机发出控制信号给驱动电机, 同时通过传感器检测电机的转速信号并传送给单片机, 单片机再通过软件将测速信号与给定转速进行比较, 从而决定电机转速, 同时将当前电机转速值送LED显示。此外, 也可以通过设置键盘来设定电机转速。系统中的转速检测装置由霍尔传感器组成, 并通过A/D转换将转速转换为电压信号, 再以脉冲形式传给单片机。这种设计方法具有频率响应高(响应频率达20 kHz以上)、输出幅值不变、抗电磁干扰能力强等特点。其中霍尔传感器输入为脉冲信号, 十分容易与微处理器相连接, 也便于实现信号的分析处理。单片机的T0口可对该脉冲信号进行计数。

设计时, 可通过单片机的P0.1~P0.5 五个接口来完成键盘的输入, P1.6口可完成鸣叫和报警, P2.0接电机, P2.1~P2.4接显示器的位选, P0口为显示器段选码, 其硬件连接电路如图2所示。

电机

图2 硬件连接电路图。

本系统的脉冲宽度调制(Pulse Width Modulation)原理是: 脉冲宽度调制波由一列占空比不同的矩形脉冲构成, 其占空比与信号的瞬时采样值成比例。该系统由一个比较器和一个周期为Ts的锯齿波发生器组成。脉冲信号如果大于锯齿波信号, 比较器输出正常数A, 否则输出0。图3所示为脉冲宽度调制系统的调制原理和波形图。

电机

图3 脉宽调制过程。

设样本τk为均匀脉冲信号, 它的第k个矩形脉冲可以表示为:

电机

其中, x {t} 是离散化信号; Ts是采样周期,τ0是未调制宽度, m是调制指数。现假设脉冲幅度为A, 中心在t=kTs处, τk在相邻脉冲间变化缓慢, 那么, 其Xp (t) 可表示为:

电机

其中,

电机

为电机角速度,结合式(2) 可见, 脉冲宽度信号可由信号x (t)加上一个直流成分以及相位调制波构成。当τ0《

因此, 脉冲宽度调制波可以直接通过低通滤波器进行解调。C8051单片机有2个12位的电压方式DAC, 每个DAC的输出摆幅为0 V~VREF, 对应的输入码范围是0x000~0xFFF。通过交叉开关配置可将CEX0~CEX4 配置到P2 端口, 这样, 改变PWM的占空比就可以调整电机速度。

LED显示采用动态扫描方式, 并用单片机I/O接口扩展输出, 再由三极管驱动各显示器的位选端并放大电流。独立式按键采用查询方式, 按键输入均采用低有效, 上拉电阻可用于保证在按键断开使其I/O口为高电平。单片机的I/O (P0.1~0.5)引脚所扩展的5个按键分别定义为: 设置、启动、移位、开始、+1功能。硬件电路确定以后, 电机转速控制的主要功能将依赖于软件来实现。

3 软件设计

本系统的软件程序的设计可分为5个步骤:

分别是综合分析并确定算法; 设计程序流程图;合理选择和分配内存单元以及工作寄存器; 编写程序; 上机调试运行程序。

应用软件的设计可采用模块化结构设计, 其优点是每个模块的程序结构相对简单, 且任务明确, 易于编写、调试和修改; 其次是程序可读性好, 对程序的修改可局部进行, 而其他部分可以保持不变, 这样便于功能扩充和版本升级; 另外, 对于使用频繁的子程序, 可以建立子程序库, 以便于多个模块调用; 最后是便于分工合作, 多个程序员可同时进行程序的编写和调试工作, 故可加快软件研制进度。

本程序采用8051单片机的C语言编程来实现。

在系统的程序设计中, 可采用模块化编程实现。

整个软件由主程序模块、转速测量模块、时钟模块、数据通信模块、动态显示模块等组成。各模块均采用结构化程序设计思想设计, 因而具有较强的通用性; 而采用模块化程序结构则可使软件易于调试、维护和移植。

系统软件可根据硬件电路的功能与AT89C51各管脚的连接情况对软件进行设计。以便明确各引脚所要完成的功能, 从而方便进行程序设计和内存地址的分配, 最终完成程序模块化设计。

本系统为直流电机测控系统。根据系统性能要求, 除复位电路外, 还应该设置一些功能键:

包括启动键、设置键、确定键、移位键、加1键等。由于本系统中的单片机还有闲置的I/O口线,而系统要求所设置的按键数量也不多, 因此, 可以采用独立式按键结构。

根据直流电机控制系统的结构, 该电机转速控制系统为一简单的应用系统, 可以采用顺序的设计方法。这种设计由主程序和若干个中断服务程序构成, 整个电机转速测控系统可分成六大模块, 每个模块完成一定的功能。图4所示是根据电路图确定的程序设计模块图。

电机

图4 直流电机控制软件设计模块图。

其中主程序模块主要设置主程序的起始地址、中断服务程序的起始地址、有关内存单元及相关部件的初始化和一些子程序调用等。其主程序流程图如图5所示。

电机

图5 主程序流程图。

对于定时器T1 (1s) 子程序的设计, 其实在单片机中, 定时功能既可以由硬件(定时/计数器) 实现, 也可以通过软件定时程序来实现。软件延时程序要占用CPU的时间, 因而会降低CPU的利用率。而硬件定时则通过单片机内的定时器来定时, 而且, 定时器启动以后可与CPU并行工作, 故不占用CPU的时间, 从而可使CPU具有较高的工作效率。

本系统采用硬件定时和软件定时并用的方式, 即用T1溢出中断功能来实现10 ms定时, 而通过软件延时程序实现1 ms定时。其中T1定时器中断服务程序的功能主要实现转速值的读入、检测与缓存处理。

对于定时器T1的计数初值计算, 由于本系统采用的是6 MHz的时钟频率, 所以, 一个机器周期时间是2 μs。这样, 根据T1定时器产生500 μs的定时, 便可以计算出计数初值。

本文设计的转速测控系统的工作方式寄存器TMOD=00010000B, T1定时器以工作方式2来完成定时。

4 程序调试

程序调试可在伟福仿真软件上进行编制, 该软件支持脱机运行, 纯软件环境可模拟单步、跟踪、全速、断点; 源文件仿真、汇编等, 并可支持多文件混合编程。仿真调试后的目标程序可以固化到EPROM, 然后用专门的程序烧写器对89C51单片机进行程序烧写。

5 结束语

本设计采用C51进行编程, 程序占用存储器单元少, 执行速度快, 并能够准确掌握执行时间, 实现精细控制。同时由于采用89C51为CPU,并利用噪声抵抗能力较强的PWM控制技术、串行口扩展显示器接口和I/O口扩展键盘, 因而可省去片外RAM, 而且体积小, 功能全, 小巧灵活,操作方便, 又可安装在工作现场单独工作。因而具有较大的实用价值和良好的应用前景。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分