====== Pmod IA Reference Manual ====== The Pmod IA is now retired and no longer for sale in our store. The Digilent Pmod IA (Revision A) is an impedance analyzer built around the Analog Devices AD5933 12-bit Impedance Converter. {{Digilent Image Gallery | image = {{:reference:pmod:pmodia:pmodia-0.png?direct |}} | image = {{:reference:pmod:pmodia:pmodia-1.png?direct |}} | image = {{:reference:pmod:pmodia:pmodia-2.png?direct |}} | image = {{:reference:pmod:pmodia:pmodia-3.png?direct |}} }} == Download This Reference Manual == * {{:reference:pmod:pmodia:pmodia_rm.pdf| PDF}} ---- ===== Features ===== * Impedance analyzer with 12-bit impedance converter * Measure impedance values ranging from 100Ω to 10 MΩ. * Programmable frequency sweep * Programmable gain amplifier * Optional external clock generation * 2×4-pin port with I²C interface ---- =====Functional Description ===== The %%Pmod IA%% utilizes [[http://www.analog.com/media/en/technical-documentation/data-sheets/AD5933.pdf|Analog Devices AD5933]] with its on-board frequency generator and analog-to-digital converter (%%ADC%%) to be able to excite an external unknown impedance at a known frequency. This known frequency is sent out through one of the SMA connectors. The frequency response is captured by the other SMA connector and sent to the %%ADC%% and a discrete Fourier transform (DFT) is performed on sampled data, storing the real and imaginary parts of the solution in the on-chip data registers. The magnitude of the unknown impedance as well as the relative phase of the impedance at each point in the generated frequency sweep can be calculated from these two data words. ---- ===== Interfacing with the Pmod===== The %%Pmod IA%% communicates with the host board via the [[pmod:communication_protocols:i2c|I²C protocol]]. Users can initiate communication with the Pmod IA by issuing a start condition and its 7-bit slave address of 0001101 (0x0D) and then a write bit (0) or a read bit (1). Upon receiving an Acknowledge bit back from the PmodIA, communication can continue. The Unknown impedance is connected between the two SMA connectors. ==== Calibrating the PmodIA ==== Before any useful calculations can occur, users must first calculate the gain factor associated with the Pmod IA. To do this, users need first set the AD5933 into standby mode and the PGA gain to 1, choose an output excitation voltage and calibration frequency, and choose a known calibration impedance value such as 200 kΩ to place between the two SMA connectors. The default Master Clock Rate (MCLK) that is used internally by the Pmod IA is 16.776 %%MHz%%. The 24-bit value that represents the desired calibration frequency can be determined from the equation below: {{ :pmod:pmod:ia:pmodia_startfrequencycalculation.png?600 |PmodIA Frequency Calculation}} Once the desired frequency is programmed into the Pmod IA Start Frequency Register, users may issue the "Initialize with Start Frequency" command to allow the frequency generator to reach steady state. The amount of time to wait for the frequency generator to reach steady state is based upon the users personal preference. Once that time period has passed, users may issue a "Start Frequency Sweep" command. The internal ADC will sample the measured impedance after a set number of settling time cycles have passed and store the processed result in the Real and Imaginary Data registers. Naturally, some time is required for the DFT to be performed on the received data. Users can continuously poll the Status register to determine when the DFT is complete or can wait a calculated amount of time based on the number of Settling Time cycles before confirming the DFT is complete. If bit D2 is at a logic level high voltage state, this indicates that the DFT is complete and the data present in the Real and Imaginary data registers are valid, allowing users to perform a block read on the two 16-bit registers. The equation used to calculate the settling time is provided below: {{ :pmod:pmod:ia:pmodIA_settlingTimeCalculation.png?600 |Settling Time Calculation}} Once the data has been obtained, the gain factor can be calculated as follows: {{ :pmod:pmod:ia:pmodia_magnitudecalculation.png?600 |Magnitude Calculation}} {{ :pmod:pmod:ia:pmodia_gainfactorcalculation.png?600 |Gain Factor Calculation}} Once the gain factor has been determined, any other unknown impedance can then be calculated by the following equation: {{ :pmod:pmod:ia:pmodia_Impedancecalculation.png?600 |Impedance Calculation}} The calculated gain factor will remain valid for as long as the following parameters are not changed: * Current-to-voltage gain setting resistor (unlikely to change unless the resistor is physically removed from the Pmod) * Output Excitation voltage * PGA gain ==== Performing a Frequency Sweep ==== Users can also perform a frequency sweep on an unknown impedance by programming an initial start frequency by the method described in the [[pmod:pmodia:reference-manual#Calibrating_the_PmodIA|Calibration section]] and choosing the increment step size as well as the number of steps to take. The increment step size is represented by a 24-bit code stored in the Frequency Increment register and can be calculated by the following equation: {{ :pmod:pmod:ia:PmodIA_StepFrequencyCalculation.png?600 |Step Increment Calculation}} The number of increments is set by programming the binary value into the conveniently named Number of Increments register where bits D15-D9 are don't cares and bits D8-D0 is the 9-bit word representing the desired number of steps to be taken. Once the steps have been defined, users may issue the Start Frequency Sweep command to begin the frequency sweep. After the status register confirms that the data present in the real and imaginary data registers are valid, users may issue an Increment Frequency command to go to the next set point within their frequency sweep or may issue a Repeat Frequency command to have the Pmod resend the current frequency value through the unknown impedance. This allows the user to average successive readings. Bit D2 will be set within the Status register when the all of the steps in the frequency sweep have been taken. ==== Common Registers and Commands ==== A table of commonly used register addresses and commands is provided below: ^ Register Addresses ^ Parameter | | 0x80, 0x81 | Control register | | 0x82, 0x83, 0x84 | Start frequency code | | 0x85, 0x86, 0x87 | Frequency Increment code | | 0x88, 0x89 | Number of Steps in Sweep | | 0x8A, 0x8B | Number of Settling Time Cycles | | 0x8F | Status Register | | 0x94, 0x95 | Real Data Register | | 0x96, 0x97 | Imaginary Data Register | | 1011 0000 | Address Pointer Command | | 1010 0001 | Block Read Command | | 1010 0000 | Block Write Command | ==== Pinout Description Table ==== ^ Pins ^ Signal ^ Description ^ | 1, 5 | SCL | Serial Clock | | 2, 6 | SDA | Serial Data | | 3, 7 | GND | Power Supply Ground | | 4, 8 | VCC | Positive Power Supply (3.3/5V) | | SEL | Logic High | Logic high selects 20 Ohm gain setting resistor | | SEL | Logic Low | Logic low selects 100k Ohm gain setting resistor | More detailed information about communicating with the PmodIA including sample data streams and detailed register information can be found in our [[pmod:pmodia:start#additional_resources|user guide]]. Users that just want to get the Pmod up and running though are free to use our [[pmod:pmodia:start#example_projects|example code]]. Any external power applied to the %%PmodIA%% must be within 2.7V and 5.5V; however, it is recommended that Pmod is operated at 3.3V. ---- ===== Physical Dimensions ===== The pins on the pin header are spaced 100 mil apart. The PCB is 1.6 inches long on the sides parallel to the pins on the pin header and 0.8 inches long on the sides perpendicular to the pin header. ---- ===== Additional Information ===== The schematics of the %%Pmod IA%% are available {{reference:pmod:pmodia:pmodia_sch.pdf|here}}. Additional information about the Impedance Converter including communication modes and specific timings of the chip can be found by checking out its datasheet [[http://www.analog.com/media/en/technical-documentation/data-sheets/AD5933.pdf|here]]. More specific information about how to use the %%Pmod IA%% can be found by checking out our [[pmod:pmodia:start#additional_resources|user guide]]. Example code demonstrating how to get information from the %%Pmod IA%% can be found [[pmod:pmodia:start#example_projects|here]]. If you have any questions or comments about the %%Pmod IA%%, feel free to post them under the appropriate section ("Add-on Boards") of the [[https://forum.digilent.com/|Digilent Forum]].