基于LabView和串口的可调电压输出设计摘要:为了解决手动调节多路电压输出费时、费力,效率低,精度低的问题,本文提出了一种新的电压输出方法。本系统以STM32处理器作为控制芯片,连接三片DAC8420,通过串口接收上位机发送的命令控制输出12路可调的电压信号。用Labview设计电脑用户界面,操作简单、方便。关键词Labview;电压;串口;可调DesignofMulti-channelandAdjustableamplitudeVoltageOutputBasedonLabVIEWandSerialInterfaceAbstract:Inordetosolvethemulti-channelvoltageoutputbyhandiswastefulintimeandenergy,troublesomeoperating、lowereffectandaccuracy,anewwayofvoltageoutputisproposed.ThesystemusesSTM32processorasacontroller,linkthreeDAC8420sandoutputupto12channelsadjustablevoltagesignalcontrlledbythecommandwhichistransmittedbyPCinterfacethroughSerialInterface.DesigningacomputeruserinterfacebyLabview,whichissimpleoperatingandfacility.KeywordsLabview;Voltage;SerialInterface;adjustable可调的多路电压输出在很多场合有广泛的应用,例如伺服系统控制。通过手动调节电源电压输出的方法很麻烦,精确度低,而且只能输出少数的几路电压,显然不能满足快速、精确和多路电压输出的要求,为此,设计了本方案,以单片机作为下位机控制D/A转换器实现电压的转换输出,单片机通过串口与上位机电脑通信,接收上位机的命令,实现快速、精确、多路的电压输出。1硬件电路设计硬件电路主要包括单片机最小系统、电源模块、串口电路、D/A转换电路。芯片采用STM32F103ZET6,可以在线编程,开发十分方便,晶振频率为8MHz。电源模块STM32F103复位电路晶振电路三个DAC8420PC机串口图1系统硬件框图1.1电源设计本系统中需要用到的电源有5V、正负10V和正负15V,交流电通过变压器降压在经过整流以后,接到稳压模块上,输出各种需要的电压。7805输出5V电压,7810和7910输出正负10V电压,7815和7915输出正负15V电压。1.2D/A转换电路D/A转换芯片选用DAC8420,具有4个通道,各DAC的地址均由一个16位串行字单独确定,它由一个12位数据字和一个地址表头组成。初始化电压值可通过可编程复位控制CLR,使四个DAC输出零电平或中间电平。参考电压范围是正负10V,能实现电源电压范围内的正/负单极性或双极性信号摆幅,用户通过设置输入VREFHI和VREFLO而确定输出电压范围,从而提供极大的设计灵活性。具有12位电压输出,三线式串行数字输入与以10MHz速率工作的微处理器便可轻松实现接口,只需极少的附加电路即可。该文DAC8420的电源电压接正负15V,参考电压接正负10V,可实现-10V~+10V范围内的电压可调。为提高输出的负载能力,可以将输出电压接到运放上,接成电压跟随器模式。1.3串口转化数据上位机和单片机的数据传输遵循一定的传输协议,当上位机按照图2的数据格式发送完一组数据之后,单片机必须立即将此数据返回,如果返回的数据出现错误,则上位机停止发送数据并且显示错误。D0D1D2D3D4D5D6D7D8D9图2数据格式D0码头。作为识别信息用约定为(0x55);D1通道号CH1~CH12为0x01~0x0c(例如对于通道1的数据帧,D1=1);D2D3组合成为DA设定电压(0~4095),D2是V_DA的高8位,D3是V_DA的低8位;注意:DA设定电压计算公式V_DA=(Vset-VREFLO)*4096/(VREFHI-VREFLO)其中Vset是设定电压(通道号后面那个编辑框的值),VREFLO=-10V,VREFHI=10V;D4DAC8420芯片的选择分为1,2,3四个量程,可以分别编码0x01,0x02,0x03;D5极性选择:“0”代表正,“1”代表负D600;D700;D8D9组合为校验位其中D8为sum(D0+D1+...+D7)的高8位,D9为sum(D0+D1+...+D7)的低8位;2程序设计2.1上位机设计上位机的软件界面用Labview开发,利用VISA函数,编程实现数据的下传。首先选择相应的端口号,然后单击“发送数据”,即可将12路电压数据下传给单片机。界面如图3所示:图3上位机软件界面2.2下位机设计三个DAC8420芯片相应的数据传输引脚接于相同的单片机引脚,片选端分别连于单片机不同的引脚。函数DAC8420(high,low,channel)是D/A转换函数,high和low参数分别是输出到DAC8420芯片的16位串行数字量的高、低8位,其中最高的2位的四种排列分别对应于DAC8420的四个输出电路,参数channel用于选择三个DAC8420芯片的片选,程序如下:STM32和四片DAC8420管脚接线如下:DAC8420_CS0↔PB1;DAC8420_CS1↔PB2;DAC8420_CS2↔PB3;DAC8420_LD↔PFO;DAC8420_SDI↔PF1;DAC8420_CLK↔PF2;DAC8420_CLR↔PF3;DAC8420_CLSEL↔PF4;voidDAC8420(unsignedcharhigh,unsignedcharlow,unsignedcharchannel){unsignedchari=0,m=0x80;if(channel==0){DAC8420_CS0=0;DAC8420_CS1=1;DAC8420_CS2=1;}elseif(channel==1){DAC8420_CS0=1;DAC8420_CS1=0;DAC8420_CS2=1;}elseif(channel==2){DAC8420_CS0=1;DAC8420_CS1=1;DAC8420_CS2=0;}DAC8420_LD=1;for(i=0;i8;i++)//输出高八位数据{if(m&high)DAC8420_SDI=1;elseDAC8420_SDI=0;DAC8420_CLK=0;DAC8420_CLK=1;m=(m1);}m=0x80;for(i=0;i8;i++)//输出底八位数据{if(m&low)DAC8420_SDI=1;elseDAC8420_SDI=0;DAC8420_CLK=0;DAC8420_CLK=1;m=(m1);}DAC8420_LD=0;//将数据移入DAC寄存器DAC8420_LD=1;//寄存器DAC数据保持DAC8420_CS0=1;DAC8420_CS1=1;DAC8420_CS2=1;}3结束语本文设计了一种基于串口通信的多路可调电压输出系统,电脑控制下位机,可以同时输出12路-10V~+10V之间的电压,而且任意一路电压均可通过上位机调整,电压精度可达到0.2mV,大大提高了效率和精度,而且操作十分方便。参考文献[1]张彦,吴昌才,刘暾东,李茂青.基于串行DAC8420芯片的模拟量输出卡设计[J].工业控制计算机,2006(3).[2]杨乐平,李海涛,肖相声等.LabView程序设计与应用.北京:电子工业出版社,2001