Resistors are one of the most fundamental components in electrical engineering. Whether working with them in intro to circuits laboratory, or designing PCBs in industry, resistors are a critical component of any electrical design. From the surface, most resistors look the same physically, regardless of the actual resistance value. Taking a closer look, it can be seen that there are a number of parallel color bands on the resistors, together depicting the value of the resistance and also potentially revealing the tolerance of the resistor.
For our final project, we built our own ohmmeter capable of giving the user information about the resistor’s resistance value through various forms of delivery. Resistors come in different band series, the most common being 3, 4, and 5 band resistors. We made an adjustable resistor LED lamp that will display the color bands of any resistor with the selected series. There is a set of buttons that can be used to switch between different band series and also to toggle audio for the system. When the audio is toggled, the instantaneous value of the resistance when the button is pressed will be output through the speaker. Finally, there is a visual display that shows the instantaneous resistance over time, the band series selected, and whether or not the audio is toggled.
For our project, we didn't implement the six band series. The 6th band in the series depicts temperature coefficient, which would be very difficult to determine empirically. This series is also not very common compared to the others. We therefore decided that for this project, it would be impractical to implement the six series option, and that could be a further implementation.
$R = \frac{V_R \cdot 10 kΩ}{V_{10 kΩ}-V_R}$
where
Defines, Includes and Declaration of global variables
Interrupt Service Routine (ISR)
Various Threads (buttons, LEDs, audio)
main()
During the making of the project, some limitations and possible future implementations arised.
Limited Tolerance Approximation
As we previously mentioned, the calculations for the tolerance requires knowledge of the nominal value of the resistor. In our calculations we don't know the nominal value beforehand. Instead we took the resistor’s measured value and rounded to the nearest two sig-fig integer value. The problem that arises is that our rounded value fluctuates with the instantaneous value, which can be different from the value measured from a multimeter. The measured value on the multimeter is already affected by the tolerance indicated in the color band. Because our machine calculates it using a value already affected by the real tolerance, our tolerance band color is more often than not, not accurate to the real one on the resistor. A possible future solution that can be explored is to implement a C-array containing all possible nominal resistance values we can analyze and use that in our tolerance calculations. By doing so, when a resistor is inserted, its resistance value can be compared to find the closest nominal value reducing the calculation errors and leading to a more precise guess of the tolerance affecting the resistor. Additionally, since the reference resistor also has a tolerance of its own, this will also affect the final output tolerance of the measured resistor.
Reduced Resistance Range
One thing we noticed when testing our machine is that the resistance range that it can read does not encompass all possible resistance values. A consequence of using a 10 kOhms in our voltage divider is that the range accepted by our machine is somewhere within 100 Ohms to 80 kOhms. With more time and testing, one could implement a better voltage divider by using a more suitable resistor or even have different voltage dividers readings depending on the order of magnitude desired by the user.
Improved Portability: Built-In Speaker
Although almost completely portable, the project had one major limitation in this aspect which was the requirement to have an external speaker. The original design included the implementation of a side speaker that would be powered like the other components using the battery charger, but without enough time to design it we had to abandon the idea as the speaker could not successfully receive the information from the DAC and was unable to produce understandable sounds. We made a good effort to implement this built in speaker. Because the speaker itself would not be able to output high enough voltage to produce an understandable sound, we added an audio amplifier circuit using the LM386 audio amplifier. We tried following the circuit in the datasheet that would give us a gain of 20. In order to test the circuit, we wired the signal generator to the output pin of the DAC. The circuit was able to successfully amplify signals from the signal generator, and we could hear the right sounds coming out from the speaker. However when we tried getting the amplified signal of the DMA audio, we could only hear clicks from the speaker, and not the clear recordings. We connected up the external speaker with the audio jack and heard clean sounds, so we knew it was a hardware issue. We tried raising the gain to 50 by implementing another one of the circuits shown in the datasheet but it was still unfruitful. Afterwards we decided to simply move forward with outputting the audio from the external speakers. One further implementation the project can aim for is to include a built-in speaker in the design so as to successfully be completely independent and portable.
The final product of our project resulted in a fully functional machine that can act as a multimeter with even more functionalities. The different ways it conveys the resistance of the inserted resistor allows versatility in its use and applications. Although not absolutely accurate as we have analyzed in the above sections, our machine manages to show the resistance for many common resistors offering information about it beyond the mere number.
With more time available to improve our project, we would probably implement a speaker set up to make the whole project more portable than what it is currently. Moreover, we would implement a better voltage divider to increase our range of readings and a better solution to calculate the tolerance. This idea can even be improved by introducing the six series, having the RP2040 or another sensor detect temperature in the room to display how this affects the resistor itself. One fundamental strength of our project is that it can be personalized and further improved independently of what has already been done: any improvement can simply be added instead of redesigning the entire project from scratch.