Comment summary #27
The comments are shown without formatting, links and images.
Comment 261 ... 270
| date | article | author | comment |
| 20 maa 2016 18:07:16 | Arduino wattmeter | Mike Lance | Veldig utmerket artikkel! Very impressed with the code, doing this in the 328's ram is impressive. I'm working on updating my wattmeter, and after finding this I'm going toss what I've done to start with yours. Couple of questions/comments if you have the time: 1) Can I change ADMUX to instead use an external reference (AREF), using something like an inexpensive LM4040AIZ at 2.5 or 4.096V? adcSense would of course need to change, as would ADMUX to 0x04. Anything else I've missed in the code? I've had a lot of variability with the internal references especially when the power source changes. (BTW, Code comment where ADMUX is defined states "left adjusted", but I don see where ADLAR is set...would't that be 0xE4?) 2) What are your thoughts on the front end circuitry using it to measure in the 50nA - 20uA range to +/-5%? (Thanks for the suggestion of the LTC1050...haven't used that and like it's specs.). 3) General comment from some of the above posts about leakage current on the 1N4148's...try using the 2N3904 as a diode. Best regards |
| 19 maa 2016 14:08:58 | Arduino wattmeter | Freddy | Yes, but without the "(k)" The way you calculate the resistance is not the internal resistance, but the DC load resistance. |
| 17 maa 2016 17:16:23 | Arduino wattmeter | Wolfram Fischer | @Freddy: is it right like this: paramValues[22] = paramValues[19] / 3600; // (k)Wh Energy paramValues[23] = paramValues[12] / 3600; // Ah Charge I added Rin too: paramValues[24] = paramValues[0] / paramValues[7]; // OhmInnenwiderstand |
| 17 maa 2016 11:53:30 | Arduino wattmeter | Freddy | @Wolfram, You mustn't convert Joules to kWh, but to Wh: (Wh = J / 3600). The prefix k(ilo) will automatically shown if the value becomes bigger than 999 Wh. @angle, Any type of damage can occur if the Arduino experiences an overvoltage. I can't predict if this would be an short circuit. |
| 17 maa 2016 09:13:57 | Arduino wattmeter | angel | Hello, is it possible that if the diodes are broken due to an overvoltage, will the arduino be shorted immediately? |
| 17 maa 2016 06:21:27 | Arduino wattmeter | Wolfram Fischer | Hi Freddy, i connected the wattmeter to my solar panel and batterys, after a sunny yesterday it shows about 38Ah, thats ok, but the KWh showing 147 mWh ! The max Voltage was 15V, the max Amps 7.6A. Is there something wrong? paramValues[12] = extraLongToFloat(tCharge) * Cscale / fSample; // Charge paramValues[19] = extraLongToFloat(tEnergy) * Vscale * Cscale / fSample; // Energy paramValues[22] = paramValues[19] / 3600000; // kWh Energy paramValues[23] = paramValues[12] / 3600; // Ah Charge |
| 16 maa 2016 10:28:54 | Arduino wattmeter | Jacky GOUSART | Hi Freddy Tanks for pécisions. Jacky GOUSART |
| 14 maa 2016 14:51:37 | Arduino wattmeter | Freddy | Yes, you should calibrate the wattmeter only once. After that the meter can measure every load within its range. |
| 14 maa 2016 02:55:38 | Arduino wattmeter | angel | For example, my load is a 100W lightbulb. After calibration of the meter, the voltage and current measurements are exact. Then I need to recalibrate the meter again when I change the load to a 200W lightbulb. Shouldn't the calibration only happen once? |
| 10 maa 2016 23:02:14 | Arduino wattmeter | Wolfram Fischer | i can live with these changes: /*** Calculate values Voltage ***/ paramValues[0] = float(secMeanVolt) * Vscale / totAverage; // calc. mean Voltage if (paramValues[0] < 0.019 & paramValues[0] > -0.019) { paramValues[0] = 0.0; } paramValues[1] = sqrt(float(secSquaredVolt) / totAverage) * Vscale; // calc. RMS Voltage if (paramValues[1] < 0.019 & paramValues[1] > -0.019) { paramValues[1] = 0.0; } paramValues[2] = sqrt((paramValues[1]*paramValues[1])-(paramValues[0]*paramValues[0])); // calc. standard deviation Voltage: Vsdev=sqrt(Vrms^2 - Vmean^2) paramValues[3] = float(primMaxVolt) * Vscale; // Max voltage paramValues[4] = float(primMinVolt) * Vscale; // Min voltage /*** Calculate values Current ***/ paramValues[7] = float(secMeanCurr) * Cscale / totAverage; // calc. mean Current if (paramValues[7] < 0.015 & paramValues[7] > -0.015) { paramValues[7] = 0.0; } paramValues[8] = sqrt(float(secSquaredCurr) / totAverage) * Cscale; // calc. RMS Current if (paramValues[8] < 0.015 & paramValues[8] > -0.015) { paramValues[8] = 0.0; } |
