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.

Committer:
joeata2wh
Date:
Mon Mar 07 23:27:37 2016 +0000
Revision:
0:fe642275688d
Child:
3:b4592b0ae1e3
test

Who changed what in which revision?

UserRevisionLine numberNew 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