




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的起重机升沉补偿系统设计目录TOC\o"1-2"\h\u12001绪论 246951.1选题的背景及意义 2104931.2单片机的发展及趋势 3183501.3PID控制的发展及趋势 480331.4课题的主要工作 5107232系统设计基本原理 637692.1PID调节 6265182.2PWM控制技术 6188292.4本章小结 756183元器件及模块选择 8292103.1整体方案 843633.2单片机STC89C52 9296093.3超声波测距模块HY-SRF05 10164963.4电机驱动模块L298N 1290673.5直流减速电机 14268743.6OLED显示模块 14116423.7本章小结 16159664系统的软件设计 17221984.1C语言介绍 17148664.2软件介绍 1788404.3主函数 1810873主程序设计思路参考流程图4-2 1891804.4超声波测距算法实现 2148864.5PID算法 244244.7显示函数 28127794.8本章小结 2983475.系统调试 30205625.1硬件调试 3080125.2软件调试 30255186成本核算 311绪论1.1选题的背景及意义20世纪末,电子相关的技术发展迅速,同时也出于其行业需求,使得电子产品越来越袖珍化、智能化。而广泛应用于工业控制、网络通信、医疗器械、航天航空、仪器仪表和汽车电子等领域的单片机更是发展到一个新的高度。单片机就是在一片半导体硅片上,集成了中央处理单元(CPU)、存储器(RAM、ROM)、并行I/O口、串行I/O口、定时器/计数器、中断系统、系统时钟电路及系统总线的用于测控领域的微型计算机[2],简称单片机。简而言之,集成了众多功能的单片机就像是一个迷你化的计算机。它作为应用和开发的芯片有诸多优点如:质量轻、面积小、价格低廉等。除此之外,单片机也可以用来学习计算机组成原理。正因可利用单片机的地方实在太多,单片机的使用范围才相当广阔。本课题需要让单片机把升沉信号传递到减速电机来控制电机转速以此达到补偿竖直方向位移的目的。通过基于单片机设计的海上起重机升沉补偿系统,能够让我更加清晰地认识到单片机的研究开发和设计流程,这样既能够加深我对于单片机的认识和理解以及在实际操作中的掌握,也能使我更好地理解单片机与其外围部件之间的接口相互作用的一些基本方法和技术,将本科四年所学电路、单片机、自动控制、C语言等专业知识触类旁通,并提高其解决步入社会后将实际遇到的工程问题的能力。1.2单片机的发展及趋势单片机(micro-controllers)是它是一种利用大规模集成电路技术再通过硅片来集成电路的计算芯片[3],硅板上已经部分集成了用于应用程序的正常运行,信息处理的最终过程执行函数单元中央处理器CPU、作为随机操作系统或其他正在写入应用程序中的操作程序的暂时只读数据作为存储介质的随机数据存储器RAM、和只能被机器自动读取却又暂时无法被程序写入的只读数据存储器ROM、以及多种具有I/O口及数据中断口的控制处理系统、定时器/自动计数器。利用这种大范围的集成电路控制技术把它们都集成在一块多晶硅片上,就这样一个麻雀虽小但是五脏俱全的微型移动计算机集成控制系统就被制造出来了。出生于上世纪七十年代早期的单片机,其成长历程主要有四个阶段。(1)早期探索阶段:上世纪七十年代,最早由Fairchild公司成功研发出了第一片可以称的上是单片机的芯片,F-8。然而不久之后Intel公司就紧随Fairchild公司其后推出了MCS-48系列单片机,这款单片机不仅影响更大、应用更广,更是为后来的MCS-51系列打下了基础[4]。(2)处理器结构的完善阶段:随着MCS-48系列的大获成功,如日中天的Intel公司在进一步升级了MCS-48的处理器结构后变很快就推出了一个结构更加健全的处理器系列MCS-5l。MCS-5l系列充分完善了单片机的内部通用线路,即总线架构以及指令和系统、体积大小和功能集成。(3)从典型SCMC向MCU化的新型过渡阶段:Intel公司在推出了MCS-51单片机后,又迅速研发出一款相对于MCS-51进一步升级的单片机系列MCS-96,这款单片机将一些主要的应用于现代计算机数据测控处理系统的模数转换器(ADC)、程序执行状态监视器(WDT)、脉宽调制器(PWM)、高速射频I/O口等全都被包含在芯片之中,这体现了这种新型单片机的各种微控制器件的性质。单片机的成长过程可以理解为从单片机逐渐变成一个具有完善功能的微机系统的过程。(4)MCU的百花齐放发展阶段:出于工控领域智能化的需要,单片机发展的脚步继续向前迈进,单片机逐渐向自动化、智能化方向发展,随后一系列高速、大寻址范围、强计算运行能力和多机通讯能力的8位、16位、3位的通用型单片机和专业化单片机[5],以及五花八门各有特色的现代化单片机接连出现,然而半导体技术的发展永远不会停止,硅片的设计水平也一直在上升,单片机的发展和创新永远都不会停止。之后还会有更多型号的单片机诞生,单片机与微机系统的差别也将进一步缩小。1.3PID控制的发展及趋势物理学家奈奎斯特最先采用图形的方法来判断系统的稳定程度。在此之上伯德设想到了一种可以根据频域区间范围设计的反馈式放大器。该套方式便是PID控制模型的雏形,这套模型至今已有70年的历史。随着更新迭代,PID控制技术有了稳健的发展,尤其是计算机科学技术的不断进步,使得PID控制系统产生了一个巨大的转变,原先模拟PID调节技术已经大有被传统的数字PID控制技术所替代之势,并且更多的新型PID控制算法和控制手段也在这一时期同步兴起和涌现。当然,许多高级控制在生产过程系统控制的发展路程中不断涌现,但是PID算法有着简易的结构、可靠的稳定性、易于调整的优点,并且在长期的工程实践中已经积累了相当丰富的经验的优势使其仍然占据了大量的市场,在一些生产过程中如果要建立被控对象精确的数学模型相当困难,因为其系统参数经常发生变化[6]。也正是如此PID控制器才大受欢迎。然而从技术发展至今,PID控制器也存在着许多的不足和一些亟待改进之处,对于一些较为复杂的对象,例如延时很大、参数的时变速度也比较快,不确定性明显且非线性严重的对象时,PID控制器的控制效果并不理想。不过可以针对PID控制器的部分控制功单独拿出来进行改良,则可以很好地提升被控系统的控制质量。比较典型的,如积分分离PID控制算法,遇限削弱积分PID控制算法等是通过对PID积分环节进行改进而得到的[7];不完全微分PID控制算法、微分先行PID控制算法等则是通过对微分环节进行改进而得到的。使用积分分离算法后,饱和积分被克服了,系统超调会明显降低,同时过渡时间也缩短了。目前,基于软计算科学的模型主要有很多种,比如有模糊模型、粗集模型、小波模型、运动模式模型、非参数预测模型等等模型。对这些模型在工作机制方面的认识还是需要继续不断的摸索。当今时代,控制系统的理论不断成熟,计算机软、硬件技术不断进步与发展,传感器的数据集成性也不断增强。今后关于智能PID控制的相关技术研究与应用的方向会更加清晰,具备越来越广阔的发展前景。1.4课题的主要工作本研究课题主要采用HY-SRF02模块进行测距,以此对模拟的货物进行相对距离的采集,并且利用STC89C52单片机来对货物进行超声波测距模块的工作进行控制,使得测距模块能够同时进行多次采样和工作,从而通过测距获取的吊钩与货物之间的相对距离值,对所获取的高度值与设定的距离值进行比较,然后再通过L298N电机驱动模块对直流减速电机进行控制,使得直流减速电机进行自动调速。采用PID控制策略,当钩子相对距离与设定距离差值为负时电机正转,带动钩子下降,反之,当相对距离与设定距离差值为正时电机反转,带动钩子上升,使升沉补偿控制系统可较准确快速地对吊钩进行竖直位移方向上的补偿,以提高海上起重机的作业效率与安全性。本研究课题需要的主要准备就是在深入地学习了单片机的工作原理和与C语言有关的软件编程技术和方法基础上,搜集和学习一些有关单片机控制的相关技术和系统的信息,理解了PID控制的工作原理。了解HY-SRF05、OLED以及L298电机驱动模块与直流减速电机的相关工作原理。更进一步的学习单片机,同时也学习了相应硬件接线和调试方法。了解海上起重机以及自动升沉补偿系统的基本结构和其工作原理,主动式升沉补偿系统的控制策略,使该系统控制策略能够根据波浪引起的竖直方向吊钩与货物之间距离的变化,控制升沉补偿系统的装置做出相应的精确补偿,升沉补偿系统的控制过程设计。选择测距控制信号的发射、反射及接收装置,进行软件和硬件的设计,基本完成整体功能,并进行模拟试验。
2系统设计基本原理2.1PID调节PID即是英文Proportional(比例)、Integral(积分)、Differential(微分)的缩写。PID调节可以简单的认为是一种结合了比例、积分、微分三个环节的调节办法[8]。PID调节作为一种包含了比例、积分以及微分作用的一种线性调节方式,其在经典控制理论中有不可替代的地位。比例环节:控制器成比例地反应当前系统的误差和偏移信号[9],当系统产生误差时,控制器就会立刻做出反应,从而产生一个可以通过控制的作用来降低系统误差。如果误差为0,那么控制作用也会变成0,因此比例控制属于有差调节。其中的信号传递方式没有惯性,具有输入和信号之间的传递不失真,及时,成比例地复现了输出和信号之间的变动等特点。然而它也有不足之处,首先它不能完美地消除系统产生的稳态误差,其次就是比例放大倍数的设定,小了系统不能快速做出调节,大了又会影响到系统的稳定性。积分环节:将系统的误差进行累加,即将控制器的输出与输入之差对时间进行积分,这样的话虽然可能每次产生的误差并不大,但当时间足够长的话误差仍会出现,这个误差就是稳态误差,而积分环节的作用就是控制调节控制器使其输出增大来消除稳态误差。简单地说,积分环节的作用就是对误差记忆,消除因为摩擦力,空气阻力等等因素产生的误差,消除系统静差,提高无差度。微分环节:通过及时反映系统当前的偏差值和误差信号的变化速率,就可以在系统误差信号转化变得非常大前就对其信号做出一个及时的自动纠正,即可以提前对系统信号进行自动反应,因此系统的平均动作速度将有所增加,可以大大减少整个系统的超调的持续时间,误差越大其作用越明显。从时间上看,比例环节作用的可以对系统每时每刻产生的误差进行调节,而积分环节的作用则会对过去的累计误差作出反应,最后微分作用又提前对系统将要产生的误差进行反应。正是现在、过去、未来的结合使得PID控制成为现在最好的控制策略之一。PID控制的表达式为:(2-1)式中Kp为比例系数,Ti为积分系数,Td为微分系数。2.2PWM控制技术PWM(PulseWidthModulation)即脉冲宽度调制,这是一种对模拟信号电平进行数字编码的常见方法。利用微处理器的数字输出对模拟电路进行控制的技术[10],其应用领域十分广阔,如应用到测量、通信和功率变化等领域。简单而言PWM控制技术是利用对脉冲宽度的调节来等效地获得模拟信号时所需要的频率和宽度,即把一个模拟信号的电平转换成数字化进行编码。因为本课题需要调节电机的转速,而单片机的I/O口输出的是数字信号,要么输出高电平要么输出低电平,所以这里要再引入一个概念:占空比。占空比即在一个脉冲周期内,高电平所占的时间与整个周期的总时间之比[11]。因此PWM对与脉冲宽度的调节可以调节其占空比大小。如果脉冲宽度变宽,占空比变大,输出的能量就会提高。同样,如果脉冲宽度变窄,输出的能量变小。在一定工作频率下,通过模拟各种占空比即可轻松获取不同的模拟输入和模拟输出电压,PWM就是这样利用此类的原理来快速实现从一个数字信号到模拟信号之间的数据转化。安培力是通电导线在磁场之中所受到的力,其公式为:F=BIL(2-2)想要改变电机的转速只需改变电机流过的电流大小,电机的电阻在工作过程中保持不变,根据欧姆定律想要改变电机工作电流只需改变其两端的电压即可,而PWM调制原理就是把固定的直流电压转换成不同电压值的模拟信号,这便是通过PWM调制来改变电机转速的原理。2.4本章小结本章主要介绍了要实现升沉补偿所用到的两种控制办法,PID控制技术和PWM控制技术,以及相关的工作原理,这为接下来元器件的选用打下了基础。3元器件及模块选择3.1整体方案本课题设计的海上起重机的升沉补偿系统主要是由MCU单元、超声波测距模块、电机驱动模块、直流减速电机、OLED显示电路、和复位电路等部分组成。图3-1系统原理图图3-2系统总体电路图MCU单元采用STC89C52单片机,作用是接收测距模块传递到的高度信息,之后再通过I/O口控制电机驱动模块L298N,最后再控制直流减速电机的转速以及正转反转。3.2单片机STC89C52STC89C52
是一种带
8K
字节闪烁可编程可檫除只读存(ROMPER-ProgrammableandErasableReadOnlyMemory)的低电压,高性能
COMOS8
的微处理器,俗称单片机。STC89C52具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构)[12],全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式[13]。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作[14]。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止[15]。图3-3STC89C52引脚图①主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线。②外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端。XTAL2(Pin20):片内振荡电路的输出端。③控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号。PSEN(Pin29):外部存储器读选通信号。EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。④可编程输入/输出引脚(32根):STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。PO口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7。P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7。P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7。P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.73.3超声波测距模块HY-SRF05超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。图3-4HY-SRF05实物图图3-5HY-SRF05电路图表3-1HC-SRF04测距模块的电气参数表电气参数HC-SRF05超声波模块工作电压DC5V工作电流15mA工作频率40kHz最远射程4.5m最近射程2cm测量角度15度输入触发信号10us的TTL脉冲输出回响信号输出TTL电平信号,与射程成比例规格尺寸45*20*15mm该模块有5个引脚,VCC、GND、Trig、Echo、OutVCC:接电源GND:接地OUT:该开关量输出,也可以用做报警模块Trig:此引脚控制信号的输入,即可以发出10us的高电平来触发模块进行测距Echo:信号接收,该引脚可以在接收到反弹回来的信号后产生一个和距离成比例的方波功能实现:采用I0口TRIG触发测距,给至少10us的高电平信号接着模块自动发送8个40khz的方波,自动检测是否有信号返回最后有信号返回,通过I0口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。图3-6超声波时序图3.4电机驱动模块L298N电机驱动芯片的作用是通过控制电机的旋转方向和运转速度,以此来控制占空比,从而达到对电机控制的目的。L298N模块是美国ST公司自主研发和生产的一种工作时可承受高电压、高电流的电机驱动模块,此模块选择15脚进行密闭。主要技术特点有:直流工作状态下电压高,最低的直流工作电压也可达46v;峰值输出瞬间电流大,瞬间电流峰值输出电流最大可以到达3A,持续稳压运行时的最大峰值电流可达2A;额定输出容量最大功率25w。内含两个H桥的高直流电压大型低电流全自动桥式电源驱动器,被广泛地设计用来驱动直流电力发动机和高速步进直流电动机、继电器驱动线圈等各种传感性电路负载;采用国际标准的内部逻辑输入电平电源信号进行控制;同时可以通过一个外接器件检查输入电阻,将其中的电压变化信号数据反馈到外部控制电路中。L298N的特点可简单概括为:能控制电机进行正转和反转,以及电机的调速、启动性能优秀,启动转矩大、工作时的电压可达到36V,4A、可以同一时间驱动两个直流电机工作。当然,本次课题只需要利用L298驱动一个电机即可。图3-7L298N工作状态图设置IN1和IN2,就可对直流电机PWM调速。如果要调速先需明确电机的转动方向,然后对使能端输出PWM脉冲,可以完成调速。但如果使能端为无信号时电机停止工作。如果需要阻止电机运行则需要使能信号为高电平并且相应的控制端处于相同的电平信号才能达到要求。图3-8L298N驱动电路图3.5直流减速电机直流减速电机,又叫齿轮减速电机,它是在普通直流电机的技术基础上,再添加配套的齿轮减速箱。齿轮减速箱可以提供较低的速度和较大的扭矩。同时,不同减速比的齿轮箱可以提供不同的转速和扭矩。由于其简易性与灵活性和较高的性价比,直流减速电机在自动化领域所占的市场份额正在不断提高。通常直流减速电机由专业的减速机生产厂家进行整体组装,成套供货。减速电机不仅在各种机械工程行业大显身手,在钢铁行业也能时常见到它的身影。其优点是简化了设计,节省了空间。3.6OLED显示模块本次选用的0.96寸液晶模块,0.96寸液晶模块是一款控制器为SSD1306,分辨力为128*64点OLED显示模块,有蓝色、白色、黄蓝双色,采用3.3V供电:VCC=3.3V-5V、支持4线SPI、I2C等通讯方式。出厂默认设置为SPI通讯、工作温度:-40℃~70℃,存储温度:-40℃~85℃。主要特点有:(1)OLED因其特殊用料,它的核心厚度极薄,最小厚度低于0.98mm,仅为普通液晶的30%。(2)OLED可以主动发光,这使得它几乎没有盲角,在正常情况下即使从侧面看也不会失真,其视角一般可达到170度,甚至视角可以更宽。除此之外它还是一种全固态机构,它没有任何的真空与液体,抗抖动能力强,能够适应高速,振动等不良环境。(3)OLED显示屏的响应时间很快,甚至超过了TFT—LCD液晶显示屏。TFT—LCD的响应时间一般都在几十毫秒左右,现在做得最好的TFT—LCD响应时间也保持在12毫秒开外。而OLED显示屏的响应时间大约可以缩短到零点零几毫秒。(4)OLED有低温抗性,即使在负45摄氏度均温下仍然可以正常准确地高频显示,而TFT—LCD的响应速度随环境温度的变化会发生改变,甚至显示效果大不如常温下。在极低的温度下,其系统反应时间会大幅上升,所以液晶显示屏在温度极低时工作效果远不如OLED。(5)OLED的二极管并不需要背光源,因为可以自己产生光源,除此之外由于OLED的高效率发光转化,其功耗相比于液晶也更低。(6)由于工作电压不高,可以用10V以下的电源来点亮OLED屏幕。图3-9OLED显示电路3.7本章小结本章主要介绍了课题所要用到的元器件和模块的相关信息,也说明了单片机和模块引脚和功能,只有更好的熟悉这些电子元件相关功能才能对将要设计的硬件结构有更大把握。而本人在查找相关资料时不光学到了如何使用相关的模块,同时也有一些意外的收获,比如单片机的命名规则,HY-SRF05和HC-SR04有什么区别等。
4系统的软件设计4.1C语言介绍本次设计所需要使用的编程语言主要是C语言,C语言诞生于1972年美国的贝尔实验室。世界上第一个操作系统UNIX便是C语言所编写,随着UNIX操作系统的大火同时带动了C语言的兴起。然而C语言之所以能够成为大家耳熟能详的编程语言,主要与它的简易性和实用性密不可分。从简易性上看,C语言相较于其他编程语言可以容忍一些无关紧要的语法错误,同时标准库中一些常见的头文件代码帮助编程人员减少了不必要的负担,比如最常见的stdio.h。从实用性上看C语言的数据类型与运算符繁多,足以应对编程人员大部分的开发需求。此外由于函数概念的引用使得C语言将全部的代码分割成一个个独立的个体,即子函数。单个函数中出现的错误不会影响其他的函数,这就给日常的维护增添了便利,哪里出错就改哪里,而不用牵一发而动全身。也正是C语言的这种结构化使得学习起来十分方便。总的来说C语言有以下优点:结构简单实用性强、语法限制较弱、可操作性强、便于学习。C51是一种来自于C语言的编程语言,专门面向于单片机,在兼容的微机平台下几乎不用修改或稍加修改便可以移植。与汇编语言相比来看,汇编语言可直接调用单片机的硬件资源,这要导致编程者需要具体组织与分配存储器资源和处理端口数据,也正因如此汇编语言的指令执行起来速度较快,但程序可读性很差,几乎无法移植,编写困难。而继承于C语言的C51作为一种结构化语言其代码十分紧凑,代码执行效率也高,同时其良好的可读性也给调试与维护提供了便捷,不仅如此丰富的库函数更是减少了编程人员的工作量,节约了时间。简单概括就是C51语言既拥有汇编语言执行效率上的优点,同时也比汇编语言易于理解易于移植。C51的语法结构和C语言几乎一样,所以C51也继承了C语言都简易性与实用性。故C51语言完美地契合了本次课题所用到的STC89C52单片机。4.2软件介绍keilc51是Keilsoftware公司生产的51系列兼容MCU的C语言软件开发系统。相对于汇编语言,C语言在功能、结构、可读性和可维护性等方面具有明显的优势,易于学习和使用。Keil为我们提供了一个完整的开发方案,其中囊括了C编译器、宏汇编、链接器、库管理和强大的模拟调试器。这些主要部件通过集成开发环境(μvision)进行组合。但要运行keil软件需要用到Win98、NT、WIN2000和WinXP等操作系统。想用C语言编程,Keil几乎是唯一的选择,即使只用汇编语言代替C语言编程,其方便快捷易用的集成环境和强大的软件仿真调试工具也会工作轻松不少。图4-1 KEIL软件界面4.3主函数主程序设计思路参考流程图4-21.首先初始化,包含定时器的初始化,显示屏初始化等。2.显示屏显示固定数据。3进入while循环。4在while循环内进行超声波测距以及PID调节发动机转速。图4-2主函数流程图主函数实现如下:voidmain(void){ unsignedinttimex=0,i=0; Timer0_Init();//定时器0初始化 Timer1_Init();//定时器1初始化 Delay100ms(); OLED_Init();//OLED初始化 OLED_Clear(); for(i=0;i<4;i++) { OLED_ShowCHinese(i*16,0,i); } for(i=4;i<8;i++) { OLED_ShowCHinese(i*16-64,4,i);//显示中文汉字及字符 } OLED_ShowChar(64,0,':',16); OLED_ShowString(96,0,"cm",16); OLED_ShowChar(64,4,':',16); OLED_ShowString(96,4,"cm",16); OLED_ShowNum(72,4,set_dis,3,16); led=0;// Delay100ms(); led=1;//关闭灯 Motor1=0; Motor2=0;//停转 ULT_GetData(1);//超声波先获取一次数据 while(1) { timex++; Delay1ms(); if(KEY1==0) { Delay1ms(); if(KEY1==0) { while(!KEY1); flag1=!flag1; if(flag1==1) { set_dis=ult_s1; } else { set_dis=5; } OLED_ShowNum(72,4,set_dis,3,16); } } if(timex%200==0)//200毫秒进行一次超声波测距以及进行一次显示屏的刷新 { ULT_GetData(1); OLED_ShowNum(72,0,ult_s1,3,16); } if(timex%200==0)//200毫秒进行一次PID计算 { PID(); } }}4.4超声波测距算法实现超声波测距流程如图4-31.超声波测距模块初始化2.单片机I/O口给HY-SRF05的TRIG口高电平触发测距。3.超声波测距使用定时器0计时,200毫秒测量一次距离。图4-3主函数流程图部分超声波测距算法函数如下:voidULT_Conut(unsignedcharx){ unsignedintult_time=0; // ult_time=TH0*256+TL0; TH0=0; TL0=0; switch(x) { case1: ult_s1=(ult_time*1.87)/100; // if(ult_flag==1) { ult_flag=0; break; case2: ult_s2=(ult_time*1.87)/100;// if(ult_flag==1) // { ult_flag=0; Uart0_SendString("\r\n"); } Uart0_SendString("ult_s2="); Uart0_SendChar((unsignedint)ult_s2%1000/100+'0'); Uart0_SendChar((unsignedint)ult_s2%100/10+'0'); Uart0_SendChar((unsignedint)ult_s2%10/1+'0'); Uart0_SendString("\r\n"); break; case3: ult_s3=(ult_time*1.87)/100;// if(ult_flag==1) // { ult_flag=0; Uart0_SendString("\r\n"); } Uart0_SendString("ult_s3="); Uart0_SendChar((unsignedint)ult_s3%1000/100+'0'); Uart0_SendChar((unsignedint)ult_s3%100/10+'0'); Uart0_SendChar((unsignedint)ult_s3%10/1+'0'); Uart0_SendString("\r\n"); break; case4: ult_s4=(ult_time*1.87)/100; if(ult_flag==1) // { ult_flag=0; Uart0_SendString("\r\n"); } Uart0_SendString("ult_s4="); Uart0_SendChar((unsignedint)ult_s4%1000/100+'0'); Uart0_SendChar((unsignedint)ult_s4%100/10+'0'); Uart0_SendChar((unsignedint)ult_s4%10/1+'0'); Uart0_SendString("\r\n"); break; }}4.5PID算法1.读取程序所给定的比例、积分、微分的参数,单片机采集超声波测距模块返回的数值。2.计算偏差量、累计误差量、误差变化率,计算出直流减速电机的转动方向以及需要调节到多少转速。利用定时器1来计时,PWM周期为100毫秒,分成100份,根据PID计算的结果来决定一个周期内电机转动的时间,如果PWM值大于100则强制变成100,电机全速运行。3输出控制量,根据一个周期内电机转动的时间占比来调节直流减速电机的转速。图4-3PID调节流程图部分PID控制函数如下:voidPID(void){ interr,last_err,serr,delt_err; floatP=3,I=0.0001,D=0.1; err=(int)ult_s1-set_dis;//误差当前超市波测距模块距离地面的距离减去设定的距离即为误差 serr+=err;//累积误差即误差的总和 delt_err=err-last_err;//误差变化量本次误差减去上次误差 pwm=P*err+I*serr+D*delt_err; if(pwm>100) { pwm=100;//此时误差较大,电机全速运行 } if(pwm<(-100)) { pwm=-100; } if(pwm>=0) { flag=0; } if(pwm<0) { led=0; pwm=-pwm; flag=1; } last_err=err;}voidTimer1(void)interrupt3 //串口发送接收中断{ TR1=0; //先将定时器0暂停 TH1=(65536-1000)/256;//存入初值高八位,对应1ms定时中断 TL1=(65536-1000)%256;//存入初值低八位,对应1ms定时中断 tt1++; if(flag==0)//正转 { if(tt1<pwm) { Motor1=1; Motor2=0; } else { Motor1=0; Motor2=0; } } else { if(tt1<pwm) { Motor1=0; Motor2=1; } else { Motor1=0; Motor2=0; } } if(tt1>=100) { tt1=0; } TR1=1; //重启定时器0}4.7显示函数显示函数包含两部分,一部分是固定字符只需要在初始化时显示一次就行,不用进入while循环,另一部分会随着超声波测距模块返回数值的变化需要发生变更,代码写在while循环里。部分显示函数如下:voidfill_picture(unsignedcharfill_Data){ unsignedcharm,n; for(m=0;m<8;m++) { OLED_WR_Byte(0xb0+m,0); //page1 OLED_WR_Byte(0x00,0); //lowcolumnstartaddress OLED_WR_Byte(0x10,0); //highcolumnstartaddress for(n=0;n<128;n++) { OLED_WR_Byte(fill_Data,1); } }}//坐标设置voidOLED_Set_Pos(unsignedcharx,unsignedchary){ OLED_WR_Byte(0xb0+y,OLED_CMD); OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD); OLED_WR_Byte((x&0x0f),OLED_CMD);}//开启OLED显示voidOLED_Display_On(void){ OLED_WR_Byte(0X8D,OLED_CMD); OLED_WR_Byte(0X14,OLED_CMD);//DCDCON OLED_WR_Byte(0XAF,OLED_CMD);//DISPLAYON}//关闭OLED显示voidOLED_Display_Off(void){ OLED_WR_Byte(0X8D,OLED_CMD); OLED_WR_Byte(0X10,OLED_CMD);//DCDCOFF OLED_WR_Byte(0XAE,OLED_CMD);//DISPLAYOFF}//清屏函数,屏幕变黑等同于未点亮voidOLED_Clear(void){ u8i,n; for(i=0;i<8;i++) { OLED_WR_Byte(0xb0+i,OLED_CMD);//设置首页地址 OLED_WR_Byte(0x00,OLED_CMD);//设置显示位置_列低地址 OLED_WR_Byte(0x10,OLED_CMD);//设置显示位置_列高地址 for(n=0;n<128;n++)OLED_WR_Byte(0,OLED_DATA); }//更新显示}voidOLED_On(void){ u8i,n; for(i=0;i<8;i++) { OLED_WR_Byte(0xb0+i,OLED_CMD);//设置首页地址 OLED_WR_Byte(0x00,OLED_CMD);//设置显示位置_列低地址 OLED_WR_Byte(0x10,OLED_CMD);//设置显示位置_列高地址 for(n=0;n<128;n++)OLED_WR_Byte(1,OLED_DATA); }//更新显示}4.8本章小结在选择完元器件以及设计好电路图与各元器件的连接方式后,最大的挑战就是完成相关程序的设计。此章节主要阐述了相关算法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年营养师考试专用教材试题及答案
- 房地产营销渠道创新试题及答案
- 演出经纪人考试细节全面分析:试题及答案
- 线路工程常考题及答案
- 吉林大附中力旺实验中学2023-2024学年中考数学最后冲刺模拟试卷含解析
- 吉林市重点中学2024年中考四模数学试题含解析
- 深基坑安全专项施工方案
- 2024-2025学年河北省迁西县一中高考冲刺(3)英语试题试卷含解析
- 福建信息职业技术学院《医学机能学实验(Ⅱ)》2023-2024学年第二学期期末试卷
- 2025年绍兴市重点中学高三下学期阶段性练习物理试题含解析
- 2024年贵州省六盘水市中考二模道德与法治试题
- 中班语言《玩具火车轰隆轰隆》课件
- JT-T 1495-2024 公路水运危险性较大工程专项施工方案编制审查规程
- 2024年烧烤行业市场分析报告
- T∕CACM 1078-2018 中医治未病技术操作规范 拔罐
- DB11∕T 722-2022 节水灌溉工程自动控制系统设计规范
- 《传染病》PPT课件完美版-2024鲜版
- 社会主义现代化建设的教育科技人才战略
- 肿瘤内分泌治疗的护理
- 篮球突分技术与配合-教学设计
- 营区绿化方案
评论
0/150
提交评论