MikroElekronika Multimeter Click using the SPI module on the PIC18LF45K42
Check out this project's MPLAB Xpress Webpage to view the complete code example along with a detailed step by step write-up and description, or visit the PIC18LF45K42 Device Product Page for more information.
About this Code Example
This example demonstrates how to use MPLAB Xpress IDE to interface the MikroElektronika Multimeter click board using the Serial Peripheral Interface (SPI) module on the PIC18FxxK42 family. The objective is to create a PIC powered Curiosity HPC “multimeter” that can measure resistance, current, voltage, and capacitance. The raw data is transferred over the SPI bus and then will be arithmetically processed for each mode and then transmitted through the UART module to a serial terminal display.
In this project, we will be using the Curiosity HPC Development Board, MikroElektronika Multimeter click board, and MikroElektronika USB UART click board. The microcontroller used in this example is PIC18LF45K42 and MikroElektronika USB UART click board is used for the USB to UART serial communication.
The Multimeter Click is equipped with an MCP3204. This is a four channel 12-bit Analog-to-Digital Converter (ADC).
The purpose of this example is to capture the raw measurement values from the inputs of the click board and transfer them to the microcontroller using the SPI interface. Once the microcontroller has received the raw measurements, the arithmetic calculations related to each measurement type is performed. The final data of the measurement is then sent to a serial terminal on the computer using the UART module. The EEPROM is used to store the calibration data for the resistance measurement mode.
A voltage divider circuit is used with different division ratios for different ranges to measure the resistance.
A small resistor (0.1 ohms) is connected in series to the circuit that contains the unknown current being measured. The voltage drop across the small resistor is measured using a differential amplifier. The current is then calculated in software from the raw analog value using the other principals of Ohm’s Law.
A differential amplifier is used to measure both positive and negative voltages up to around 17 volts DC.
An NE555 precision timer is used to generate impulses with the frequency of 585Hz. The unknown capacitor connected to the terminals changes the frequency of the astable multivibrator. A frequency to voltage converter circuit is used to convert this signal to voltage.
MPLAB Code Configurator (MCC) Setup
As mentioned earlier, we use the PIC18LF45K42 for this example. This device family is supported in MPLAB Code Configurator (MCC). MCC is a graphical tool that can be used to quickly setup peripherals on a device and generate basic driver code. In this project we will setup the SPI module to communicate with the MCP3204 ADC chip, UART module to communicate with the MCP2200 and the EEPROM module to store the calibration data. There is pin configuration that is also associated with these modules that is shown below.
System Module Settings
Interrupt Module Settings
Pin Module Settings
Pin Manager Settings
Switch 2 (S2) of the Curiosity HPC is used to initiate the calibration routine during startup. In the calibration routine, the short circuit values in the resistance measurement mode are read and stored in the EEPROM of the microcontroller. Then, in the resistance calculation routine, the calibration values are implemented for better accuracy.
Calibration routine can be initiated by the following steps:
- Connect a zero-ohm resistor to the Resistor Measurement Terminal of the Multimeter Click
- Reset the device using the Reset Switch of the Curiosity HPC while holding down the Switch S2
- If the calibration routine is successful, LED D2 will blink till S2 is released
- Then the application goes to the resistance measurement routine
Note: If the calibration routine is not performed, the application goes to resistance measurement routine by default
Switch 1 (S1) of the Curiosity HPC is used to switch between different measurement modes. There are four LEDs on the Curiosity HPC that are used to show which mode is currently working. D2, D3, D4, and D5 represent Resistance, Current, Voltage, and Capacitance measurement respectively.
The terminal application used for this example is Tera Term, although any terminal application should work. The figure below illustrates the UART/Serial Port Setup in Tera Term.
The figures below show what the serial output from the PIC18LF45K42 should look like in the different measurement modes. The application returns Resistance (Ohm), Current (A), Voltage (V), and Capacitance (F).
- Dec 4, 2018