Documente Academic
Documente Profesional
Documente Cultură
ente_201700226_sm_miscellaneous_information.pdf
1. Optoelectronic properties of the PEDOT:PSS top electrode
Figure S1. Sheet resistance and average visible transmission (400-700 nm) of PEDOT:PSS layers versus layer thickness.
Figure S2. (a) J-V curves and (b) electrical power of the semitransparent organic solar cells under different illumination
intensities (photoactive area: 0.24 cm2, illumination through the ITO electrode, 0.0003 – 1.0 suns).
2
Table S1. Key performance parameters of the semitransparent solar cells under different illumination intensities
(photoactive area: 0.24 cm2, illumination through the ITO electrode). Data collected under a solar simulator (ASTM AM
1.5G, Xenon lamp) using neutral density filters to adjust the illumination intensity.
3
3. Optoelectronic properties of the lens-fitted solar cells in different lighting scenarios
Figure S3. Light harvesting properties of the lens-fitted solar cells: (a) Spectral irradiance from the 26-channel LED solar
simulator at 1, 0.1 and 0.01 suns. The LEDs were adjusted to resemble the ASTM AM 1.5G spectral distribution. (b) The
corresponding J-V curves measured under the solar simulator demonstrate the lesser influence of series resistance of the
electrodes at lower illumination intensities. Dark curves are represented by dashed lines. (c) Power of the solar cells versus
voltage. (d) Towards lower illumination intensities, the PCE of the solar cells increases. (e) – (h) The same data set for a
lens-fitted solar cell illuminated by an artificial light source at 2000, 1000, 500, 200 and 100 lux. Therefore, a white-light LED
spectrum was loaded into the solar simulator.
4
Table S2. Key performance parameters of lens-fitted solar cells (photoactive area: 15.5 cm2, illumination through the ITO
electrode) under different illumination intensities using an ASTM AM 1.5G spectral light distribution.
Table S3 Key performance parameters of lens-fitted solar cells (photoactive area: 15.5 cm 2, illumination through the ITO
electrode) under different illumination intensities using a spectral distribution that matches the emission of a white-light
LED.
To analyze the color perception of the lens-fitted semitransparent solar cells, we recorded their transmission spectra
(including glue and encapsulation) on a UV-Vis-NIR spectrophotometer (Cary 5000, Agilent Technologies) equipped with an
integrating sphere (ø = 150 mm). From the measured transmission spectra we calculated the chromaticity within the CIE
1931 and CIE 1960 UCS color space.
Following the CIE 13.3 standard, we determined the color rendering index (CRI) from the transmission spectrum.[S1] The CRI
describes the quality of color rendering for eight test color samples along the hue circle. Perfect color rendering is
represented by a CRI of 100. The human eye can distinguish CRI differences of more than 5. The correlated color
temperature (CCT) is defined as the temperature of the black body radiator with its chromaticity closest to the chromaticity
of the transmission spectrum.[S2]
Commonly, light sources with a CCT between 3300 K and 5000 K are considered pleasant.[S3] We note that this CIE standard
procedure is only valid if the displacement of the chromaticity of the investigated light source to the Planckian locus in the
CIE 1960 UCS color space does not exceed Δ = 5.4 · 10−3. In lack of better standards, we determined the CRI also for
chromaticities with larger Δ.
5
5. Full electrical circuit documentation
Core of the circuit (Figure S4) are two integrated circuits (ICs). BQ25504 from Texas Instruments Incorporation is a low-
power boost converter with energy storage management. MSP430F2013 is a 16-bit RISC mixed signal microcontroller. It
samples the current delivered by the solar cell using Rmeas as a shunt resistance and the voltage of an internal temperature
sensor. The gathered data is written to a SPI serial bus and read by the two displays. All other components are applied as
recommended by the datasheets of BQ25504 and MSP430F2013.[S4,S5]
The inductor L1 and the capacitor C1 are parts of the boost converter controlled by BQ25504 which provides a voltage VMPP
to operate the solar cell close to its maximum power point (MPP). For determining the MPP, the Voc of the solar cells is
measured every 16 s and stored on the capacitor C5. VMPP = 0.7·Voc is determined by the resistors R1, R2 and R10. The
current delivered by the solar cell is used to charge the large storage capacitor C3. When a level of 2.7 V (defined by the
resistors R7, R8 and R9) is reached, the transistor Q1 is switched to provide a current to the microcontroller and the
displays. To prevent damage to these components, an overvoltage level of 3.5 V is defined by the resistors R3 and R4, at
which the solar cells are driven to their Voc to stop charging of C3. Two analog ports of the microcontroller are connected
via low-pass filters (Rx1, Cx1, Rx2 and Cx2) to the shunt resistor R meas to record the current of the solar cells. The voltages at
Rmeas and at the voltage output of the internal temperature sensor are measured against a reference voltage stored on C52.
All components are mounted on a printed circuit board (PCB) that is incorporated into the right temple of the glasses. The
PCB that carries the electronic circuit has a display is attached to its bottom side, whereas the other display is attached to a
separate PCB in the left temple. The PCB layout and assembly is depicted in Figure S5. The wiring between the PCBs and the
connection to the display with a flexible printed circuit is shown in Figure S6. A full list of all employed components is
compiled in the bill of materials in Table S4.
Figure S4. Schematic of the entire electrical circuit including all components other than the displays. In addition to names
and values of the components, the digital signals at the display connector and the PC connector are given.
6
Figure S5. Schematic layout and assembly of the printed circuit boards (PCBs). The PCB in the right temple carries all
electronic components including the boost converter, the power management IC and the microcontroller. The left PCB
carries only the second display.
7
Figure S6. (a) Wiring diagram of the assembly. A cable connects the PCBs attached to the left and right temple of the Solar Glasses. A single
8-core cable for all digital signals of the second display (SCLK, SI, SCS, VCOM, DISP) the power supply (VCC, GND) and the anode terminal of
one solar cells is mounted onto the frame. (b) The displays are connected using a flexible printed circuit (FPC) connector.
Table S4. Bill of Materials used on the printed circuit board depicted in Figures S5 and S6, including names and values of all
components. For some special components, additionally, the manufacturers and part numbers are listed.
Left PCB
8
Right PCB
9
6. Microcontroller Program Source Code
The microcontroller program is implemented in C and consists of a main program (Main.c) and a header file
(Display_Graphics.h), the latter containing the display graphics in hex-code (see text boxes below). The page references
commented in the code refer to the datasheet of the displays.[S6] For coding and compiling, the IAR Embedded Workbench
IDE Version 6.50.2 was used. For programing of the microcontroller MSP430F2013, we employed the EZ430-F2013 MSP430
USB-Stick Development Tool from Texas Instruments Inc.
Main.c:
/********************************************************
*
* Project: Solar Glasses
* Authors: D. Bahro, H. Roehm
*
* Affiliation: Karlsruhe Institute of Technology
* Material Research Center for Energy Systems (MZE)
* Strasse am Forum 7, Bldg. 30.48
* 76131 Karlsruhe, GERMANY
*
* Components: MCU: TI MSP430F2013
* Display: Sharp LS012B7DD01
*
********************************************************/
/* AD converter definitions */
// Temp_value = 2^16 * 1.32mV/°C * (273K + Temp[°C]) / 600mV (MSP430F2013 datasheet, p. 47)
// Begin of status bar: Temp = 10°C, Temp_value = 40802, bar value: 0
// End of statuts bar: Temp = 32,4°C, Temp_value = 44034, bar value: 101
// -> Offset: 40802, Slope: 101 / (44034 - 40802) = 1/32 -> Bitshift by 5
#define TEMP_OFFSET 40802 // ADC Temperatre offset
#define TEMP_SLOPE 5 // ADC Temperature slope = 1 / 2^5
// I_value = 2^16 * 10Ohm * 400kOhm / (2*1MOhm + 400kOhm) * I_meas[mA] / 600mV
// Begin of status bar: I_meas = 0mA, I_value = 0, bar value: 0
// End of status bar: I_meas = 2.22mA, I_value = 404, bar value: 101
// -> Offset: 0, Slope: 101 / 404 = 1/4 -> Bitshift by 2
#define CURR_OFFSET 0 // ADC Voltage (Intens.) offset
#define CURR_SLOPE 2 // ADC Voltage (Intens.) slope = 1 / 2^3
// Threshold defines minimum valid measurement value, to prevent from noise
// Correspond to I = 0.20mA (or Temp = 0.3K), avoid display refresh during MPP measurement
#define ADC_THRESHOLD 36 // Minimum ADC value for a valid measurement
/* Program timing */
#define START_TIME 6000 // Delay to be introduced during initialization, 6000/12kHz = 0.5s
#define REFON_TIME 60 // Delay time to settle reference voltage for ADC, 60/12kHz = 5ms
#define CYCLE_TIME 1500 // Delay between two program cycles, 1500/12kHz = 125ms
10
/* Global variables */
unsigned char ADCycle = 0; // ADC cycle counter
unsigned int ADValue = 0; // ADC digital value (0..2^16)
unsigned char BarValue = 0; // Calculated length of status bar (0..101)
unsigned char activeDisplay = DISP1; // Active display for this ADC cycle
unsigned int activeOffset = TEMP_OFFSET; // Active ADC offset for this ADC cycle
unsigned int activeSlope = TEMP_SLOPE; // Active ADC slope for this ADC cycle
unsigned char LineBuffer[LINE_WIDTH] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF}; // Empty white line, Buffer for 23 pixels
/*****************
* main function *
*****************/
/* Timing settings */
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
/* Pin settings */
P1DIR = 0xFC; // Define pins P1.2..P1.7 as output
P1OUT = 0x00; // Pull outputs on first port to GND
P2DIR = 0xFF; // Define all pins on second port as output
P2OUT = 0x00; // Pull outputs on second port to GND
P2SEL = 0x00; // P2.6 and P2.7 as digital ports instead of XTAL input (default)
/* ADC initialization */
SD16CTL = SD16SSEL_1; // SMCLK (1MHz) as clock source for ADC
SD16CCTL0 = SD16SNGL + SD16UNI + SD16IE; // Single conv, unipolar, interrupt enabled
/* Timer settings */
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = START_TIME; // Timer counts up to CYCLE_TIME and releases interupt
TACTL = TASSEL_1 + MC_1; // ACLK (12kHz/CYCLE_TIME), cont.-mode
/* Turn displays on */
P1OUT |= DISP_ON; // DISP = high -> Displays turned on
/* Display initialization */
for (unsigned char ii = 0; ii <= 2; ii++) // clear display twice (LS012B7DD01 data sheet page 13)
{
P2OUT |= DISP1 + DISP2; // DISP1 and DISP2 = high -> both displays read from SPI bus
SPIWriteByte(LCD_CL); // Display clear command
11
SPIWriteByte(0); // 8Bit Trailer
P2OUT &= ~(DISP1 + DISP2); // DISP1 and DISP2 = low -> data read finished
}
SPIWriteLines(DISP2,&display_graphics_hex[BEGIN_HEAD_2][0],DISP_POS_HEAD_Y_2,LENGTH_HEAD_2+LENGTH_BAR);
/* Main loop*/
while(1)
{
// Program runs through 15 AD cycles, first: Temperature, 2nd-15th: PV current = Ill. Intensity
measurement
ADCycle++;
switch(ADCycle) {
case 1: // Measure MCU temperature - 1x
SD16AE &= ~(SD16AE0 + SD16AE1); // Disable A0+ (P1.0) and A0- (P1.1) analog pins
SD16INCTL0 = SD16INCH_6; // A6+/- (Internal Temperature sensor)
CCR0 = REFON_TIME;
__bis_SR_register(LPM3_bits + GIE); // Enter low power mode 3 w/ interrupt
12
/*****************
* Sub functions *
*****************/
// Set grafic data left from bar, read from FLASH stored graphic data
for (PixelByte = 0; PixelByte < BAR_POS_X; PixelByte++)
{
LineBuffer[PixelByte] =
*(&display_graphics_hex[BEGIN_BAR][0]+PixelByte+(displayline*LINE_WIDTH));
}
// Calculate bar Pixel graphic (Bitshift by 3 = Division by 8, remainder from bitwise &)
NumWhiteBytesFirst = firstPixel >> 3; // firstPixel / 8
NumWhiteBitsFirst = firstPixel & 0x07; // firstPixel % 8
NumWhiteBytesLast = lastPixel >> 3; // lastPixel / 8
NumWhiteBitsLast = lastPixel & 0x07; // lastPixel % 8
// Set grafic data right from bar, read from FLASH stored graphic data
for (PixelByte = BAR_POS_X+BAR_WIDTH; PixelByte < LINE_WIDTH; PixelByte++)
{
LineBuffer[PixelByte] =
*(&display_graphics_hex[BEGIN_BAR][0]+PixelByte+(displayline*LINE_WIDTH));
}
13
}
// Send data
for (line = 0; line < NumberOfLines; line++) // Repeat for each line
{
// Send line address
USICTL0 |= USILSB; // change SPI transmission to least significant bit (LSB) first
if (display == DISP2) { // For display 2 line number is counted from top
LineAddress = line+FirstLine+1;
}else if (display == DISP1) { // For display 1 line number is counted from bottom
LineAddress = LINE_NUMBER-FirstLine-line;
}
SPIWriteByte(LineAddress); // write line address in LSB mode
/******************************
* Interrupt service routines *
******************************/
14
#else
#error Compiler not supported!
#endif
{
ADValue = SD16MEM0; // Store AD value and clear ADC interrupt flag
__bic_SR_register_on_exit(LPM0_bits); // exit low power mode 0
}
Display_Graphics.h:
/******************************************
* display_graphics.h
*
* - contains the hex code of the graphics written to both displays
* - on the first display the first header including the KIT logo
* and the temperature scale is written to the upper half, as well as the bar
* graphic is written to the lower half
* - on the second display the second header (ill. intensity) and the KIT logo
* is written
*******************************************/
#ifndef DISPLAY_GRAPHICS_H_
#define DISPLAY_GRAPHICS_H_
// Display dimensions
#define LINE_WIDTH 23 // Number of data Bytes per display line ( width 184 pixels / 8 = 23
Bytes)
#define LINE_NUMBER 38 // Number of display lines (height 38 Pixels)
// Line numbers on display where to start writing the different parts of the graphics
#define DISP_POS_HEAD_Y_1 5 // First line of the first graphic header
#define DISP_POS_HEAD_Y_2 9 // First line of the second graphic header
#define DISP_POS_BAR_Y 21 // First line of the bar graphic
// Coordinates of the different parts of the two graphics in display_graphics_hex in FLASH storage
#define BEGIN_HEAD_1 0 // Position of the first Byte of the first graphic header
#define BEGIN_HEAD_2 16 // Position of the first Byte of the second graphic header
#define LENGTH_HEAD_1 16 // Number of lines of the first graphic header
#define LENGTH_HEAD_2 12 // Number of lines of the second graphic header
#define BEGIN_BAR 28 // Position of the first Byte of the bar graphic
#define LENGTH_BAR 13 // Number of lines of the bar graphic
// Coordinates that define the shape of the circle at the end of the status bar [line number, first
Pixel, last Pixel]
const unsigned char bar_coordinates[LENGTH_VAR_BAR][3] = {2,3,8,
4,1,10,
5,0,11,
6,0,11,
7,0,11,
15
8,0,11,
9,0,11,
10,1,10,
12,3,8};
// begin of display
// 4 empty rows
16
// begin of bar graphic [28..40][..]
0xF8,0x03,0x88,0x80,0xFE,0x07,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0xFF,
0xFE,0x01,0x80,0x80,0x7E,0x07,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0xFF,
0xFF,0x80,0xC4,0xC0,0x3E,0x07,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0xFF,
0xFF,0xE0,0x20,0xE0,0x1E,0x07,0xC0,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
0,0x00,0x7F,
0xE1,0xF8,0x10,0xF0,0x0E,0x07,0xC0,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0x3F,
0xE0,0x1E,0x08,0xF8,0x0E,0x07,0xC0,0xF9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0x9F,
0xE0,0x00,0xC0,0xFC,0x06,0x07,0xC0,0xFA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0xDF,
0xE0,0x00,0x10,0xFE,0x02,0x07,0xC0,0xFA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0xDF,
0xE0,0x00,0x00,0xFF,0x02,0x07,0xC0,0xFA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0xDF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0x9F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0x3F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
0,0x00,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xFF,0xFF,0xF
F,0xFF,0xFF
// end of bar graphic
// 5 empty rows
// end of display
};
#endif /* DISPLAY_GRAPHICS_H_ */
7. References
[S2] N. Lynn, L. Mohanty, S. Wittkopf, Building and Environment 2012, 54, 148–158.
[S3] E. Theiß, Gebäudetechnik, Vol. 1: Beleuchtungstechnik: neue Technologien der Innen- und Außenbeleuchtung,
Oldenbourg-Industrieverl 2000, München.
[S4] “bq25504 Ultra Low-Power Boost Converter With Battery Management for Energy Harvester Applications”, Texas
Instruments Inc. 2012, http://www.ti.com/lit/ds/symlink/bq25504.pdf, (accessed January 27th, 2017).
[S6] “Technical Literature For TFT-LCD Module, Model No. LS012B7DD01”, SHARP Corporation 2013,
http://www.mouser.com/ds/2/365/MitsubishiElectric_LS012B7DD01%20LCP-1113013B-364546.pdf, (accessed
January 27th, 2017).
17