微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 太阳能电池测试软件设计

太阳能电池测试软件设计

时间:02-23 来源:互联网 点击:
1 系统总体结构及功能
太阳能电池性能测试系统由硬件结构与测控软件两部分构成。硬件结构主要包括光路系统、样品室与测量电路三部分,如图1所示。软件主要分为上位机软件与下位机程序两部分。

太阳光模拟光源选用氙灯,因为其具有较宽且连续的光谱范围,覆盖紫外光至红外光,是比较理想的模拟太阳光源。光源通过斩波器变为交变的复色光信号,再经光栅单色仪,为测试系统提供交变单色光信号。偏置光源的存在使系统具备了测试多节太阳能电池的条件,可选用氙灯、卤钨灯作为光源。待测太阳能电池样品与已标定的标准探测器至于样品室中的运动平台上,通过数据采集卡与计算机相连。上位机软件可对硬件系统进行状态配置并获取采集卡数据,经数据处理后生成标准探测器绝对光谱响应曲线、被测太阳能电池绝对光谱响应曲线以及量子效率曲线。
2上位机总体设计及数据处理
2.1 上位机总体设计

上位机软件作为人机交互的媒介,理应具备界面简洁、便于用户理解、操作简便快捷的特点。鉴于C++ Builder这一高性能可视化集成开发环境具有大量可重用控件与强大的数据库处理能力[1-2],本软件选用其作为开发工具。软件界面组成如图2所示。

3.1 HID固件程序设计
上位机检测USB设备是通过对集线器接收端的电平信号的变化确定的,这就要求设备端D+或D-接上拉电阻至3.3 V电源,STM32F103单片机并没有在此环节做内部上拉,故搭建一个软上拉电路,用I/O口PE0电平变化模拟上拉电阻接通与断开。USB部分硬件实现如图5所示。

HID设备与主机间的通信是通过USB的控制管道(默认管道即端点0)和中断管道1完成的。HID设备的描述符包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符、 HID描述符、报告描述符、实体描述符,其中前5个描述符属于USB设备标准描述符,而后3个则为HID类设备特定描述符。通过对描述符的配置实现HID设备属性的定义,如产品ID: idProduct(PID)、厂商ID: idVendor(VID),包括对端口的定义以及对报文格式的定义。
主机与USB 设备最初的数据交换过程通过枚举完成。USB-HID 类设备解析主机的请求,并在枚举期间向主机发送描述符响应主机的请求。系统将太阳能电池短路电流数据作为一个报文,当短路电流测量完成后,USB设备将报文发向上位机,完成信息发送。HID固件程序流程图如图6所示。

3.1.1 USB设备标准描述符
设备标准描述符主要是在usb_desc.c文件中定义,具体操作如下:
(1)编辑CustomHID_DeviceDes-criptor设备描述符,在以小端模式定义设备的实验用PID与VID为0×123 4与0×567 8。
(2) 编辑ConfigurationDescriptor
配置描述符,定义接口编号为0、定义端点,定义接口协议为HID自定义设备。
(3) 编辑Endpoint Descriptor端点描述符,定义输入、输出端点最大包长度为8 B。
(4) 编辑CustomHID_ReportDescriptor报文描述符,设定8 B报文格式。
(5) 编辑StringLangID、 String
Vendor、StringProduct、StringSerial描述符,设置设备厂商ID、产品ID以及产品序列号。
3.1.2 USB端点设置
编辑usb_prop.c文件,配置端点,具体操作如下:
(1) 编辑CustomHID_Reset(void)函数,初始化端点0和端点1,调用SetEPType()函数初始化端点0为控制端点类型、端点1为中断端点类型。
(2) 调用SetEPRxAddr()、SetEPTxAddr(),设置收发数据的地址。
(3)调用SetEPTxCount()、SetEPRxCount(),设置收发数据长度为8 B。
3.1.3 主函数框架
编写main.c文件,完成下述内容:
(1) 包含关键头文件stm32f10x_lib.h、usb_lib.h、hw_
config.h。
(2)调用Set_System()、USB_Interrupts_ConFig()、Set_USBClock()、USB_Init()函数配置系统时钟、USB中断、USB时钟与初始化。
(3) 编写CustomHID_Send()数据发送函数,调用UserToPMABufferCopy(),将数据放入输出Buffer,调用SetEPTxValid(ENDP1)使端点1有效以发送数据。
(4) 编写CustomHID_Receive()数据接收函数,调用PMAToUserBufferCopy()函数获取数据,调用SetEPRxValid(ENDP1)函数使端点1有效以接收数据。
3.2上位机通信模块设计
C++ Builder集成开发环境调用Windows API函数开发出USB-HID程序模块。通过调用Windows基础库函数获取HID设备的全局唯一标识(GUID)、设备ID、设备接口、缓冲区指针等信息,最终获取报文信息,解析数据交数据处理模块进一步处理。上位机HID程序流程图如图7所示。

上位机实现与USB-HID设备通信具体调用的函数有:
(1) 使用HidD_GetGuid函数获取128 bit GUID。
(2) 使用SetupDiGetClassDevs函数获取设备信息群。
(3) 使用SetupDiEnumDeviceInterfaces函数识别HID接口。
(4) 使用SetupDiGetDeviceInterfaceDetail函数获取设备路径。
(5) 使用CreatFile函数开启设备,使用CloseHandle函数释放资源。
(6) 使用HidD_GetAttributes函数获取设备ID。
(7) 使用HidD_GetPreparsedData函数与HidD_Free
PreparsedData函数取得缓冲区指针与释放资源。
(8) 使用WriteData函数、ReadFile函数发送、读取报文。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top