智能光伏汇流采集

上传人:第*** 文档编号:37258964 上传时间:2018-04-09 格式:DOC 页数:11 大小:333.50KB
返回 下载 相关 举报
智能光伏汇流采集_第1页
第1页 / 共11页
智能光伏汇流采集_第2页
第2页 / 共11页
智能光伏汇流采集_第3页
第3页 / 共11页
智能光伏汇流采集_第4页
第4页 / 共11页
智能光伏汇流采集_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《智能光伏汇流采集》由会员分享,可在线阅读,更多相关《智能光伏汇流采集(11页珍藏版)》请在金锄头文库上搜索。

1、智能光伏汇流信号采集装置智能光伏汇流信号采集装置摘要:伴随着世界人口的不断增长和城市化进程的不断推进,化石能源日趋枯 竭,燃烧化石燃料所导致的环境污染日趋严重。太阳能是一种低密度的平面能 源,需要数量巨大的太阳能电池板阵列进行串并联组合来达到所需功率,为了 减少电池组件与逆变器之间的连接线和方便日后维护,同时减少投资成本,需 要在直流侧配置光伏阵列汇流箱、逐级汇流的方式进行一次和二次汇流,而在 汇流的过程中对电路电流的实时状态监测就尤为重要。 我们的作品是基于飞思卡尔 MC9S12XS128 单片机强大的模拟信号采集和 处理能力的信号采集装置,采用 TL072 运放作为电压信号的放大模块, D

2、ALLAS 18B20 传感器作为温度采集模块,通过单片机的 AD 模块进行信号采 集,传给单片机内部进行信号处理,在 LCD12864 显示出来,同时进行数据的 处理和判断,若电流信号超过一定阈值,就进行光声报警。1. 作品描述作品描述(1)实现的主要功能实现的主要功能1、多路电流状态检测,包括瞬态和平均直流电流,以及电压值。 2、对电池开路报警,可设置报警最小阈值。 3、实时液晶显示监测动态。 4、对周围温度采集。 5、实现光声报警提示。(2)实用性或者创新点实用性或者创新点在化石能源日趋枯竭,新能源的开发和投入使用需求日益严峻的今天,对新 能源太阳能开发的过程中光伏电池的状态监测需求也同

3、样伴随而生,我们的作 品可以用于监测太阳能光电池阵列中电池板运行状态,光电池电流测量,汇流 箱温度等状态信号采集和监测以及报警。2、系统设计方案说明、系统设计方案说明2.1 系统总体方案 MC9S12X 系列单片机是飞思卡尔半导体公司的产品,总线频率是 16MHZ,具有丰富的外设和 I/O 资源,多数引脚具有复用功能,具有 256 的内部程序存储器,用来保存程序和原始数据。它的 ATD 模块是 8 通道、10 位精度,多路复用、主次逼近型的模数转换器,其优点是速度较高、功耗低、 性价比高。 我们的方案是通过由稳压源通过我们的多路电流电压发生器产生我们要采 集的信号,该发生器由滑动变阻器和多个电

4、阻串并而成,通过运放 TL072 将要 采集的信号进行放大后供给单片机。单片机 AD 模块的 AN 引脚进行信号采集 后,送进单片机内部寄存器,通过对内部寄存器改变设置采集的信号的精度, 处理后发送到 LCD12864 液晶屏进行显示。同时对温度传感器 18B20 进行温度 采集和显示。开始模块初始化A/D 模块采集信 号单片机处理信号信号相关信息送 至 LCD 显示18B20 检测当前 温度超过限定阈值?报警结束2.2 系统子模块设计 1、多路电流电压信号发生器我们的方案是通过由稳压源通过我们的多路电流电压发生器产生我们要采 集的信号,该发生器由滑动变阻器和多个电阻串并而成,通过运放 TL0

5、72 将要 采集的信号进行放大后供给单片机。R419KR21 120R01KR31 1K12+7.2VHeader 2LEDS1SW-SPSTVin1Gnd2+5V3LM7805LM7805CTC4+ 1uFVin2Gnd1-5V3LM7905 L7905CVC1 0.33uFC2 0.1uFGNDGND12-7.2VHeader 2GNDGNDC3+ 2.2uFS2SW-SPSTR11 1K5GND84756U11B TL072ACD81432U11A TL072ACDR49KR3 1KR12 1K5R22 120GNDGND多路电流电压信号发生器多路电流电压信号发生器实物图同相放大电路 电

6、压增益 Av Av=Vi/Vo =(R1+R2)/R1=1+R2/R12、LCD12864 液晶电路81432TL072ACDR1ViR2VoGNDPB5 PT7 PT6 PT5 PT4 PT3 PT2 PT1 PT0 PA0 PA2 PA4PB7 PB2CS11CS22GND3VCC4V05RS6R/W7E8DB09DB110DB211DB312DB413DB514DB615DB716RST17-Vout18LCD1 AMPIRE128X64RV1100KVCCGNDVCCRV210K程序: #include /* common defines and macros */ #include

7、“derivative.h“ /* derivative-specific definitions */#define uchar unsigned char #define uint unsigned int#define RS PORTA_PA4 #define RW PORTA_PA2 #define E PORTA_PA0 #define PSB PORTE_PE2 #define RES PORTB_PB5char c10=0,1,2,3,4,5,6,7,8,9 ; int boo=0; int i=0; int x,y,z,t; float m; float n=0.01953;u

8、char dis= “通道 1:电压: 5.0V“ “通道 3:电压: 5.0V“通道 2:电压: 3.0V“ “通道 4:电压: 4.6V“;uchar dis1= “通道 5:电压: 5.0V“ “通道 7:电压: 4.2V“通道 6:电压: 3.8V“ “通道 8:电压: 3.2V“;void PLL_Init() /PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) /锁相环时钟=2*16*(2+1)/(1+1)=48MHzREFDV=1; /总线时钟=48MHz/2=24MHZSYNR=2;while(!(CRGFLG /时钟校正同步,等待单片机内部时钟稳定CLKS

9、EL=0x80; /再次使能 PLLCLK,确保不出错 void delay(long int z) uint i,j; for (i=0;i10;i+) for (j=0;jz;j+); /*void checkBusy() /检测忙标志 uchar busy; DDRT=0X00; do E=0; RS=0; RW=1; /delay4us(); E=1; /在使能端的一个上升沿读取 LCD 数据 busy=PTT; /delay4us(); E=0; while(busy /判断最高位是否为 0,为 0 则处于空闲状 态 DDRT=0XFF; */void trans(uchar dat

10、,uint rs) /写入子函数,rs 为 1 写数据,rs 为 0 写指令 /checkBusy(); RW=0;RS=rs;delay(24);PTT=dat;E=1;delay(24);E=0; void LCDinit() RES=0; /复位RES=1; /复位置高 trans(0x30,0);/使用基本指令集,不打开绘图显示 trans(0x02,0);/地址归位 trans(0x0c,0);/显示开,游标关 trans(0x01,0); /清除显示 trans(0x06,0);/整体显示不移动,游标右移 void write(uchar *adder1) unsigned cha

11、r i;trans(0x80,0); /Set Graphic Display RAM Address /delay(100); for(i=0;i32;i+) trans(*adder1,1);adder1+; trans(0x90,0); /Set Graphic Display RAM Address/delay(100); for(i=32;i64;i+) trans(*adder1,1);adder1+; void xshanzi1() delay(60000);dis12=0;dis14=1;dis28=0;dis30=1; dis44=0;dis46=1; dis60=0;dis

12、62=1; write(dis); void xshanzi2() delay(60000);dis112=0;dis114=1;dis128=0;dis130=1; dis144=0;dis146=1; dis160=0;dis162=1; write(dis1); void ATD_Init() /AD 初始化 ATD0CTL1=0x00; /8bitATD0CTL2=0x40; /fast clear flag,disenable interrupt,external disableATD0CTL3=0xc0; /8 channel,right justified,no fifo,no

13、freezedATD0CTL4=0x21; /4 ATDclock,PRS=1,ATDclock=Busclock/(PRS+1)*0.5ATD0CTL5=0x30; /special channel disenable,continuous acquisition,multi- channel,first AN0ATD0DIEN=0x00; /disenable digitial input int Get_AD(byte ch) /AD 采样 int ad;while(!ATD0STAT0_SCF);switch(ch) default:case 0:ad=ATD0DR0;break;ca

14、se 1:ad=ATD0DR1;break;case 2:ad=ATD0DR2;break;case 3:ad=ATD0DR3;break;case 4:ad=ATD0DR4;break;case 5:ad=ATD0DR5;break;case 6:ad=ATD0DR6;break;case 7:ad=ATD0DR7;break;return ad; void main() PLL_Init();ATD_Init();LCDinit();PSB=1;/设置为并行工作模式DDRA=0XFF; /设置为输出DDRB=0xFF;DDRE=0XFF;DDRT=0XFF;DDRP=0X00; /设置为输入PERP=0XFF;PPSP=0X00;PORTA=0x00;PORTB=0x00;PORTE=0x00;PTT=0x00; EnableInterrupts;while(1)t=Get_AD(0);m=t*n;/*while(1) if (PTP_PTP0=0 xshanzi1();if (PTP_PTP2=0 xshanzi2(); */

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号