Scientific task box V1

Dependencies:   HX711 DS1820

Dependents:   Scientific_RTOS Scientific_RTOS

Committer:
Alessio_Zaino
Date:
Mon Jun 10 12:49:50 2019 +0000
Revision:
2:f8120bb54b69
Parent:
0:01deb85101c9
Child:
3:442e7d2ab496
still developing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Alessio_Zaino 0:01deb85101c9 1 #include "BOX.h"
Alessio_Zaino 0:01deb85101c9 2
Alessio_Zaino 2:f8120bb54b69 3 BOX::BOX (PinName pinCLK_HX711, PinName pinDAT_HX711, PinName pin_temp, PinName pin_cond, int HX711_coefficent):ds1820(pin_temp),balance(pinDAT_HX711, pinCLK_HX711)
Alessio_Zaino 0:01deb85101c9 4 {
Alessio_Zaino 0:01deb85101c9 5 _pinCLK = pinCLK_HX711;
Alessio_Zaino 0:01deb85101c9 6 _pinDAT = pinDAT_HX711;
Alessio_Zaino 0:01deb85101c9 7 _pintemp = pin_temp;
Alessio_Zaino 0:01deb85101c9 8 _pincond = pin_cond;
Alessio_Zaino 0:01deb85101c9 9 _coefficent = HX711_coefficent;
Alessio_Zaino 0:01deb85101c9 10
Alessio_Zaino 0:01deb85101c9 11
Alessio_Zaino 0:01deb85101c9 12 }
Alessio_Zaino 0:01deb85101c9 13
Alessio_Zaino 2:f8120bb54b69 14
Alessio_Zaino 2:f8120bb54b69 15
Alessio_Zaino 2:f8120bb54b69 16
Alessio_Zaino 2:f8120bb54b69 17
Alessio_Zaino 2:f8120bb54b69 18 BOX::~BOX(){}
Alessio_Zaino 2:f8120bb54b69 19
Alessio_Zaino 2:f8120bb54b69 20
Alessio_Zaino 2:f8120bb54b69 21 void BOX::initialize(){
Alessio_Zaino 2:f8120bb54b69 22
Alessio_Zaino 2:f8120bb54b69 23 check=ds1820.begin();
Alessio_Zaino 2:f8120bb54b69 24
Alessio_Zaino 2:f8120bb54b69 25 }
Alessio_Zaino 0:01deb85101c9 26
Alessio_Zaino 0:01deb85101c9 27 float BOX::get_temp()
Alessio_Zaino 0:01deb85101c9 28 {
Alessio_Zaino 2:f8120bb54b69 29 int result=0;
Alessio_Zaino 2:f8120bb54b69 30 float temp=0;
Alessio_Zaino 2:f8120bb54b69 31 ds1820.startConversion(); // start temperature conversion from analog to digital
Alessio_Zaino 2:f8120bb54b69 32 wait(1.0); // let DS1820 complete the temperature conversion
Alessio_Zaino 2:f8120bb54b69 33 result = ds1820.read(temp); // read temperature from DS1820 and perform cyclic redundancy check (CRC)
Alessio_Zaino 2:f8120bb54b69 34 switch (result) {
Alessio_Zaino 2:f8120bb54b69 35 case 0: // no errors -> 'temp' contains the value of measured temperature
Alessio_Zaino 2:f8120bb54b69 36
Alessio_Zaino 2:f8120bb54b69 37 break;
Alessio_Zaino 2:f8120bb54b69 38
Alessio_Zaino 2:f8120bb54b69 39 case 1: // no sensor present -> 'temp' was not updated
Alessio_Zaino 2:f8120bb54b69 40 printf("no sensor present\n\r");
Alessio_Zaino 2:f8120bb54b69 41 break;
Alessio_Zaino 2:f8120bb54b69 42
Alessio_Zaino 2:f8120bb54b69 43 case 2: // CRC error -> 'temp' was not updated
Alessio_Zaino 2:f8120bb54b69 44 printf("CRC error\r\n");
Alessio_Zaino 2:f8120bb54b69 45
Alessio_Zaino 2:f8120bb54b69 46 default:
Alessio_Zaino 2:f8120bb54b69 47 break;
Alessio_Zaino 2:f8120bb54b69 48
Alessio_Zaino 2:f8120bb54b69 49
Alessio_Zaino 2:f8120bb54b69 50 }
Alessio_Zaino 2:f8120bb54b69 51
Alessio_Zaino 2:f8120bb54b69 52
Alessio_Zaino 2:f8120bb54b69 53 return temp;
Alessio_Zaino 0:01deb85101c9 54 }
Alessio_Zaino 0:01deb85101c9 55
Alessio_Zaino 2:f8120bb54b69 56
Alessio_Zaino 2:f8120bb54b69 57
Alessio_Zaino 0:01deb85101c9 58 int BOX::get_resistance()
Alessio_Zaino 0:01deb85101c9 59 {
Alessio_Zaino 0:01deb85101c9 60 AnalogIn cond_value(_pincond); // reads voltage on the conductimeter pin.
Alessio_Zaino 0:01deb85101c9 61 float meas_v;
Alessio_Zaino 0:01deb85101c9 62 float current;
Alessio_Zaino 0:01deb85101c9 63 float resistance;
Alessio_Zaino 0:01deb85101c9 64 _tmp = 0;
Alessio_Zaino 0:01deb85101c9 65 for(int i = 0; i < 20; i++)
Alessio_Zaino 0:01deb85101c9 66 {
Alessio_Zaino 0:01deb85101c9 67 meas_v = cond_value.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
Alessio_Zaino 0:01deb85101c9 68 current = (1 - meas_v) / (2000000); // kvl and V/R to get current
Alessio_Zaino 0:01deb85101c9 69 _tmp = (meas_v / current); // Ohm law gives us the soil resistence
Alessio_Zaino 0:01deb85101c9 70 resistance = resistance + _tmp;
Alessio_Zaino 0:01deb85101c9 71 }
Alessio_Zaino 0:01deb85101c9 72 return (int) (resistance / 20);
Alessio_Zaino 0:01deb85101c9 73 }
Alessio_Zaino 0:01deb85101c9 74
Alessio_Zaino 0:01deb85101c9 75 void BOX::tare(unsigned char times)
Alessio_Zaino 0:01deb85101c9 76 {
Alessio_Zaino 0:01deb85101c9 77 balance.setTare(balance.averageValue(times));
Alessio_Zaino 0:01deb85101c9 78 }
Alessio_Zaino 0:01deb85101c9 79
Alessio_Zaino 0:01deb85101c9 80 int BOX::get_weight()
Alessio_Zaino 0:01deb85101c9 81 {
Alessio_Zaino 0:01deb85101c9 82 return (int) (balance.getGram() / _coefficent);
Alessio_Zaino 0:01deb85101c9 83 }