单片机控制的直流斩波器设计(编辑修改稿)内容摘要:

,但它有损于液晶屏的寿命。 1 VSS 电源地端 2 VDD 电源+ 5V 端 3 VEE 液晶显示器对比度调整端 4 RS 寄存器选择,高选数据寄存器、低选指令寄存器 5 R/W 读写信号,高为读、低为写 6 E 使能端,高电平跳变为低电平时有效 7~ 14 D0~ D7 双向数据口 1 16 LED+、 LED 调节液晶背光 郑州大学 本科毕业论文 9 123456A B C D654321DCBATitleNumberRevisionSizeBDate:1May2010 Sheet of File:D:\PROGRAM FILES\EXAMPLES\BACKUP~11.DDBDrawn By:V C C5 VRSRWED0D1D2D3V C C5 VS1K1S2K2S3K3S4K4S7k7S5K5S8K8S6K6S9K9R2410KR254.7KR262.2KV C C5 VR2720KR2810KR2920KR30K30KAnJianG N D1V C C2VO 3RS 4RW 5E6D B 07D B 18D B 29D B 3 10D B 4 11D B 5 12D B 6 13D B 7 14BG V C C15BG G N D16LCD 1602U4LCD1602 图 28 1602 与单片机引脚连接图 郑州大学 本科毕业论文 1 第三 章 系统软件设计 单片机传统的开发语言是汇编语言,因为汇编语 言是最接近机器码的一种语言。 其主要优点是占用资源少、程序执行效率高。 但是不同的 CPU,其汇编语言可能有所差异,所以不易移植。 作为一种结构化的程序设计语言, C 语言的特点就是可以使你尽量少地对硬件进行操作,具有很强的功能性、结构性和可移植性,因此常常被优选作为单片机系统的编程语言。 用 C 编写程序比汇编更符合人们的思考习惯,开发者可以摆脱与硬件无必要的接触,更专心的考虑功能和算法而不是考虑一些细节问题,这样就减少了开发和调试的时间。 C 语言具有良好的程序结构 ,适用于模块化程序设计,因此采用 C 语言设计单片机应用系统程 序时,首先要尽可能地采用结构化的程序设计方法,将功能模块化,由不同的模块完成不同的功能,这样可使整个应用系统程序结构清晰,易于调试和维护。 不同的功能模块,分别指定相应的入口参数和出口参数,对于一些要重复调用的程序一般把其编成函数,这样可以减少程序代码的长度,又便于整个程序的管理,还可增强可读性和移植性。 综上, C 语言具有很强的功能性和结构性,可以缩短单片机控制系统的开发周期,而且易于调试和维护,已经成为目前单片机语言中最流行的编程语言。 本程序设计正是将每一功能模块化,一个一个模块进行 C 语言的编写, 再一块一块调试,从整个设计下来的结果看,用 C 语言编写程序达到了很好的效果。 本设计使用单片机对开关电源进行数字的控制,代替原来的 PWM 控制芯片 KA7500[9]。 原先的 KA7500 所实现的功能是对输出的电压以及电流进郑州大学 本科毕业论文 2 行反馈采样,通过误差放大器之后对输出的 PWM波的占空比进行相应的调节,起到了稳压恒流的作用。 改用 PIC18F4520 后,采取双通道 A/D 采样,分别为电压采样和电流的采样,转换为相应之后进行 PID( Proportional Integral Differential)算法 ,同样起到了稳压恒流的作用。 同时外围增设键盘和 LCD显示电路,对输出的电压和电流有实时的控制和监测。 本章将对整个软件部分的设计思路及其具体实现进行阐述。 软件设计总体思路 本系统的软件主要有主程序模块、中断服务程序模块组成。 其中,主程序模块主要完成系统的初始化模块、 PWM 波发生模块、 ADC 信号采集模块以及 PID 算法处理模块、键盘以及 LCD 显示模块。 中断服务程序主要完成 TMR0 定时 10ms 和 A/D 模块的数据采集滤波处理功能。 系统主程序模块 主程序模块的程序框图如图 31 所示。 郑州大学 本科毕业论文 3 图 31 主 程序框图 始初化模块 主程序中的初始化模块主要完成系统全局变量的初始化、 ECCP 模块的初始化、 A/D 转化的初始化、 LCD 显示的初始化、 TMR0 定时器的初始化和 CPU 中断系统的初始化。 初始化模块的程序框图如图 32 所示。 ECCP模块的初始化将设置有两路互补推挽输出的 PWM波, A/D转化初始化将 A/D模块初始化为 10 位的 A/D 转换, TMR0 初始化完成每 10ms 采样一次电压及电流值。 图 32 初始化模块框图 PWM 波发生模块 在 PIC18F4520 中 ,CCP1模块为带有增强的 PWM功能的标准 CCP模块 [10]。 这些增强的功能包括提供 2路或 4路输出通道、用户可选的极性(高电平有效或低电平有效)、死区控制以及自动关闭和重启。 因此,增强型 PWM 模式提供了更多的 PWM 输出选项以适应范围更广的控制应用。 图 33所示为 PWM操作的简化框图。 所有的控制寄存器都是双重缓冲郑州大学 本科毕业论文 4 的,并且在一个新的 PWM周期 的开始时刻( Timer2复位时的周期边界)被装载以防止在任何输出上出现毛刺。 但 PWM延迟寄存器 PWM1CON例外,该寄存器在占空比边界或周期边界(选择两者中首先出现的那个)被装载。 由于缓冲,模块将不会立即启动,而要等到分配的定时器复位为止。 这意味着增强型 PWM 波形并不完全与标准的 PWM 波形吻合,而是偏移一个完整的指令周期( 4TOSC) [11]。 图 33 增强型 PWM 模式工作原理示意图 每个增强型 CCP模块至多有 4路 PWM 输出,这取决于选定的操作模式。 这些输出, P1A至 P1D,与 PORTC和 PORTD上的 I/O引脚复用。 输出是否有效取决于选定的 CCP操作模式。 因此,若想要单片机工作于半桥输出的增强型的 PWM模式,必须按照以下几个步骤: (1) 通过分别设置 CCP1CON寄存器的 P1M1:P1M0 和 CCP1M3:CCP1M0 位可配置模块的输出模式和极性。 如图 34所示为 CCP1CON寄存器各配置位。 郑州大学 本科毕业论文 5 图 34 CCP1CON寄存器配置位 由于本设计中为两路互补推挽的 PWM波输出 ,所以设置 P1M1:P1M0=10,即半桥输出: P1A和 P1B为带死区控制的调制输出; P1C和 P1D被指定为端口引脚。 同时设置 CCP1M3:CCP1M0=1100,使 P1A和 P1B都为高电平有效。 (2) 使 P1A和 P1B都为输出模式,即配置 TRISC和 TRISD的相应引脚为 0。 (3) 设置 PWM波的周期。 PWM 周期可以通过写 PR2寄存器来指定。 用以下公式来计算 PWM周期。 PWM周期 =[(PR2)+1]4T OSC(TMR2 预分频值 ) 根据本系统所需 PWM波的实际情况,原先的 PWM控制芯片所产生的 PWM波的频率要求为 25kHz,即周期为 410 5s。 而单片机外部的振荡器为16MHz, TOSC=1/1610 6s,经计算的 PR2=159。 (4) 设置 PWM波的占空比。 通过写 CCPR1L寄存器和 CCP1CON5:4位来指定 PWM占空比。 最高分辨率可达 10位。 CCPR1L包含占空比的高 8位,而CCP1CON5:4包含低 2位。 由 CCPR1L:CCP1CON5:4 表示完整的 10位值。 计算占空比的公式如下: PWM占空比 =(CCPR1L:CCP1CON5:4)T OSC(TMR2 预分频值 ) 可以在任何时候写入 CCPR1L和 CCP1CON5:4,但是在 PR2和 TMR2发生匹配(即周期结束)前占空比值不会被锁存到 CCPR1H中。 在 PWM模式中,CCPR1H 是只读寄存器。 CCPR1H寄存器和一个 2位的内部锁存器用于给 PWM占空比提供双重缓冲。 这种双重缓冲结构非常重要,可以避免在 PWM工作过程中产生毛刺。 同样根据本系统所需 PWM 波的实际情况, PWM 的占空比在 25%左右。 郑州大学 本科毕业论文 6 所以需要配置 CCPR1L 和 CCP1CON5:4,经计算得 CCPR1L=0X28,同时CCP1CON5:4=00。 (5) 设置死区延时。 在半桥输出模式下,两个引脚用作输出端来驱动推挽式负载。 PWM 输出信号在 P1A引脚上输出,而互补的 PWM输出信号在P1B引脚上输出。 如图 35所示。 图 35 半桥 PWM 波输出波形示意图 在半桥应用中,模块在所有时间以 PWM频率的调制信号驱动电源开关,关闭电源开关通常比打开它需要更多的时间。 如果上方的电源和下方的电源开关同时切换(一个打开,另一个关闭),两个开关可能会在一段很短的时间内都处于打 开状态,直到一个开关完全关闭为止。 在这很短的间隔内,很大的电流(直通电流)可能流过两个电源开关,从而导致半桥供电电源短路。 为了避免在切换期间流过这种潜在的破坏性直通电流,一般延迟打开其中的一个开关等待另一个开关完全关闭。 在半桥输出模式下,可编程的死区延迟可用来避免直通电流破坏构成半桥的电子开关。 该延迟在信号从非有效状态到有效状态转换时发生。 PWM1CON 寄存器(如图36所示)中的 PDC6:PDC0位根据单片机指令周期设置延迟时间( TCY或 4个郑州大学 本科毕业论文 7 TOSC) [13]。 图 36 PWM1CON寄存器 其中 bit6bit0 为 PWM 延迟计数位,延迟时间为 PWM 信号变为有效的预计时间和实际时间之差,其单位为 FOSC/4( 4T OSC)周期 [14]。 根据本设计的情况,设定延时时间为占空比时间的 5%,即 510 7s,故对 PWM1CON 寄存器赋值为 0x84。 A/D 转换模块 在本系统中需要对电压和电流进行相应的 A/D 转换,硬件电路的设计已经在前一章进行了较为详细的描述,在此不再赘述。 这一小节主要介绍PIC 单片机中的 A/D 转换的 原理以及在本实验中所需要用到 A/D 转换功能的程序设计。 PIC 单片机中的 A/D 转换模块 [15]如图 37所示。 可用软件选择模拟参考电压为器件的正电源电压和负电源电压( VDD和 VSS)或 RA3/AN3/VREF+引脚和 RA2/AN2/VREF/CVREF引脚上的电平。 A/D转换器具有可在休眠模式下工作的特性。 要使 A/D转换器在休眠状态下工作, A/D转换时钟必须来自于 A/D 模块内部的 RC振荡器。 采样保持电路 [16]的输出是转换器的输入,转换器采用逐次逼近法得到转换结果。 器件复位操 作将强制所有寄存器进入复位状态,这将迫使 A/D模块关闭并中止正在进行的转换。 可以将每个与 A/D转换器相关的端口引脚配置为模拟输入或数字 I/O。 ADRESH和 ADRESL寄存器保存 A/D转换的结果。 当 A/D转换完成之后,转换结果被装入 ADRESH:ADRESL寄存器对,GO/DONE位( ADCON0寄存器)被清零且 A/D中断标志位 ADIF被置 1。 上电复位时, ADRESH:ADRESL寄存器中的值保持不变。 上电复位后, ADRESH:ADRESL郑州大学 本科毕业论文 8 寄存器中的值不确定。 在根据需要配置好 A/D模块之后,必须在转换开始之前对选定的通道进行采样。 必须将模拟输入通道相应的 TRIS位选择为输入。 采集时间一结束,即可启动 A/D转换。 可将采集时间编程设定在 GO/DONE位置 1和实际转换启动之间。 图。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。