Hello Louis. I think this design can be improved further up to the point that it may be called a microvolt meter ;) 1. BAT85 is not so good for this precision DVM. It has a reverse leakage current of 200nA at Vr=5V T=25*C, far greater than opamp bias current. Consider using something like BAV170 or drop it altogether depending on what is the max protection voltage, because the opamp already has ESD/overvoltage protection diodes built in. 2. The opamp will most likely be unstable with capacitive loads. This can be fixed by adding a resistor on opamp output. Refer to SBVA002 and AN1177 for example circuits. 3. Individual resistors will drift in an uncorrelated fashion as they age. Therefore, the input divider ratio will drift. It would be best to use a premade resistor network that is specified for resistor ratio temperature coefficient and aging drift. 4. I would avoid using trimpots and instead do calibration in software. Cheap trimpots drift a lot in time (especially their absolute value, ratiometric drift is somewhat lower) 5. You might reduce resistor values at the input to reduce the effect of input bias/leakage currents. On the other hand you can't allow too large currents or the diodes may get damaged. 6. PCB design can be improved by better placement and routing, adding guard rings, shielding and so on to reduce noise and drift. Burn-in before calibration would minimize aging drift even further.
+Adam Kotys Hi Adam, I'd like to ask about your 3rd point. How can you achieve this at hobbyist level? I know, that the professional companies are using custom laser trimmed hybrids for this, but this not achievable at home. Any suggestions? Thanks, Zoltan
+sufzoli Hello, These parts are available off-the-shelf nowadays. Examples: Caddock 1776, Vishay MPMA, LT5400. Not everything is super-precision Agilent-level stuff, some components are designed for use in low-drift opamp circuits, but might as well be suitable for this project (depending on the goals of course). Thanks, Adam
+Adam Kotys Thanks for your detailed comments. 1. As the AD8628 has built-in ESD protection diodes I think I will remove the two BAT85 diodes. The fact that we have a 909K resistor at the input that will be more than sufficient to prevent any excessive current following in these internal diode when there is a input voltage overload. 2. I agree adding a larger capacitor on the output of a unity gain OP Amp is not ideal and can cause it to oscillate and become unstable. One solution to this, if there is a large capacitive load on the output, is to add a capacitor and resistor in series between the two input pins. As you will see on the video I did add a 220pF capacitor across the input of the OP Amp and that help, but I may add a resistor in series with it as well if I find it helps. Also adding additional capacitors at the input to ground and supply voltage may help. I may look at reducing the value of that output capacitor and see how the circuit responds. I originally added it to reduce any possible noise on the input to the ADC. 3. I agree with regards the input resistor network but I made a compromise in using the Welwyn RC55 series in order to keep the cost down for the hobbyist. I do mention in Part 1 of this the project that you could use a Precision Divider Network and I show the Caddock 1776-C681 but these are quite expensive for the hobbyist but you could use one if cost is not an issue. 4. Trimpots can be an issue but I used a good quality one from Bourn and it was 25 turns (not the usually 15). We could look at possible software calibration at a later stage in this project. 5. The input bias current for the AD8628 is only 100 picoamps at max. so with the resistor values at present are OK. 6. You are correct PCB design is always critical in these type of circuits and I think I did mention in one of my previous videos the possibility of adding guard rings around the input pin connections of the OP Amp. As this project develops will look at designing a new PCB as we may be adding more function buttons and possible replacing the LCD with a 20x4 display. Thanks again for your comments. It is good to discuss and I think it also helps other viewers understand some of the issues and considerations when designing and building a project from scratch.
+sufzoli Adam, you could use a Precision Resistor Networks Arrays such as the Caddock 1779-C681 which is a Film Resistor Network that is laser trimmed and has a tolerance of 0.05% and Temperature Coefficient of 10 ppm/C. These cost around £12 ($18). These are available from suppliers such as Mouser and Digi-Key. If cost is an issue stick with the Welwyn RC55 series resistors I show in the video which work very well.
+Scullcom Hobby Electronics Mouser and Digikey is a bit problematic for me as they charge lot for the shipment to this part of the world. I'm usually using Farnell, TME, RS, and the local suppliers. I was thinking about the Welwyn PCF0805 series. It is cheaper than the RC55 and has better TC. I soldering 0805 resistors were never a problem to me.
I just found your channel a couple of days ago, looking for videos on an dc electronic load design. And I must say, really good videos, informative, nice drawings, cut to the chase and of course top notch engineering work. Thank you very much for doing this and have a nice day.
Great circuit improvement. However the 10µF capacitor directly connected to the output usually makes an opamp unstable. I used a similar part (TI OPA333) and it turned out that using a 47-100 Ohms resistor that becomes essentially a low pass filter with the capacitor makes the opamp much more stable, as the AD8628 in particular is only specified to a maximum output load capacitance of 1nF.
+Chip Guy Vids Thanks for the idea of adding a low value resistor in series with the output of the OP Amp. I posted a reply to this point to another comment as follows: I agree adding a larger capacitor on the output of a unity gain OP Amp is not ideal and can cause it to oscillate and become unstable. One solution to this, if there is a large capacitive load on the output, is to add a capacitor and resistor in series between the two input pins. As you will see on the video I did add a 220pF capacitor across the input of the OP Amp and that helped, but I may add a resistor in series with it as well if I find it helps further. Also adding additional capacitors at the input to ground and supply voltage may help. I may look at reducing the value of that output capacitor and see how the circuit responds. I originally added it to reduce any possible noise on the input to the ADC.
Smashing update :-D Dont forget that you didnt take long to create this volt meter in comparison to the resources/staff/time that big companys have. Smashing that a subscriber has tidyed up your code and made it faster :-D I did think about a small reed relay being used to allow the auto zero routeen to short the output of the attenuator to ground, but thats just my lazy side lol :-D
+zx8401ztv That's a really good idea but I would switch up the relay with a MOSFET as they can provide mill Ohm on resistance and way better than a relay in that regard but the thing to consider here is that it will not be compensating for the probe leads and if there is any thermo Electric effects with them and their connectors but will be nulling out the electronics pretty reliably (And way better than a hand held pair of wires being pressed together And only at the cost of a small logic mosfet
+zx8401ztv Thanks for your comments which are always welcome. I did try both a reed relay and a solid state switch but that added some resistance, so I decided to leave it as it is. The more I thought about it, shorting of the input is really to take account of the length of the input leads. In commercial multi-meters that usually cal that the REL (Relative) button.
+Scullcom Hobby Electronics Well i was just being lazy lol, you could add many things to that design, but it has to be something that you want, dont forget that you need to enjoy what your doing, otherwise it becomes a boring task for you :-( But if you want to add a rms to dc converter, that might interest you, perhaps :-)
Any chance of buying one of these as a parts kit? I can do all the soldering and assembly. OSHPark requires a minimum order of 3 PCB boards. An MK2 kit (Video #44) would be of interest as well. Thank you. I really enjoyed the project.
I built a test version of the Arduino Nano and an LCD display to work on the software. I also used a different setup for both switches, to get a more improved event recognition. I used the following circuits for both switches (can't include anything so I have to go back 30 years) VCC | Switch (normally open) | *---10K--*----Input Pin | | 1K 100n | | GND GND This setup provides an R/C filter function on both edges. Normally the C of 100nF is discharged and keeps the input that way during startup. When the switch is closed there is an R/C filter of 10K/100nF charging the C. When the switch goes open again, there is an R/C filter of 1K+10K/100nF discharging the C. The definition for the Cal input needs to switch from a LOW recognition to a HIGH, and the pull_up must go. So this is the new definition : pinMode(BUTTON_DEC, INPUT); I have also changed the code in the main loop for the calc button a bit as well: } else if (digitalRead(BUTTON_DEC) == HIGH) { // Internal pull-up used; active HIGH delay(DEBOUNCE_DELAY_MS); // Add some debounce delay if (digitalRead(BUTTON_DEC) == HIGH) // Read the input again, if OK do it adjustDecimalPlaces(); showHeader(); // Back to normal operation This gives me a reliable button press for both. Enjoy!
Louis, I think we may have a potential bug in the LTC code that will compromise the averaging of the multiple readings. I assume that you got your original code from Martin Nawrath, (Academy of Media Arts Cologne, Germany) it looks a lot like that, but Martin uses no averaging in his code. In the main loop, we use a for-next loop that increments the number of samples we get from the Spi_Read function and then average the result by diving the result with the number of samples. However, in the Spi_Read function, we skip the complete reading of the ADC if it is not ready. Here: if (!(PINB & (1
Hi Paul, I have made quite some changes already to the Arduino code which should solve this issue (been working on over the last few weeks and testing). Hope to get my update video finished in the next few days and uploaded to my channel. I have made quite a number of other changes and additions to the Arduino code on this upgrade. I have change the way the samples are taken and averaged. The "if (!(PINB & (1
Using a while without an escape in an embedded application like this may cause a "hang" in the main loop, or disturb the overall timing, which is not recommended. Another method to prevent that from happening is to use a global value in the Spi_Read code that only gets incremented with a successful data acq. That global var value is then used to average the final result, not the loop counter. I have used that method in my version and is available on my blog. I'm very much looking forward to see what your changes and improvements are. You and Greg built an already impressive tool, and with some more efforts, it can be even made better. This is my first experience with this particular topic so I'm still learning and researching ways to improve the stability and precision of the output or add more features. I hope others can chime in with improvements too...
Hi. I have been working on a thermometer project using a pic. I had noise issues on the AD input so I added a cap at the same point as you did here. I too received erroneous measurements upon power up and determined that is was the new cap charging up which caused a slight drop in the AD input. Perhaps that is what is happening here.
Great project, Thanks! The 5 and 6 digits change rapidly, is there any way to filter out the noise ? Also, if I add the 220 pf capacitor, I cannot calibrate to 4.096. The trimmer "bottoms out" . Any ideas?
Hi Louis, You have several great projects for the hobby user and a fascinating way of getting everything across to make it easy to understand and easy to built. I just noticed a leap forward on the milli-ohm meter, which is now fully encompassing the pcb available through OSH-Park that Greg did. You also published a BOM that is easy to use and lists everything. Great job! Are you considering (please!) doing the same evolution with the DVM by using the OSH-Park pcb and create a BOM for it? Looking forward to the next installment.
Hi Paul, Thanks for your kind comments. Yes I am planning on doing a similar update for the Milli Volt Meter Project for which Greg also produced a nice PCB, which is available from OSH Park. Although I will be using the same PCB that Greg produced I will implement it slightly differently to what Greg did on his build. Will also update the software for this version. The only drawback of OSH Park is that you have to order 3 PCB's at a time so if you can share with others building this project then the cost can be split. Will try and get this finished as soon as I can and upload the video. Regards, Louis
Super! I managed to get the DigiKey partslist from Greg, and I've been working on some other parts required for this project. If you're interested, I can send you what I have so far. (I distilled the manufacturing part numbers, so the ordering can be from just about any supplier, not just Farnell, DigiKey or Mouser)
Hi Paul, Thanks for the offer. I do already have a detailed list but if you would like to send me the details in the private messages section I will cross check it with my list to make sure I have covered everything. Regards, Louis
This is a great series! Will there be a final or updated parts list, pcb layout, and component layout? I think the layout downloads are still from the first version. Thanks!
+Satyajit Roy The trimpot used is a good quality Bourn trimpot which has a resistance accuracy of ±10% with a temperature coefficient of ±100ppm/ºC. Therefore the absolute value 5K trimpot can be anything from 4.5K to 5.5K. This initial value is not that important as long as once it has been set it remains stable. The ±100ppm/ºC means that the resistance can change by ± 0.01% which is only 0.5 ohm per ºC. The other two resistors add up to just over 1Mohm so in the whole scheme of things the drift of the 5K trimpot is not that much of an issue. The main reason am using the ± 0.1% tolerance for the other two resistors is for their long term stability performance of ±15ppm/ºC (equal to ± 0.0015%). Again the absolute value is not the most important point as this is taken care of by the trimpot adjustment. The important thing is that once the input divider is set a divide by 10 it remains stable at that as far as possible.
Sir, your videos are just amazing, there a lot of remarkable things and nothing really to complain. Also, maybe I'm wrong but this also could be used as a precise current meter only by adding a low value resistor and a few changes on the software, isn't?, if I'm right, hope you consider this as a future add. Thanks.
+.rpv Thanks for your comments. I have been considering a project on a precision low current meter using a feedback OP amplifier (Transimpedance OP AMP). Hope to do it as a future project.
I have not found a way to add files to these comments, so I'll provide a link to my version of the design for this project. In it I will show you my deviations of the design and some trade-offs that can be made with the parts used. Here is the link : www.paulvdiyblogs.net/2016_09_01_archive.html Enjoy!
Hi, I normally post any updates on my www.scullcom.uk website. Check the following page for the latest: www.scullcom.uk/design-build-6%C2%BD-digit-millivolt-meter-part-4/ If I have any further updates I will add it to that page as and well they are available.
I got inspired by your project and built an MCP3422 version (18 bits/15uV resolution which suffice to my requirements) with PIC16F1619 (1Amp consumption VS arduino 16Amp power consumption) (excluding LCD current Cons. which is 4.8mA),the question about the capacitor 220pF between V- and V+ of the AD8628 Op Amp, when installed the current consumption increases by +32mAmp which is quite large for battery operated circuit, Please advise. My project power consumption is 5V*6.7mA (total) while the Arduino version is about 5V * (16mA Arduino+4.8mA LCD+ 1mA other + 32mA increased caused by the 220pF cap) total 5V*55mA that is 900% more than the PIC version, the pic development board I have used is the Curiosity Board from Farnell £13.00 and Microchip MPLAB IDE with XC8 compiler with MCC generator ease the development. Thanks again for great inspiration. Kind Regards
Strange about the issue you were having with the increase in current due to the 220pF at the input. When I checked mine it seems fine. Have you tried using a smaller capacitor say 100pF and see what happens. Wound be interested to hear.
Thanks Louis, for your prompt reply, I did try 125p cap and it is the same result. I do encourage you to use PIC16F1619 now it is easy to program with the new Code generator that comes with the MPLAB ide xc8 compiler. You will reduce the power to max 2mA except for the LCD which is about 4mA,, I do have LCD code for that if you require it. Regards Mohammed
No sure why you are having this increase in current I will have another look at mine to double check. Some years back I starting with using and programming PIC's but for some reason I have drifted in to Arduino as I found many hobbyist found that easier to use. From what you say the PIC programming has become easier, maybe I should give it another try. Regards, Louis
I using I2C for the MSP3422 (18bit) the AD8628 and 100k+48.7+2kPot as input voltage devider of course this is drivin by PIC16F1619 nano power uC. But all ok working for me without the cap although I have to tackle noise by software. The only issue I am having is the resolution which should be 15uV but it is now 128uV and this is due the data type "float" of the XC8 C compiler and almost found a solution. CHEERS
Hello from Germany! I found your channel mentioned by another youtube channel (i think ist was Voltlog) and i like your projects. I already have watched Most of your videos. I plan to build this voltmeter with some additional features like different volt ranges and maybe auto range function that the adc always gets a good SNR, no matter if i measure under a volt or 50 volts. Before starting this i would like to ask if there will be an update on you actual circuit soon? Because when starting to built it i would like to use the latest version of the basic circuit. Thanks A lot and keep on your good work. BTW are you a teacher or something like this? You can explain very well, seldom seen that on other channels. Michael from Germany
Thanks Michael for your comments. I will be posting an update video on this project soon as there is now a PCB available for this project. Many years ago I did teach electronics for about 7 years before moving in to management. I am retired now so thought I would take it up as a hobby again and share with others. If your interested there is a bit about my background on my website, the link is www.scullcom.uk/about/ I also post my projects on this website. Regards, Louis
Thanks again for another great project. Just finished building the Millivolt meter board and should have it in a case soon. Photo of my finished circuit board. flic.kr/p/GdcwdK I ended up using an Arduino Pro Mini from Sparkfun, and a Caddock voltage divider resistor. I also had some Adafruit RGB LCD's in my parts bin, but not enough pins left to drive everything. I ended up using an Adafruit I2C LCD backpack design that allowed me to move all the LCD and button pins off the Arduino Pro Mini. I also have a DS3231 real time clock on the LCD backpack board, but haven't had the time to add the code for it yet. On the input circuit circuit I also added a guard ring and didn't use the capacitor on the output of the op-amp. The design is very stable and without the input shield and case it is currently fluctuating +/- 15uV max. Looking forward to your next project. Thanks - Greg
+pbreviceps Thanks Greg for you comments. For some reason Google put your post in the likely spam folder so I did not see it at first. I had to approve it to get it showing up here. I had a look at the photo of your circuit board and must say it does look very professional, well done. I did also test mine with a Caddock resistor divider and it works well. I tried to keep the cost down for the hobbyist. Good idea about adding a guard ring at the input. I have been busy over the last few weeks on other work and family commitments but plan to upload a new project video in the next few days once I have finished the filming process.
Hi, I'm not an expert, but isn't it a bad thing to put capacitive load on the output of an opamp? Shouldn't there be a series resistor before that ... at least? Or even better - put the filtering in the input - over the 100k resistor. This way you'll have nice low impedance for the ADC and no capacitive load on the output. Like I said - I'm hobbyist, so if you are like me and read my comment, don't take my word for it. From personal experience I know it's very hard to stabilize a voltmeter of that resolution - you might have to play a bit with the values. (hint: click read more) P.S. (wild guess) If the capacitance is over the 100k resistor, probably the value should be quite lower than 10uF because it's being charged through 909k resistor. I would start with 100nF and rise or lower depending on the results (yes, I don't do math :))
+Nickolay Pelov Thanks for the comments. Yes you are correct. I have covered this point earlier in the comments. May answer was as follows: Adding a larger capacitor on the output of a unity gain OP Amp is not ideal and can cause it to oscillate and become unstable. One solution to this, if there is a large capacitive load on the output, is to add a capacitor and resistor in series between the two input pins. As you will see on the video I did add a 220pF capacitor across the input of the OP Amp and that helped, but I may add a resistor in series with it as well if I find it helps further. Also adding additional capacitors at the input to ground and supply voltage may help. I may look at reducing the value of that output capacitor and see how the circuit responds. I originally added it to reduce any possible noise on the input to the ADC.
Very nice updates. A couple of things that may help even more put a low val cap in parallel with that 10uF, while the 10uF will take care of lower frequency noise, it wont handle the higher frequencies , the low value ceramic or something say about 220nF or less will, its all about their reactance at different frequencies in addition to the cap across the +- inputs, addition ones from inputs to ground will also help with the common mode noise. The same value as the one across will do. This approach is very typical of instrumentation amplifier input stages where the DC performance is more important than the AC Hope this helps btw, I plan on trying to build your design or part of it with some of my videos if that's ok, its well thought out and presented and seems to work very well Regards Peter from the Breadboard ruclips.net/user/thebreadboardca
+Peter Oakes (TheBreadboardca) Thanks Peter. Your points about the additional capacitors is a good one. With regards the capacitor on the input of the OP Amp I have also been trying adding two more capacitors from the OP Amp input both to ground and +5V, which I think is what you were getting at as well. You are welcome to use any of my designs with your videos if you find it helpful. Regards, Louis
Would you be able to update your schematic with your final design?: (www.scullcom.com/Millivolt_Meter_Schematic.pdf). I'm going to make a go at this over the next couple of months.
+Terry Myers I've just printed out the data sheets for my binder, ordered some SMD sodlering practice kits on Aliexpress, and created a wish list to purchase the parts. I went through all of the videos and redlined your original drawing and added some suggestions that I've found in the comments I'm going to make a few modifications. 1. Will probably use the I2C bus for the LCd display as well, since I have the parts for it. 2. Going to expose the USB port and constantly print the read value. Maybe add a RTC and print a timestamp as well. 3. Use a median filter instead of average, and print the standard deviation. I'll probably use around 100 samples, however many samples averages to maybe 4 samples/sec. Although the ATMEGA has a memory limitation when trying to take average or medians of large arrays. You can fit about 500 uints in an array along with other code before it starts running out of memory. I'd still like to get a hold of your KiCAD file so I can finalize the design. Thanks!
Hi Terry, Sorry for the long delay in replying but I have not been active on You Tube over the last month due to other work and family commitments. With regards the Millivolt Meter project you may like to have a look at the PCB (surface mount components) designed by one of my subscribers pbreviceps (Greg). He has left a comment in Part 4 of this project. Greg has taken my design and software and produced a very high quality PCB (double sided). Check out this PCB at the following link: www.flickr.com/photos/barbouri/26392316563/ This PCB is available worldwide (free shipping) from OSH Park for just a few dollars. Check their link below for this project: oshpark.com/shared_projects/qgv0fpKN The PCB design file is also available on this webpage to download. Greg used Arduino Pro Mini on the board, and a Caddock voltage divider resistor as I showed in my Part 1 of this project. If you feel you still need my KiCad files for this project I will try and dig them out and add the download links on my www.scullcom.uk website under this project section. As I also made some modules for Kicad I will try and include them as separate files. I will update my website as soon as I can, so keep checking. Regards, Louis
Hello Louis. I think this design can be improved further up to the point that it may be called a microvolt meter ;)
1. BAT85 is not so good for this precision DVM. It has a reverse leakage current of 200nA at Vr=5V T=25*C, far greater than opamp bias current. Consider using something like BAV170 or drop it altogether depending on what is the max protection voltage, because the opamp already has ESD/overvoltage protection diodes built in.
2. The opamp will most likely be unstable with capacitive loads. This can be fixed by adding a resistor on opamp output. Refer to SBVA002 and AN1177 for example circuits.
3. Individual resistors will drift in an uncorrelated fashion as they age. Therefore, the input divider ratio will drift. It would be best to use a premade resistor network that is specified for resistor ratio temperature coefficient and aging drift.
4. I would avoid using trimpots and instead do calibration in software. Cheap trimpots drift a lot in time (especially their absolute value, ratiometric drift is somewhat lower)
5. You might reduce resistor values at the input to reduce the effect of input bias/leakage currents. On the other hand you can't allow too large currents or the diodes may get damaged.
6. PCB design can be improved by better placement and routing, adding guard rings, shielding and so on to reduce noise and drift. Burn-in before calibration would minimize aging drift even further.
+Adam Kotys
Hi Adam,
I'd like to ask about your 3rd point. How can you achieve this at hobbyist level? I know, that the professional companies are using custom laser trimmed hybrids for this, but this not achievable at home. Any suggestions?
Thanks,
Zoltan
+sufzoli
Hello,
These parts are available off-the-shelf nowadays. Examples: Caddock 1776, Vishay MPMA, LT5400. Not everything is super-precision Agilent-level stuff, some components are designed for use in low-drift opamp circuits, but might as well be suitable for this project (depending on the goals of course).
Thanks,
Adam
+Adam Kotys Thanks for your detailed comments.
1. As the AD8628 has built-in ESD protection diodes I think I will remove the two BAT85 diodes. The fact that we have a 909K resistor at the input that will be more than sufficient to prevent any excessive current following in these internal diode when there is a input voltage overload.
2. I agree adding a larger capacitor on the output of a unity gain OP Amp is not ideal and can cause it to oscillate and become unstable. One solution to this, if there is a large capacitive load on the output, is to add a capacitor and resistor in series between the two input pins. As you will see on the video I did add a 220pF capacitor across the input of the OP Amp and that help, but I may add a resistor in series with it as well if I find it helps. Also adding additional capacitors at the input to ground and supply voltage may help. I may look at reducing the value of that output capacitor and see how the circuit responds. I originally added it to reduce any possible noise on the input to the ADC.
3. I agree with regards the input resistor network but I made a compromise in using the Welwyn RC55 series in order to keep the cost down for the hobbyist. I do mention in Part 1 of this the project that you could use a Precision Divider Network and I show the Caddock 1776-C681 but these are quite expensive for the hobbyist but you could use one if cost is not an issue.
4. Trimpots can be an issue but I used a good quality one from Bourn and it was 25 turns (not the usually 15). We could look at possible software calibration at a later stage in this project.
5. The input bias current for the AD8628 is only 100 picoamps at max. so with the resistor values at present are OK.
6. You are correct PCB design is always critical in these type of circuits and I think I did mention in one of my previous videos the possibility of adding guard rings around the input pin connections of the OP Amp. As this project develops will look at designing a new PCB as we may be adding more function buttons and possible replacing the LCD with a 20x4 display.
Thanks again for your comments. It is good to discuss and I think it also helps other viewers understand some of the issues and considerations when designing and building a project from scratch.
+sufzoli Adam, you could use a Precision Resistor Networks Arrays such as the Caddock 1779-C681 which is a Film Resistor Network that is laser trimmed and has a tolerance of 0.05% and Temperature Coefficient of 10 ppm/C. These cost around £12 ($18). These are available from suppliers such as Mouser and Digi-Key. If cost is an issue stick with the Welwyn RC55 series resistors I show in the video which work very well.
+Scullcom Hobby Electronics Mouser and Digikey is a bit problematic for me as they charge lot for the shipment to this part of the world. I'm usually using Farnell, TME, RS, and the local suppliers.
I was thinking about the Welwyn PCF0805 series. It is cheaper than the RC55 and has better TC. I soldering 0805 resistors were never a problem to me.
I just found your channel a couple of days ago, looking for videos on an dc electronic load design.
And I must say, really good videos, informative, nice drawings, cut to the chase and of course top notch engineering work. Thank you very much for doing this and have a nice day.
Great circuit improvement. However the 10µF capacitor directly connected to the output usually makes an opamp unstable. I used a similar part (TI OPA333) and it turned out that using a 47-100 Ohms resistor that becomes essentially a low pass filter with the capacitor makes the opamp much more stable, as the AD8628 in particular is only specified to a maximum output load capacitance of 1nF.
That's exactly what I was thinking when I saw the capacitor directly connected to the opamp output.
+Chip Guy Vids Thanks for the idea of adding a low value resistor in series with the output of the OP Amp.
I posted a reply to this point to another comment as follows: I agree adding a larger capacitor on the output of a unity gain OP Amp is not ideal and can cause it to oscillate and become unstable. One solution to this, if there is a large capacitive load on the output, is to add a capacitor and resistor in series between the two input pins. As you will see on the video I did add a 220pF capacitor across the input of the OP Amp and that helped, but I may add a resistor in series with it as well if I find it helps further. Also adding additional capacitors at the input to ground and supply voltage may help. I may look at reducing the value of that output capacitor and see how the circuit responds. I originally added it to reduce any possible noise on the input to the ADC.
Smashing update :-D
Dont forget that you didnt take long to create this volt meter in comparison to the resources/staff/time that big companys have.
Smashing that a subscriber has tidyed up your code and made it faster :-D
I did think about a small reed relay being used to allow the auto zero routeen to short the output of the attenuator to ground, but thats just my lazy side lol :-D
+zx8401ztv That's a really good idea but I would switch up the relay with a MOSFET as they can provide mill Ohm on resistance and way better than a relay in that regard but the thing to consider here is that it will not be compensating for the probe leads and if there is any thermo Electric effects with them and their connectors but will be nulling out the electronics pretty reliably (And way better than a hand held pair of wires being pressed together
And only at the cost of a small logic mosfet
+zx8401ztv Thanks for your comments which are always welcome. I did try both a reed relay and a solid state switch but that added some resistance, so I decided to leave it as it is. The more I thought about it, shorting of the input is really to take account of the length of the input leads. In commercial multi-meters that usually cal that the REL (Relative) button.
+Scullcom Hobby Electronics
Well i was just being lazy lol, you could add many things to that design, but it has to be something that you want, dont forget that you need to enjoy what your doing, otherwise it becomes a boring task for you :-(
But if you want to add a rms to dc converter, that might interest you, perhaps :-)
This is a great tool to have, cant wait to build it up!
73
+su pyrow Thanks.
Any chance of buying one of these as a parts kit? I can do all the soldering and assembly. OSHPark requires a minimum order of 3 PCB boards. An MK2 kit (Video #44) would be of interest as well. Thank you. I really enjoyed the project.
Just an awesome design, one I'm going to try with a small pic micro , but using i2c though. Thank you for sharing.
Thanks. Let me know how you get on.
I built a test version of the Arduino Nano and an LCD display to work on the software. I also used a different setup for both switches, to get a more improved event recognition.
I used the following circuits for both switches (can't include anything so I have to go back 30 years)
VCC
|
Switch (normally open)
|
*---10K--*----Input Pin
| |
1K 100n
| |
GND GND
This setup provides an R/C filter function on both edges. Normally the C of 100nF is discharged and keeps the input that way during startup. When the switch is closed there is an R/C filter of 10K/100nF charging the C. When the switch goes open again, there is an R/C filter of 1K+10K/100nF discharging the C.
The definition for the Cal input needs to switch from a LOW recognition to a HIGH, and the pull_up must go. So this is the new definition :
pinMode(BUTTON_DEC, INPUT);
I have also changed the code in the main loop for the calc button a bit as well:
} else if (digitalRead(BUTTON_DEC) == HIGH) { // Internal pull-up used; active HIGH
delay(DEBOUNCE_DELAY_MS); // Add some debounce delay
if (digitalRead(BUTTON_DEC) == HIGH) // Read the input again, if OK do it
adjustDecimalPlaces();
showHeader(); // Back to normal operation
This gives me a reliable button press for both.
Enjoy!
Thanks Paul for the input.
Louis, I think we may have a potential bug in the LTC code that will compromise the averaging of the multiple readings.
I assume that you got your original code from Martin Nawrath, (Academy of Media Arts Cologne, Germany) it looks a lot like that, but Martin uses no averaging in his code.
In the main loop, we use a for-next loop that increments the number of samples we get from the Spi_Read function and then average the result by diving the result with the number of samples.
However, in the Spi_Read function, we skip the complete reading of the ADC if it is not ready.
Here:
if (!(PINB & (1
Hi Paul, I have made quite some changes already to the Arduino code which should solve this issue (been working on over the last few weeks and testing). Hope to get my update video finished in the next few days and uploaded to my channel. I have made quite a number of other changes and additions to the Arduino code on this upgrade. I have change the way the samples are taken and averaged. The "if (!(PINB & (1
Using a while without an escape in an embedded application like this may cause a "hang" in the main loop, or disturb the overall timing, which is not recommended. Another method to prevent that from happening is to use a global value in the Spi_Read code that only gets incremented with a successful data acq. That global var value is then used to average the final result, not the loop counter. I have used that method in my version and is available on my blog.
I'm very much looking forward to see what your changes and improvements are. You and Greg built an already impressive tool, and with some more efforts, it can be even made better. This is my first experience with this particular topic so I'm still learning and researching ways to improve the stability and precision of the output or add more features. I hope others can chime in with improvements too...
Hi. I have been working on a thermometer project using a pic. I had noise issues on the AD input so I added a cap at the same point as you did here. I too received erroneous measurements upon power up and determined that is was the new cap charging up which caused a slight drop in the AD input. Perhaps that is what is happening here.
+Rachel L Thanks for the info.
Superb videos. You are the best. Thank you for your share.
Great project, Thanks!
The 5 and 6 digits change rapidly, is there any way to filter out the noise ?
Also, if I add the 220 pf capacitor, I cannot calibrate to 4.096. The trimmer "bottoms out" . Any ideas?
Thanks for you comment. I will have a look at it. I plan to do an update on this project.
Hi Louis,
You have several great projects for the hobby user and a fascinating way of getting everything across to make it easy to understand and easy to built.
I just noticed a leap forward on the milli-ohm meter, which is now fully encompassing the pcb available through OSH-Park that Greg did. You also published a BOM that is easy to use and lists everything. Great job!
Are you considering (please!) doing the same evolution with the DVM by using the OSH-Park pcb and create a BOM for it?
Looking forward to the next installment.
Hi Paul,
Thanks for your kind comments.
Yes I am planning on doing a similar update for the Milli Volt Meter Project for which Greg also produced a nice PCB, which is available from OSH Park. Although I will be using the same PCB that Greg produced I will implement it slightly differently to what Greg did on his build. Will also update the software for this version.
The only drawback of OSH Park is that you have to order 3 PCB's at a time so if you can share with others building this project then the cost can be split.
Will try and get this finished as soon as I can and upload the video.
Regards,
Louis
Super! I managed to get the DigiKey partslist from Greg, and I've been working on some other parts required for this project. If you're interested, I can send you what I have so far. (I distilled the manufacturing part numbers, so the ordering can be from just about any supplier, not just Farnell, DigiKey or Mouser)
Hi Paul, Thanks for the offer. I do already have a detailed list but if you would like to send me the details in the private messages section I will cross check it with my list to make sure I have covered everything. Regards, Louis
Is C8 10uf or 1uf ? The latest schematic (Rev. 1.4) shows that it's 1uf. The PCB still shows 10uf.
The latest version was changed to use a 1uF.
This is a great series! Will there be a final or updated parts list, pcb layout, and component layout? I think the layout downloads are still from the first version. Thanks!
+jordanch68 Thanks. Good idea. I will do an update on the next part of this project.
If you are using trimpot to adjust the voltage divider, then whats the justification to use 0.1% resistor with low tempco ?
+Satyajit Roy The trimpot used is a good quality Bourn trimpot which has a resistance accuracy of ±10% with a temperature coefficient of ±100ppm/ºC. Therefore the absolute value 5K trimpot can be anything from 4.5K to 5.5K. This initial value is not that important as long as once it has been set it remains stable. The ±100ppm/ºC means that the resistance can change by ± 0.01% which is only 0.5 ohm per ºC. The other two resistors add up to just over 1Mohm so in the whole scheme of things the drift of the 5K trimpot is not that much of an issue. The main reason am using the ± 0.1% tolerance for the other two resistors is for their long term stability performance of ±15ppm/ºC (equal to ± 0.0015%). Again the absolute value is not the most important point as this is taken care of by the trimpot adjustment. The important thing is that once the input divider is set a divide by 10 it remains stable at that as far as possible.
Sir, your videos are just amazing, there a lot of remarkable things and nothing really to complain. Also, maybe I'm wrong but this also could be used as a precise current meter only by adding a low value resistor and a few changes on the software, isn't?, if I'm right, hope you consider this as a future add. Thanks.
+.rpv Thanks for your comments. I have been considering a project on a precision low current meter using a feedback OP amplifier (Transimpedance OP AMP). Hope to do it as a future project.
I have not found a way to add files to these comments, so I'll provide a link to my version of the design for this project. In it I will show you my deviations of the design and some trade-offs that can be made with the parts used. Here is the link :
www.paulvdiyblogs.net/2016_09_01_archive.html
Enjoy!
Thanks for the update.
+Robert Calk Jr. You are welcome.
ANY NEW UPDATES? ! ? can u post a updated schematic pdf please !?!
great stuff by the way
Hi, I normally post any updates on my www.scullcom.uk website.
Check the following page for the latest:
www.scullcom.uk/design-build-6%C2%BD-digit-millivolt-meter-part-4/
If I have any further updates I will add it to that page as and well they are available.
Direct link to updated schematic below:
www.scullcom.com/Millivolt_Meter_Ver4.pdf
Very good jobs ! Thanks
I got inspired by your project and built an MCP3422 version (18 bits/15uV resolution which suffice to my requirements) with PIC16F1619 (1Amp consumption VS arduino 16Amp power consumption) (excluding LCD current Cons. which is 4.8mA),the question about the capacitor 220pF between V- and V+ of the AD8628 Op Amp, when installed the current consumption increases by +32mAmp which is quite large for battery operated circuit, Please advise.
My project power consumption is 5V*6.7mA (total) while the Arduino version is about 5V * (16mA Arduino+4.8mA LCD+ 1mA other + 32mA increased caused by the 220pF cap) total 5V*55mA that is 900% more than the PIC version, the pic development board I have used is the Curiosity Board from Farnell £13.00 and Microchip MPLAB IDE with XC8 compiler with MCC generator ease the development.
Thanks again for great inspiration.
Kind Regards
Thanks for your comments, nice to hear about your take on this project. Regards, Louis
Strange about the issue you were having with the increase in current due to the 220pF at the input. When I checked mine it seems fine. Have you tried using a smaller capacitor say 100pF and see what happens. Wound be interested to hear.
Thanks Louis, for your prompt reply, I did try 125p cap and it is the same result.
I do encourage you to use PIC16F1619 now it is easy to program with the new Code generator that comes with the MPLAB ide xc8 compiler.
You will reduce the power to max 2mA except for the LCD which is about 4mA,, I do have LCD code for that if you require it.
Regards
Mohammed
No sure why you are having this increase in current I will have another look at mine to double check.
Some years back I starting with using and programming PIC's but for some reason I have drifted in to Arduino as I found many hobbyist found that easier to use. From what you say the PIC programming has become easier, maybe I should give it another try. Regards, Louis
I using I2C for the MSP3422 (18bit) the AD8628 and 100k+48.7+2kPot as input voltage devider of course this is drivin by PIC16F1619 nano power uC. But all ok working for me without the cap although I have to tackle noise by software. The only issue I am having is the resolution which should be 15uV but it is now 128uV and this is due the data type "float" of the XC8 C compiler and almost found a solution.
CHEERS
Is the PCB art work from part one still current ?
+Phil Spargo Yes I just made some small changes on the PCB to the existing art work.
Hello from Germany!
I found your channel mentioned by another youtube channel (i think ist was Voltlog) and i like your projects. I already have watched Most of your videos. I plan to build this voltmeter with some additional features like different volt ranges and maybe auto range function that the adc always gets a good SNR, no matter if i measure under a volt or 50 volts. Before starting this i would like to ask if there will be an update on you actual circuit soon? Because when starting to built it i would like to use the latest version of the basic circuit. Thanks A lot and keep on your good work.
BTW are you a teacher or something like this? You can explain very well, seldom seen that on other channels.
Michael from Germany
Thanks Michael for your comments. I will be posting an update video on this project soon as there is now a PCB available for this project. Many years ago I did teach electronics for about 7 years before moving in to management. I am retired now so thought I would take it up as a hobby again and share with others. If your interested there is a bit about my background on my website, the link is www.scullcom.uk/about/
I also post my projects on this website.
Regards,
Louis
Thanks your video,I learn a lot
Glad it was useful. Thanks.
Thanks for your sharing .
+Daniel Su You are welcome.
Here is a link to my own blog with details of my version of this tool : www.paulvdiyblogs.net/2016/09/building-6-digit-digital-milli-voltmeter.html
Thanks Paul.
Can this measure AC volts?
No.
Thanks again for another great project.
Just finished building the Millivolt meter board and should have it in a case soon.
Photo of my finished circuit board. flic.kr/p/GdcwdK
I ended up using an Arduino Pro Mini from Sparkfun, and a Caddock voltage divider resistor. I also had some Adafruit RGB LCD's in my parts bin, but not enough pins left to drive everything. I ended up using an Adafruit I2C LCD backpack design that allowed me to move all the LCD and button pins off the Arduino Pro Mini. I also have a DS3231 real time clock on the LCD backpack board, but haven't had the time to add the code for it yet.
On the input circuit circuit I also added a guard ring and didn't use the capacitor on the output of the op-amp.
The design is very stable and without the input shield and case it is currently fluctuating +/- 15uV max.
Looking forward to your next project.
Thanks - Greg
+pbreviceps Thanks Greg for you comments. For some reason Google put your post in the likely spam folder so I did not see it at first. I had to approve it to get it showing up here.
I had a look at the photo of your circuit board and must say it does look very professional, well done. I did also test mine with a Caddock resistor divider and it works well. I tried to keep the cost down for the hobbyist. Good idea about adding a guard ring at the input.
I have been busy over the last few weeks on other work and family commitments but plan to upload a new project video in the next few days once I have finished the filming process.
Hi, I'm not an expert, but isn't it a bad thing to put capacitive load on the output of an opamp? Shouldn't there be a series resistor before that ... at least? Or even better - put the filtering in the input - over the 100k resistor. This way you'll have nice low impedance for the ADC and no capacitive load on the output. Like I said - I'm hobbyist, so if you are like me and read my comment, don't take my word for it. From personal experience I know it's very hard to stabilize a voltmeter of that resolution - you might have to play a bit with the values. (hint: click read more)
P.S. (wild guess) If the capacitance is over the 100k resistor, probably the value should be quite lower than 10uF because it's being charged through 909k resistor. I would start with 100nF and rise or lower depending on the results (yes, I don't do math :))
+Nickolay Pelov Thanks for the comments. Yes you are correct. I have covered this point earlier in the comments. May answer was as follows:
Adding a larger capacitor on the output of a unity gain OP Amp is not ideal and can cause it to oscillate and become unstable. One solution to this, if there is a large capacitive load on the output, is to add a capacitor and resistor in series between the two input pins. As you will see on the video I did add a 220pF capacitor across the input of the OP Amp and that helped, but I may add a resistor in series with it as well if I find it helps further. Also adding additional capacitors at the input to ground and supply voltage may help. I may look at reducing the value of that output capacitor and see how the circuit responds. I originally added it to reduce any possible noise on the input to the ADC.
Very nice updates. A couple of things that may help even more
put a low val cap in parallel with that 10uF, while the 10uF will take care of lower frequency noise, it wont handle the higher frequencies , the low value ceramic or something say about 220nF or less will, its all about their reactance at different frequencies
in addition to the cap across the +- inputs, addition ones from inputs to ground will also help with the common mode noise. The same value as the one across will do. This approach is very typical of instrumentation amplifier input stages where the DC performance is more important than the AC
Hope this helps
btw, I plan on trying to build your design or part of it with some of my videos if that's ok, its well thought out and presented and seems to work very well
Regards
Peter from the Breadboard
ruclips.net/user/thebreadboardca
+Peter Oakes (TheBreadboardca) Thanks Peter. Your points about the additional capacitors is a good one. With regards the capacitor on the input of the OP Amp I have also been trying adding two more capacitors from the OP Amp input both to ground and +5V, which I think is what you were getting at as well.
You are welcome to use any of my designs with your videos if you find it helpful.
Regards,
Louis
Would you be able to update your schematic with your final design?: (www.scullcom.com/Millivolt_Meter_Schematic.pdf). I'm going to make a go at this over the next couple of months.
+Terry Myers Or can you share the KiCAD file?
+Terry Myers I've just printed out the data sheets for my binder, ordered some SMD sodlering practice kits on Aliexpress, and created a wish list to purchase the parts. I went through all of the videos and redlined your original drawing and added some suggestions that I've found in the comments
I'm going to make a few modifications. 1. Will probably use the I2C bus for the LCd display as well, since I have the parts for it. 2. Going to expose the USB port and constantly print the read value. Maybe add a RTC and print a timestamp as well. 3. Use a median filter instead of average, and print the standard deviation. I'll probably use around 100 samples, however many samples averages to maybe 4 samples/sec. Although the ATMEGA has a memory limitation when trying to take average or medians of large arrays. You can fit about 500 uints in an array along with other code before it starts running out of memory.
I'd still like to get a hold of your KiCAD file so I can finalize the design. Thanks!
Hi Terry, Sorry for the long delay in replying but I have not been active on You Tube over the last month due to other work and family commitments. With regards the Millivolt Meter project you may like to have a look at the PCB (surface mount components) designed by one of my subscribers pbreviceps (Greg). He has left a comment in Part 4 of this project. Greg has taken my design and software and produced a very high quality PCB (double sided). Check out this PCB at the following link:
www.flickr.com/photos/barbouri/26392316563/
This PCB is available worldwide (free shipping) from OSH Park for just a few dollars. Check their link below for this project:
oshpark.com/shared_projects/qgv0fpKN
The PCB design file is also available on this webpage to download.
Greg used Arduino Pro Mini on the board, and a Caddock voltage divider resistor as I showed in my Part 1 of this project.
If you feel you still need my KiCad files for this project I will try and dig them out and add the download links on my www.scullcom.uk website under this project section. As I also made some modules for Kicad I will try and include them as separate files. I will update my website as soon as I can, so keep checking.
Regards,
Louis