la nascita di questo interesse e' stato di risolvere il problema del "Controllo dei congelatori a pozzetto della sagra".
HVAC Heating, Ventilation, Air Conditioning is the use of various technologies to control the temperature, humidity, and purity of the air in an enclosed space.
esOf: Sensore.
DS18B20 Sensore di Temperatura Digitale. Caratteristiche misura.
LSB | MSB | TH | TL | CFG | RES | RES | RES | CRC |
0 temperature LSB. Read only.
1 temperature MSB. Read Only.
2 TH temperature high alarm
3 TL temperature low alarm
4 configuration
5 reserved
6 reserved
7 reserved
8 CRC
LSB Least Significant Byte
MSB Most Significant Byte
CRC Cyclic Redundancy Check
The intention of this Library is to build on Jim Studt (OneWire lib) work and make it quick and easy for beginners to get started.
ref: www.milesburton.com/w/index.php/Dallas_Temperature_Control_Library
"address" e' il nome dato al contenuto della ROM di DS18B20 che e' univoco di ogni singolo pezzo prodotto, e che quindi lo puo' identificare.
Io lo avrei chiamato "identificatore", ma e' anche vero che assuona al
MAC della Rete Ethernet e Rete Wi-Fi che mi verrebbe decodificare come Machine Address Code, e invece e' Medium Access Control.
nel nostro programma "Congelatori"
i termometri sono stati identificati, cioe' di ognuno
Nel pg registrata una tb con questi dati: l'etichetta-nr del termometro, e il suo identificatore digitale.
Problema: se si sostituisce un termometro occorre aggiornare il programma.
all'accensione, o reset, in pratica quando viene chiamata fun setup(), inviare msg al supervisore perche' si segni l'orario, che al MCU e' ignoto, se non dotato di RTC.
millis().
// Perform a 1-Wire reset cycle.
// Returns 1 if a device responds with a presence pulse.
// Returns 0 if there is no device, or the bus is shorted,
// or otherwise held low for more than 250uS
uint8_t reset(void);
// Issue a 1-Wire ROM select command (Match Rom [55H]), before you must reset.
void select(const uint8_t rom[8]);
// Issue a 1-Wire rom skip command, to address all on bus.
void skip(void);
// Write a byte. If 'power' is one then the wire is held high at
// the end for parasitically powered devices. You are responsible
// for eventually depowering it by calling depower() or doing
// another read or write.
void write(uint8_t v, uint8_t power = 0);
// Read a byte.
uint8_t read(void);
tranne reset, le altre funzioni non hanno return code !
credo che sia il protocollo che non ha possibilita' di controllo di sapere se l'opèrazione e' andata a buon fine. Credo che il controllo sia tutto basato sui CRC e su rilettura dopo la scrittura, se si vuole farlo.
Come rilevare anomalia dopo conversione e lettura scratchpad, cioe' risposte fallaci
Data = FF FF FF FF FF FF FF FF FF CRC = C9
Temperature = -0.0625 Celsius, 31.8875 Fahrenheit
cioe': CRC errato, e tutti di byte FF.
In pratica nel mio programma considero per semplicita'
CRC errato e CRC==C9 come "periferica scollegata"
Data = 50 05 4B 46 7F FF 0C 10 1C CRC = 1C
Temperature = 85.0000 °C, 185.0000 °F
cioe'
if (Serial.available()) {
int inByte = Serial.read();
Serial1.print(inByte, DEC);
}