小型音乐喷泉模型-毕业设计_第1页
小型音乐喷泉模型-毕业设计_第2页
小型音乐喷泉模型-毕业设计_第3页
小型音乐喷泉模型-毕业设计_第4页
小型音乐喷泉模型-毕业设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1.绪论11.1课题背景11.2音乐喷泉的开展和现状11.3音乐喷泉控制系统框架22.上位机通讯与显示42.1概述42.2串口通讯42.3监控水泵运行62.4FFT93.下位机数据采集和传输133.1概述133.2对音乐信号的采样与数据传输133.3下位机采样数据图144.基于nRF24L01无线传输子系统164.1nRF24L01模块硬件设计164.2nRF24L01模块软件设计175.水泵控制系统215.1水泵的选定215.2水泵控制原理图的设计215.3水泵控制系统的实物图236.功放246.1功放电路设计246.2喇叭保护板电路设计246.3功放PCB257.太阳能子系统267.1太阳能电池267.2太阳能控制器26参考文献29致谢30附录311.绪论1.1课题背景随着人们生活水平的提高,人们对环境的要求越来越高,城市环境建设日益为人们所重视。喷泉作为一种欣赏性较高的艺术水景,不断的出现在城市的广场、公园及其它公共场所,早些的喷泉都是固定不可调的,显得有些单调,随着科技的开展音乐喷泉也进入了我们的城市。音乐喷泉是现代科技与艺术的综合,音乐喷泉将喷水图形、彩色灯光及音乐旋律构成一个有机的整体,随着乐曲旋律和节奏的变化,各种不同的喷水花形相应的配合变换,在五彩绚丽的变幻灯光照耀下,构成一幅幅奇妙无比的景观、令人赏心悦目,叹为观止,在视听上获得极大的享受。1.2音乐喷泉的开展和现状音乐喷泉是高科技与自然的完美结合,充分体验了人们的智慧。世界各地的音乐喷泉表达美的方式也是不尽相同的。新加坡圣淘沙旅游区的音乐喷泉的设计与效果也是值得参考的,它布置在一个空旷而略有坡度的空间,面积很大,与圣淘沙车站前的长形喷水池共同组成为一个长达数百名的综合系列喷泉,音乐喷泉位于系列喷泉的顶端。舞台为一假山堆叠的西洋式半圆柱廊组成,共分3层。白天,假山瀑布及两侧的喷泉群与3层水池形成一处动静结合的较为文雅悠扬的水景园,入夜那么有五光十色,优美动听的喷泉景观,整个舞台区域东西面阔近百米,南北深度约为40m,成为目前亚洲最大的音乐喷泉之一。表现出壮阔。绚丽的水景之美。台湾台中的亚哥花园,有一个专为音乐喷泉表演的水舞剧场,以气势磅礴的苍穹为天幕,舞台建筑为意大利罗马式柱廊构成,圆形,用喷泉环绕,有600个喷头,配合着135种变化的灯光,组合成一种载歌载舞的美妙舞姿,水舞时,其形色声光的变化,令人目不暇接,叹为观止。以上几处音乐喷泉从建筑形势、音乐曲调及水舞表演的角度展现了音乐喷泉的美丽姿态,但是都属于大型的音乐喷泉,其控制系统也多采用PLC逻辑编程控制,造价高,流量需求大,一般为专门的定量设计。即使这样,国内外的音乐喷泉控制系统设计均以到达成熟的水平,而且还有专门的生产设计厂家,提供设计、喷泉设备及安装等效劳。目前,国内的音乐喷泉逐渐向智能化、分散化、综合化、多样化的方向开展,于是对喷泉控制系统的设计也提出了更高的要求。1.3音乐喷泉控制系统框架本系统的总体思路是:音乐信号一路通过功放后播放,另一路那么通过单片机进行采样,得到的时域数据传送给VS2023编写的上位机,上位机对音乐信号进行FFT变换得到频域信号并分析得到控制信号,通过nRF24l01无线传输给水泵控制子系统,控制水柱的高度。其中水泵控制模块电源是由太阳能供电。图1-1音乐喷泉控制系统的总体结构所以在次太阳能音乐喷泉系统包括以下几个局部:太阳能供电子系统,功放子系统,无线传输子系统,水泵控制子系统,上位机,下位机。该音乐喷泉控制系统的总体结构如图2-1所示。以下对这几个局部进行简明的讲解:太阳能供电子系统:由电压能电池组、太阳能控制器、蓄电池和DC/DC局部组成。功放子系统:由NE5532+LM1875组成的功放,NE5532作为前级,LM1875作为后级。无线传输子系统:这里采用的是NRF24l01来进行无线传输,一对多的传输类型,这里的“一〞是PC的下位机,PC传送来控制信号,通过NRF24l01传输数据。“多〞是接受的NRF24l01,接受到数据后,传送给52单片机,52单片机根据控制信号来控制DC/DC输出的电压的大小,从而控制了水泵的高度。水泵控制系统:由52单片机、DA芯片TLC5615、BUCK电路组成。52单片机读取到了传输到的控制信号之后,通过控制TLC5615得到一个基准电压,BUCK电路根据这个基准电压来决定直流水泵的电压。上位机:用VS2023编写的上位机,上位机得到下位机传送的数据之后,对数据进行分析,然后将结果传送回下位机。其中通讯方式采用串口通讯。下位机:由52单片机和AD芯片TLC083组成。1s内进行三次总采样〔一次总采样是64次AD转换〕,将得到的数据传送给上位机,然后接受上位机传送回来的数据。2.上位机通讯与显示2.1概述MicrosoftVisualStudio2023Ultimate(vs2023)是一个最先进的开发解决方案,它使各种规模的团队能够设计和创立出使用户满意的应用程序。在VisualStudio2023旗舰版(下面称VS2023)中,使用灵活敏捷的规划工具并根据自身进度实现增量开发技术和敏捷方法;使用高级建模、发现和体系结构工具,描述系统并帮助确保体系结构设想;使开发团队和运营团队能够较好地协作;通过从部署的软件生成可对其采取措施的Bug来改良质量和减少解决时间,使运营人员高效协作,为开发人员能够深入了解生产问题提供数据。简而言之,它可以创立创新的高质量解决方案并降低开发本钱。本系统采用VS2023来实现上位机,实现的功能有:与下位机的通讯,FFT变换,监控水泵运行状态。2.2串口通讯特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了本钱。并且52单片机中自带异步串口,VS2023中也有控制串口的控件SerialPort。所以我选用串口实现上位机与下位机之间的通讯。2.2.152单片机中虽然自带了异步串口但是,与计算机中的串口电平不同,所以需要一个电平转换芯片,这里选用MAX232,电路连接如图3-2-1所示。MAX232是一个电荷泵器件,它采用开关电容技术将5V电压升压和获取负电压,图2-1中C13,C14,C15,C18就是升压和负压用的电容。不同的版本有不同的电容取值,有些是0.1uF,有些是1uF,还有些是10uF。通常我们采用1uF就可以正常工作了。如果采用0.1uF驱动会弱点,不能驱动尤其是波特率较高的场合。在本设计中采用1uF的电容。在本次设计中采用的波特率是9600bps,晶振频率是11.0592MHz。工作在方式1,由公式:波特率=定时器1的溢出率/32可以推算出应该设置定时器1的值为:TH1=FDH。图2-1MAX232电平转换电路2.2.在VS2023中.NETFramework2.0类库包含了SerialPort类,方便地实现了所需要串口通讯的多种功能,可以实现以SerialPort类为核心的串口通讯,关于设计和方法。使用SerialPort方法很简单,只需要简单的配置属性,然后就可以读取和发送数据了。下面介绍SerialPort一些简单的配置和使用方法:使用

SerialPort

设置串口属性.PortName

串口名称,COM1,

COM2等。.BaudRate

波特率,也就是串口通讯的速度,进行串口通讯的双方其波特率需要相同,如果用PC连接其他非PC系统,一般地,波特率由非PC系统决定。.Parity

奇偶校验位。可以选取枚举Parity中的值.DataBits

数据位数.StopBits

停止位数,可以选取枚举StopBits中的值.Handshake

握手方式,也就是数据流控制方式,可以选取枚举Handshake中的值在创立一个SerialPort

对象,设置串口属性后,可以通过

Open()方法翻开串口。数据读写完成后,可以通过Close()方法关闭串口。对于字节或字符数据,用Read()方法来读数据,该方法需要一个字节或字符数组作为参数来保存读取的数据,结果返回实际读取的字节或字符数。写数据使用Write()方法,该方法可以将字节数组、字符数据或字符串发送给另一方。如果通讯双方交换的数据位字节流数据,要构建一个使用的串口通讯程序,那么双方应该定义数据桢格式。通常数据桢由桢头和桢尾来界定。发送数据比拟简单,只需要用Write()方法将构造好的数据发送出去即可。接收数据那么比拟复杂,通讯是以字节流的形式到达的,通过调用一次Read()方法并不能确保所读取的数据就是完整一桢。因此需要将每次读取的数据整合在一起,对整合后的数据进行分析,按照定义的桢格式,通过桢头和桢尾,将桢信息从字节流中抽取出来,这样才能获取有意义的信息。除了利用Read()方法来读数据,还可以使用ReadExisting()方法来读取数据。该方法读取当前所能读到的数据,以字符串的形式返回。SerialPort

提供了DataReceived事件。当有数据进入时,该事件被触发。该事件的触发由操作系统决定,当有数据到达时,该事件在辅助线程中被触发。辅助线程的优先级比拟低,因此并不能确保每个字节的数据到达时,该事件都被触发。在使用该事件接收数据时,最好对定义通讯协议格式,添加桢头和桢尾。在DataReceived事件中接收数据时,把数据放在数组中或字符串中缓冲起来,当接收的包含桢头和桢尾的完整数据时,在进行处理。2.3监控水泵运行2.3.1在音乐喷泉的运行时,在上位机上要反映出各个无线连接状态是否连接,当有故障发生的时候可以很方便的指导哪条通讯线路损坏,方便维修。摄像头监控水泵系统是否正常,以及监控是否有人进行恶意破坏等等。接下来与3.3.3章会对这两个方面进行介绍。2.3.2无线通道连接在无线控制子系统中运用的是nRF24l01模块,而nRF24l01有硬件CRC校验,当发送数据失败时,发送方向单片机请求中断并且重发溢出标志位置位;相反如果发送数据成功时,发送方向单片机请求中断并且发送成功标志位置位。所以我们可以在下位机中断里面判断是否发送成功,然后传送数据给上位机。其中发送成功或那么失败的中断引脚为P3.2,即采用的为外部中断0。程序框图如2-2所示:图2-2无线连接检测程序框图2.3.3DirectShow兼备与底层的硬件设备和与高层的应用程序打交道的能力。如图2-3所示,虚线以下是Ring0特权级层的硬件设备,其中包括WDM视频采集卡〔WDMCaptureDevices〕、VFW视频采集卡〔LegacyVFWCaptureDevices〕、MPEG2硬解码卡〔HardwareMPEG2Decoders〕、声卡〔SoundCard〕以及显卡〔VideoGraphicsCard〕等等。DirectShow对这些硬件设备提供了强有力的支持,并在Ring3〔图1虚线以上〕应用层上提供统一标准的COM接口,这就将底层硬件设备与高层应用程序隔开,从而很方便地编程实现从设备获取多媒体数据或利用设备回放多媒体数据,而不必考虑具体的硬件特性。图2-3DirectShow系统构架其中DirectShow主要COM接口有:DirectShow是建立在组件对象模型〔COM〕的根底之上的,有很多COM接口,下面列举一些重要的COM接口:〔1〕IGraphBuilder接口:构建过滤器管理的接口,立和管理一系列的过滤器;〔2〕IMediaControl接口:控制多媒体流在过滤器图中的流动,如流的启动和停止;〔3〕IMediaEvent接口:捕获多媒体流回放中的事件;〔4〕IVideoWindow接口:控制视频窗口的属性;〔5〕IMediaSeeking接口:用于媒体流的定位;〔6〕IBaseFilter接口:可定义一个具体的过滤器指针;〔7〕IPin接口:管理两个过滤器间的针脚,从而连接过滤器。在VS2023中提供了关于DirectShow的例子,可以根据例子的进行二次开发。下面是系统的整体框图如2-4所示:USB视频采集USB视频采集计算机WDM驱动程序基于DirectShow的应用程序图2-4系统的整体框图2.3.4实际如图2-5为上位机监控界面。在上位机界面中,左下角红色代表通道没有连接成功,绿色代表连接成功。我只做了三个下位机,第1,2,4通道,在上位机中正好显示的1,2,4通道连接正常。上位机中间是采用笔记本摄像头来监控的画面,由于我只是做了音乐喷泉的模型实物,所以我以三个水泵控制模块作为背景。图2-5监控界面2.4FFT2.4.1FFT〔FastFourierTransformation〕,即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改良获得的。它对傅氏变换的理论并没有新的,发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。2.4.2基-2FFT算法按时间抽取〔DIT〕的基-2FFT算法,又称为库利-图基算法,它是很多离散傅立叶变换快速算法之一。设序列x(n)长度N=2,L为正整数〔假设不满足该条件,那么在序列后面加上假设干个零值以到达这个条件〕。按n的奇偶把x(n)分解为两个N/2点的子序列(即大点数DFT化成小点数DFT,通过子序列的DFT实现计算整个序列的DFT。(2-1)那么,序列x(n)的N点DFT为:X(k)=DFT[x(n)]===(2-2)利用系数的可越性质=,上式可以表示为X(k)==X(k)+W(2-3)k=0,1,2,3,…,N-1其中需要注意的是X(k)与X(k)分别是x(r)及x(r)的N/2点的DFT,周期为N/2,所以由〔3-3〕仅可以得到N点序列X(k)的前N/2点,X(k)的后N/2点为X(k+N/2)=X(k+N/2)+W(k+N/2)由X(k)与X(k)的周期性及可得X(k+N/2)=X(k)-WX(k)(2-4)综合上面的结果,x(n)的N点DFT可以由x(n)奇偶子序列x(r),x(r)的N/2点的DFT表示,即(2-5)至此,N点DFT到N/2点DFT的转换完成了。式(2-5)的运算关系可以用一个流程图来描述,用图2-6所示。图2-6蝶形运算流程图2.4.3在一般情况下,进行FFT运算的序列至少都有几百点的长度,因此需要编制FFT算法程序以便能够利用计算机来快速进行计算。输入倒位序,输出顺序的DIT-FFT的编程思想,N必须等于2的正整数幂,FFT的计算程序可以分为两局部:一局部是倒序重排,另一局部是用三层嵌套的循环来完成M=log2N次迭代。倒序重排:由于正序中数的递增量为1,这主要是由于下一个数都是前一个数从最右边参加一个1;倒序时,每个数都是前一个数的最左边加1,进位是向前进位,一个正序对应着一个倒序。因此可以根据这个原理进行倒序的计数,如果当前数最左边位为1,那么清零,检查下一位,如果还是为1,再清零,直到遇到0为止,把这个0加为1,这就实现了倒序计数。三层循环的功能是:最里的一层循环完成相同W的蝶形运算,中间的一层循环完成因子的变化,而最外的一层循环那么是完成M次迭代过程。三层循环程序框图如图2-7所示:图2-7FFT三层循环程序框图基于以上思想,给出用C#编写FFT的关键代码,见附录Ⅰ。2.4.4如图2-8与图2-9为静音时刻和播放中的某一时刻将采样到的数据得到的FFT后的功率谱。静音中频谱的值都大约为零,在播放时刻的频谱值左右两边完全对称,符合理论。采样频率是20KHz,每两个柱之间相差的频率是20K/64312Hz。图2-8静音时FFT的效果图图2-9有音乐时FFT的效果图3.下位机数据采集和传输3.1概述下位机实现的功能是对音乐信号的采样和数据的传输。对音乐的采样是采用TLC0831这款AD芯片,每次采样一次数据就通过串口传送给上位机,当上位机接受到了一定的数据量之后,会告诉下位机不要发送数据了,此时下位机不会再采样音乐信号,等待上位机分析完数据之后,上位机传送给下位机每个水泵控制子系统的控制信号,下位机通过nRF24l01无线传输给水泵控制子系统,再一次对音乐信号进行采样。3.2对音乐信号的采样与数据传输音乐采样所用的AD芯片是TLC0831,查阅手册可知其工作时序图〔如图3-1〕和主要特性如下:(1)比例尺工作或用5V基准电压;(2)8位分辨率;(3)单5V供电,信号输入范围0~5V;(4)控制输入和输出与TTL和MOS兼容;(5)在输入频率(CK引脚)为250kHz时,转换时间约32μs;(6)总非调整误差:±1LSB。图3-1TLC0831工作时序图由时序图可以看出,CS变为低电平后,经过一个时钟即CLK1的时间间隔,使多路复用器选定的通道稳定,D0便脱离高阻态,进入低电平状态,电备工作就绪。第2个CLK到来,转换开始。转换过程中,转换数据同时从D0输出。第2个CLK下降沿后,D0输出最高位MSB,8个时钟后转换完成(即第9个CLK下降沿后移出LSB),此后假设CS仍为低,D0一直保持LSB值。CS变高后D0呈高阻态,等待下一次转换开始。音乐采集电路如图3-2所示,先由OPA2227讲音频信号放大之后,再由TLC0831采样。52单片机的P2.0,P2.1,P2.2分别接的TL0831的DO,CS,CLK引脚。图3-2音乐采集电路由以上分析给出音乐采集的时序图,如图3-3所示图3-4音乐采集时序图3.3下位机采样数据图图3-5与图3-6为静音和播放某一时刻的采样的数据图,静音时刻只有2.5V直流偏置,在播放时刻产生的音频信号使数据在0-5V之间变化。图3-5静音时刻音乐的采样图图3-6播放时刻音乐的采样图4.基于nRF24L01无线传输子系统4.1nRF24L01模块硬件设计本系统采用了Nordic公司新推出的工作于2.4GHz频段的NRF24l01射频芯片和52单片机控制实现短距离无线数据通信。nRF24L01芯片工作于2.4GHz全球开放频段,工作速率O~2Mb/s,最大发射功率0dBm,外围元件极少,内置硬件CRC校验和多点通信地址控制,集成了频率合成器,晶体振荡器和调制解调器.它的主要特点如下:1)低工作电压:1.9~3.6V低电压工作;2)高速率:2Mbps,由于空中传输时间很短,极大地降低了无线传输中的碰撞现象;3)多频点:125频点,满足多点通信和跳频通信需要;4)超小型:体积小巧,5mm×5mm;5)低功耗:当工作在应答模式通信时,快速地控制传输及启动时间,极大地降低了电流消耗;6)低应用本钱:nRF24L01的SPI接口可以利用单片机的硬件SPI口连接或用单片机I/O口进行模拟,内部有FIFO可以与各种上下速微处理器接口,便于使用低本钱单片机.系统硬件主要由nRF24L01射频芯片和52单片机成。因为52单片机没有SPI接口,所以需要用I/O口来模拟SPI接口。nRF24l01与52单片机的连接电路图如图4-1所示。nRF24L01与52单片机通过MOSI,MISO和SCK组成的SPI接口连接.单片机接11.0592MHz的低频晶振工作,nRF24L01的工作频率为16MHz,由低速的单片机控制高速收发的射频芯片正是本系统的特点.系统由低压3.3V供电.系统处于发射模式时,耗电约为3.5mA,启动发射时约为13mA,接收模式时耗电约为2lmA.由于系统上电时,单片机通过SPI,对nRF24L01进行状态配置。假设处于发射模式单片机就把数据通过输入到nRF24L01,当CE信从1变为0时,nRF24L01就把从单片机收到的数据以2Mbit/s的速率发射出去;系统设为接收模式,nRF24L01就一直在监测天线上的信号;假设有同频的信号,就收下并翻开信息包读取地址,地址与自己的相同就取出信息包里的有用数据,并使IRQ信号为低电平通知单片机来取走。图4-1nRF24l01与单片机连接电路图4.2nRF24L01模块软件设计在本设计的系统中,各个子模块接受到的数据都由下位机发送,子模块根据得到的数据去控制相应水泵的输入电压,而且nRF24l01有硬件CRC校验,所以数据传输方向使用单向传输就可以满足要求,子模块无需发送数据给下位机。即上位机对nRF24l01的操作只有初始化和发送数据,子模块对nRF24l01的操作有初始化的接受数据。本系统中采用ShockBurstTMMode完成数据的发送和接收.下面具体介绍发送和接收的软件编程。nRF24l01发送模式的过程为:1)配置存放器位PRIM_RX为低;2)当MCU有数据要发送时,接收节点地址和有效数据通过SPI接口写入nRF24L01。当CSN为低时发送数据被不断地写入;3)设置CE为高,启动发射.CE高电平持续时间最小为10μs;4)启动内部16MHz时钟,MCU设置发送速度为1Mbps,无线发送数据;5)假设启动了自动应答模式,nRF24L01立即进入接收模式;6)如果CE置低,那么系统进入待机模式。根据以上思路,给出下位机的相关程序:初始化: SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);//写本地地址 SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);//写接收端地址,P0 SPI_Write_Buf(WRITE_REG+RX_ADDR_P1,RX_ADDRESS_P1,RX_ADR_WIDTH);//写接收端地址,P1 SPI_Write_Buf(WRITE_REG+RX_ADDR_P2,RX_ADDRESS_P2,RX_ADR_WIDTH);//写接收端地址,P2 SPI_Write_Buf(WRITE_REG+RX_ADDR_P3,RX_ADDRESS_P3,RX_ADR_WIDTH);//写接收端地址,P3 SPI_Write_Buf(WRITE_REG+RX_ADDR_P4,RX_ADDRESS_P4,RX_ADR_WIDTH);//写接收端地址,P4 SPI_Write_Buf(WRITE_REG+RX_ADDR_P5,RX_ADDRESS_P5,RX_ADR_WIDTH);//写接收端地址,P5// SPI_RW_Reg(WRITE_REG+SETUP_RETR,0x1f); //不自动重发 SPI_RW_Reg(WRITE_REG+EN_AA,0x3f);//频道0,1,2,3,4,5自动 ACK应答允许 SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x3f);//允许接收地址只有频道0,1,2,3,4,5, SPI_RW_Reg(WRITE_REG+RF_CH,0);//设置信道工作为2.4GHZ,收发必须一致 SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//设置通道0接收数据长度,本次设置为3字节 SPI_RW_Reg(WRITE_REG+RX_PW_P1,RX_PLOAD_WIDTH);//设置通道1接收数据长度,本次设置为3字节 SPI_RW_Reg(WRITE_REG+RX_PW_P2,RX_PLOAD_WIDTH);//设置通道2接收数据长度,本次设置为3字节 SPI_RW_Reg(WRITE_REG+RX_PW_P3,RX_PLOAD_WIDTH);//设置通道3接收数据长度,本次设置为3字节 SPI_RW_Reg(WRITE_REG+RX_PW_P4,RX_PLOAD_WIDTH);//设置通道4接收数据长度,本次设置为3字节 SPI_RW_Reg(WRITE_REG+RX_PW_P5,RX_PLOAD_WIDTH);//设置通道5接收数据长度,本次设置为3字节 SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07); //设置发射速率为1MHZ,发射功率为最大值0dB发射数据: CE=0; //StandByI模式 SPI_RW_Reg(WRITE_REG+RF_CH,30);//设置信道工作为2.4GHZ,收发必须一致 SPI_Write_Buf(WRITE_REG+RX_ADDR_P3,TX_ADDRESS,TX_ADR_WIDTH);//装载接收端地址 SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH); //装载数据 SPI_RW_Reg(WRITE_REG+CONFIG,0x0e); //IRQ收发完成中断响应,16位CRC,主发送 CE=1; //置高CE,激发数据发送 inerDelay_us(20);nRF24l01接收模式和发送模式的设置过程大概相同,具体过程为:1)配置存放器位:PRIM_RX为高;2)翻开所使用的接收数据通道,自动应答功能,有效数据宽度由设置;3)设置CE为高启动接收模式;4)130μs后nRF24L01开始检测空中信息;5)接收到有效的书包后,数据存储在RX_FIFO中,同时RX_DR位置高;6)如果启动自动应答功能,那么发送应答信号;7)MCU设置CE脚为低,进入待机模式。根据以上思路给出子模块的nRF24l01相关的程序:初始化:各个子模块的对nRF24l01的初始化和下位机的初始化大致相同,只需要给在最后加上一段函数把nRF24l01设置为接受模式: CE=0; SPI_RW_Reg(WRITE_REG+CONFIG,0x07); //IRQ收发完成中断响应,16位CRC ,主接收 CE=1; inerDelay_us(130);接受数据:当有数据到达的时候会产生中断,且相应的状态标志位会置位,所以在相应的中断函数里面加上以下程序。unsignedcharrevale=0; sta=SPI_Read(STATUS); //读取状态存放其来判断数据接收状况 if(RX_DR) //判断是否接收到数据 { CE=0; //SPI使能 SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);//readreceivepayloadfromRX_FIFObuffer revale=1; //读取数据完成标志 } SPI_RW_Reg(WRITE_REG+STATUS,sta);//接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志 returnrevale;5.水泵控制系统5.1水泵的选定方案一:采用变频器控制交流潜水泵,调速方便、容易,只要控制口电流范围为4到20毫安就可以,精度高,缺点为价格偏贵。方案二:采用直流潜水泵,这样会增加电路的电路复杂性,控制经度偏低,优点是价格偏低。本系统是小型系统,本钱问题必须考虑,控制精度要求不是很高。根据上述说明,选择方案二。5.2水泵控制原理图的设计直流水泵的扬程取决于输入电压的大小,所以可以改变潜水泵输入电压的大小来改变水柱的高度。在本设计中采用的直流母线是12V。采用BUCK电路来实现DC/DC电压变换。其原理图如5-1所示:图5-1BUCK电路BUCK电路在电流连续模式下的工作原理,其中D为驱动脉冲占空比,T为驱动脉冲周期:当t[0,DT]时,控制信号使J1导通,D4截止,向L1充磁,向电容充电。Vin=U(t)+Vout(t)(5-1)当t[DT,T]时,J1截止,D4续流,输出电压靠L1与电容放电维持。0=-U(t)+Vout(t)(5-2)根据(1),(2)电感伏秒平衡可知:=(5-3)得:Vout=DVin(5-4)由(5-4)可知只需要改变占空比D就可以控制直流水泵两端的电压,从而改变水泵扬程的大小。TL494是一种固定频率脉宽调制电路,它包含了开关电源控制所需的全部功能,广泛应用于单端正激双管式、半桥式、全桥式开关电源的设计。在本次设计中使用TL494来产生DC/DC的PWM驱动信号。TL494的内部结构图如5-2图所示:图5-2TL494的内部结构图TL494内置了线性锯齿波振荡器,振荡频率可以通过5脚和6脚外部的一个电阻和一个电容进行调节。公式为:f=1.1/(Rt*Ct)。输出脉冲的宽度是通过电容CT上的正极性锯齿波电压与另外两个控制信号进行比拟来实现。功率输出管Q1和Q2受或非门控制,仅当双稳触发器的时钟信号为低电平时才工作,亦即锯齿波电压大于控制信号期间工作。因此,当控制信号增大时,输出的脉冲宽度将减小。PWM驱动信号原理如图5-3所示;TL494的2脚接单片机DA转换得到的基准电压。1脚接DC/DC输出电压,10脚产生PWM信号。这样只用改变单片机DA出来的信号,机可以改变占空比D,从而控制水泵的扬程。5-3PWM驱动信号原理图5.3水泵控制系统的实物图实物图如5-4所示,我只做了三个水泵控制,控制水泵1,2,4通道。输入的电源由太阳能控制系统供应,输出接直流水泵。5-4水泵控制子系统实物6.功放6.1功放电路设计在音乐喷泉中,音乐是少不了的,所以一个好的功放能给人的很好的享受。在本系统中,我采用的功放是NE5532+LM1785的组合,NE5532作为前级,LM1875作为后级驱动。NE5532是高性能低噪声双运算放大器〔双运放〕集成电路。与很多标准运放相似,但它具有更好的噪声性能,优良的输出驱动能力及相当高的小信号带宽,电源电压范围大等特点。因此很适合应用在高品质和专业音响设备、仪器、控制电路及通道放大器。用作音频放大时音色温暖,保真度高,在上世纪九十年代初的音响界被发烧友们誉为“运放之皇〞,至今仍是很多音响发烧友手中必备的运放之一。而LM1875是一款功率放大集成块!是美国国半公司研发的一款功放集成块!它在使用中外围电路少而且有完善的过载保护功能!它为五针脚形状!一针脚为信号正极输入二针脚为信号负极输入三针脚接地五针脚电源正极输入四针脚为信号输出。LM1875采用TO-220封装结构,形如一只中功率管,体积小巧,外围电路简单,且输出功率较大。该集成电路内部设有过载过热及感性负载反向电势平安工作保护。立体声有左右两个通道且左右两个通道的的电路完全相同,下面给出左声道的功放电路图如图6-1所示。图6-1左声道功放电路图6.2喇叭保护板电路设计在我们开机和关机的时候功放会产生尖峰,所以在早期的功放里面会听到“啪〞的一声,这样会对喇叭产生损坏。所以在一个功放里面喇叭保护板能很好的防止尖峰脉冲,提高喇叭的使用寿命。UPC1237是一款经典的喇叭保护IC,具有很宽的工作电压范围〔25~60V〕,具备开机延迟、功放输出端直流漂移检测、即时关机功能。图6-2中,7脚为延时检测,延时后6脚控制常开继电器闭合,喇叭开始工作,防止了开机冲击;2脚为功放输出中点直流漂移检测接两个电阻后接功放左右声道输出,当检测到有直流输出时〔一般为零点几伏〕,切断继电器,保护喇叭;4脚为关机检测,因为4脚是从功放变压器取电,且滤波电容较小,当关闭功放电源时,马上能检测到电压跌落,继而切断继电器,此时功放因为有大容量滤波电容存在不会马上停止工作,而喇叭已被切断,从而防止了关机冲击。图6-2喇叭保护板6.3功放PCB下面给出完整的功放PCB板图,如图6-3所示。图6-3功放PCB7.太阳能子系统7.1太阳能电池太阳能电池是通过光电效应或者光化学效应直接把光能转化成电能的装置。以光电效应工作的薄膜式太阳能电池为主流,而以光化学效应原理工作的太阳能电池那么还处于萌芽阶段。太阳光照在半导体p-n结上,形成新的空穴--电子对。在p-n结电场的作用下,空穴由n区流向p区,电子由p区流向n区,接通电路后就形成电流。太阳能电池的等效电路模型〔如图7-1所示〕能够帮助我们深入了解这种器件的工作原理。理想PV电池的模型可以表示为一个感光电流源并联一个二极管。光源中的光子被太阳能电池材料吸收。如果光子的能量高于电池材料的能带,那么电子就被激发到导带中。如果将一个外部负载连接到PV电池的输出端,那么就会产生电流。图7-1电池的等效电路模型图7-1由一个串联电阻〔RS〕和一个分流电阻〔rsh〕和一个光驱电流源构成的光伏电池等效电路。由于电池衬底材料及其金属导线和接触点中存在材料缺陷和欧姆损耗,PV电池模型必须分别用串联电阻〔RS〕和分流电阻〔rsh〕表示这些损耗。串联电阻是一个关键参数,因为它限制了PV电池的最大可用功率〔PMAX〕和短路电流〔ISC〕。PV电池的串联电阻〔rs〕与电池上的金属触点电阻、电池前外表的欧姆损耗、杂质浓度和结深有关。在理想情况下,串联电阻应该为零。分流电阻表示由于沿电池边缘的外表漏流或晶格缺陷造成的损耗。在理想情况下,分流电阻应该为无穷大。7.2太阳能控制器太阳能控制器全称为太阳能充放电控制器,是用于太阳能发电系统中,控制多路太阳能电池方阵对蓄电池充电以及蓄电池给太阳能逆变器负载供电的自动控制设备。图7-2为小功率太阳能控制器电路结构图,蓄电池和太阳能电池阵列直接祸合,当白天有阳光时,太阳能电池阵列向蓄电池充电,当夜晚或阴天阳光缺乏时,蓄电池放电,保证负载不停电。图7-2太阳能控制器电路结构图在本系统中采用的太阳能控制器如图7-3所示:图7-3本系统使用的太阳能控制器安装使用说明:1.导线的准备:使用与电流想匹配的导线,方案好长度,将接控制器一侧的接线头剥去5mm的绝缘,尽可能减少接线的长度。已减少电的损耗。2.连接蓄电池:注意“+〞,“-〞极不要接反。如果正确接线,蓄电池指示灯会亮,否那么需要检查线路是否正确。3.连接太阳能板:注意“+〞,“-〞极不要接反。如果有阳光,太阳能板指示灯会亮,否那么检查线路是否正确。4.连接负载:注意“+〞,“-〞极不要接反。电流不能超过控制器的额定电流。结论本文设计的太阳能音乐喷泉控制系统是旅游景点内用的小型音乐喷泉,充分表达了经济型和实用性的原那么,并且喷泉的安装方便、维护简单,能够满足用户的需求。在系统设计中,运用52单片机与上位机相结合来控制水泵,结合了52单片机控制简单和上位机信号处理的优越能力的特点。并给出了小型太阳音乐喷泉的实物模型。本系统是对音乐的频域信号分析后给出的水泵控制信号,所以此系统能很好的适应不同的音乐。缺乏之处在于:本次设计中只是给出了太阳能系统的小型实物模型。对喷泉的控制方式单一,只对水泵的水柱高度进行了控制,例如灯光,角度,形状没有进行控制。而且没有对系统的防水,水泵的整体布局等其他方面进行设计。参考文献[1]肖扬,肖晨帆.VS2023下的Ribbon界面开发[J].计算机平安与维护.2023[2]陆瑶,景鑫.基于C#环境的单片机(89C51)与PC的串行通信[J].信息技术.2023.[3]刘荣,圈圈教你玩USB,北京航空航天大学出版社[M].2023[4]陈丽娟,常丹华.基于nRF2401的无线数据通信[J].电子器件,2006,1:2482250.[5]魏立诚,朱桂林.基于DirectShow的视频采集系统的设计与实现[J].计算机工程,2006.[6]张长森,数字信号处理[M],中国电力出版社,2007[7]李健,许祖,武王大晶.模数转换器TLC0831的应用[J].电测和仪表.[8]张占松,蔡宣三.开关电源的原理与设计[M].北京:电子工业出版社,2004.[9]吴春华,光伏发电系统逆变技术研究[D],上海大学博士学士论文.2023.[10]张艳红,新型太阳能控制器的研制[J],ENERGYCONSERVATION,2006致谢我在这次毕业设计过程中,得到了老师们和同学们的大力帮助。特别要感谢老师对我的指导,在将近三个月的设计中,从最初的选题、方案拟定及方案确定,到具体的设计过程中,所遇到的问题和困难,如何解决这些问题及困难,以及最后的设计审查,老师都给以了细心的指导和纠正,使得我的毕业设计才顺利的圆满的完成。此外,还要感谢自动化学院的全体老师,是他们给我打下了坚实的根底,为我的毕业设计做出了良好的铺垫,也为我的毕业设计提供了不少的意见和建议,在此表示衷心的感谢。通过这次毕业设计,我学会了如何综合运用所学的专业知识,如何查阅相关资料,并从中提取有用信息来帮助我完成设计。使我深深地感到:作为一个设计者,如何进行一个产品的开发和设计,并对其设计过程如何进行优化选择有了初步的认识,为以后的工作打下了坚实的根底。我所获得的这些知识都是长春工程学院对我辛勤培养的结果。因此,我要感谢母校的各级领导及老师们,谢谢你们四年来对我的教育和引导。由于本人水平有限、经验缺乏、时间仓促,设计中难免存在缺乏之处,敬请各位老师批评指正。附录附录ⅠFFT变换代码publicvoidToFFT(){/**********followingcodeinvertsequence************/ for(inti=0;i<samplesNumber;i++) {/* x0=x1=x2=x3=x4=x5=x6=0; x0=i&0x01;x1=(i/2)&0x01;x2=(i/4)&0x01;x3=(i/8)&0x01;x4=(i/16)&0x01;x5=(i/32)&0x01;x6=(i/64)&0x01; xx=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6; dataI[xx]=dataR[i];*/intxx=0;int[]x=newint[n]; for(intj=0;j<N;j++) x[j]=0; for(intj=0;j<N;j++) x[j]=(i>>j)&0x01; for(intj=0;j<N;j++) xx+=x[j]*(samplesNumber>>1>>j); dataI[xx]=dataR[i]; } for(inti=0;i<samplesNumber;i++) { dataR[i]=dataI[i];dataI[i]=0; } /**************followingcodeFFT*******************/ for(intL=1;L<=N;L++) {/*for(1)*/intb=1;inti; b=1;i=L-1; while(i>0) { b=b*2;i--; }/*b=2^(L-1)*/ for(intj=0;j<=b-1;j++)/*for(2)*/ {intp;p=1;i=n-L; while(i>0)/*p=pow(2,7-L)*j;*/ { p=p*2;i--; } p=(int)(p*j); for(intk=j;k<samplesNumber;k=k+2*b)/*for(3)*/ { floatTR;floatTI;floattemp;TR=dataR[k];TI=dataI[k];temp=dataR[k+b];dataR[k]=(float)(dataR[k]+dataR[k+b]*Math.Cos(Math.PI*2*p/this.SamplesNumber)+dataI[k+b]*Math.Sin(Math.PI*2*p/this.SamplesNumber));dataI[k]=(float)(dataI[k]-dataR[k+b]*Math.Sin(Math.PI*2*p/this.SamplesNumber)+dataI[k+b]*Math.Cos(Math.PI*2*p/this.SamplesNumber));dataR[k+b]=(float)(TR-dataR[k+b]*Math.Cos(Math.PI*2*p/this.SamplesNumber)-dataI[k+b]*Math.Sin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论