Where the utility of a multimeter ends, the MKR1000 Component Tester takes the stage. Addressing the common need in electronics design and prototyping for a fast and convenient way of identifying electrical components, this device aims to quickly and reliably test whatever you plug in, and show a nice readout on a built-in screen.
Design Rationale
Electrical theory tells us that voltage is directly proportional to current at a given resistance - this is Ohm's Law - a rather important tenet when designing circuits.
Different electronic components will exhibit different behaviours at specific voltage levels, and it is evident that, when combining the built-in analogue-to-digital converter in the Arduino with fixed resistors, very accurate values for current flow can be obtained both at an instant in time and continuously.
This project provides up to three detection inputs for components with up to three pins, and uses the principle shown above to heuristically deduce the nature of the tested component, and therefore measure additional attributes of it.
Support for the following is provided:
- Capacitors
- Inductors
- Resistors
- Diodes
- Transistors
- Plain wires
Detection reliability and accuracy is always improving, and as of writing is observed to be around ±10% (discounting manufacturer tolerances).
DISCLAIMER: I am most certainly not and electrical engineer and cannot make any guarantees - just like Skype isn't a replacement for your phone, the Component Tester isn't a replacement for your multimeter :P
The device can be operated in standalone mode utilising the inbuilt OLED display (can testify; very pretty) or the Universal Windows Platform companion app. The design of the latter cannot be considered stellar, but I seek clemency on account of inexperience :)
Standalone mode:
Here, the MKR1000 utilises the Adafruit SSD_1306 library to drive an inexpensive Serial Peripheral Interface OLED display. This specific display is separated into two segments of differing colours, where the top two rows are for the HUD and the rest are for information output.
The top row displays the current time and date, retrieved via the on-board Wi-Fi chip using the NTP, useful for appreciating how much time you've just wasted testing every single thing you can find, as well as a battery level, useful for gauging the remaining life of a connected LiPo battery or of your local power grid, if via USB.
A line of dots (second row) scroll to indicate that testing is in progress.
Host-connected mode:
The tester can operate simultaneously in both of the above modes. When connected to a host computer running the companion app via USB, a connection is established using the Firmata protocol, and interfacing is performed through the Remote Arduino library, kindly provided by Microsoft et al.
Test data is communicated upstream in JSON serialised format. Deserialisation occurs on the host and various XAML components on the main Page are populated with data.
The app itself is quite nascent at the moment, but it aims to eventually duplicate the information displayed on the inbuilt screen, as well as store a history of test results for later perusal. Those white bitmaps definitely need refinement too.
However, it uses a dark theme. And everybody likes the dark theme. Enough said.
The software-oriented nature of the project makes assembly very easy, given the correct components. The schematic for assembly is attached in the schematics section.
Before uploading, be sure to correctly configure Wi-Fi authentication details in WiFi.h, as the device is set to wait until successful connection before continuing.
Various parts of the communication subsystem would benefit greatly from timer interrupt generated events, to ensure better reliability and less unnecessary blocking. Unfortunately, due to time constraints and the newness of the MKR1000, I couldn't figure out how to do this.
Nevertheless, I do hope that this note has been interesting to read, the project was certainly fun to make. :)
...happy hacking.
Comments