引 言
为了确保太阳能发电系统能够正常的工作,需要对太阳能发电系统的各项环境参数进行测量,从而有效地控制其运行。本文介绍了一种基于单片机的太阳能参数测试仪,提供了3种参数的测量功能和通信接口,以及2种供电方式,既可作为手持设备使用,又能安装在发电系统中,具有较高的实用价值。
1 硬件电路设计
1.1 总体结构
该测试仪以AT89S52单片机为核心,外接温湿度传感器SHTll、照度传感器TSL2561、四位共阴数码管、RS485总线通信接口以及显示切换按键。单片机上电工作后,对当前温度、湿度、光强度进行实时测量,通过按键切换将测得的3种参数通过LED数码管进行轮流显示;此外,还可以通过RS485总线与PC机进行通信,将参数值传送到上位机,以达到远程监测的目的。该测试仪的结构框图如图1所示。
1.2 测量模块
温度和湿度测量采用的是瑞士Sensirion公司生产的SHTll传感器。该传感器采用独特的CMOsens TM技术,将温湿度传感器、信号放大处理、A/D转换、I2C总线全部集成在一块芯片上,可直接与单片机接口。该芯片采用数字式输出,为编程提供了方便。
光照度测量选用的是TAOS公司生产的TSL2561光强度传感器。它具有数字式输出端口和标准I2C总线接口,涵盖1~70 000 lx的宽照度范围,非常适合户外环境下光照强度的测量,适用于太阳能发电系统。图2为传感器与AT89S52单片机的接口电路设计。
1.3 电源模块
电源模块提供了2种供电方式:
①当测试仪作为手持设备使用时,可直接使用3.6V锂电池,经过DC—DC电压转换芯片MAX756将电压升至5 V后为单片机和外设供电。
②当测试仪作为固定设备安装在太阳能发电现场时,可以采用太阳能供电。太阳能电池产生的12 V电压通过稳压芯片LM7805后,得到稳定的5 V电压输出,输出电压既可以为测试模块供电还可以通过充电电路为锂电池充电。图3是电源模块的硬件原理图。
1.4 充电电路
充电电路的核心器件采用的是上海如韵公司生产的专用充电芯片CN3058,它可以对单节磷酸铁锂可充电电池进行恒流/恒压充电。该器件内部集成有功率晶体管,使用时不需要设计外围电流检测和保护电路,适用于便携式的应用领域。
图4为锂电池充电电路。其中LEDl和LED2分别作为充电中和充电饱和两种状态的指示灯,R1在充电时起限流保护的作用;电容C1和C2采用的是多层陶瓷电容器(MLCC),能保证充电电路稳定工作。
1.5 通信模块
测试仪通过RS485工业总线与PC机进行通信,其硬件接口电路如图5所示。
2 软件设计
2.1 总体设计
测试仪的软件开发环境采用的是Keil C,所有代码采用C语言编写。为了方便程序调试和提高可靠性,软件采用模块化结构设计,主要由初始化程序、主程序、子程序、中断服务程序等组成。单片机上电后即开始循环执行温湿度、照度测量程序,并以设定的时间间隔在数码管上轮流动态显示;按键切换和通信功能部分由于使用频率相对较低,为降低设备功耗,其程序以中断响应的方式执行。在此要注意中断优先级的设置:按键中断优先级应高于串口中断,否则将无法进行显示切换。主程序流程如图6所示。
2.2 传感器驱动程序
本系统采用的传感器均为集成数字芯片且都具有I2C总线接口,故其驱动程序的编写要严格遵循I2C总线的时序。主程序为每一个参数开辟了一个8位的存储空间,传感器将采集到的数据经SDA引脚串行输出,驱动程序将SDA线上输出的数据进行串并转换,并存储到相应空间中,以方便其他功能程序调用。以下是照度传感器数据采集程序的部分代码。
(1)TSL2561初始化
2.3 RS485通信程序
测试仪与上位机的通信采用RS485协议。串口参数为:波特率9600,数据位8位,1个校验位,1个停止位。其数据格式如图7所示。
由于RS485总线协议与RS232串口协议只是接口电平上有区别,其软件编程完全按照串口通信协议进行,此处不再详述。
结 语
经实验测试,该环境参数测试仪温度测量显示精度可以达到0.1℃,湿度精确到O.1%,照度可以精确到11x。由于主要器件均为I2C数字接口,故本测试仪还有结构简单、易维护、可扩展性强等特点,具有很高的实用价值;另外,独特的双电源供电方式更扩展了它的适用范围。
关键字:AT89S52 单片机
引用地址:
基于AT89S52单片机的太阳能参数测试仪设计
推荐阅读最新更新时间:2024-11-16 20:54
51单片机实验3:led流水灯
开发板led模块电路图如下: 循环左/右移函数头文件为 intrins.h #include reg52.h #include intrins.h #define uc unsigned char void delay(uc n) { uc i,j; for(i=1;i =n;i++) for(j=110;j =1;j--); } void main() { P2=0xFE; while(1) { delay(200); p2=_crol_(P2,1); delay(200); } }
[单片机]
NEC单片机 UPD78F9234 16位定时器使用例程
NEC单片机 UPD78F9234 16位定时器使用例程(汇编) ;************************************************* ; Lable def ;************************************************* LED8_MODE EQU PM2.1 LED7_MODE EQU PM2.0 LED6_MODE EQU PM12.0 LED5_MODE EQU PM0.3 LED4_MODE EQU PM0.2 LED3_MODE EQU PM0.1 LED2_MODE EQU PM0.0 LED
[单片机]
基于STM32单片机的端口复用与端口重映射
一、使用复用功能(AF)时,要对端口位配置寄存器进行编程。 1)对于复用的输入功能,配置必须为上拉/下拉或者浮空; 2)对于复用输出功能,配置必须为复用功能输出模式(推挽,开漏)。 对于双向复用功能,必须配置为复用功能输出模式(推挽或者开漏),此时输入驱动器配置为浮空输入模式。 如果将一端口配置成复用输出功能,会将引脚和输入寄存器断开,并和片上外设的输出信号连接。 如果软件将一GPIO 口配置为复用输出功能,但外设没有被激活,它的输出将不确定。 要正常使用GPIO 复用功能,分三步来配置: 第一步,位寄存器配置; 第二步,开启对应的外设时钟; 第三步,激活该端口。 二、端口重映射 优点:优化电路设计;扩展功能,
[单片机]
51单片机的指令系统及试验
在讲指令系统前我们先来复习一下数制的概念。 1.十进制(Decimal) 基数是10,它有10个数字符号,即0,l,2,3,4,5,6,7,8,9。其中最大数码是基数减1,即9,最小数码是0。 2.二进制(Binary) 基数是2,它只有两个数字符号,即0和1。这就是说,如果在给定的数中,除0和1外还有其它数,例如 1012,它就决不会是一个二进制数。 3、十六进制(Hexadecilnal) 基数是16,它有16个数字符号,除了十进制中的10个数可用外,还使用了6个英文字母。它的16个数字依次是0,l,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中A至F分别代表十进制数的10至15,最大的数字也是基数减1。 4、
[单片机]
意法新款微控制器外部周边整合度高
eeworld网消息:意法(ST)新款微控制器(MCU)STM32L496和STM32L4A6延续其独特整合ARM Cortex-M4F处理器内核心之性能与意法超低功耗技术,提升芯片上存储容量和图形处理的能力,增加更多通讯外部周边和更灵活的省电模式。 新产品高达320KB的芯片上RAM,配合新增的ST Chrom-ART Accelerator图形处理引擎,使物联网装置和智能手表等注重功耗之设备的图形显示更加流畅。 该公司提升STM32L4功耗架构的灵活性,让设计人员能够选择用外部直流/直流转换器供给处理器内核心,以进一步提升效能。 STM32L4 FlexPowerControl架构新增一个关断模式,让多个独立的内核心电源、外部
[网络通信]
51单片机实验——输出周期为200ms的方波
1.实验题目: 利用定时器T0的16位不可重加载模式,编制一段程序,只有当INT0(P3.2)引脚输出高电平时,在P1.6输出一个方波控制一个指示灯。设单片机的时钟为12MHz,输出周期为200ms的方波,观察指示灯的变化。 2.KEIL代码 #include reg51.h sbit OUT=P1^6; sbit P32=P3^2; void Int0_Init(); void main() { Int0_Init(); TMOD &=0X0F; TMOD |=0x09;//选择定时器T0的工作模式1 TH0 = (65536 - 50000)/256;//高四位初值 TL0 = (65536 - 5
[单片机]
兼顾高性能与高安全,瑞萨电子推出RA MCU产品家族
日前,瑞萨电子宣布推出采用32位Arm Cortex-M核的RA MCU产品家族。作为面向未来的嵌入式解决方案,瑞萨电子将RA MCU打造成具备优化性能、安全性、连接性、外设IP和易于使用的灵活配置软件包(FSP)的终极组合。 RA MCU采用了Arm Cortex M23/M33与Cortex-M4系列内核,这也是瑞萨继Synergy系列之后,第二次推出Arm内核架构的MCU产品,补充了瑞萨在高端MCU领域的布局。目前瑞萨MCU产品阵营包括了低功耗RL78产品家族、车载RH850产品家族、工控RX产品家族、高性能嵌入式Synergy产品家族以及专为中国市场开发的R7F0C系列。 采用瑞萨电子RA MCU产品家族进行设计,可使嵌入
[嵌入式]
PIC单片机软件开发技巧
笔者的项目是有关机器人控制的实现。控制部分采用PICl6F7X系列单片机,运用汇编语言编程,运行速度较快,能够达到系统的要求。在这里使用的大多是数字信号的控制,电机的控制只有开和合两种状态。在动作的过程中需要两只手臂、身体、头部、脚部等的协调动作。整个控制系统比较复杂,因而在PIC程序编写和空间分配方面需要注意一些问题。 1 动作标志位的使用 在整个控制中,组合的动作很多,当所有动作定位都通过光电开关控制时,在程序编写上就有一些问题。如要求左手上升到鼓掌位、右手上升到举手位(手初始位置在最下的放下位),光电开关0有效(即为0时是挡住),到达正确位置。用简单的理解可以写成下面的程序: list P=16c73 cal
[单片机]