Temperatuur meten met de LM35
De LM35 temperatuursensor is een leuke sensor om de Analoog/Digitaal-conversie van het Dwengobord te leren gebruiken. Wanneer de sensor goed is aangesloten zal hij een waarde tussen 0 - 1023 geven (op de OUTPUT van de LM35). Deze output geven we door naar een analoge ingang van het Dwengo-bord zodat we de waarde kunnen omzetten naar een digitale waarde.
Benodigdheden
- Dwengobord + Dwengo-programmer
- Dwengo uitbreidingsbord
- LM35 (datasheet
) - een LED en weerstand van 180 Ohm (optioneel)
De LM35 temperatuursensor
De sensor heeft 3 aansluitpinnen:
- Voeding (deze gaat naar de + van het dwengo uitreidingsbord)
- Uitgang (deze gaat naar de AN0-poort van het uitbreidingsbord)
- GND (deze gaat naar de - van het uitbreidingsbord)
Aansluiten van een LED op het breadboard
Als extraatje heb ik ervoor gezorgd dat er een LED aangaat als de temperatuur hoger is dan 26 °C. Hiervoor heb ik een LED aangesloten op poort RB4. Het lange beentje (+) van de LED sluit ik aan op poort RB4 met een voorschakel weerstand van 180 Ohm ([RB4] --> [180ohm] --> [LED]). Het korte beentje (-) van de LED laat ik lopen naar de - op de uitbreidingsconnector van het Dwengo-bord. Dankzij de voorschakelweerstand van 180 Ohm is de stroom door de LED beperkt tot 28 mA (= 5 V / 180 Ohm).
Omzetten naar graden Celsius
De analoge waarde van de LM35 omzetten naar graden Celsius doe ik in volgende stappen:
- Na A/D-conversie geeft de LM35 een waarde tussen 0-1023 (0 bij 0 Volt en 1023 bij 5 Volt). Deze waarde zetten we om naar een spanning: spanning = 5x(uitgelezen waarde / 1023.0)
- Of indien we de spanning in mV wensen: spanning = 1000x5x(uitgelezen waarde / 1023.0)
- Uit de datasheet van de LM35
weten we dat 10 mV = 1 °C dus moet er door 10 gedeeld worden: temperatuur = 1000x5x(uitgelezen waarde / 1023.0)/10 - Of na vereenvoudiging: temperatuur = 0.48876x(uitgelezen waarde)
Voorbeeldcode in C
#include <dwengoBoard.h> #include <dwengoConfig.h> #include <dwengoADC.h> #include <dwengoLCD.h> #include <dwengoDelay.h> void main(void) { initBoard(); initADC(); backlightOn(); TRISB = 0; // poort B als output while(TRUE) { unsigned int val; // hier declareer ik integer val waar ik de analoge waarde zal plaatsen unsigned int temp; // hier integer temp waarin ik de omgerekende waarde zal plaatsen val=readADC(0); // de uitgelezen waarde zetten we in val temp=(val*0.48876); // de formule om de analoge waarde (val) om te rekenen naar °C (temp) clearLCD(); appendStringToLCD("Het is: "); // Het is: verschijnt op de 1ste lijn van het LCD setCursorLCD(1, 0); // hiermee verplaats ik de cursor naar de 2de regel van het LCD appendIntToLCD(temp); // de waarde van temp word op het scherm getoond appendStringToLCD(" C"); // de eenheid voor temperatuur delay_ms(500); if ( temp > 26 ) // een if-statement om te kijken of de temperatuur hoger is dan 26 graden PORTB = 0b00010000; // als de temperatuur hoger is gaat poort RB4 hoog (dus de LED gaat aan) else PORTB = 0b00000000; // als de temperatuur lager is dan 26 gaat RB4 weer laag (LED uit) } }
Resultaat
- Type:
- login of registreer om te reageren
-


Uw winkelwagen
