Arduino 3
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Arduino 3

  • 482 views
Uploaded on

Lezione /Esercitazione n° 3 Arduino ...

Lezione /Esercitazione n° 3 Arduino

"Termometro"

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
482
On Slideshare
425
From Embeds
57
Number of Embeds
5

Actions

Shares
Downloads
10
Comments
0
Likes
0

Embeds 57

http://sperimentar.blogspot.it 48
http://www.sperimentar.blogspot.it 3
http://sperimentar.blogspot.com 3
http://sperimentar.blogspot.mx 2
https://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ARDUINO eserc. n° 3 Controllo di temperatura
  • 2. Schema a blocchi Input: sensore di INPUT: sensore di temperatura Scheda Arduino Output: 3 LED
  • 3. Schema elettrico Schema di montaggio
  • 4. Componenti • INPUT: Sensore di temperatura LM35 (cercare e scaricare data sheet di TMP35, TMP36, TMP37 analog device (pdf) ed anche di LM35 (National Semiconductor) • OUTPUT: 3 LED e 3 resistenze da 220 R = (VAL – VD)/ I con I media di circa 15 mA VAL di 5 V e VD a seconda del colore del LED
  • 5. Parametri del sensore LM35DZ Package fornitore TOP-92 Funzione Sensore di temperatura Pin Count 3 Precisione (accuracy) +/- Sensibilità (K in mV/°C) Temperature massima Temperatura minima Tensione tipica di funzionamento Tipo uscita
  • 6. Esame del data sheet del sensore di temperatura • LM35DZ • V = KT + V0 dove V è la tensione alla temperatura T (°C); K è la sensibilità di 10 mV / °C ; V0 è la tensione di offset ovvero il valore di tensione a 0°C. • offset (OUTPUT) Componente a 25° a 20° A 0° V0 (offset) TMP37 500 mV TMP36 750mV TMP35 250mV
  • 7. Pausa per spiegazione della conversione ADC • Alla lavagna
  • 8. Conversione Vanalogico ->Vdigitale (10 bit) float voltage = (sensorVal/1024.0) * 5.0; • L’acquisizione del valore di temperatura effettuata dal sensore va a finire nella variabile sensorVal dopo la lettura del pin analogico numero 0 e la successiva conversione in 10 digit. REGOLE della CONVERSIONE: quanto => Q = VF.S. / 2n • n = 10 numero di bit per campione • 5V = tensione di fondo scala Quanto (ampiezza di un livello L.S.B.) Q = VF.S. / 2n = 5/1024 2 10 = 1024 numero di livelli V = Q* N dove N (sensorVal) sta per il valore digitale in cui è stato convertito il valore di temperatura acquisita immagazzinato in sensorVal (n=10 bit)
  • 9. Tensione di Offset float temperature = (voltage - .5) * 100; • Nella variabile voltage è immagazzinato il valore di tensione analogica • Nella variabile temperature sarà immagazzinato lo stesso valore dopo che è stato sottratto l’offset di 500 mV e dopo che è stato diviso per 100 • float temperature = (voltage - .5) * 100; – T = (V - 0.5) * 100 la costante è infatti 10 mV /° C con un offset di 0,5 V (500mV) • V = K T + Vo T = (V – Vo) / K [1/k = 1/ 0,01 = 100]
  • 10. Quali variabili? • Dichiarazione di costanti e inizializzazione (colleghiamo il sensore di temperatura al pin A0 analogico e valutiamo in 20° la temperatura di riferimento) • const int sensorPin = A0; • const float baselineTemp = 20.0; • int pinNumber = …; • int sensorVal; • float voltage; • float temperature;
  • 11. Alcune osservazioni • Impostare una connessione seriale per visualizzare i valori a 9600 bit/s. • Utilizzare il monitor per visualizzare i valori delle variabili di temperatura. • Pin digitali 2, 3, 4 impostati come OUTPUT ed inizialmente a livello basso. • Pin A0 come ingresso analogico. • Il programma di esempio è calibrato su LM36: effettuare le dovute modifiche dopo aver analizzato lo skatch. • Collaudare modifcando a piacere le condizioni di accensione dei 3 LED ( per esempio tutti spenti se la temperatura è minore di quella ambiente di riferimento presa a 25°, led verde se supera di 10 gradi o se arriva alla temperatura corporea, giallo se supera di 15 e rosso se supera di 20)
  • 12. • /* Arduino Starter Kit example Project 3 - Love-O-Meter */ • const int sensorPin = A0; • const float baselineTemp = 20.0; • void setup(){ • Serial.begin(9600); • for(int pinNumber = 2; pinNumber<5; pinNumber++){ • pinMode(pinNumber,OUTPUT); • digitalWrite(pinNumber, LOW); • } • } • void loop(){ • int sensorVal = analogRead(sensorPin); • Serial.print("sensor Value: "); • Serial.print(sensorVal); • float voltage = (sensorVal/1024.0) * 5.0; • Serial.print(", Volts: "); • Serial.print(voltage); • Serial.print(", degrees C: "); • float temperature = (voltage - .5) * 100; • Serial.println(temperature); • if(temperature < baselineTemp){ • digitalWrite(2, LOW); • digitalWrite(3, LOW); • digitalWrite(4, LOW); • } • else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){ • digitalWrite(2, HIGH); • digitalWrite(3, LOW); • digitalWrite(4, LOW); • } • else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6){ • digitalWrite(2, HIGH); • digitalWrite(3, HIGH); • digitalWrite(4, LOW); • } • else if(temperature >= baselineTemp+6){ • digitalWrite(2, HIGH); • digitalWrite(3, HIGH); • digitalWrite(4, HIGH); • } • delay(1); • } • /* Arduino Starter Kit example • Project 3 - Love-O-Meter */ • // named constant for the pin the sensor is connected to • // room temperature in Celcius • // open a serial connection to display values • // set the LED pins as outputs • // the for() loop saves some extra coding • // read the value on AnalogIn pin 0 • // and store it in a variable • // send the 10-bit sensor value out the serial port • // convert the ADC reading to voltage • // Send the voltage level out the Serial port • // convert the voltage to temperature in degrees C • // the sensor changes 10 mV per degree • // the datasheet says there's a 500 mV offset • // ((volatge - 500mV) times 100) • // if the current temperature is lower than the baseline • // turn off all LEDs • // if the temperature rises 2-4 degrees, turn an LED on • • // if the temperature rises 4-6 degrees, turn a second LED on • // if the temperature rises more than 6 degrees, turn all LEDs on