Technical Article MS-2544 . ADSP-CM403 Sinc—Isolated Measurement in Solar Applications level. The conversion can take one or more stages (see Figure 1). Stage 1 is typically a dc-to-dc conversion where the low voltage and high current of the solar panel output is converted to high voltage and low current. The reason for this is to raise the voltage to a level compatible to the peak voltage of the grid. Stage 2 is typically the conversion of dc voltage and current to ac voltage and current, typically using an H-Bridge topology. by Martin Murnane Solar PV Systems, Analog Devices [email protected] INTRODUCTION ADC THEORY—AD7401A Voltage and current measurement in solar applications requires isolated measurement techniques. DSP sinc inputs along with Analog Devices AD7401A isolated ADC make just one example of an Analog Devices signal chain that offers such isolation measurements. The AD7401A is a second-order, sigma-delta (Σ-Δ) modulator that converts an analog input signal into a high speed, 1-bit data stream with on-chip digital isolation based on Analog Devices iCoupler® technology. The AD7401A operates from a 5 V power supply and accepts a differential input signal of ±250 mV (±320 mV full scale). The analog modulator, eliminating the need for external sample-andhold circuitry, continuously samples the analog input. The input information is contained in the output stream as a density of ones with a data rate up to 20 MHz. The original information is reconstructed with an appropriate digital filter, namely a sinc filter. The processor side (non-isolated) can use a 5 V or a 3 V supply (VDD2). This document describes the typical signal chain of a measurement application designed by Analog Devices using the ADSP-CM403xy and the AD7401A devices. SOLAR PV INVERTER SYSTEM A solar PV inverter converts power from a solar panel and deploys this power to the utility grid efficiently. Power from the solar panel, which is essentially a dc current source, is converted to ac current and fed onto the utility grid in phase with the frequency of the grid and to a very high efficiency 15V ADuM3472 5V ARC DETECTION AD7104 DC LINK+ 3V 30V/8.5A (MPPT) AD7104 HIGH LEFT FET DRIVER AD391 ADA4381 HIGH RIGHT FET DRIVER AC INT LIVE AC OUT LIVE GaN 50kHz DC LINK– MAINS FILTER AC OUT NEUTRAL TMP36 TMP05 LOW LEFT FET DRIVER LOW RIGHT FET DRIVER AD7401 ADuM4223 AD8656 ADP3654 ADF7023 ADuM4223 ADuM6202 AD8656 AD8512 AD8639 MANUAL DISCONNECT AD7401 AD7401 ADuM6202 ADuM6202 AC OUT EARTH-3 ADuM4223 MAT L Simu AB® link ® G WOR UI KBE NCH RS-232 ADP 1864 ADP 3202 ADP 1715 UART I2C JTAG GPIO SINC CPU ADC FLASH COMMUNICATION AND LOCAL POWER PWM SRAM SPRT M U X SPI PLC Figure 1. Solar PV Inverter Signal Chain, Analog Devices Page 1 of 5 www.analog.com ©2013 Analog Devices, Inc. All rights reserved. MS-2544 Technical Article EXAMPLE CIRCUIT – DESCRIPTION Figure 2. Isolated Voltage Circuit The ac input to the Σ-Δ modulator is an ac sine wave representing 220 V rms from a single phase grid. There is a resistor divider to reduce the input range to that of the specified input range of the ADC. An input filter reduces noise at the inputs. At the lower range of the ADC the input signal has a narrow pulse width, while at the higher end of the scale the pulse width is near its maximum. When put through a sinc filter, the output data is that shown in the diagonal line. The AD7401A can operate to voltages up to 891 V unipolar range or 565 V bipolar range, across its isolation barrier: a 20µm polyimide. Further information on this and the various approvals can be found in the relevant data sheets. The output of the Σ-Δ modulator contains two signals: a high speed clock input from the ADSP-CM403xy DSP processor and a data signal that holds the modulated data. This data can be input directly to a sinc3 filter where the data can be directly converted to an ADC result. An example of this data is shown below. Figure 3. Modulator Example Data Page 2 of 5 Technical Article MS-2544 ADSP-CM403XY SINC3 PERIPHERAL BLOCK For a DR=256, the response of a sinc3 filter is shown in Figures 5a and 5b below. Figure 4. ADSP-CM403 Sinc Peripheral Block Diagram Figure 5. (a) Sinc3 Decimation Rate=256 and (b) Module Noise Floor The block diagram shows four sinc filter pairs (sinc0–sinc3), two modulator clock sources, and two banks of control registers (units). The module accepts four Σ-Δ bit streams from the GPIO input pins and directs two modulator clock sources to the GPIO output pins. A pulse-width modulation (PWM) signal synchronizes the modulator clocks to optimize system performance. Each sinc filter pair includes the primary filter, secondary filter, DMA interface, and overload limit detection functions. The primary sinc filter transmits its data to memory using DMA. The secondary sinc filter generates overload signals, which can be routed via the trigger routing unit (TRU) to trip a PWM modulator and generate an interrupt. DIGITAL FILTER The sinc filter has a transfer function that lends itself to an implementation in digital logic, using a series of summation and decimation functions. The filter purpose is to remove the modulator sample clock and recover a digital value of the sampled signal. The filter design matches a bipolar Σ-Δ modulator, producing a 50% pulse density for a 0 V input, over 50% for positive inputs and less than 50% for negative inputs as show in Figure 6. The digital filter is a set of accumulators driven by the modulator clock (M_CLK), followed by a set of differentiators driven by the decimation clock (D_CLK). The input accumulators convert the input bit stream into a multibyte word, while the output differentiators derive the average one’s density of the bit stream. When using the AD7401A, the device is specified to a decimation rate (DR) of 256. However, it is possible to use this device at other decimation rates. Figure 6. ADSP-CM403 Sinc Filter Block Diagram Page 3 of 5 MS-2544 Technical Article the grid. With the PWM running at 20 kHz (50 µs), the PWM_SYNC signal (required to synchronize the PWM blocks or external PWMs from different DSPs) occurs at the center of the PWM waveform, where little switching occurs. To align the sinc data, the clock rate for the AD7401A should be set to 10.24 MHz with a decimation rate of 256 (specified in the AD7401A data sheet). This gives a resulting 16-bit word rate is of 40 KHz (50µs); twice that of the PWM frequency. As the sinc can also be set to align with the PWM_SYNC output, as shown in the diagram below, the sinc will now produce two data outputs every PWM period. The output words will be available, in SRAM, at the next PWM_SYNC signal. This clearly demonstrates that the sinc data can be used in grid synchronization algorithm control. The number of accumulator and differentiator stages can be three or four, depending on the order of the filter. The DC gain and bandwidth of the filter are functions of the filter order (O) and the decimation rate (D), which is the ratio of the modulator to the decimation clock. The transfer function of the sinc filter is generated by the product of the transfer functions for the accumulators and differentiators, and in the z domain is given by 𝟏 𝟏 − 𝒛−𝑫 𝑯(𝒛) = � × � 𝑫 𝟏 − 𝒛−𝟏 𝟎 ALIGNING PWM AND SINC DATA The sinc peripheral block and the PWM are inherently running on the same system clock in the ADSP-CM403, typically 100 MHz. The PWM and the sinc can be synchronized so that the data can be available, at an appropriate time and rate that coincide with the control algorithm. This is typically aligned with the PWM level waveform. The diagram below shows an example of the timing required to use a sinc input for synchronization to RESOURCES Share this article on 25µs 50µs PWM PWM_SYNC 12.5µs 37.5µs 12.5µs 37.5µs AD7401A CLOCK AD7401A DATA AD7401A DATA INTERRUPT SINC CONFIGURED TO START AT NEXT PWM_SYNC Figure 7. Alignment of PWM and Sinc Peripherals in the ADSP-CM403 Page 4 of 5 Technical Article MS-2544 PROGRAMMING EXAMPLE /* SPECIFY DECIMATION RATE OPTIONS */ /* 256 */ // RESULT = ADI_SINC_SETRATECONTROL (DEV, ADI_SINC_GROUP_0, ADI_SINC_FILTER_PRIMARY,DECRATE_256, 0); // RESULT = ADI_SINC_SETLEVELCONTROL (DEV, ADI_SINC_GROUP_0, 0, 0, SAMPLECOUNT_INTRATE, PSCALE_256); // PCINT INT RATE /* 128 */ RESULT = ADI_SINC_SETLEVELCONTROL (DEV, ADI_SINC_GROUP_0, 0, 0, SAMPLECOUNT_INTRATE, PSCALE_128); // PCINT INT RATE RESULT = ADI_SINC_SETRATECONTROL (DEV, ADI_SINC_GROUP_0, ADI_SINC_FILTER_PRIMARY,DECRATE_128, 0); /* 64 */ RESULT = ADI_SINC_SETLEVELCONTROL (DEV, ADI_SINC_GROUP_0, 0, 0, SAMPLECOUNT_INTRATE, PSCALE_64); // PCINT INT RATE RESULT = ADI_SINC_SETRATECONTROL (DEV, ADI_SINC_GROUP_0, ADI_SINC_FILTER_PRIMARY,DECRATE_64, 0); /* SET SECONDARY RATE CONTROL “/ RESULT = ADI_SINC_SETRATECONTROL (DEV, ADI_SINC_GROUP_0, ADI_SINC_FILTER_SECONDARY, 8, 0); RESULT = ADI_SINC_SETFILTERORDER (DEV, ADI_SINC_GROUP_0, ADI_SINC_FILTER_THIRD_ORDER, ADI_SINC_FILTER_THIRD_ORDER); RESULT = ADI_SINC_SETCIRCBUFFER(DEV, ADI_SINC_GROUP_0, SINC_CIRCBUFFER, CIRC_BUF_SIZE); /* SET OVERLOAD AMPLITUDE DETECTION LIMITS TO 0 – FULLSCALE */ RESULT = ADI_SINC_SETAMPLITUDELIMIT (DEV, ADI_SINC_PAIR_0, 0X0000, 0XFFFF); RESULT = ADI_SINC_SETAMPLITUDELIMIT (DEV, ADI_SINC_PAIR_1, 0X0000, 0XFFFF); RESULT = ADI_SINC_SETAMPLITUDELIMIT (DEV, ADI_SINC_PAIR_2, 0X0000, 0XFFFF); RESULT = ADI_SINC_SETAMPLITUDELIMIT (DEV, ADI_SINC_PAIR_3, 0X0000, 0XFFFF); /* SPECIFY MODULATOR CLOCK FREQUENCY, PHASE & STARTUP SYNCHRONIZATION */ RESULT = ADI_SINC_CONFIGMODCLOCK (DEV, ADI_SINC_GROUP_0, FSYSCLK, MODCLK, 0, FALSE); // UP TO 20MHZ /* IT’S THE SAME CLOCK AS THE PWM – SO PWM AND SINC ARE SYNCHRONOUS */ RESULT = ADI_SINC_ENABLEMODCLOCK (DEV, ADI_SINC_GROUP_0, ADI_SINC_MOD_CLK_IMMEDIATE ); /* ASSIGN BUFFERS TO RECEIVE SINC DATA - AUTOMATICALLY DMA’D INTO SRAM IN THE ADSP-CM403*/ RESULT = ADI_SINC_SUBMITBUFFER(DEV, ADI_SINC_GROUP_0, SINCDATA0, NUM_SAMPLES); /* ROUTE THE TRU INTERRUPT */ RESULT = ADI_SINC_ENABLEDATAINTERRUPT (DEV, ADI_SINC_GROUP_0, ADI_SINC_DATA_INT_0, TRUE); /* ENABLE & ASSIGN USED SINC FILTER PAIR, AND SPECIFY INTERRUPT MASKS */ RESULT = ADI_SINC_SETCONTROLINTMASK (DEV, ADI_SINC_INT_EPCNT0|ADI_SINC_INT_EFOVF0|ADI_SINC_INT_EPCNT1|ADI_SINC_INT_EFOVF1); RESULT = ADI_SINC_ENABLEPAIR(DEV, ADI_SINC_PAIR_0, ADI_SINC_GROUP_0, TRUE); // ACV_EXTERNAL RESULT = ADI_SINC_ENABLEPAIR(DEV, ADI_SINC_PAIR_1, ADI_SINC_GROUP_0, TRUE); // ACV_INTERNAL RESULT = ADI_SINC_ENABLEPAIR(DEV, ADI_SINC_PAIR_2, ADI_SINC_GROUP_0, TRUE); // DC LINK RESULT = ADI_SINC_ENABLEPAIR(DEV, ADI_SINC_PAIR_3, ADI_SINC_GROUP_0, TRUE); // AC_CURRENT /* WAIT AND READ FULL SINE WAVE INTO SRAM – START NEAR AC CROSSOVER. */ DO { PWM_SINC_LOOP=0; GET_ADC_DATA_PWM(); } WHILE ((SINC_VEXT_DATA[0] > 50) || (SINC_VEXT_DATA[0] < -50)) ; // START SINC AT 0 V MEASUREMENT - ALIGNS WITH SINEWAVE. One Technology Way • P.O. Box 9106 • Norwood, MA 02062-9106, U.S.A. Tel: 781.329.4700 • Fax: 781.461.3113 • www.analog.com Trademarks and registered trademarks are the property of their respective owners. TA11827-0-9/13 www.analog.com ©2013 Analog Devices, Inc. All rights reserved. Page 5 of 5