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@0:fe642275688d, 2016-03-07 (annotated)
- Committer:
- joeata2wh
- Date:
- Mon Mar 07 23:27:37 2016 +0000
- Revision:
- 0:fe642275688d
- Child:
- 2:1c29960a42c6
- Child:
- 3:b4592b0ae1e3
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
joeata2wh | 0:fe642275688d | 1 | #include "mbed.h" |
joeata2wh | 0:fe642275688d | 2 | //#include "ohms.h" |
joeata2wh | 0:fe642275688d | 3 | |
joeata2wh | 0:fe642275688d | 4 | |
joeata2wh | 0:fe642275688d | 5 | float volDivideCalcRatio(long r1, long r2) { |
joeata2wh | 0:fe642275688d | 6 | return ((float) r2 / (float) (r1 + r2)); |
joeata2wh | 0:fe642275688d | 7 | } |
joeata2wh | 0:fe642275688d | 8 | float voltDivideAdjVolt(float vin, long r1, long r2) { |
joeata2wh | 0:fe642275688d | 9 | float ratio = ((float) r2 / (float) (r1 + r2)); |
joeata2wh | 0:fe642275688d | 10 | return vin / ratio; |
joeata2wh | 0:fe642275688d | 11 | } |
joeata2wh | 0:fe642275688d | 12 | |
joeata2wh | 0:fe642275688d | 13 | |
joeata2wh | 0:fe642275688d | 14 | |
joeata2wh | 0:fe642275688d | 15 | |
joeata2wh | 0:fe642275688d | 16 | long calcResistV(long refResistR1, float maxV, float measuredV) { |
joeata2wh | 0:fe642275688d | 17 | float VDrop = maxV - measuredV; |
joeata2wh | 0:fe642275688d | 18 | float dropRatio = measuredV / VDrop; |
joeata2wh | 0:fe642275688d | 19 | return (long) (refResistR1 * dropRatio); |
joeata2wh | 0:fe642275688d | 20 | } |
joeata2wh | 0:fe642275688d | 21 | |
joeata2wh | 0:fe642275688d | 22 | |
joeata2wh | 0:fe642275688d | 23 | /* |
joeata2wh | 0:fe642275688d | 24 | |
joeata2wh | 0:fe642275688d | 25 | adjVoltDivide::adjVoltDivide(long r1, long r2, float refVolt) { |
joeata2wh | 0:fe642275688d | 26 | _r1 = r1; |
joeata2wh | 0:fe642275688d | 27 | _r2 = r2; |
joeata2wh | 0:fe642275688d | 28 | _refVolt = refVolt; |
joeata2wh | 0:fe642275688d | 29 | _ratio = volDivideRatio(r1, r2); |
joeata2wh | 0:fe642275688d | 30 | } |
joeata2wh | 0:fe642275688d | 31 | |
joeata2wh | 0:fe642275688d | 32 | float adjVoltDivide::read(AnalogIn apin) { |
joeata2wh | 0:fe642275688d | 33 | return apin.read() / _ratio; |
joeata2wh | 0:fe642275688d | 34 | } |
joeata2wh | 0:fe642275688d | 35 | |
joeata2wh | 0:fe642275688d | 36 | uint16_t adjVoltDivide::read_u16(AnalogIn apin) { |
joeata2wh | 0:fe642275688d | 37 | return (int) ((float) apin.read_u16() / _ratio); |
joeata2wh | 0:fe642275688d | 38 | } |
joeata2wh | 0:fe642275688d | 39 | |
joeata2wh | 0:fe642275688d | 40 | */ |