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.h@0:fe642275688d, 2016-03-07 (annotated)
- Committer:
- joeata2wh
- Date:
- Mon Mar 07 23:27:37 2016 +0000
- Revision:
- 0:fe642275688d
- Child:
- 3:b4592b0ae1e3
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
joeata2wh | 0:fe642275688d | 1 | /* Ohms law used to calculate things like resistance from voltage drop |
joeata2wh | 0:fe642275688d | 2 | and to compute read voltage adjusted for dividor. */ |
joeata2wh | 0:fe642275688d | 3 | |
joeata2wh | 0:fe642275688d | 4 | #ifndef ohms_H |
joeata2wh | 0:fe642275688d | 5 | #define ohms_H |
joeata2wh | 0:fe642275688d | 6 | #include "mbed.h" |
joeata2wh | 0:fe642275688d | 7 | |
joeata2wh | 0:fe642275688d | 8 | float volDivideCalcRatio(long r1, long r2); |
joeata2wh | 0:fe642275688d | 9 | float voltDivideAdjVolt(float vin, long r1, long r2); |
joeata2wh | 0:fe642275688d | 10 | long calcResistV(long refResistR1, float maxV, float measuredV); |
joeata2wh | 0:fe642275688d | 11 | |
joeata2wh | 0:fe642275688d | 12 | /* Uses a voltage dividor to compute resistance of |
joeata2wh | 0:fe642275688d | 13 | of R2 based on a known R1 and a source (refVolt) based |
joeata2wh | 0:fe642275688d | 14 | on drop of voltage measured where R1 and R2 connect. |
joeata2wh | 0:fe642275688d | 15 | normaly used to measure resistance in variable resistance |
joeata2wh | 0:fe642275688d | 16 | circuits such as thermister. |
joeata2wh | 0:fe642275688d | 17 | |
joeata2wh | 0:fe642275688d | 18 | class VoltDivideAdjVolt { |
joeata2wh | 0:fe642275688d | 19 | |
joeata2wh | 0:fe642275688d | 20 | public: |
joeata2wh | 0:fe642275688d | 21 | resistVoltDivide(PinName pin, long r1, float refVolt) { |
joeata2wh | 0:fe642275688d | 22 | _r1 = r1; |
joeata2wh | 0:fe642275688d | 23 | _refVolt = refVolt; |
joeata2wh | 0:fe642275688d | 24 | _pinName = pinName; |
joeata2wh | 0:fe642275688d | 25 | } |
joeata2wh | 0:fe642275688d | 26 | ~resistVoltDivide(); |
joeata2wh | 0:fe642275688d | 27 | float read(); |
joeata2wh | 0:fe642275688d | 28 | |
joeata2wh | 0:fe642275688d | 29 | |
joeata2wh | 0:fe642275688d | 30 | private: |
joeata2wh | 0:fe642275688d | 31 | PinName _pin; |
joeata2wh | 0:fe642275688d | 32 | long _r1; |
joeata2wh | 0:fe642275688d | 33 | long _r2; |
joeata2wh | 0:fe642275688d | 34 | float _refVolt; |
joeata2wh | 0:fe642275688d | 35 | }; |
joeata2wh | 0:fe642275688d | 36 | */ |
joeata2wh | 0:fe642275688d | 37 | |
joeata2wh | 0:fe642275688d | 38 | /* adjVoltDivide Compute the actual voltage output after effect |
joeata2wh | 0:fe642275688d | 39 | of voltage dividor has been removed. Normally used to compute |
joeata2wh | 0:fe642275688d | 40 | things like true battery voltage when voltage has been level |
joeata2wh | 0:fe642275688d | 41 | shifted into a range safe for use with micro-controller Assumes |
joeata2wh | 0:fe642275688d | 42 | R1 is connected to source voltage = refVolt and R2 is connected |
joeata2wh | 0:fe642275688d | 43 | to ground measurement is where R2 and R1 meet. Result of read() |
joeata2wh | 0:fe642275688d | 44 | will be voltage as if it had been measured without influence of |
joeata2wh | 0:fe642275688d | 45 | divider. |
joeata2wh | 0:fe642275688d | 46 | class adjVoltDivide { |
joeata2wh | 0:fe642275688d | 47 | |
joeata2wh | 0:fe642275688d | 48 | public: |
joeata2wh | 0:fe642275688d | 49 | adjVoltDivide(long r1, long r2, float refVolt); |
joeata2wh | 0:fe642275688d | 50 | ~adjVoltDivide(); |
joeata2wh | 0:fe642275688d | 51 | float adjust(float vin); |
joeata2wh | 0:fe642275688d | 52 | float adjust(int adcin); |
joeata2wh | 0:fe642275688d | 53 | float read(AnalogIn apin); |
joeata2wh | 0:fe642275688d | 54 | uint16_t read_u16(AnalogIn apin); |
joeata2wh | 0:fe642275688d | 55 | float ratio(); |
joeata2wh | 0:fe642275688d | 56 | |
joeata2wh | 0:fe642275688d | 57 | private: |
joeata2wh | 0:fe642275688d | 58 | long _r1; |
joeata2wh | 0:fe642275688d | 59 | long _r2; |
joeata2wh | 0:fe642275688d | 60 | float _refVolt; |
joeata2wh | 0:fe642275688d | 61 | float _ratio; |
joeata2wh | 0:fe642275688d | 62 | }; |
joeata2wh | 0:fe642275688d | 63 | */ |
joeata2wh | 0:fe642275688d | 64 | #endif |