




已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
桂林电子科技大学毕业设计(论文)报告用纸 第 III 页编号: 毕业设计说明书题 目: 焊线机焊接压力 控制系统设计 学 院: 机电工程学院 专 业: 电气工程及其自动化 学生姓名: 学 号: 指导教师: 职 称: 题目类型:理论研究 实验研究 工程设计 工程技术研究 软件开发2016 年 6 月 6 日摘 要全套设计加扣3012250582在焊接的过程中,焊接压力的大小和焊接的时间,直接影响着焊接质量。本次设计主要对焊接压力控制系统进行研究和设计,并对控制的方法和原理进行讨论,最后进行调试实验来验证设计的正确性和可行性。焊接压力控制系统的设计主要分为硬件的设计和软件的设计。硬件的设计包括:电源模块、单片机控制模块、DA转换模块、通信模块、电磁铁驱动模块、压力检测模块。软件的设计主要包括单片机软件设计和Windows应用程序设计。其中单片机软件设计主要是PID算法的实现和与外设的交互;Windows应用程序设计主要是显示焊接压力和串口的收发。在本设计中,焊接压力控制系统采用了闭环控制,具有精度高、响应速度快、抗干扰能力强的特点。其中单片机使用PID控制算法充当控制系统的调节器,DA转换模块作为执行器,焊接压力作为被控对象,压力检测作为反馈环节。控制的具体过程为,首先单片机获取焊接压力值的大小,之后通过与给定值行进做差运算后得到压力的误差值,经过PID运算后得到控制量,单片机将控制量通过DA转换然后控制电磁铁,最后单片机再次读取焊接压力值,这样就构成了一个反馈控制系统。单片机与PC机之间通过串口进行通信。为了保证通信的可靠性,本设计采用了数据帧以及CRC校验机制,即发送方将数据帧进行CRC校验后,然后将校验值加入到数据帧中一块发送,接收方接收到数据帧以后,用同样的方式对数据帧进行CRC校验,然后再与接收到的CRC校验值进行比较,当且仅当接收方计算出的CRC校验值与发送方发送过来的CRC校验值一致时,才能认为接收到的数据就是发送方发送的数据。关键词:焊接压力;闭环控制;单片机;PID算法;串口通讯AbstractIn the welding process,welding pressure and the welding time,directly affect the quanlity of welding.The purpose of this design is that research and design the welding pressure control system,and discuss the control methods.Finally verify the correctness and feasibility of the design by experiments.Design of welding pressure control system, including software and hardware.Hardware design includes: power supply module, microprocessor control module, DA converter module, communication module, the electromagnet driver module, pressure sensor module.Software design includes MCU software design and Windows application design.MCU software which is designed primarily to achieve the PID algorithm and interactive with the peripherals. Windows application is designed primarily to display welding pressure and using the serial port to send or receive message. In this design , the welding pressure control system uses a closed-loop control method,which has many advantages such as high precision, fast response, better anti-jamming ability. MCU with the PID control algorithm acts as a regulator, DA converter acts as executor, welding pressure is the controlled plant, pressure sensor acts as the feedback loop. The specific process : frist of all , MCU read the pressure value , then compared with the given value and subtraction to get the error, according to the error the PID controller calculates and output suitable control quantity to drive the electromagnet, finally MCU read the pressure value again, thus it constitutes a close loop control system.The communication between computer and MCU is through the serial port. In order to ensure the reliability of communication, this design uses a data frame with CRC, namely the sender add the CRC check value to the data frame. After the recipient received the data freames, the recipient using the same way with the sender to CRC data , then compare with the received CRC check value, if and only if the two CRC check value are equal, think that communication is successful and the received data is reliable.Key Words: Welding pressure; Closed loop control; MCU; PID algorithm; Serial communication 桂林电子科技大学毕业设计(论文)报告用纸 目录目 录1 引言12 系统硬件设计12.1 数字压力控制系统硬件方案12.2 数字压力控制系统模块设计22.2.1 电源模块22.2.2 单片机控制模块42.2.3 DA转换模块62.2.4 电脑通信模块72.2.5 电磁铁驱动模块72.2.6 压力检测模块82.3 本章小结103 系统软件设计103.1 单片机系统的软件设计113.1.1 焊接压力控制113.1.2 PID控制算法的实现133.1.3 压力值的获取133.1.4 DA转换143.1.5 焊接时间控制153.1.5 液晶显示163.1.6 串口通讯173.2 Windows应用程序设计193.2.1 串口数据的收发203.2.2 焊接压力等信息的显示203.2.3 主界面的设计213.3 本章小结224 系统样机调试234.1 DA转换模块调试234.2 驱动模块调试244.3 压力检测模块调试264.4 控制效果调试275 结论29谢 辞30参考文献31附录一 焊接压力控制系统电路原理图32附录二 焊接压力控制系统PCB图33附录三 焊接压力控制系统主要C语言原程序34附录四 元件清单50 桂林电子科技大学毕业设计(论文)报告用纸 第52页 共53页 1 引言现如今的的电子产品电路板上的元器件越来越多,元器件与元器件之间的间距也越来越小。没有一个性能优良的焊线机,就无法适应当今电子世间的快速发展。在焊线机焊线动作的过程中,焊机压力的大小和时间长短,直接决定了焊接质量的好坏。本次设计的目的就是稳定焊接压力的大小和控制施加压力的时间,对保证焊接质量有着重要的意义。本设计的目标是设计出一个数字式的焊接压力和时间控制系统,确保焊线机在焊接的过程中有稳定的压力和精确的时间控制,并且能够对焊接压力进行显示和记录。电源输入为AC220V10,50Hz。焊接的压力和施加压力的时间可调,并且焊接的压力和施加压力的时间误差范围不超过10。2 系统硬件设计2.1 数字压力控制系统硬件方案硬件部分本设计采用了分模块设计的方法,根据系统的需求设计出相应的模块,这样既方便了设计,也便于后期的调试以及日后的升级改进工作。本设计按照主要功能分可以设计为以下几个模块:电源模块、单片机控制模块、数模转换模块、电脑通信模块、电磁铁驱动模块、压力检测模块。综合以上模块,可得出系统框图如图2-1所示。数模转换模块单片机控制模块电磁铁驱动模块电脑通信模块压力检测模块电磁铁F电源模块图2-1 数字压力控制系统系统框图设计的主要思路为:电磁铁的压力值通过压力检测模块就能转化为表征压力大小的电压信号,然后这个电压信号再通过模数转换芯片就转化了成了单片机能够处理的数字信号,单片机就拿这个数字信号与设定的数值进行比较,得到偏差信号。该偏差信号经过调节器做PID运算后,通过数模转换器将调节压力信号由数字信号转换成模拟信号。由于螺线管线圈中的电流与电磁铁磁力成正比,通过电磁铁驱动电路将电压信号转换成电流信号,通过调节螺线管中的电流的大小,进而控制电磁铁磁力大小,达到稳定电磁铁磁力大小的目的。单片机与电脑之间能通过电脑通信模块进行相互通信,单片机能够将获取到的压力大小和系统的相关设定信息上传到电脑,而电脑也可以发送相应的设定信息到单片机。为了确保通信的可靠性,软件部分还需对通信过程中传输的数据帧进行CRC校验。即发送方将数据帧进行CRC校验后,然后将校验值加入到数据帧中一块发送,接收方接收到数据帧以后,用同样的方式对数据帧进行CRC校验,然后再与接收到的CRC校验值进行比较,当且仅当接收方计算出的CRC校验值与发送方发送过来的CRC校验值一致时,才能认为接收到的数据就是发送方发送的数据。2.2 数字压力控制系统模块设计2.2.1 电源模块电源模块的主要功能为:为系统提供安全可靠的电源,输出有直流5V和正负12V。本设计中电源要求输入为AC220V10%,频率为50Hz,输出则需要一个直流5V给单片机系统、压力传感器、数模转换模块供电,以及需要一个直流12V给电磁铁驱动模块供电。考虑到市场上双输出变压器比较容易获得,可而外加入一个-12V电路。考虑到如上需求,电源模块总体思路可定为降压、整流、滤波、稳压这4个步骤,总体思路如图2-2所示。图2-2 电源模块总体思路图各个步骤的作用如下:降压:将电网提供的220V交流电压转换为所需的交流电压。整流:由于二极管具有单向导电性,所以正负变化的交流电压经过二极管以后将变为单向脉动电压。滤波:减小脉动电压的波动,使得输出电压波动没那么起伏。稳压:利用电路的调整作用使输出电压稳定。(一) 稳压电路,采用的是LM7812和LM7912这两款三端稳压芯片。LM7812是一款三端稳压集成电路IC芯片元器件,适用于各种电源稳压电路,输出稳定性好、使用方便、输出过流、过热自动保护。其输入电压的范围是14.5V-30V,输出电压范围是11.4V-12.6V,典型值是12V,最大输出电流为1.5A。LM7912与LM7812类似,只是它输出电压为-12V,要注意的是,LM7912的引脚定义与LM7812有些差异,在设计时需要着重考虑。(二) 整流以及滤波电路,采用的是电容滤波的单相不可控整流电路。该电路结构简单,而且易于实现,经常用于单相交流输入的场合。常用于计算机、电饭锅等家电产品中,期整流部分就是如图2-3所示的单相桥式不可控整流电路。图2-3单相不可控桥式整流电路当空载的时候,输出电压最大,Ud=2U2 。当负载大时,输出电压最小,Ud=0.9U2 。当RC(352)T 的时候, Ud1.2U2 。(三) 整流电路的参数计算。滤波电容的电容值的确定:选用的电磁铁一般的工作电流在200mA左右就能得到满意的电磁吸力,加上单片机系统的工作电流,可以认为250mA是系统的最大工作电流,由此可得单相不可控桥式整流电路中的负载R可按50欧计算。由此可得滤波电容的电容值C=2.5 TR=2.5*0.02/50=1000uF为了防止自激振荡,在稳压器输入端一般要再接一个0.1uF-0.47uF的电容。为了消除高频噪声,输出端也需要接一个1uF以上的电容。为了防止因负载电流的变化而导致输出电压变化过大,所以输出端需要并上一个电容来存储和释放电荷。一般100uF到470uF就可以了。电源变压器变比的确定:由于Ud1.2U2 ,由于LM7812输入电压最低为14.5V,所以计算得到U2=14.5V / 1.2 =12V所以选用的变压器变比为220:12。(四) 5V电源的设计。本设计采用MP1584这一款DCDC降压斩波芯片,把之前获得的12V电源降压到5V,该芯片输入电压范围为4.5V-28V,开关频率为1.5MHz,特性稳定,且效率高,外围电路也相对简单。(五) 电源部分总体设计。电源部分总体设计如图2-4所示,变压器采用的是220V输出双12V输出,输出分别接到电压插座CZ1上,在插座CZ2和CZ3上分别能得到正负12V和 5V的电源,电源工作后3个LED灯会点亮。图2-4 电源部分总体设计原理图2.2.2 单片机控制模块单片机控制模块的主要功能为:实现PID控制算法、实现液晶显示、实现与电脑通信、实现按键的输入。本设计采用的是STC89C52RC这一款8位的微型控制器,该控制器使用的是经典的MSC-51内核,但与传统的51单片机相比,STC89C52RC有512字节的RAM,和8K的FLASH,具有内部EEPROM功能,多出一个定时器T2,可直接通过串口下载程序。完成能够胜任本次设计的需求。STC89C52RC的引脚图如图2-5所示。图2-5 STC89C52RC引脚图(一) 单片机控制器的引脚分配。单片机的引脚分配需要考虑到硬件的摆放情况和硬件所需要的功能,来进行合理的分配,引脚分配如表2-1所示。表2-1 单片机引脚分配情况引脚用途引脚用途P0-P71602液晶屏数据线P251602液晶屏RSP10按键“左”输入P261602液晶屏EP11按键“上”输入P271602液晶屏RWP12按键“下”输入P30串口接收P13按键“右”输入P31串口发送P20I2C数据线P32ADC模块时钟线P21I2C时钟线P33ADC模块数据线(二) 液晶显示。LED液晶显示使用的是LED1602这一款液晶屏。1602液晶屏使用简单,价格便宜,一次能显示32个字符、数字、符号等,自带字库,通信协议简单。1602显示屏如图2-6所示。图2-6 1602显示屏(三) 按键输入。按键使用的是独立按键,相对于矩阵键盘来说,独立键盘占用IO口会多一些,但是编程上会相对简单。本设计设计了4个按键,分别为“上”、“下”、“左”、“右”键。按下“左”或者“右”键的时候,液晶屏上的光标会在可以设置的参数下面左右移动。按下“上”或者“下”键的时候,可以对参数进行加减操作。当同时按下“左”和“右”键的时候,则执行调节任务。2.2.3 DA转换模块数模转换顾名思义就是把数字量转变成模拟量,本设计采用了PCF8591这一款8位转换芯片,PCF8591引脚图如图2-7所示。PCF8591是一款8位转换芯片,具有模数和数模转换功能,其特性如下:单独供电。PCF8591的操作电压范围2.5V6V。低待机电流。通过I2C总线串行输入/输出。通过3个硬件地址引脚寻址。采样率由I2C总线速率决定。有4路可配置单端或差分的模拟输入。自动增量频道选择。模拟电压范围从VSS到VDD。d内置跟踪保持电路。8-bit逐次逼近A/D转换器。通过1路模拟输出实现DAC增益。图2-7 PCF8591引脚图与单片机之间通信的接口为I2C总线接口,只需要使用单片机2个IO口即可,也不需要而外的外围器件就能正常工作,使用方便。本设计中只用到了PCF8591的数模转换功能,其中AOUT口的极限输出电流为正负20mA。2.2.4 电脑通信模块单片机与电脑之间的通信是通过串口。由于单片机系统电平为TTL电平,逻辑0为0V0.4V,逻辑1为大于等于2.4V,然而电脑串口是RS232电平,逻辑0为+3V+15V,逻辑1为-3V-15V 。电平是不匹配的不能之间通信,需要做电平转换。电平转换有许多种方法,直接使用MAX232这一款电平转换芯片,或者用分立件搭建。两种方法无本质差别,本设计采用分立件搭建电平转换电路。电平转换电路如图2-8所示。图2-8 电平转换电路图当TXD发送数据时,若发送逻辑0,则TXD电压为0V,这时三极管9012导通,PCRXD就会得到一个略微小于5V的电压,在PC端也就认为接收到了逻辑0。若TXD发送逻辑1,这TXD电压为5V,这时三极管9012是截止的,因为PCTXD平时是-3V-15V,二极管D1导通,电容C7充电,上负下正,电容的作用会保持一段时间,而PCRXD的电位与电容C7的上极板电位是等同的,所以PCRXD电压也会在-3V-15V,在PC端也就认为接收到了逻辑1。当PCTXD发送数据时,若发送逻辑1,则PCTXD电压为-3V-15V,三极管9013显然是截止的,RXD上的电压近似与Vcc相等,在单片机这端就认为接收到了逻辑1。若PCTXD发送逻辑1,折PCTXD电压为3V15V,此时三极管9013导通,RXD的电压为0V,在单片机这端就认为接收到了逻辑1。2.2.5 电磁铁驱动模块本设计采用的电磁铁为乐清轩睿宁电器有限公司生产的电吸盘,型号为XRN-XP25x20,使用过程中工作的电流范围为0mA300mA。所以选用NEC-D882这一款三极管来驱动,该三极管最大集电极电流为3A,集电极-基极击穿电压为40V,放大倍数大约为300,驱动原理图如图2-9所示。图2-9 电磁铁驱动原理图图中并联在电磁铁两端的二极管,起到保护作用。因为电磁铁为典型的感性负载,当突然断电的时候会产生一个较大的反电势,这个时候该二极管就会导通,从而保护了电路。假定流过集电极的最大电流为300mA,三极管电流放大倍数为300,三极管基极-射极的电压降为0.7V,数模转换器输出的最大电压为5V,则此时基极电流为1mA,则所需要的最小基极电阻为Rbmin=5V-0.7V1mA=4.3K所需的最大基极电流为Ibmax=300mA300=1mA2.2.6 压力检测模块压力传感器采用的是市面上常见的称重传感器,如图2-10所示。其测量原理是在弹性敏感元件上粘贴电阻应变片,应力的变化就转化成了压力的变化,从而变成电阻值变化,然后再通过差动电桥将电阻的变化转变为电压的变化。图2-10 称重压力传感器该传感器将电阻应变片分别安放到了直流电桥相邻的两个桥臂,从而构成了差动直流电桥,如图2-11所示。给1和3之间施加5V电压,然后读取2与4之间的电压差,然后与传感器上的重量进行相应的换算后,就能获得获取到传感器上的压力值的大小了。图2-11 称重压力传感器的差动直流电桥(半桥式)为了采集压力传感器输出的电压差,本设计采用了HX711这一款模数转换芯片。其引脚定义及描述如图2-12所示。图2-12 HX711引脚定义及描述HX711是一款24位A/D转换芯片。与其他的A/D转换芯片相比,HX711集成了稳压电源、片内时钟振荡器,有着强抗干扰性、高集成度、快速响应等优点。而且价格便宜,因此制作高精度电子秤的成本也相应得到降低。无需对HX711进行编程,与单片机通信只需要用到时钟和数据这两个管脚。有A和B两个输入通道可供选择,输入信号进入通道以后会进过一个内部的低噪声增益可编程放大器,进而放大输入信号提高灵敏度。内部可编程放大器的增益为128或者64,当增益为64时,最大差分输入信号的幅度为40mV,当增益为128时,则为20mV。通道B一般用于检测系统参数,其增益固定为32。HX711内部的A/D转换器或者外部的传感器可直接使用HX711内部的稳压电源电路供电。HX711无需外接器件就能使用内部的时钟振荡器。HX711的开机初始化过程比较简单归功于其有上电自动复位功能。HX711在电子秤应用中的典型应用方案如图2-13所示。图2-13 HX711在电子秤应用中的典型应用方案图2.3 本章小结本章描述了本次毕业设计硬件设计部分,采用了模块化设计,这里说的模块化设计,即将产品的一些要素放到一起,于是就构成了一个新的“组合”,这个“组合”可以看做一个整体,也可以与其他要素进行组合,增加新的功能构成新的“组合”,于是就能产生多种不同的产品。不仅方便了设计,而且极大方便了后期的调试工作。3 系统软件设计焊接压力控制系统的软件设计总体分为两个方面,分别是单片机系统的软件设计和Windows应用程序软件设计。在单片机系统软件方面,要求单片机能够控制焊接压力的大小和时间,以及能够与电脑的应用程序进行交互;在Windows应用程序方面,要求应用程序能直观地反应出焊接压力的变化,以及能够设置单片机的一些控制参数。本次设计选用的单片机为STC89C52RC,可供选择的编程语言有C语言和汇编语言。汇编语言,也被称为“机器语言的助记符”,有着效率高、代码执行速度快等优点,但如果工程量比较大,又掺有复杂运算、浮点运算、非线性方程等,汇编语言恐怕很难胜任开发任务了。然而相对于汇编语言来说,C语言有着可读性强、开发效率高、便于移植等优点,因此能胜任工程大的编程任务。所以本次设计采用C语言作为单片机系统的编程语言,完成软件发开任务。集成开发环境为Keil uvision5。Windows应用程序开发使用的编程语言为C+,以及使用Qt creator来完成Windows应用程序的开发任务。Qt Creator是一款优秀的跨平台的集成开发环境,据官方描述,其设计理念就是通过Qt这个应用程序框架使得使开发人员能够轻易地和快速地完成开发任务。Qt这个集成开发环境能够跨平台运行,支持Linux、Windows、Mac OS X。Qt可跨不同嵌入式操作系统和桌面去部署我们的应用程序,我们无须重新编写源代码,只需进行一次应用程序开发。3.1 单片机系统的软件设计焊接压力控制系统的单片机软件部分主要需要实现的功能如下:焊接压力的控制。其中包括PID控制算法、压力的获取、DA转换;焊接时间的控制。其中包括定时器的灵活运用;液晶显示。其中包括界面的设计和说明以及处理按键的输入;串口通讯。其中包括通过串口上传数据和接收数据;单片机系统软件框图如图3-1所示。图3-1 单片机系统软件框图3.1.1 焊接压力控制焊接压力控制的最终目的是“稳、准、快”。“稳”指的是压力控制系统要具有稳定性,控制系统的稳定性是控制系统中最重要的问题,无所谓稳定性就无所谓控制系统,控制系统在使用的过程中难免会收到干扰,撤除干扰后系统还能恢复原来的平衡状态,就称系统具有稳定性。“准”指的是压力控制系统要具有准确性,即压力的最终稳态值应该与期望值一致,若无法做到与期望值一致,则应该让稳态误差尽量的小。“快”指的是压力控制系统要具有快速性,即应该尽快的把压力的大小调节到期望的数值上,而且最大震荡幅度也要符合要求。为了达到上述目的,正确地选用控制器和选择使用开环还是闭环控制方式,成为了一个关键性的问题。控制系统中的控制器,采用的基本控制规律不外乎比例、微分、积分等,或者是这三者的一些组合,如比例积分控制(PI)、比例微分积分控制(PID)控制等,以此来对被控对象进行有效的控制,现在这种条件技术已经相对成熟,应用范围广泛。本次设计采用单片机实现PID调节运算,来实现对焊机压力的控制。所谓PID调节运算是指根据目标值与输入值之间的偏差,对这个偏差进行比例、积分、微分运算,运算出来的结果用来控制执行器。焊机压力控制框图如图3-2所示。控制的具体过程为,首先获取压力值的大小,之后通过与给定值行进做差运算后得到压力的误差值,经过PID运算后得到控制量,单片机将控制量通过DA转换然后控制电磁铁,构成了一个反馈控制系统。图3-2 焊机压力控制框图不同于开环控制系统,反馈控制系统是根据偏差来实施控制的,不管是什么原因使被控量与期望值产生误差,为了使被控量与期望值保持一致,调节器必定会执行一个相应的动作去消除或者减小这个误差。可以说,反馈控制系统能够抵制任何扰动对被控量的干扰,提高了系统的抗干扰能力,而且还具有较高的控制精度。所以主程序应体现闭环控制的特点,主程序流程图如图3-3所示。图3-3 主程序流程图3.1.2 PID控制算法的实现PID控制算法的主要思路如下:先计算出目标值与当前的压力的差值称之为误差;将这个误差与误差和进行加法运算,此时应该注意的是误差和的数据范围,若超出误差和的数据范围,应当采取措施避免数据溢出导致计算出错;令前一次的误差(Error-2)等于上一次的误差(Error-1),令上一次的误差等于当前误差,然后计算出微分误差(dError);根据比例调节系数(Kp)和当前误差可以计算出比例控制的控制量,根据积分调节系数(Ki)和误差和可以计算出积分控制的控制量,根据微分调节系数(Kd)和微分误差可以计算出微分控制的控制量,最后把这三相的数据相加就能获得PID控制的控制量。PID控制算法流程图如图3-4所示。图3-4 PID控制算法流程图3.1.3 压力值的获取欲获取压力的大小,则需要读取HX711这一款A/D转换芯片的转换结果,由于压力传感器一般是线性的,所以可以使用多组转换结果和实际物体的重量,来计算出A/D转换结果与压力大小的数学关系。例:假设砝码1的质量为g1克,砝码2的质量为g2克。将砝码1和砝码2分别放置到压力传感器上,获取得到的AD转换结果分别为v1和v2。以及当传感器上没有物体时,此时获得的AD转换结果为v0。当一个物体放置到压力传感器上时,AD转换结果为v3,求该物体的质量g3。解:如图3-5所示,假设斜率为K,使用逐差法得质量转换结果v0v1v2g1g2图3-5 转换结果与质量关系图K= g1-0v1-v0+g2-g1v2-v1 2所以被测物体的质量g3可根据直线方程的特性求得g3=v3-v0K在程序设计的时候应该注意的是转换结果是一个24位的有符号数,所以需要使用一个4字节即32位的长整型去存储。为了保留转换结果的符号,方便单片机进行计算,可以先使用一个无符号长整型去保存转换结果,然后将结果左移8位后赋予一个有符号的长整型,然后将这个有符号的除以256即可。3.1.4 DA转换单片机与DA转换芯片PCF8591之间的通信是通过I2C总线协议。本次设计只使用了PCF8591的DA转换功能,所以只用到I2C总线协议中发送部分。单片机(主机)给PCF8591(从机)发送字节的一般步骤为:单片机产生I2C启动信号;发送PCF8591的器件地址字节;校验应答;发送PCF8591控制字节;校验应答;发送需要转换的数值;主机产生停止I2C信号,并释放总线。器件地址字节的高4位(第4-7位)固定为1001B;其最低位(第0位)如果是1的话表示读操作,如果是0的话表示写操作;第3-1位分别为PCF8591的器件地址位A2、A1、A0;由原理图可知PCF8591的地址为000B。地址字节如图3-6所示。所以可以得出使用DA功能需要发送的地址字节为10010000B(0x90)。图3-6 PCF8591地址字节控制字节的第7位和第3位固定为0;其第6位如果为1表示启用模拟量输出,如果为0则禁止模拟量输出;其第5-4位表示模拟量输入方式的选择,00表示4通道单独输入,01表示3通道差分输入,10表示2个单独输入和1个差分输入,11表示2个差分输入;第2位表示自动递增,如果为1则自动递增A/D通道号;第1-0位表示AD输入的通道号。如图3-7所示。所以可以得出使用DA功能需要发送的控制字节命令可以为01000000B(0x40)。图3-7 PCF8591控制字节由硬件原理图可知参考电压VREF为5V,模拟地VAGND为0V,所以可以得出输出电压VAOUT与数据寄存器之间的关系式为VAOUT=5256i=07Di2i3.1.5 焊接时间控制焊接的时间控制使用的是52单片机的定时器2,该定时器可配置为3种工作模式,即16位自动重装载定时器模式、16位捕获模式、串口接收或者发送的波特率发生器。定时器2的控制寄存器T2CON如表3-1所示。表3-1 定时器2的控制寄存器T2COND7D6D5D4D3D2D1D0TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2TF2为溢出标志位。在定时器2溢出的时候会被硬件置1。特别的当定时器2用作波特率发生器时,该位不会置1。在溢出时,必须软件将TF2清0。EXF2为外部捕获标志位。当使用捕获模式时,外部信号输入引脚(P1.1)来一个下降沿,则会将EXF2置1,并进入中断服务程序。RCLK为串口接收时钟模式位。当RCLK置1时,定时器2的溢出脉冲就做为串行口的接收时钟。TCLK为串口发送时钟模式位。当TCLK置1时,定时器2的溢出脉冲就作为串行口的发送时钟。EXEN2为外部捕获使能位。TR2为定时器2的启动位。当TR2置1时,定时器2开始工作。C/T2为计数/定时器模式选择位。CP/RL2为捕获/重装选择位。当CP/RL2置1时,选择定时器2为捕获模式。当CP/RL2置0时,定时器2为自动重装载模式。应当注意的是T2CON寄存器的地址为0xC8,需要检查reg52.h这个头文件中是否添加了T2CON寄存器的定义,如果没有定义的话,可以在reg52.h中加入“sfr T2CON = 0xC8;”即可。 本次设计需要将定时器2作为一个16位的自动从装载定时器来使用,所以可以将T2CON设置为0x00。此时只需要在初始化的时候赋予RCAP2H和RCAP2L定时器初始值,当定时器溢出就会自动使TH2=RCAP2H、TL2=RCAP2L,使用方便且误差小。由于采用的晶振的频率为11.0592MHz,需要定时的时间为1毫秒,配置定时器为自动从装载向上计数模式,则计算可得需要计数921.6下,所以得出定时器初始值为65536-922=64614,即0xFC66;若设定的焊接时间大于0,则在定时器中断服务程序中会将设定的焊接时间减1。若焊接时间等于0,则停止当前的控制任务。3.1.5 液晶显示LED1602液晶显示屏的一次最多能显示32个字符,分为两行每行可以显示16个字符,其界面设计如图3-8所示。图3-8 LED1602界面设计第一行的“240.5g”表示当前焊接压力的大小为240.5克。第一行的“10.0s”表示当前剩余的焊接时间为10.0秒钟。第一行的“188”表示当前DA转换器数据寄存器的值为188。第二行的“240.0g”表示设定的焊接压力大小为240.0克。第二行的“30.0s”表示设定的焊接时间为30.0秒。第二行的“AUT”表示为自动调节模式。有些数字下面有下划线,表示的是该位可以更改。例如,当光标位于第二行“240.0g”的数字2下面时也就是“240.0g”,如果按下按键“上”,则数字 “240.0g”将会变成“340.0g”,也就是说把焊接压力更改为了340.0克。如果此时按下按键“右”,则光标会移动到右边的一个数字4下面。同理按键“下”和按键“左”。如果光标位于第二行“AUT”这个位置的时候,按下按键“上”或者“下”,则可以将自动模式修改为手动模式,这个时候将显示“MAN”,可以按下按键“右”定位光标到第一行最后一个数字处,更改DA转换器数据寄存器的值,达到手动调节的目的。如果同时按下按键“左”和按键“右”,则把设定的焊接时间和焊接压力设置到相应的控制参数,即执行了一次调节任务。3.1.6 串口通讯STC89C52RC串口的使用方法与传统的51单片机几乎完全一样,不同的是52单片机可以使用定时器1和定时器2作为波特率发生器。本设计采用8位数据位,1位起始位,1位停止位的通信格式,波特率选用19200bps,所以将串行口配置为方式1即10位异步收发器(8位数据)模式。方式1波特率的计算公式如下:波特率=2SMOD32T1溢出率所以计算出SMOD=1,T1溢出率为307200次每秒。那么T1溢出一次就是需要1/307200秒,因为定时器1计数一次需要的时间为12/11059200秒,所以定时器1需要计数的次数为11059200/(30720012)=3次。所以将定时器1设置为模式1,并将初始值设置为256-3=253,即0xFD。为了便于数据传输和保证通信数据的可靠性,将需要传输的数据设计为如下帧格式,如表3-2所示。表3-2 传输数据的帧格式D0D1D2D3D4D5D6D7帧头CRC16校验值(2)帧长度压力值的大小(4)D8D9D10D11D12D13D14D15压力设定值(2)焊接时间(2)设定焊接时间(2)DA的数值(2)D16D17D18D19D20D21D22标志比例调节系数(2)积分调节系数(2)微分调节系数(2)表中括号中的数字代表该数据占用字节数。需要传输的数据帧长度一共为23个字节,为了方便传输,将其定义为结构体。数据帧各个字段的含义解释如下:帧头:顾名思义就是一个数据帧的开始,本设计将其固定为0xAA。CRC16校验值:循环冗余校验,为了确保数据传输的可靠性,在发送的时候,对数据帧的D3-D22进行CRC16校验,并把结果存放到数据帧的D1和D2。在接收的时候,同样的把接收到的数据帧的D3-D22进行一次CRC16校验,并把结果与接收到的数据帧的D1与D2进行比对,校验结果一致才能认为数据有效。帧长度:本设计中的参数都为固定长度,所以帧长度固定为23个字节。压力值的大小:从压力传感器读取到的压力的大小,占4个字节。压力设定值:用户设定的焊接压力的大小。焊接时间:剩余的焊接时间。设定焊接时间:用户设定的焊接时间。DA的数值:PCF8591的DAC数据寄存器的值。标志:一些界面的更新标志。比例调节系数:PID调节器中的比例调节系数(Kp)。积分调节系数:PID调节器中的积分调节系数(Ki)。微分调节系数:PID调节器中的微分调节系数(Kd)。应该得到充分考虑的是,51以及52单片机的数据存储方式为大端字节序,然而PC机为小端字节序,这两者之间是有细微的差别的。大端字节序是把数据的高字节存放在地址的起始位置。小端字节序则相反,把数据的低字节存放在起始位置。比如需要存放一个双字型数据0x12345678到起始地址为0x0000的内存中的时候,52单片机的存储方式如表3-3所示,然而PC机的存储方式如表3-4所示。表3-3 52单片机的数据存储方式0x00000x00010x00020x00030x120x340x560x78表3-4 PC机的数据存储方式0x00000x00010x00020x00030x780x560x340x12在接收数据的时候,应该把函数做成非阻塞模式,也就是当还没有接收到一个完成的数据帧的时候,函数应该立即返回,而不是去死等,CPU可以去完成其他的工作,这样做提高了CPU的利用率。接收数据流程图如图3-9所示。图3-9 串口接收数据流程图3.2 Windows应用程序设计焊接压力控制系统的Windows应用程序部分主要需要实现的功能如下:1. 串口数据的收发。2. 焊接压力等信息的显示。3.2.1 串口数据的收发Qt官方并没有专门提供串口控制的类,现在大部分开发人员使用的是qextserialport这个第三方写的开源串口控制类。一般的初始化如下:Win_QextSerialPort *myCom; /声明串口类的对象myCom=new Win_QextSerialPort(“com1”,QextSerialBase: EventDriven);myCom-open(QIODevice:ReadWrite);/打开串口1if (myCom-isOpen() = true)myCom-setBaudRate(19200);/设置波特率myCom-setDataBits(DATA_8);/设置数据位myCom-setParity(PAR_NONE);/设置奇偶校验myCom-setStopBits(STOP_1);/设置停止位myCom-setFlowControl(FLOW_OFF);/设置控制流connect(myCom, SIGNAL(readyRead(), this, SLOT(ReadMyCom();/当 有数据的时候,调用槽函数ReadMyCom去处理接收串口数据:QByteArray rx_buffer;ReadMycom()rx_buffer += myCom-readAll();/将串口接收到的数据保存到rx_buffer中发送串口数据:myCom-write(const char *)tx_buffer,BUFFER_LENGTH);3.2.2 焊接压力等信息的显示想要显示焊接压力的实时变化,最直接的方式就是把数据用曲线图的形式展示出来。本设计采用的是QCustomPlot这个小巧的绘图类,只需要在工程中加入一个头文件和CPP文件就能使用,简单方便,被开发者广泛接受。一般的初始化如下:QCustomPlot *plot;/声明绘图类的对象指针plot = ui-qCustomPlot;/使用界面中的绘图对象plot-addGraph();/添加曲线plot-graph(0)-setPen(QPen(Plot_LineColor, LineWidth);/设置曲线样式plot-graph(0)-setScatterStyle(QCPScatterStyle(QCPScatterStyle:ssCircle,QPen(Plot_DotColor, LineWidth),QBrush(Plot_DotColor), DotWidth);/设置数据点的样式/ 设置X轴plot-xAxis-setTickLabelType(QCPAxis:ltNumber);/设置数据格式为数字plot-xAxis-setAutoTickStep(false);/关闭自动刻度间距plot-xAxis-setTickStep(100);/设置刻度间距为100plot-xAxis-setRange(0, 500, Qt:AlignCenter);/数据范围-250-250plot-xAxis-setAutoSubTicks(false);/关闭自动子刻度间距plot-xAxis-setSubTickCount(10);/设置子刻度间距10/ 设置Y轴plot-yAxis-setTickLabelType(QCPAxis:ltNumber); /设置数据格式为数字plot-yAxis-setRange(0, 4000); /数据范围0-4000plot-yAxis-setAutoTickStep(false); /关闭自动刻度间距plot-yAxis-setTick
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训机构入股合同范本
- 海尔空调采购合同范本
- 海绵鞋料售卖合同范本
- 社区广告合作合同范本
- 商场店面装修合同范本
- 宜州租房转租合同范本
- 石材施工采购合同范本
- 简单的付款合同范本
- 工程押金协议合同范本
- 外卖代理合同范本
- 通信技术未来发展趋势
- 整形美容外科进修汇报
- 立达RSBD并条机培训资料讲课文档
- 2025年幼儿园膳食工作计划
- 心绞痛健康宣教课件
- 奥尔夫音乐教师培训课件
- 幼儿园防蚊虫健康活动
- 渝23TJ02 丁基橡胶弹性体复合高分子自粘防水卷材建筑防水构造 DJBT50-167
- JJG 667-2025液体容积式流量计检定规程
- 介入术后迷走神经反射护理讲课件
- 2025至2030中国核桃油行业市场发展分析及投资前景与投资策略报告
评论
0/150
提交评论