计算机控制系统课程设计 直流电机测速调速系统

合集下载

直流电机测速系统课程设计

直流电机测速系统课程设计

西安邮电学院单片机课程设计报告书题目:电机测速系统院系名称:自动化学院学生姓名:专业名称:自动化班级:自动XXXX班时间:20XX年X月X日至 X月XX日电机测速系统一、设计目的随着科技的飞速发展,计算机应用技术日益渗透到社会生产生活的各个领域,而单片机的应用则起到了举足轻重的作用。

在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显示其转速及瞬时速度。

为了能精确地测量转速,还要保证测量的实时性,要求能测得瞬时转速。

因此设计一种较为理想的电机测速控制系统是非常有价值的。

二、设计要求1.用按键控制电机起停;2.电机有两种速度,通过按键来改变速度;3.通过数码管显示每分钟或每秒的转速。

四、设计方案及分析(包含设计电路图)1. STC89C52单片机介绍STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。

该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

(1)单片机最小系统单片机最小系统电路如图所示,由主控器STC89C52、时钟电路和复位电路三部分组成。

单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。

图单片机最小系统(2)晶振电路(3)复位电路复位是单片机的初始化操作。

其主要功能是把PC 初始化为0000H ,使单片机从0000H 单元开始执行程序。

除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。

2. ST151光电转速传感器是根据光敏二极管工作原理制造的一种感应接收光强度变化的电子器件,当它发出的光被目标反射或阻断时,则接收器感应出相应的电信号。

计算机控制系统课程设计直流电机测速调速系统

计算机控制系统课程设计直流电机测速调速系统

XI`AN TECHNOLOGICAL UNIVERSITY课程名称直流电机测速调速实验专业:电气工程及其自动化班级:姓名:学号:指导教师:秦刚成绩:2016年7月11日计算机控制系统课程设计——直流电机测速调速系统一、选定题目:电机速度控制系统二、设计目的和要求:计算机控制技术的课程设计是一个综合运用知识的过程,它不仅需要微型机控制理论、程序设计方面的基础知识,而且还需要具备一定的生产工艺知识。

课程设计包括确定控制任务、系统总体方案设计、硬件系统设计、控制软件的设计等,以便使学生掌握计算机控制系统设计的总体思路和方法。

三、功能需求:1、基本功能:(1)该系统使用实验箱的直流电机、1602 液晶、 DA、键盘等模块完成设计;(2)直流电机通过DA模块使用PWM方式进行驱动及调速;(3)能够通过 1602 液晶显示当前转速及 PWM占空比;(4)通过按键控制电机的启动和停止。

2、扩展功能:(1)能够通过按键手动输入目标转速(转/秒),启动电机后控制电机稳定在目标转速;(2)使用 1602 液晶实时显示目标转速、当前转速及启停状态(on/off )。

四、实验思路:本直流电机调速系统以单片机系统为依托,根据 PWM调速的基本原理,控制电动机的转速为依据,实现对直流电动机的调速,并通过单片机控制速度的变化。

本设计的直流电机调速系统主要是由硬件和软件两大部分组成。

硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。

而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动对电机速度的有效控制。

用51 来产生 PWM波就必须要用软件编程的方法来模拟。

方法大概可以分为软件延时和定时器产生两种方法。

本次课程设计我们采用定时器产生PWM方波。

定时器产生PWM:这种方法利用了定时器溢出中断,在中断服务程序改变电平的高低,在程序较复杂、多操作时仍能输出较准确的pwm波形。

计算机控制系统课程设计 直流电机测速调速系统

计算机控制系统课程设计 直流电机测速调速系统

XI`AN TECHNOLOGICAL UNIVERSITY课程名称直流电机测速调速实验专业: 电气工程及其自动化班级:姓名:学号:指导教师: 秦刚成绩:2016 年7 月11日计算机控制系统课程设计——直流电机测速调速系统一、选定题目:电机速度控制系统二、设计目的与要求:计算机控制技术的课程设计就是一个综合运用知识的过程,它不仅需要微型机控制理论、程序设计方面的基础知识,而且还需要具备一定的生产工艺知识。

课程设计包括确定控制任务、系统总体方案设计、硬件系统设计、控制软件的设计等,以便使学生掌握计算机控制系统设计的总体思路与方法。

三、功能需求:1、基本功能:(1)该系统使用实验箱的直流电机、1602液晶、DA、键盘等模块完成设计;(2)直流电机通过DA模块使用PWM方式进行驱动及调速;(3)能够通过1602液晶显示当前转速及PWM占空比;(4)通过按键控制电机的启动与停止。

2、扩展功能:(1)能够通过按键手动输入目标转速(转/秒),启动电机后控制电机稳定在目标转速;(2)使用1602液晶实时显示目标转速、当前转速及启停状态(on/off)。

四、实验思路:本直流电机调速系统以单片机系统为依托,根据PWM调速的基本原理,控制电动机的转速为依据,实现对直流电动机的调速,并通过单片机控制速度的变化。

本设计的直流电机调速系统主要就是由硬件与软件两大部分组成。

硬件部分就是前提,就是整个系统执行的基础,它主要为软件提供程序运行的平台。

而软件部分,就是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动对电机速度的有效控制。

用51来产生PWM波就必须要用软件编程的方法来模拟。

方法大概可以分为软件延时与定时器产生两种方法。

本次课程设计我们采用定时器产生PWM方波。

定时器产生PWM:这种方法利用了定时器溢出中断,在中断服务程序改变电平的高低,在程序较复杂、多操作时仍能输出较准确的pwm波形。

基于STM32的直流电机PID调速系统设计

基于STM32的直流电机PID调速系统设计

《计算机控制技术课程设计》题目:基于STM32的直流电机PID调速学院:计算机与电子信息学院专业:电气工程及其自动化班级:电气12-5 学号:姓名:任课教师:完成时间:——基于STM32的直流电机PID调速摘要电机转速控制在运动控制系统中占有至关重要的地位,本设计将电机转速控制作为研究对象;以PID为基本控制算法,STM32F103单片机为控制核心,产生受PID算法控制的PWM脉冲实现对直流电机转速的控制。

同时利用光电传感器将电机速度转换成脉冲频率反馈到单片机中,实现转速闭环控制,达到转速无静差调节的目的。

在系统中采320×240TFTLCD显示器作为显示部件,通过4个按键通过界面切换方式设置P、I、D、V四个参数和正反转控制,启动后可以通过显示部件了解电机当前的运行状态和系统的CPU温度。

该系统控制精度高,具有很强的抗干扰能力。

关键词:PID 直流电机反馈调节Based on the STM32 PID speed control of dc motorAbstractMotor speed control occupies a crucial position in the motion control system, the design of the motor speed control for the study; in the basic PID control algorithm, STM32F103 microcontroller core, by the PID control algorithm generates a PWM pulse to achieve DC speed control. At the same time the use of photoelectric sensors to convert the motor speed to pulse frequency feedback to the microcontroller to achieve closed-loop speed control, to speed static error adjustment purposes. Mining 320 × 240TFTLCD monitor as a display unit in the system, through four key settings P, I, D, V four parameters and reversing control through the interface switching mode, start to understand the current state of the motor and the system through the display unit CPU temperature. The system control and high precision, has a strong anti-jamming capability.Keywords: PID DC motor feedback regulation目录1. 绪论 (1)研究背景与意义 (1)本文主要研究方法 (1)2. 设计方案与论证 (2)系统设计方案 (2)控制器模块设计方案 (2)3. 系统硬件电路设计 (3)整体电路设计 (3)整体理论 (3)整体简单结构图和资源分配图 (3)最小单片机系统设计 (4)STM32F103复位电路 (6)电源电路 (6)电机驱动电路设计 (7)光电码盘编码器电路设计 (7)显示电路设计 (8)按键电路设计 (10)4. 系统软件设计 (10)PID算法 (10)PID参数整定方法 (11)电机速度采集算法 (12)程序流程图 (12)5. 系统调试 (13)软件调试 (13)系统测试与分析 (14)6. 总结与展望 (15)参考文献 (16)附录一部分程序源程序 (17)附录二系统界面实物图和PCB图 (20)1.绪论1.1研究背景与意义电动机在现代的工业中,是主要的驱动设备,尤其是直流电动机,由于它的平滑调速性和结构上的简单,使其成为许多电器,如洗衣机,电梯等的驱动。

电机调速控制器计算机控制课程设计

电机调速控制器计算机控制课程设计

微机控制课程设计题目:直流电机调速控制器班级:姓名:学号:指导老师:日期:目录目录┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈1中文文摘┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈2英文文摘┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈2 1.方案比较┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3 1.1总体方案┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3 1.2显示部分的比较与选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3 1.3电机的比较和选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3 1.4测速方案的比较和选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3 1.5键盘方案的比较和选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4 1.6复位电路的比较和选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4 2.系统设计及分析计算┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4 2.1整体设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4 2.2系统电源设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈5 2.3显示电路的设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈6 2.4键盘设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈8 2.5正反转控制电路(H桥)┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈9 2.6霍尔测速电路设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈9 2.7复位电路设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈10 3.程序设计流程图┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11 4.调试过程┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11 4.1测试方法与测试仪器┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11 4.1.1测试方法┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11 4.1.2测试仪器┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈12 4.2测试数据及结果分析┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈125.设计总结┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈13 5.1设计内容完成情况┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈13 5.2硬件部分┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈13 5.3软件部分┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈13【参考文献】┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈14附件一(系统设计总电路图)┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈15附件二系统程序┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈16关键词:单片机调速直流电动机PWM摘要与交流电动机相比,直流电动机结构复杂,成本高,运行维护困难。

单片机课程设计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 概述现代工业的电驱动一般要求部分或全部自动化,因此必须与各种控制元件组成的自动控制系统相联动,而电驱动可视为自动电驱动系统的简称。

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

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

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

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

计算机控制课程设计 直流电机速度控制

计算机控制课程设计 直流电机速度控制

计算机控制课程设计直流电机速度控制成绩题目直流电机速度控制课程名称计算机控制系统设计院部名称机电工程学院专业班级学生姓名学号课程设计地点课程设计学时指导教师金陵科技学院教务处制-目录摘要..............................................................II 1.绪论.............................................................1 2.设计方案 (2)2.1 直流电机调速原理 (2)2.2 PWM基本原理 (3)2.3 设计思路 (4)3.硬件电路的设计 (5)3.1 AT89C51模块 (5)3.2 直流电机模块 (7)3.3 显示设计模块 (8)3.4 驱动模块L298 (9)3.5 按键模块 (10)3.6 整体硬件电路图 (10)4.系统软件的设计 (11)4.1 系统流程图: (11)4.2 源代码: ................................................... 11 5.结果测试......................................................... 16 结论............................................................. 19 参考文献........................................................... 20 附录一: (21)I直流电机速度控制摘要近年来~随着计算机技术、电力电子技术和控制技术的发展~交流调速系统发展快~在许多场合正逐渐取代直流调速系统。

但是就目前来看~直流调速系统仍然是自动调速系统的主要形式。

对直流电机的速度调节~我们可以采用多种办法~本文在给出直流电机调整和PWM实现方法的基础上~提供一种用单片机软件实现PWM 调速的方法~脉宽调制控制方法在直流调速中获得了广泛的应用~对基于51系列单片机实现直流电机调速系统进行研究和设计~能够在不同的按钮作用下分别实现直流电机的停止、加速、减速、正转、反转控制,能够实现基于51系列单片机的直流电机PWM的调速设计。

计算机控制系统课程设计 直流电机测速调速系统

计算机控制系统课程设计 直流电机测速调速系统

XI`ANTECHNOLOGICALUNIVERSITY程序设系统总体方法。

1(1)该系统使用实验箱的直流电机、1602液晶、DA、键盘等模块完成设计;(2)直流电机通过DA模块使用PWM方式进行驱动及调速;(3)能够通过1602液晶显示当前转速及PWM占空比;(4)通过按键控制电机的启动和停止。

2、扩展功能:(1)能够通过按键手动输入目标转速(转/秒),启动电机后控制电机稳定在目标转速;(2)使用1602液晶实时显示目标转速、当前转速及启停状态(on/off)。

四、实验思路:本直流电机调速系统以单片机系统为依托,根据PWM调速的基本原理,控制电动机的转速为依据,实现对直流电动机的调速,并通过单片机控制速度的变化。

本设计的直流电机调速系统主要是由硬件和软件两大部分组成。

硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。

而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动对电机速度的有效控制。

用51来产生PWM波就必须要用软件编程的方法来模拟。

方法大概可以分为软件延时和定时器DA121602C字符型液晶:CS:片选信号,低电平有效;RS:选择读写的是指令或数据,L:指令,H:为数据。

RW:读写控制端,L:写操作,H:读操作。

12864J图形点阵液晶:CS:片选信号,低电平有效;CS1/2:左右半屏使能选择,H:左半屏,L:右半屏;RS:选择读写的是指令或数据,L:指令,H:为数据。

RW:读写控制端,L:写操作,H:读操作。

12864M图形点阵液晶:JP6的16脚是空脚,JP6的15脚是PSB:PSB接高电平,CPU与液晶使用并行接口连接,连接方法与12864J完全相同;PSB接低电平,CPU与液晶使用串行接口连接,此时,RS、RW、E与CPU的I/O管脚相连(STARES59PA才有该功能)。

(1602C字符型液晶)(12864J图形点阵液晶)2)DAC0832数模转换CS:片选,低有效;OUT:转换电压输出;OUT1:经功放电路的电压输出;主要特性:与MCS-51?兼容·;4K字节可编程FLASH存储器;寿命:1000写/擦循环;?数据保留时间:10年全静态工作:0Hz-24MHz??;?三级程序存储器锁定;128×8位内部RAM??;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;?低功耗的闲置和掉电模式;?片内振荡器和时钟电路;直流电机转速测量/控制5)使用光电开关测速CTRL:控制电压(DAC0832经功放电路提供)输入;REV:光电开关脉冲输出(用于转速测量);3、计算机控制技术的课程设计相比硬件的课程设计,简直难了不止一个档次,作为主要的编程人员,当我实际要去控制一个物体的时候,我才知道自己以前学的知识有多么的不牢固,不过真真正正的去做一个实物控制程序的时候,才能真切的体会到以前书本上学的知识是如何运用到实际的,我基本上可以说是为了应付考试勉勉强强学了一些,这次实际做到项目设计后,才理解其真正的含义。

直流电动机调速计算机控制系统设计

直流电动机调速计算机控制系统设计

2016届课程设计《直流电动机调速计算机控制系统》课程设计说明书学生姓名李真学号所属学院信息工程学院专业计算机科学与技术班级计算机16-2指导教师丛申教师职称讲师摘要当今,自动化控制系统已经在各行各业得到了广泛的应用和发展,而直流驱动控制作为电气传动的主流在现代化生产中起着主要作用。

长期以来,直流电动机因其转速调节比较灵活,方法简单,易于大范围平滑调速,控制性能好等特点,一直在传动领域占有统治地位。

它广泛应用于数控机床、工业机器人等工厂自动化设备中。

随着现代化生产规模的不断扩大,各个行业对直流电机的需求愈益增大,并对其性能提出了更高的要求。

为此,研究并制造高性能、高可靠性的直流电机控制系统有着十分重要的现实意义。

本论文论述了单片机直流电机控制系统设计和实现方法。

而我们组是进行分工来实现的,在主任务下分成各个小任务,我和其他两个伙伴负责PCB制板。

接下来为大家介绍我们的主要工程及具体的PCB制板。

1. 绪论1.1 直流电机的发展直流电机问世已有一百四十多年的历史。

在设计和制造技术上的进步,新材料、新技术的应用,整流电源的普及,促进了一般工业用直流电机的用途不断扩大,品种繁多。

从小至数瓦,大到万余千瓦,正广泛地用于冶金、矿山、煤炭、起重运输、船舶、机床制造、纺织印染等各个部门中,特别是近几年电子计算技术已广泛应用当今,自动化控制系统已经在各行各业得到了广泛的应用和发展,而直流调速控制作为电气传动的主流在现代化生产中起着主要作用,无论是在工农业生产、交通运输、国防、航天航空、医疗卫生、商务与办公设备、还是在日常生活中的家用电器都大量使用着各式各样的电气传动系统,其中许多系统有调速的要求:如车辆、电梯、机床、造纸机械等等。

为了满足运行、生产、工艺的要求往往需要对另一类设备如风机、水泵等进行控制:为了减少运行损耗,节约电能也需要对电机进行调速。

电机调速系统由控制部分、功率部分和电动机三大要素组成一个有机整体。

计算机控制技术课程设计(直流电机PWM调速系统设计)

计算机控制技术课程设计(直流电机PWM调速系统设计)
方案二:AVR 单片机中的 MEGA16 拥有方案一的优点,而且其内部就有 PWM 波的调速功 能,相当方便,而且 I/O 口也足够使用。
单片机是系统的核心元件,起着控制直流电机所有运行状态和处理显示数据的作用。 本系统设计的主控芯片选择 ATMEGA16 可以完成实现各项功能。
1
武汉理工大学《计算机控制技术》课程设计说明书
在 PWM 驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要 改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空 比”来达到改变平均电压大小的目的,从而来控制电动机的转速。也正因为如此,PWM 又 被称为“开关驱动装置”。如下图所示:
图 2 PWM 波原理图 设电机始终接通电源时,电机转速最大为 Vmax,设占空比为 D= t1 / T,则电机的平均 速度为 Va = Vmax * D,其中 Va 指的是电机的平均速度;Vmax 是指电机在全通电时的最大速度; D = t1 / T 是指占空比。由上面的公式可见,当我们改变占空比 D = t1 / T 时,就可以 得到不同的电机平均速度 Vd,从而达到调速的目的。严格来说,平均速度 Vd 与占空比 D 并非严格的线性关系,但是在一般的应用中,我们可以将其近似地看成是线性关系。 由此我们可以近似的认为直流电机两端电压值与转速成正比,并可以借此原理算出转 速和电压值(即 PWM 波的频率值)的比例关系。
经过上述分析比较,决定使用 L298 连接电路作为电机驱动模块。
2 系统硬件电路和软件设计
2.1 单片机输出 PWM 波设计
2.1.1 PWM 控制直流电机的基本原理
PWM(即脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两端的
2

直流电机微型计算机速度控制系统的设计

直流电机微型计算机速度控制系统的设计

直流电机微型计算机速度控制系统的设计设计一个直流电机微型计算机速度控制系统涉及到电机的速度控制、传感器的输入和计算机的输出等多个方面。

下面是一个1200字以上的设计系统的示例:引言直流电机广泛应用于工业、家用电器、汽车等领域,而微型计算机则被广泛应用于控制系统中。

本文将设计一个直流电机微型计算机速度控制系统,通过传感器的反馈信号和计算机的输出来实现对电机速度的精确控制。

1.系统框架本系统的框架包括电机控制模块、传感器模块和微型计算机模块。

电机控制模块通过电机驱动电路控制电机的速度,传感器模块采集电机的转速信号,微型计算机模块负责接收传感器信号并输出电机的控制信号。

2.传感器选择与接口设计传感器用于检测电机的转速信号,常用的传感器有光电传感器、霍尔传感器等。

在本系统中,选择霍尔传感器,因其高精度、低成本、易安装等特点。

在电机旋转中,霍尔元件将会产生电压脉冲信号,通过输入电路将信号转化为计算机可接受的数字信号。

3.电机控制模块设计为了实现对电机的速度控制,电机控制模块需要具备以下功能:3.1电压调节功能:通过调整电压大小控制电机的输出功率,从而实现对速度的控制。

3.2内部电流控制:在电机启动和运行时,需要通过电流传感器实时监测电机的工作电流并进行控制,以保证电机运行的稳定性和安全性。

3.3速度反馈控制:通过传感器模块反馈的转速信号,实时调节电机的供电电压,使其达到所需控制速度。

4.微型计算机模块设计微型计算机模块负责接收传感器反馈的转速信号,并根据设定的速度范围进行计算和控制电机控制模块。

具体的设计包括以下几个方面:4.1采样和滤波:通过AD转换器将模拟信号转换为数字信号,并进行滤波处理,以降低信号噪声和提高采样精度。

4.2速度控制算法:根据为电机设定的速度范围和输入的实时转速信号,进行误差计算并输出控制信号,以调节电机供电电压,使其保持在设定速度范围内运行。

4.3显示与操作:利用LCD显示屏和按键等外围设备,实现对设定速度的调节和显示转速等操作。

计算机控制技术课程设计直流电机PWM调速系统

计算机控制技术课程设计直流电机PWM调速系统

目录目录 ............................................................................................................................................................. - 0 - 摘要 ............................................................................................................................................................. - 1 -1、设计目的 (1)2、设计功能、要求 (1)3、硬件设计 (1)3.1、原理图设计 (1)3.2、器件清单 (2)3.3、各元器件作用说明 (2)3.4、工作过程说明 (2)4、软件设计 (3)4.1、设计思路 (3)4.2、工作原理图 (3)4.3、流程图 (4)4.4、程序清单 (4)5、仿真结果 (9)5.1、仿真环境说明 (9)5.2、程序编译结果 (9)5.3、软件仿真结果 (9)5.4、仿真结果说明 (11)6、设计总结 (11)7、参考文献 (11)8、附件:电路图 (12)摘要本设计主要是利用AT89C51单片机设计直流电机PWM调速系统,系统同时带有模拟测速功能。

利用汇编语言编写程序,通过Proteus软件进行仿真验证设计。

设计中还用到了外部晶振、六位LED数码管作为速度显示,外接四个按键作为功能设定。

按下启动按键进入启动显示、调速系统进入等待状态,按下正转功能键,电机正转;按下反转功能键,电机反转;按下停止功能键,电机由自身阻力减速到停止,这时会停止显示,显示屏熄灭,系统进入等待状态,如果按下启动按键将重新启动。

经过一系列的测试验证,设计能满足各项要求,经过长时间的运行测试程序都能正常地运行,没出现错误。

课程设计---直流电动机测速系统设计

课程设计---直流电动机测速系统设计

专业课程设计题目三直流电动机测速系统设计院系:专业班级:小组成员:指导教师:日期:前言1.题目要求设计题目:直流电动机测速系统设计描述:利用单片机设计直流电机测速系统具体要求: 8051 单片机作为主控制器、利用红外光传感器设计转速测量、检测直流电机速度,并显示。

元件: STC89C52、晶振(12MHz)、小按键、 ST151、数码管以及电阻电容等2.组内分工(1)负责软件及仿真调试:主要由完成(2)负责电路焊接:主要由完成(3)撰写报告:主要由完成3.总体设计方案总体设计方案的硬件部分详细框图如图一所示 :数码管显示按键控制单片机 PWM 电机驱动一、转速测量方法转速是指作圆周运动的物体在单位时间内所转过的圈数,其大小及变化往往意味着机器设备运转的正常与否,因此,转速测量一直是工业领域的一个重要问题。

按照不同的理论方法,先后产生过模拟测速法 (如离心式转速表) 、同步测速法(如机械式或闪光式频闪测速仪) 以及计数测速法。

计数测速法又可分为机械式定时计数法和电子式定时计数法。

本文介绍的采用单片机和光电传感器组成的高精度转速测量系统,其转速测量方法采用的就是电子式定时计数法。

对转速的测量实际上是对转子旋转引起的周期脉冲信号的频率进行测量。

在频率的工程测量中,电子式定时计数测量频率的方法一般有三种:①测频率法:在一定时间间隔t 内,计数被测信号的重复变化次数N ,则被测信号的频率fx 可表示为f x =Nt(1)②测周期法:在被测信号的一个周期内,计数时钟脉冲数m0 ,则被测信号频率fx = fc/ m0 ,其中, fc 为时钟脉冲信号频率。

③多周期测频法:在被测信号m1 个周期内, 计数时钟脉冲数m2 ,从而得到被测信号频率fx ,则fx 可以表示为fx =m1 fcm2, m1 由测量准确度确定。

电子式定时计数法测量频率时, 其测量准确度主要由两项误差来决定: 一项是时基误差 ; 另一项是量化± 1 误差。

计算机控制课程设计——直流电机PWM调速系统的计算机控制

计算机控制课程设计——直流电机PWM调速系统的计算机控制

计算机课程设计名称:直流电机PWM调速系统的计算机控制计算机控制技术课程设计任务书1引言1.1课题背景近年来,随着科技的进步,电力电子技术得到了迅速的发展,直流电机得到了越来越广泛的应用。

直流它具有优良的调速特性,调速平滑、方便,调速范围广;过载能力大,能承受频繁的冲击负载,可实现频繁的无级快速起动、制动和反转;需要能满足生产过程自动化系统各种不同的特殊运行要求,从而对直流电机的调速提出了较高的要求,改变电枢回路电阻调速,改变电枢电压调速等技术已远远不能满足要求,这时通过PWM方式控制直流电机调速的方法应运而生。

1.2系统功能该系统的核心为高性能低成本的单片机AT89C51,它与87C51完全兼容,内部包含4KEPROM。

利用AT89C51单片机控制PWM信号从而实现对直流电机转速进行控制;采用了专门的芯片组成了PWM信号的发生系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形。

2总体方案设计2.1系统总体设计框图图2-1 系统总体设计框图2.2系统控制器AT89C51简介在此次设计中,选用高性能、低成本的AT89C51单片机,管脚及基本连接电路如图2-2所示。

和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。

写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。

再着,AT89C51目前的售价低,市场供应很充足。

参数如下:VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

计算机控制系统第十二章 直流电动机调速

计算机控制系统第十二章 直流电动机调速

(3)ADμC812的在系统可编程。
• ADμC812的存储器采用FLASH/EE存储技术,这种技术把EPROM存储器的高密 度特点和E2PROM存储器的在线可重复编程特点结合在一起。FLASH/EE存储器 技术使得ADμC812可以在线情况下被装入程序代码。在线载入程序代码是通 过芯片的标准UART串行接口实现的,这个过程也被称作串行下载。应用 ADμC812的串行下载功能,用户可以不把芯片从系统上取下来对其进行编程, 而且编程过程并不需要编程器提供支持。基于这样的串行下载能力, ADμC812可以在应用现场很方便地对应用程序进行升级。 ADμC812串行下载工作模式可以通过加电时或者手工复位时把芯片PSEN引脚 通过一个电阻(典型值为1kΩ)接地来实现。当进入串行下载工作模式,启动芯 片的下载过程,完成对芯片标准UART串行接口的配置、与管理下载过程的主 机通信、准备接收下载程序代码到片内程序存储空间等任务。程序下载时的 编程电压和ADμC812正常工作时的电压相同,工作电压范围为2.7~5.5 V,不 需要专门的编程高电压。 通过串行下载实现数据传输,ADμC812 QuickStart开发系统完成片内FLASH / EE 程序存储器的擦除、片内FLASH/EE数据存储器的擦除、片内FLASH/EE程序存 储器的编程、片内FLASH/EE数据存储器的编程和控制、下载到片内FLASH/EE 程序存储器的程序代码的执行。为简化FLASH/EE存储器的串行编程过程,在 ADμC812芯片中嵌入了一个下载/调试模块。
第十二章 直流电动机调速
• 第一节 计算机控制直流电动机调速系统 及技术要求 • 第二节 系统总体方案设计 • 第三节 硬件系统与软件系统设计 • 第四节 系统调试运行
第一节 计算机控制直流电动机调 速系统及技术要求

计算机控制实验课程设计报告-直流电机转速pid控制

计算机控制实验课程设计报告-直流电机转速pid控制

基于89c52单片机的PWM 直流电机PID控制调速系统实验报告指导老师:衣法臻姓名:杨浩学号:09212020班级:自动化0901日期:2012年7月6日星期五目录第一章系统方案设计 (3)1.1 直流电机转速开环控制与闭环控制的选取 (3)1.2 直流电机调速方式的选取 (4)1.3 直流电机测速装置的选取 (5)1.4 系统控制算法的选取 (8)1.5 系统总体设计 (10)第二章硬件设计 (11)2.1 AT89C52芯片介绍 (11)2.2 直流电机驱动芯片ULN2803设计 (13)2.3 数显管显示给定速度和实际速度模块 (15)2.4 按键模块设计 (16)2.5 测速模块设计 (18)第三章软件部分设计 (19)3.1 数显管显示软件设计部分 (19)3.2 外部中断P3.3计数程序 (21)3.3 定时器0中断软件设计 (22)3.4 PWM算法程序设计 (25)3.5 PID控制算法程序设计 (26)3.6 按键程序设计 (29)第四章基于matlab的PID参数设计及仿真 (31)4.1 各部分传递函数的整定 (31)4.2 PID参数的整定 (31)第五章结果分析 (33)第六章实验总结及感想 (34)参考文献 (36)附录一硬件系统电路原理图 (36)附录二程序源代码 (36)第一章、系统总体方案设计1.1直流电机转速开环控制与闭环控制的选取对直流电机转速的控制有一般有两种方式,一种是开环控制,一种是闭环控制。

开环控制的优点是简单、稳定、可靠。

若组成系统的元件特性和参数值比较稳定,且外界干扰较小,开环控制能够保持一定的精度。

缺点是精度通常较低,无自动纠偏能力;闭环控制的优点是控制的精度可以达到很高,而且对外界的干扰和系统的参数变化有很好的抑制作用,且可以通过输出反馈控制系统的控制过程。

缺点是存在稳定性,振荡,超调等一系列问题,对系统的性能分析和设计远比开环控制麻烦。

经过利弊的取舍,本次试验选择的是闭环控制,因为准备应用PID算法控制电机的转速,故而需要有实际转速进行反馈与给定的转速形成对比,进而通过算法输出PWM波形来控制直流电机。

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

XI`AN TECHNOLOGICAL UNIVERSITY课程名称直流电机测速调速实验专业:电气工程及其自动化班级:姓名:学号:指导教师:秦刚成绩:2016 年 7 月 11日计算机控制系统课程设计——直流电机测速调速系统一、选定题目:电机速度控制系统二、设计目的和要求:计算机控制技术的课程设计是一个综合运用知识的过程,它不仅需要微型机控制理论、程序设计方面的基础知识,而且还需要具备一定的生产工艺知识。

课程设计包括确定控制任务、系统总体方案设计、硬件系统设计、控制软件的设计等,以便使学生掌握计算机控制系统设计的总体思路和方法。

三、功能需求:1、基本功能:(1)该系统使用实验箱的直流电机、1602液晶、DA、键盘等模块完成设计;(2)直流电机通过DA模块使用PWM方式进行驱动及调速;(3)能够通过1602液晶显示当前转速及PWM占空比;(4)通过按键控制电机的启动和停止。

2、扩展功能:(1)能够通过按键手动输入目标转速(转/秒),启动电机后控制电机稳定在目标转速;(2)使用1602液晶实时显示目标转速、当前转速及启停状态(on/off)。

四、实验思路:本直流电机调速系统以单片机系统为依托,根据PWM调速的基本原理,控制电动机的转速为依据,实现对直流电动机的调速,并通过单片机控制速度的变化。

本设计的直流电机调速系统主要是由硬件和软件两大部分组成。

硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。

而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动对电机速度的有效控制。

用51来产生PWM波就必须要用软件编程的方法来模拟。

方法大概可以分为软件延时和定时器产生两种方法。

本次课程设计我们采用定时器产生PWM方波。

定时器产生PWM:这种方法利用了定时器溢出中断,在中断服务程序改变电平的高低,在程序较复杂、多操作时仍能输出较准确的pwm波形。

五、实验设备:单片机开发实验仪一台;AT89C51;LCD1602;DA数模转换;按键;光电开关六、实验原理:1、硬件框图:硬件部分主要由电位器、模数转换模块、 51单片机、显示模块、驱动电路和无刷直流电机组成。

其功能框图如下:2、硬件介绍:1)1602液晶显示模块电路1602C字符型液晶:CS:片选信号,低电平有效;RS:选择读写的是指令或数据,L:指令,H:为数据。

RW:读写控制端,L:写操作,H:读操作。

12864J图形点阵液晶:CS:片选信号,低电平有效;CS1/2:左右半屏使能选择,H:左半屏,L:右半屏;RS:选择读写的是指令或数据,L:指令,H:为数据。

RW:读写控制端,L:写操作,H:读操作。

12864M图形点阵液晶:JP6的16脚是空脚,JP6的15脚是PSB:PSB接高电平,CPU与液晶使用并行接口连接,连接方法与12864J完全相同;PSB接低电平,CPU与液晶使用串行接口连接,此时,RS、RW、E与CPU的I/O管脚相连(STAR ES59PA才有该功能)。

(1602C字符型液晶)(12864J图形点阵液晶)2)DAC0832数模转换CS:片选,低有效;OUT:转换电压输出;OUT1:经功放电路的电压输出;电位器W5:调整基准电压。

3)发光管、按键、开关A12345678JP8012345678910KR124 S21S22S23S24S25S26S27S28VCCK5K6K7K8B8550Q44.7KR28VCCREV1234GP2S05OP1330R164.7K R2012JP4470R8DS4VCC12SN74LS14NU7A34SN74LS14NU7BM直流电机CTRLDS8DS9DS10330R19330R17330R18LIGHT3、软件设计主程序设计:主程序是一个循环程序,其主要思路是,先设定好速度初始值,这个初始值与测速电路送来的值相比较得到一个误差值,然后用PID增量式算法输出控制系数给PWM发生电路改变波形的占空比,进而控制电机的转速。

主程序流程图如下:五、实验总结:计算机控制技术的课程设计相比硬件的课程设计,简直难了不止一个档次,作为主要的编程人员,当我实际要去控制一个物体的时候,我才知道自己以前学的知识有多么的不牢固,不过真真正正的去做一个实物控制程序的时候,才能真切的体会到以前书本上学的知识是如何运用到实际的,我基本上可以说是为了应付考试勉勉强强学了一些,这次实际做到项目设计后,才理解其真正的含义。

还有本次项目,我们采用了LCD显示屏作为显示单元,比LED数码管复杂,LCD液晶显示屏这也是以前没有运用到过的,所以总体来说,这次课程设计带给我的不仅仅是旧知识的复习,还有新的探索。

本课程设计得以完成,首先要感谢秦刚老师,因为课程设计在他的悉心指导下才能顺利完成。

他渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范、朴实无华、平易近人的人格魅力对我的影响非常深远。

本设计从选题到完成,每一部步是在老师的指导下完成的,倾注了老师大量的心血。

通过此次的课程设计,我学到了很多知识,跨越了传统方式下的教与学的体制束缚,在课程设计的写作过程中,通过查资料和搜集有关的文献,培养了自学能力和动手能力。

并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。

在以往的传统学习模式下,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好地处理知识和实践相结合的问题。

在课程设计的写作过程中也学到了做任何事情所要的态度和心态,对于发展过程中出现的任何问题和偏差都不要轻视,,要通过正确的途径去解决,在做事情的过程中要有耐心和毅力,不要一遇到困难就打退堂鼓,只要坚持下去就可以找到思路去解决问题的。

再次感谢给我鼓励的老师、同学和朋友,谢谢!!六、附件:程序#include<reg52.h>#include<math.h>/*******************以下硬件连线设置**************/sbit key0=P1^0; //占空比(设定值)增按键;且rev接int0sbit key1=P1^1; //占空比(设定值)减按键sbit power = P1^7; //启停按键sbit auto_run=P1^5; //自动运行按键sbit set=P1^4; //set按键sbit left=P1^2; //左移光标sbit right=P1^3; //右移光标sbit LCD_RS=P3^0; //1602的RSsbit LCD_RW=P3^1; //1602的RWsbit sys_data=P3^4; //继电器控制脚,用于切换DA功率输出方向(电机or加热电阻)xdata unsigned char dac0832_addr _at_ 0xd000;//DA的地址xdata unsigned char LCD_DATA _at_ 0x8000;//LCD1602的地址/*******************以下为系统的状态量设置**************/bit rps_triger=0; //转速(温度)刷新显示控制,1为需要刷新显示,0为不需要刷新显示bit scale_triger=0; //占空比刷新显示控制bit power_triger=0; //电源指示刷新显示控制bit power_data=0; //电源状态,0为关断,1为运行bit set_triger=0; //设置状态,0为正常运行,1为设置模式bit auto_triger=0; //auto(自动调整)状态,0为正常模式,1为自动调整模式bit auto_triger_triger=0; //auto标志刷新显示控制,当auto 状态被被改变时才需刷新显示/*******************以下为系统的数据量*****************/char set_data=0; //设置模式下设置的是第几位,0~3(转速设定为4位),0~2(温度设定为3位)unsigned int scale=10; //占空比数据(2倍关系,可以控制到0.5%),初值为5%unsigned int rps=0; //转速计数变量unsigned int rps1=0; //目标值变量unsigned int rps_data=0; //转速值unsigned int time=0; //每秒计数变量(计数周期为250u秒,故4000次为1秒)unsigned int time2=0; //检测插值计数变量(0.05秒检测1次,实时调整比例系数)unsigned int time3=0; //比例系数控制(若当前值和目标值差值值大,则调整迅速,反之则缓慢调整)unsigned char time_scale=0; //占空比总周期计数变量,一个周期200次,可以精确到0.5%unsigned int time_check[4]={1000,3000,6000,10000};//转速调整时间系数表格unsigned char check=0; //检测周期等级,分为0~4共5个等级,0为极小时间系数,4为稳定不变void _nop_(void);/*******************延时函数*****************/void delay(int a){while(a--);}/*******************外部中断初始化*****************/ void init_int0(){IT0=1;EX0=1;EA=1;}/*******************计数器0初始化*****************/ void T0_init(){TMOD = 0x01;TH0 = 0xff; //计数周期为250u秒TL0 = 0x1a;ET0=1;EA=1;TR0=1;}/*******************LCD1602相关函数*****************/ void LCD_write_com(unsigned char com){LCD_RS=0;LCD_RW=0;LCD_DATA=com;delay(80);}void LCD_write_data(unsigned char dat){LCD_RS=1;LCD_RW=0;LCD_DATA=dat;delay(80);}/*************LCD1602在电机调速系统下的初始化函数*************/ void LCD_init(void){LCD_write_com(0x38);LCD_write_com(0x0c);LCD_write_com(0x06);LCD_write_com(0x01);LCD_write_com(0x80);LCD_write_data('R');LCD_write_data('P');LCD_write_data('M');LCD_write_com(0x88);LCD_write_data('S');LCD_write_data('e');LCD_write_data('t');LCD_write_com(0xc8);LCD_write_data('R');LCD_write_com(0xcd);LCD_write_data('.');LCD_write_com(0xcf);LCD_write_data('%');LCD_write_com(0x8b);LCD_write_data(rps1/1000+0x30);LCD_write_data(rps1%1000/100+0x30);LCD_write_data(rps1%100/10+0x30);LCD_write_data(rps1%10+0x30);}/***************光标闪烁开***************/ void flash_on(void){LCD_write_com(0x0f);}/***************光标闪烁关***************/ void flash_off(void){LCD_write_com(0x0c);}/************显示当前转速或温度**************/ void display_rps(void){flash_off();LCD_write_com(0x80);LCD_write_data('R');LCD_write_data('P');LCD_write_data('M');LCD_write_data(rps_data/1000+0x30);LCD_write_data(rps_data%1000/100+0x30);LCD_write_data(rps_data%100/10+0x30);LCD_write_data(rps_data%10+0x30);rps_triger=0;}/************显示当前占空比**************/ void display_scale(void){flash_off();LCD_write_com(0xcb);LCD_write_data(scale/2/10+0x30);LCD_write_data(scale/2%10+0x30);LCD_write_com(0xce);LCD_write_data(scale%2*5+0x30);scale_triger=0;}/************显示auto模式的状态**************/ void display_auto(void){flash_off();if(auto_triger==1){LCD_write_com(0xc3);LCD_write_data('a');LCD_write_data('u');LCD_write_data('t');LCD_write_data('o');}else{LCD_write_com(0xc3);LCD_write_data(' ');LCD_write_data(' ');LCD_write_data(' ');LCD_write_data(' ');}auto_triger_triger=0;}/************显示power的状态(on或off)*************/ void display_power(void){flash_off();LCD_write_com(0xc0);if(power_data==0){LCD_write_data('o');LCD_write_data('f');LCD_write_data('f');power_triger=0;auto_triger=0;}else{LCD_write_data('o');LCD_write_data('n');LCD_write_data(' ');power_triger=0;auto_triger=0;}}/************调整输出占空比函数**************/void check_rps(void){if(power_data==0) return;if(rps1<rps_data){scale--;if(scale<=1) scale=1;}else if(rps1>rps_data){scale++;if(scale>=199) scale=199;}scale_triger=1;}/************显示电机调速系统下set模式函数**************/void display_set(void){switch(set_data){case0:flash_on();LCD_write_com(0x8b);LCD_write_data(rps1/1000+0x30);LCD_w rite_com(0x8b);delay(1000);break;case1:flash_on();LCD_write_com(0x8c);LCD_write_data(rps1%1000/100+0x30);L CD_write_com(0x8c);delay(1000);break;case2:flash_on();LCD_write_com(0x8d);LCD_write_data(rps1%100/10+0x30);LCD _write_com(0x8d);delay(1000);break;case3:flash_on();LCD_write_com(0x8e);LCD_write_data(rps1%10+0x30);LCD_wri te_com(0x8e);delay(1000);break;default:flash_off();break;}}/************以下为各个按键的函数**************//************power电源键**************/void fn_power(){if(power==1) return;else{delay(20); //按键去抖if(power==0){while(power!=1);power_data=~power_data;power_triger=1;set_triger=0;auto_triger_triger=1;}else return;}}/************自动调整模式键**************/void fn_auto(){if(auto_run==1) return;else{delay(20); //按键去抖if(auto_run==0){while(auto_run!=1);if(power_data==0) auto_triger=0;else auto_triger=~auto_triger;auto_triger_triger=1;set_triger=0;}else return;}}/************set设置模式键**************/ void fn_set(){if(set==1) return;else{delay(20); //按键去抖if(set==0){while(set!=1);set_triger=~set_triger;auto_triger=0;auto_triger_triger=1;}else return;}}/************减键(set模式为调整目标值,运行模式调整占空比)**************/void fn_key0(){if(key0==1) return;else{delay(20); //按键去抖if(key0==0){while(key0!=1);if(set_triger==1){switch(set_data){case 0:if(rps1/1000>=1) rps1=rps1-1000; break;case 1:if(rps1%1000/100>=1) rps1=rps1-100; break;case 2:if(rps1%100/10>=1) rps1=rps1-10; break;case 3:if(rps1%10>=1) rps1=rps1-1; break;}}else{if(scale<=1) scale=1;else scale--;scale_triger=1;}}else return;}}/************加键(set模式为调整目标值,运行模式调整占空比)**************/void fn_key1(){if(key1==1) return;else{delay(20); //按键去抖if(key1==0){while(key1!=1);if(set_triger==1){switch(set_data){case 0:if(rps1/1000<9) rps1=rps1+1000; break;case 1:if(rps1%1000/100<9) rps1=rps1+100; break;case 2:if(rps1%100/10<9) rps1=rps1+10; break;case 3:if(rps1%10<9) rps1=rps1+1; break;}}else{if(scale>=199) scale=199;else scale++;scale_triger=1;}}else return;}}/************光标左移键(set模式下有效)**************/ void fn_left(){if(left==1) return;else{delay(20); //按键去抖if(left==0){while(left!=1);if(set_triger==1){if(set_data>=3) set_data=3;else set_data++;}else return;}else return;}}/************光标右移键(set模式下有效)**************/ void fn_right(){if(right==1) return;else{delay(20); //按键去抖if(right==0){while(right!=1);if(set_triger==1){if(set_data<=0) set_data=0;else set_data--;}else return;}else return;}}/************转数计数(外部中断0)**************/void int0() interrupt 0 //外部中断0处理程序{rps++; //对转数计数器进行累加计数}/****************定时器0中断服务函数*****************/void timer0(void) interrupt 1{unsigned int t;TH0 = 0xff; //重新装载计时常数TL0 = 0x1a;if(time_scale>=200) time_scale=0; //占空比计数控制if(time>=4000) //如果计满1秒,计秒变量归零,并将rps 的转数数据送到转速(温度)数据变量中保存{time=0;time_scale=0;if(sys_data==1) rps_data=rps*60/4; //在电机调速模式下:每转有4个脉冲,所以除以4rps=0; //rps归零rps_triger=1; //rps显示开关有效if(check==4) //跳出稳态的判断{if(sys_data==1){if(abs(rps_data-rps1)>80) check=1;//如果在电机调速系统下,跳出稳态的条件是转速差超过80rpm}}}else{time_scale++;time++; //如果没计满1秒,则继续计数}if(power_data==1) //PWM信号输出{if(time_scale<=scale) dac0832_addr=0xff;//PWM信号输出else dac0832_addr=0x00; //PWM信号输出}else dac0832_addr=0x00; //PWM信号输出if(time2>=200) //数据差值检测,0.5秒1次{time2=0;t=abs(rps_data-rps1);//电机调速系统下的参数调整等级划分if(t>1200) check=0;else{if(t>500) check=1;else{if(t>200) check=2;else{if(t>80) check=3;else check=4; //差值小于80rpm进入稳态模式,不再调整输出占空比}}}}else time2++;if(check!=4) //在非稳态的情况下查表确定时间参数{if(time3>=time_check[check]) //不同的系统查不同的表{time3=0;if(auto_triger==1) check_rps();}else time3++;}}/****************主函数*****************/void main(){key0=1; //读引脚之前要写1key1=1;power=1;set=1;T0_init(); //T0初始化init_int0(); //外部中断int0初始化while(1){fn_switch(); //按键查询函数fn_power(); //按键查询函数fn_set(); //按键查询函数fn_key0(); //按键查询函数fn_key1(); //按键查询函数fn_auto(); //按键查询函数if(power_triger==1) display_power(); //当电源状态有改变时刷新显示电源状态if(rps_triger==1) display_rps();//当系统实时数据需要刷新时,刷新实时数据if(scale_triger==1) display_scale(); //当占空比发生改变时刷新占空比数据if(auto_triger_triger==1) display_auto();//当auto状态发生改变时刷新auto状态显示if(set_triger==1) //当进入set状态时{fn_left(); //查询左移右移按键fn_right();if(sys_data==1) display_set(); //不同的系统(电机调速、温度控制)不同的set状态显示}}}(资料素材和资料部分来自网络,供参考。

相关文档
最新文档