Ohms law basic calculations for calculating R2 in voltage divider when R1 is known and to calculate voltage drop ratio when both R1 and R2 are known.
ohms.cpp@3:b4592b0ae1e3, 2016-04-02 (annotated)
- Committer:
- joeata2wh
- Date:
- Sat Apr 02 03:48:37 2016 +0000
- Revision:
- 3:b4592b0ae1e3
- Parent:
- 0:fe642275688d
basic data log working
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
joeata2wh | 0:fe642275688d | 1 | #include "mbed.h" |
joeata2wh | 3:b4592b0ae1e3 | 2 | |
joeata2wh | 3:b4592b0ae1e3 | 3 | /* By Joseph Ellsworth CTO of A2WH |
joeata2wh | 3:b4592b0ae1e3 | 4 | Take a look at A2WH.com Producing Water from Air using Solar Energy |
joeata2wh | 3:b4592b0ae1e3 | 5 | March-2016 License: https://developer.mbed.org/handbook/MIT-Licence |
joeata2wh | 3:b4592b0ae1e3 | 6 | Please contact us http://a2wh.com for help with custom design projects. |
joeata2wh | 3:b4592b0ae1e3 | 7 | |
joeata2wh | 0:fe642275688d | 8 | |
joeata2wh | 3:b4592b0ae1e3 | 9 | */ |
joeata2wh | 3:b4592b0ae1e3 | 10 | |
joeata2wh | 3:b4592b0ae1e3 | 11 | #include "ohms.h" |
joeata2wh | 0:fe642275688d | 12 | |
joeata2wh | 0:fe642275688d | 13 | float volDivideCalcRatio(long r1, long r2) { |
joeata2wh | 0:fe642275688d | 14 | return ((float) r2 / (float) (r1 + r2)); |
joeata2wh | 0:fe642275688d | 15 | } |
joeata2wh | 0:fe642275688d | 16 | float voltDivideAdjVolt(float vin, long r1, long r2) { |
joeata2wh | 0:fe642275688d | 17 | float ratio = ((float) r2 / (float) (r1 + r2)); |
joeata2wh | 0:fe642275688d | 18 | return vin / ratio; |
joeata2wh | 0:fe642275688d | 19 | } |
joeata2wh | 0:fe642275688d | 20 | |
joeata2wh | 0:fe642275688d | 21 | |
joeata2wh | 0:fe642275688d | 22 | long calcResistV(long refResistR1, float maxV, float measuredV) { |
joeata2wh | 0:fe642275688d | 23 | float VDrop = maxV - measuredV; |
joeata2wh | 0:fe642275688d | 24 | float dropRatio = measuredV / VDrop; |
joeata2wh | 0:fe642275688d | 25 | return (long) (refResistR1 * dropRatio); |
joeata2wh | 0:fe642275688d | 26 | } |
joeata2wh | 0:fe642275688d | 27 | |
joeata2wh | 0:fe642275688d | 28 | |
joeata2wh | 0:fe642275688d | 29 | /* |
joeata2wh | 0:fe642275688d | 30 | |
joeata2wh | 0:fe642275688d | 31 | adjVoltDivide::adjVoltDivide(long r1, long r2, float refVolt) { |
joeata2wh | 0:fe642275688d | 32 | _r1 = r1; |
joeata2wh | 0:fe642275688d | 33 | _r2 = r2; |
joeata2wh | 0:fe642275688d | 34 | _refVolt = refVolt; |
joeata2wh | 0:fe642275688d | 35 | _ratio = volDivideRatio(r1, r2); |
joeata2wh | 0:fe642275688d | 36 | } |
joeata2wh | 0:fe642275688d | 37 | |
joeata2wh | 0:fe642275688d | 38 | float adjVoltDivide::read(AnalogIn apin) { |
joeata2wh | 0:fe642275688d | 39 | return apin.read() / _ratio; |
joeata2wh | 0:fe642275688d | 40 | } |
joeata2wh | 0:fe642275688d | 41 | |
joeata2wh | 0:fe642275688d | 42 | uint16_t adjVoltDivide::read_u16(AnalogIn apin) { |
joeata2wh | 0:fe642275688d | 43 | return (int) ((float) apin.read_u16() / _ratio); |
joeata2wh | 0:fe642275688d | 44 | } |
joeata2wh | 0:fe642275688d | 45 | |
joeata2wh | 0:fe642275688d | 46 | */ |