Libery for HX711 sensor. This is for measureing the weigth of the keg

Dependents:   Brew_Keg

Committer:
gert_lauritsen
Date:
Sun Feb 21 11:01:00 2016 +0000
Revision:
0:52c805a049c4
A lib for hx711 SG sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gert_lauritsen 0:52c805a049c4 1 #include "Hx711.h"
gert_lauritsen 0:52c805a049c4 2
gert_lauritsen 0:52c805a049c4 3 HX711::HX711(PinName pin_dout, PinName pin_slk): _pin_dout(pin_dout), _pin_slk(pin_slk)
gert_lauritsen 0:52c805a049c4 4 {
gert_lauritsen 0:52c805a049c4 5 _pin_slk = 1;
gert_lauritsen 0:52c805a049c4 6 wait_ms(100);
gert_lauritsen 0:52c805a049c4 7 _pin_slk = 0;
gert_lauritsen 0:52c805a049c4 8
gert_lauritsen 0:52c805a049c4 9 set_gain(128);
gert_lauritsen 0:52c805a049c4 10 }
gert_lauritsen 0:52c805a049c4 11
gert_lauritsen 0:52c805a049c4 12 HX711::~HX711()
gert_lauritsen 0:52c805a049c4 13 {
gert_lauritsen 0:52c805a049c4 14
gert_lauritsen 0:52c805a049c4 15 }
gert_lauritsen 0:52c805a049c4 16
gert_lauritsen 0:52c805a049c4 17
gert_lauritsen 0:52c805a049c4 18 void HX711::set_gain(char gain)
gert_lauritsen 0:52c805a049c4 19 {
gert_lauritsen 0:52c805a049c4 20 switch (gain) {
gert_lauritsen 0:52c805a049c4 21 case 128: // channel A, gain factor 128
gert_lauritsen 0:52c805a049c4 22 GAIN = 1;
gert_lauritsen 0:52c805a049c4 23 break;
gert_lauritsen 0:52c805a049c4 24 case 64: // channel A, gain factor 64
gert_lauritsen 0:52c805a049c4 25 GAIN = 3;
gert_lauritsen 0:52c805a049c4 26 break;
gert_lauritsen 0:52c805a049c4 27 case 32: // channel B, gain factor 32
gert_lauritsen 0:52c805a049c4 28 GAIN = 2;
gert_lauritsen 0:52c805a049c4 29 break;
gert_lauritsen 0:52c805a049c4 30 }
gert_lauritsen 0:52c805a049c4 31 _pin_slk = 0;
gert_lauritsen 0:52c805a049c4 32 read();
gert_lauritsen 0:52c805a049c4 33 }
gert_lauritsen 0:52c805a049c4 34
gert_lauritsen 0:52c805a049c4 35 long HX711::read()
gert_lauritsen 0:52c805a049c4 36 {
gert_lauritsen 0:52c805a049c4 37 long value = 0;
gert_lauritsen 0:52c805a049c4 38
gert_lauritsen 0:52c805a049c4 39 while (_pin_dout)
gert_lauritsen 0:52c805a049c4 40 ;
gert_lauritsen 0:52c805a049c4 41
gert_lauritsen 0:52c805a049c4 42 for (int i=0;i<24;i++)
gert_lauritsen 0:52c805a049c4 43 {
gert_lauritsen 0:52c805a049c4 44 _pin_slk = 1;
gert_lauritsen 0:52c805a049c4 45 value=value<<1;
gert_lauritsen 0:52c805a049c4 46 _pin_slk = 0;
gert_lauritsen 0:52c805a049c4 47 if(_pin_dout) value++;
gert_lauritsen 0:52c805a049c4 48 }
gert_lauritsen 0:52c805a049c4 49
gert_lauritsen 0:52c805a049c4 50 _pin_slk = 1;
gert_lauritsen 0:52c805a049c4 51 _pin_slk = 0;
gert_lauritsen 0:52c805a049c4 52
gert_lauritsen 0:52c805a049c4 53 value=value^0x800000;
gert_lauritsen 0:52c805a049c4 54
gert_lauritsen 0:52c805a049c4 55 return value;
gert_lauritsen 0:52c805a049c4 56 }
gert_lauritsen 0:52c805a049c4 57
gert_lauritsen 0:52c805a049c4 58 long HX711::read_average(char times)
gert_lauritsen 0:52c805a049c4 59 {
gert_lauritsen 0:52c805a049c4 60 long sum = 0;
gert_lauritsen 0:52c805a049c4 61 for (char i = 0; i < times; i++) {
gert_lauritsen 0:52c805a049c4 62 sum += read();
gert_lauritsen 0:52c805a049c4 63 }
gert_lauritsen 0:52c805a049c4 64 return sum / times;
gert_lauritsen 0:52c805a049c4 65 }
gert_lauritsen 0:52c805a049c4 66
gert_lauritsen 0:52c805a049c4 67 double HX711::get_value(char times)
gert_lauritsen 0:52c805a049c4 68 {
gert_lauritsen 0:52c805a049c4 69 return read_average(times) - OFFSET;
gert_lauritsen 0:52c805a049c4 70 }
gert_lauritsen 0:52c805a049c4 71
gert_lauritsen 0:52c805a049c4 72 float HX711::get_units(char times)
gert_lauritsen 0:52c805a049c4 73 {
gert_lauritsen 0:52c805a049c4 74 return get_value(times) / SCALE;
gert_lauritsen 0:52c805a049c4 75 }
gert_lauritsen 0:52c805a049c4 76
gert_lauritsen 0:52c805a049c4 77 void HX711::tare(char times)
gert_lauritsen 0:52c805a049c4 78 {
gert_lauritsen 0:52c805a049c4 79 double sum = read_average(times);
gert_lauritsen 0:52c805a049c4 80 set_offset(sum);
gert_lauritsen 0:52c805a049c4 81 }
gert_lauritsen 0:52c805a049c4 82
gert_lauritsen 0:52c805a049c4 83 void HX711::set_scale(float scale)
gert_lauritsen 0:52c805a049c4 84 {
gert_lauritsen 0:52c805a049c4 85 SCALE = scale;
gert_lauritsen 0:52c805a049c4 86 }
gert_lauritsen 0:52c805a049c4 87
gert_lauritsen 0:52c805a049c4 88 void HX711::set_offset(long offset)
gert_lauritsen 0:52c805a049c4 89 {
gert_lauritsen 0:52c805a049c4 90 OFFSET = offset;
gert_lauritsen 0:52c805a049c4 91 }
gert_lauritsen 0:52c805a049c4 92
gert_lauritsen 0:52c805a049c4 93 void HX711::power_down()
gert_lauritsen 0:52c805a049c4 94 {
gert_lauritsen 0:52c805a049c4 95 _pin_slk = 0;
gert_lauritsen 0:52c805a049c4 96 _pin_slk = 1;
gert_lauritsen 0:52c805a049c4 97 }
gert_lauritsen 0:52c805a049c4 98
gert_lauritsen 0:52c805a049c4 99 void HX711::power_up()
gert_lauritsen 0:52c805a049c4 100 {
gert_lauritsen 0:52c805a049c4 101 _pin_slk = 0;
gert_lauritsen 0:52c805a049c4 102 }