It's rare to find someone who not only knows electronics, but how to teach, how to speak well, and how to produce videos. I think you are giving us all something of real value. Thank you.
hello sir, i am from pakistan i have just finished watching this video and i love the explanation you provide i not in this video but so far any video of yours i have watched god bless you and stay happy always
To me, this was one one of the most valuable tutorial videos I ever found on RU-vid. Many thanks for the excellent explanation about the communication between Controller and ADC. I finally got it! ^^)
Excelent Part 2 there, it came together very well One suggestion to the final product (Perhaps a Part 3 ??) would be to not have the 10 turn pot and use a software highend calibration instead Vishay and other makes of precision and low drift (Temp Co) resistors are quite expensive and if buying them to close tollerance ontop of that they can end up being a significant part of the cost of the whole project Buying Low temp co but lesser accurate resistors (1% perhaps) will keep the cost down and the trimming can be religated to software as typically 10 turn trimpots are not very stable devices, especially for this kind of project. Using a software calibration allows both 0 and 5V for instance to be calibrated accuratly and then useing a software determined offset (From 0) and scale factor (From 5V ref check) you can get the meter spot on (Not allowing for any none linerarity of the ADC), this results in one less component and the ability to perform the basic calibration with the complete project contained in an enclosure without having to open it. A more advanced cal could include a set of 1 V increments to eliminate or minumize the none linerarity too if so desired. Finally, connecting that pin to select between 50 or 60 Hz filtering could be connected to one of the arduino pins to allow the user to simply select the appropriate one for their region Over all an excelent example of creating a Volt meter within the budget of pretty much anyone. Keep them comming Peter (ru-vid.com)
+Peter Oakes (TheBreadboard) Peter thanks for your detailed comments, which are appreciated. I have been working of some software calibration options and could cover them in Part 3. Nice point about the 50Hz / 60Hz notch filter switch, I will look in to that.
+Scullcom Hobby Electronics About software calibration options, did you consider including in software the part that would inform you, that after "zeroing" the meter (pardon my bad English) the readout is larger than acceptable tolerance? Something like Datron "error 4":)
What would happen if you use an even lower noise voltage reference like this one: waltjung.org/PDFs/Build_Ultra_Low_Noise_Voltage_Reference.pdf Also I noticed that the reading now has a much slower update rate then reading showed in the first video. Was this intentional? Anyways I love this project and can't wait to make my own PCB's :)
+Ventsislav Simonov Any method to reduce the noise will benefit the meter reading. In Part 3 of this project I will look at the noise levels. Following comments I did slow down the update rate in the software to make the reading more stable. But if required this could be change to make it faster. Thanks for your comments.
In spi_read, if conversion is not finished, there's no return statement and you get garbage returned. This happens if delayMicroseconds is faster than conversion. It should work but it's not safe... Actually the test is useless because if not finished you don't wait.
+cyril muller Thanks for your comment. Although the software seems to work OK at the moment, I will have a look at that and cover it off in Part 3. If you are familiar with Arduino software any suggestions are always welcome.
Awesome project and information, im in the middle of the DC Load Project. Just finished making the PCB, my first, and got some parts soldered on while i wait for the 100E mosfets. I just wanted to thank you for all this information, instead of drooling over all the expensive equipment everyone wishes they had now we can build it ourselves. Once i finish up the DC load im going to tackle this project. Thank you once again! -Victor
Thank you so much! its been a very long time i dont have a amazin teacher, or shoud i say professor like you. I wish you the best and i will wath all your great content. Regards from Brazil
Hey! How are you holding up? I think one of the best uses for this one would be combining it with the milliohm meter and adding high impedance front end.
This is a good project. But it's not really a 6.5 digit, it's more like 5 digit at best because of the noise floor. Maybe getting a lower noise LDO than a 7805 could help. Or a better op-amp.
This looks so much easier, I had a look at the 6.5 digit multimeter write up on Hackaday and it went way over my head (though it does measure more things)
In your software you are converting to float too early. This gives you an computational error which might be the reason why you get about 20-50 uV offset for 0V still even calibrated. change lines: volt = sum; //result changed to a float type and named volt (represents number with fractions) volt = volt * 10; //muliply voltage reading by x10 to adjust for input resistor divider network volt = volt * v_ref / (16777216); //convert reading in to Volts ready for the display (max scale 24 bit number) to: sum = sum>>12; //this is equivalent to 4096/16777216 which is 2^12/2^24 = 1/2^12 which in turn is shift 12; 4096 is vref times 1000 volt = volt / (100); // factor 1/1000 from the above operation times 10 from the divider network; division by 10^x better made in float, because binaries don't like it ;-) Anyway a very nice project!
Many thanks for your comments on the software. I will look in to that and test it. I will shortly be uploading an update to this project so will test it out on that. Regards, Louis
It's a great low cost project, it will be interested thing if you can add a CT or something else to it to be a 6.5 digits milliAmmeter as well...thank you so much to share this project.
This could be the beginnings of a nice little bench multimeter... was wondering what to do with a large 20 character LCD I have laying around, then again, I also have nice TFT with nothing to do... ;) Could add a ultra low noise input buffer, that would allow auto calibration on power up and possibly allow some type of input protection... as for range switching, you could possibly make it auto-ranging... Too many ideas, I'll be designing in my sleep again.... Looking forward to the next one... Merry Christmas to all. Mike
+Scullcom Hobby Electronics I've build most of the circuit to test software side but am waiting for parts for the rest... I'm using the ATMega328p chip (no Arduino) and have schematic and pcb layout in KiCad (link to images)... www.phpbbireland.com/kiss2/viewtopic.php?f=80&t=1302&p=8841#p8841
It might be nice to have fully automatic calibration process for divider when using lower quality resistors. Instead of trimmer you maybe can measure the reference once with your Keithley and include that value in the code. After that the calibration could be done by measuring zero and the reference voltage and calculating correction from those two values.
+Henri Troberg Thanks for your comments. Calibration is always an issue. I am now planning a Part 3 to this project to look at upgrades and enhancements.
I really enjoy watching your videos. Your good. I'm trying to teach myself about electronics over the internet & was thinking that this meter might easily be converted to an accurate ammeter across a sense resistor. What do you think? am I on the right track? If so, what value or values would you suggest for the range of this meter? Thank you, Todd K.
+Todd K. Thanks for your comments. In theory you could do what you are suggesting. Using a 1 ohm current sense resistor and measuring the voltage across it would equal 1 mV for 1mA. To read micro-amps a 1 ohm resistors would only give 1uV for 1uA - which is beyond the limit of this Millivolt Meter project. Ideally you should use a sense resistor of milliohms but this would not be practicable with this Millivolt Meter. You could use a bigger sense resistor but this is not really recommended. As the benefits of a low value sense resistor are: 1. Low value resistors have better time and temperature stability, and a better voltage coefficient than high value resistors. 2. Low resistor values reduce the input time constant and result in faster instrument response times. Noise is also an issue at very low currents. There are two basic techniques for making low current readings - the shunt method, and the feedback ammeter technique. The shunt method is used primarily in Digital Multimeters. Whereas, Picoammeters and newer Electrometers use only the feedback ammeter method. I think building your own low current ammeter is for another project !!!!
I would have guessed that more of the declared variables would have been able to be declared with "const" like a few of them were. I also don't understand why you didn't run the calibrate routine after you adjusted the divider preset. It would be interesting to see what the level of "noise" is that gets displayed if you were to have this enclosed in something that would provide some shielding, and have a very direct "short" across the input rather than that longish clip-lead that struck me as being a usable antenna for some frequencies. I'm not remembering the details of the hardware at the moment but I don't recall much consideration being given to frequency response of the instrument, something that you might want to consider given how sensitive it can be.
You will find I have given some download links in Part 4 video of this project. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-b2EPwzUc-po.html Also the download links are below for you: www.scullcom.com/Millivolt_Meter_Ver4.pdf www.scullcom.com/Millivolt_Meter_PCB_Ver4.pdf Also below is a download link for the KiCad files for this project. www.scullcom.com/MilliVolt_Meter_Part4_KiCad_Files.zip If you are thinking of building this project then I recommend you view all parts of this project prior to building. Regards, Louis
Thats really impressive for a device with so very few parts, and it doesnt cost the earth, your intellegence and ability to design circuits/software so we can understand it allways impresses me, your a smashing teacher :-D I have to admit that you lost me with the software, but im not into programming so thats understandable, some bits reminded me of the old original "Basic" used in 8 bit computers, loops and print and variable statements :-) The serial data/timing in simple form made sense to even my foggy brain lol. That caddoc resistor network would be ideal for ranges, much like the resistor divider typically used in all cheap icl7106 based multimeters :-)
+zx8401ztv Thanks. Software is always one of the issues with modern electronics these days. I still remember when electronic hardware had no software element - which I starting in electronics it was all valves!!! Many years ago before you could buy a desktop PC, I remember making a computer with a 6502 microprocessor and only 1K of RAM and 2K of EPROM. This meant that the software was in machine code (hexadecimal format) which I use to be quite good at, but not used these days. In the early 1980's I was programming a Sinclair ZX80 microcomputer also with 1K of RAM but now in Basic language. I later upgraded to a BBC Model B Computer which again had the Basic Language but much more memory 32K RAM - thoughs were the days !!!! Now the hobbyist needs to get use to C++ which is the basis of the Arduino software code of which I am no expert but try to work it out for my projects the best I can when needed. I will be looking at range switching and other options in part 3. The Caddock resistor networks are very good but quite expensive for the hobbyist, so I also try to provide simple alternatives as well.
+Scullcom Hobby Electronics I started computing with the Sinclair ZX81, i loved basic, but never went towards machine code at that time, i did repair some and made an 2k ram pack using 2114 static rams and a 74ls138 3-to-8 line decoder, worked well :-D. I got a spectrum later, i repaired them too, ram problems and the +/- 12 and 5v supplys were a problem. I learnt machine code from the table in the back of the manual, so i typed the numbers direct to memory, no assembler required. I had great fun making interfaces and i made a game cartridge, "jaysons gem" was the game i burn to eprom, worked :-D Then pc's came along and the brain stopped lol.
+Donovan Lym It's sometimes 3/4, not half;) If your meter can display 0-1999 then it's 3 1/2 digits - three digits (0-999) and one that can be only 0 or 1.
+Rachel L The diode D1 at the input would clamp on negative input and protect the circuit (see schematic). I am also looking at other alternative protection measures I will try and cover in Part 3.
+Gooberslot Noise can be caused by a number of things which could include voltage reference noise, ADC input noise, power supply noise, external EMI noise, etc. I will have a look at that in part 3 of this project.
Ow man. I really like the project and all the component research was great. But the program has so many flaws and bad practices in it it's terrible to watch! When I'm back at my computer this weekend (all I have now is my One Plus) I'll rewrite the program. I'm glad you would like to make a third part of this:)
+tengelgeer Thanks for your comments. Arduino software is not my forte so any help with a better programming solution would be much appreciate as it would also help others. I am planning a Part 3 of this project.
+Scullcom Hobby Electronics You certainly have an "interesting" approach to code formatting. ;) I've seen arduino code before, there does seem to be a lot of global variables in it, I guess that comes with the territory. Btw, pretty much anytime an operator that acts on a left hand side (LHS) variable, it can be written as operator=, so x = x + 13; becomes x += 13, x = x / 10; can be written as x /= 10; Doing this makes code a little easier to read and helps develop a comfortable level of OCD. This must be what its like for hardware engineers when us software engineers start laying out boards!
+Robee Shepherd Thanks Robee. As I was trained as a hardware electronics engineer, software is not my first discipline, coding does not always come easy!!! Thanks for your help. Arduino code at times seems to be a law to itself, there are so many variations!
Great project Louis! Will pass along your videos to some of the local techies in our ham club who designed and built a neat power meter project last year for our club's "Builders Group"; think several of the group may want to build up their own versions of your meter. 73 and Merry Xmas! Dino KL0S
Very nice video series, i liked a lot. Hope you are going to make more videos like this, with small projects, in the future. A sugestion for a future project could be to make a Zener diode tester, a little like this one, a boost converter combined with constant current source and a simplified voltmeter. Thanks for all your videos, i am learning a lot from them :-) Marry Christmas to you also :-)
Your really are an excellent teacher and demonstrator. I believe I have watch every minute of your videos. Some I've watched twice. I'm very new, so it's been extremely helpful. I have a suggestion for a video if you are interested.
I look forward to any updates to increase range, but this is already a great resource! Thank you very much for all your great work! Have a Happy Christmas!
This channel is a refreshing take on what modern hobby electronics in the 21st century can do. I wish other electronics channels did more high accuracy and (or) high speed projects.
Great videos! I just wonder, wouldn't taking several measurements and then do an average on them? Would that not stabilise the value and make it more accurate?
"Thank you very much for the detailed video." (Google translate) www.google.com/search?q=translate&oq=tra&aqs=chrome.2.69i57j69i61j35i39j69i61l2j0.1690j0j7&sourceid=chrome&ie=UTF-8