基于单片机的直流电机调速系统软件设计(6)

2019-05-26 22:50

Higcount=0XFF00

并且由这两个初值决定了PWM波形的周期是1ms,即频率是1khz。

5.2 电机驱动程序

L298N控制电机的驱动电机运转时有两张方案:(1)利用控制端子IN3和IN4高低电平来控制电机的加减速,当这两个端子的电平不同时分别使电机加速或减速;用ENB端口输出PWM波驱动电机的加减速,当IN3和IN4两端电平相同时电机急停。(2)利用IN3控制驱动电机的正反转,IN4输入PWM波驱动电机的加减速,用ENB使能,高电平时电机运转,低电平时电机停止运动。经过比较选择我们采用第二种方案,因为用使能端单独控制电机的启停即方便又简单,且该方案分别用三个控制端控制实现电机不同功能的驱动,互不干扰影响,简单可行,且易于程序的编写。具体控制思路如下: 通过控制T0,T1两个定时器定时计数器中断实现对PWM波形占空比的控制,使能ENA控制电机的启停。通过L298N来驱动电机的运转,则可根据其三个控制端口IN3、IN4、ENB来控制驱动电机的运行。

当IN3=0,IN4=1 时 电机正转; 当 IN3=1,IN4=0 时 电机反转 ;

当ENB =1, 端口输出的PWM波形发生变化时则分别high 和low 来控制电机的加减速;

当IN3=IN4时, 则电机急停。

在L298N的OUT3和OUT4之间加着负载直流电机,通过霍尔器件对其进行速度的采样和计算,通过数脉冲计算出转速的大小,最终将采集的速度传给单片机的I/O口,并且通过1602显示出该速度值。

5.3 PWM波程序的设计

在PWM波形产生的过程中主要依靠两个定时作用,其中为了使整个波形的频率不变,采用T0控制高电平持续的时间,T1控制低电平的持续时间。在本次设计中定时/计数器选用工作方式1,其中方式1是16位的定时/计数器,加1计数器由TH0(TH1)的8位和TL0(TL1)的8位构成。

在方式1时,计数器的计数值由下式确定:

- 22 -

N=65536-? 计数范围为1~65536.

在编写定时/计数程序时将某一数据送入TH0(TH1)、TL0(TL1)作为初值。TH0(TH1)、TL0(TL1)从初值开始加1计数,直至溢出。所以初值不同,定时时间或计数值也不同。必须注意加法计数器溢出后,必须用程序重新对TH0(TH1)、TL0(TL1)设置初值,否则下一次加法计数器从0开始计数。

开始初始化按键查询正传是否按下反转是否按下加速是否按下减速是否按下急停是否按下正转反转增大矩形占空比缩小矩形占空比电机急停 图5-3 PWM子程序控制图

在本次设计时T1定时为低电平的持续时间,T0为定时高电平的持续时间。给T1的初值为0即满占空的低电平,同时T2的初值为65536高电平为0.中断标志位EA一直开启,通过开关定时器T0,T1来实现输出PWM的方波。当T0的计数初值增加时,则高电平的占空比减少,则转速减少。而T1的初值增加时,则低电平的占空比减少,则转速增加。

- 23 -

5.4 按键子程序的设计

在对按键功能进行编写时,有两种方法非别是扫描法和查询法。在这次设计 中采用了扫描的方式,利用if语句分别对单片机的五个I/O口进行查询,若P1.0=0,则表示电机正转按键按下,经过一个延时消抖,进而调用正转子程序,电机正转;P1.1=0,电机反转;P1.3=0,电机加速;P1.5=0,电机减速;P1.7=0,电机急停。在按键程序中主要不断的循环判断按键的状态,并对按键做好消抖工作即可。不断地扫描和调用以实现电机调速的功能。

5.5 LCD1602的显示程序

LCD显示控制是一个相对复杂的过程,需要首先设置RS,RW,E引脚高低电平,随后对数据输入口进行赋值,实现对应的功能。因此,用inputcom、displaychar 和displaydata 三个函数分别实现LCD写指令、LCD写字符和LCD写数据的功能,用延时程序来判断LCD忙碌状态。

开始初始化成8位口,2行显示,5×7阵列设置自动加1设置光标平移设置显示光标清显示屏

结束 图5-4 LCD 1602 显示流程图

- 24 -

本次设计采用LCD1602,在显示中分别有显示字符和显示数据从而实现转速+单位的显示即(V:+ 20r/min),1602显示主要依靠三个控制端分别为:RS—寄存器选择输入端;R/W—读写信号输入端;E—使能端。

在1602显示字符:是通过用*dat指针来实现的,将指针变量赋给P0口,通过指

针自加,使指针中的字符全部输出,从而实现输出所需要的字符。

1602显示数据:主要是通过传递它所能识别的Ascall码值来传递的,因为我们电机转速最大为6000r/min,可以选用一个数组将这个速度存在里面(i[4]), 又因为0的Ascall码是0X30,可以分别将转速的千、百、十、个位以i[0]?dat1000?0X30的方式,使每个数在0的基础上加上自己本身从而转化成1602可以识别的数字,进而传出并显示。

在编写程序时首先要对1602初始化:

0X01 清屏

0X06 字符不动,光标自动右移一格 0X0C 显示开关设置

0X80 显示第一行首地址

0X38 使用8位数据显示两行,使用5?7字符

根据第三章所介绍的1602的特性对三个控制端口经过单片机的I/O口进行控制。 5.6 测速程序的设计

在一周期内通过霍尔数脉冲计数增加,然后将计数的值送给1602显示。将霍尔元

件的输出口与单片机的外部中断0相连起来,当电机在转一圈时,电机轴末端的小磁片经过霍尔元件一次,则脉冲会发生高低电平的变化从而触发外不中断,当有外部中断时开始计数,又因为测周期内的转速,则定义测速在500次,又因为定时周期为1ms即

要测出500ms的转速,进而再将500ms的转速转化为1min的转速并且显示在1602上。

5.7 中断程度的设计

在整个程序的运行中为了防止因为电流过大,造成芯片发热乃至被烧坏,在此需要用外部中断的方式设置电流保护措施对整个系统进行保护作用。本次设计中选用从L298N的senseB管脚经电阻来采样电流,将采集的模拟量经AD0809转换为数字量,并且传送给液晶显示来显示具体电流数值的大小。

- 25 -

第六章 系统功能调试

6.1 调试软件的介绍

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前在国内的应用范围比较小,但已受到单片机研究者们的热爱、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。在编译方面,它也支持IAR、Keil和MPLAB等多种编译。

Proteus主要由ISIS和ARES两部分组成,ISIS主要功能是原理图的设计及电路原理图的交互仿真,ARES主要用于印制电路板设计。Proteus实现了单片机仿真和SPICE电路仿真的完美结合。它提供了30个元器件库,数千中元器件。还可以通过内部原型或使用厂家的SPICE文件设计仿真器件。元器件涉及数字电路和模拟电路、交流电路和直流电路等多多种类型。具有模拟电路仿真、数字电路仿真、单片机及其外围电路仿真功能。

Proteus提供多种激励源,丰富的虚拟仪器,生动的仿真显示,提供了实验室无法相比的元器件库,提供了修改电路设计的灵活性、提供了实体实验室在数量、质量上难以相比的虚拟仪器、仪表,主要还能支持第三方的软件编译和调试环境,因此我们选用Proteus来仿真。我们可以在该软件下很快的绘制出我们的电路原理图,进而在该原理图下可以自己进行较简单的模拟仿真,最后可以联调显示模拟调试的功能。

6.2 Keil c51 软件的简介

Keil c51是单片机应用系统开发中使用最多的一种开发工具,它功能强大、简单易用,特别适合初学者。Keil uVision4 是美国Keil Software公司出品的51系列单片机C语言集成开发系统,与汇编语言相比,C语言在功能上,结构性、可读性、可维护性上有明显的优势,因而易学易用并且容易掌握。此开发系统提供了丰富的库函数和功能

- 26 -


基于单片机的直流电机调速系统软件设计(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:课程设计2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: