DE PROGRAMMEERBARE PLANTENKAS // DE LM75 EN TC74 TEMPERATUURSENSOR AANSLUITEN EN PROGRAMMEREN OM DE TEMPERATUUR TE METEN
SENSOR (CHIP): LM75 of TC74 - MEETTECHNIEK: HALFGELEIDER - MEETBEREIK (IN ℃): -25 TOT +150 - PRECISIE (IN ℃): 2 - AANSLUITING: I2C
In deze tutorial laten we zien hoe je een LM75 of TC74 temperatuursensor aansluit en programmeert om de temperatuur te meten met een Arduino microcontroller of een andere microcontroller. Deze tutorial hoort bij het artikel "De Programmeerbare Plantenkas: De temperatuur meten met een temperatuursensor", waarin we vertellen hoe je kunt bepalen welke temperatuursensor geschikt is voor jouw project, en waarin we de prestaties van verschillende temperatuursensoren met elkaar vergelijken.
Aansluiten
De LM75 en de TC74 temperatuursensor kunnen met dezelfde code werken, maar worden vaak net iets anders aangesloten. De LM75 temperatuursensor wordt meestal op een ontwikkelaarsbord geleverd, zoals de LM75 temperatuursensor van Allnet. Zonder duidelijke reden lijken fabrikanten van verschillende merken niet op het ontwikkelaarsborden te zetten welke pin voor welke aansluiting bedoeld is. Meestal kun je dit gelukkig wel op de datasheet van de sensor vinden.
De TC74 temperatuursensoren zijn wat dat betreft vaak wat makkelijker om aan te sluiten. Deze worden meestal geleverd in een zo geheten TO-220 verpakking en hebben vijf benen. Het eerste meest linkse been, wanneer de tekst van de sensor naar je toe wijst, wordt niet aangesloten. Het tweede been wordt op de SDA pin aangesloten, het derde been op de GND pin, het vierde been op de SCL pin, en het vijfde been op de VCC pin. Soms lukt het om vrouwelijke Dupont aansluitingen direct op de benen aan te sluiten, maar het is vaak makkelijker om met een (mini) breadboard te werken.
Programmeren
Arduino IDE code
Wij hebben er voor gekozen om met de Temperature LM75 Derived bibliotheek te werken. Ondanks dat de TC74 sensor niet in het lijstje van ondersteunde temperatuursensoren staat, is onze ervaring dat deze bibliotheek zowel voor de LM75 als de TC74 temperatuursensor werkt. Hierdoor kun je de onderstaande code dus voor beide temperatuursensoren gebruiken.
Om de bibliotheek in ons programma te laden, gebruiken we het commando #include <Temperature_LM75_Derived.h>
. Verder moeten we de bibliotheek nog vertellen met welke categorie
sensor we te maken hebben. Hiervoor geven we het commando Generic_LM75 temperature;
. Deze bibliotheek werkt samen met veel verschillende I2C temperatuursensoren, dus als je twijfelt
welk type sensor je hier moet aangeven, dan kun je het beste even in de handleiding van de bibliotheek kijken.
Als laatste voorbereiding maken we nog een variabele aan om de temperatuur in op te slaan. Dit doen we met het commando float LM75gradenC;
. In dit voorbeeld gebruiken we een float
datatype, ofwel een komma getal. Hierdoor wordt de temperatuur zeer precies opgeslagen.
Om deze code eenvoudig met andere codes te combineren, maken we een aparte functie om de temperatuur uit de sensor op te vragen. Om de functie te maken geven we het commando float
LM75()
. Tussen de {} zetten we vervolgens wat deze functie moet doen als de functie wordt geactiveerd. Doordat we met een bibliotheek werken, hoeven we maar één commando te geven om de
temperatuur uit de sensor te halen, namelijk LM75gradenC = temperature.readTemperatureC();
.
De functie die we gemaakt hebben, haalt alleen de temperatuur uit de sensor op als de functie geactiveerd wordt. Dit doen we in de loop fase van de code, met het commando
LM75();
. Op dit moment doen we nog helemaal niets met de temperatuur die uit de sensor wordt gehaald. Je kunt zelf andere stukjes code aan deze code toevoegen om bijvoorbeeld de
temperatuur op een LCD scherm te laten zien.
/* Voorbeeld code gemaakt door www.foodplanting.com voor de Programmeerbare Plantenkas serie. Deze code is gemaakt voor een LM75 of een TC74 temperatuursensor. Deze code maakt gebruikt van de Temperature LM75 Derived bibliotheek. Meer info over deze bibliotheek vindt je hier: https://github.com/jeremycole/Temperature_LM75_Derived Deze code is zeer minimalistisch, omdat het idee is dat deze code gecombineerd wordt met codes voor andere modules. Zo wordt de temperatuur bijvoorbeeld niet in de loop fase, maar in een aparte functie op geroepen en wordt de gemeten temperatuur niet in de Serial Monitor af geprint. */ // Voorbereiding: #include <Temperature_LM75_Derived.h> // Dit laadt de bibliotheek die nodig is om de temperatuursensor te lezen. Generic_LM75 temperature; // Dit verteld de bibliotheek dat we met een standaard LM75 of TC74 sensor werken. float LM75gradenC; // Dit creëert een globale variabele waarin de gemeten temperatuur wordt opgeslagen. // Setup fase: void setup() { // Voor deze sensor hoeven we niets in de setup fase te doen. } // Loop fase: void loop() { LM75(); // Vraag de microcontroller om de functie die de temperatuur uit de sensor ophaalt uit te voeren. } // Functie voor temperatuursensor: float LM75() { LM75gradenC = temperature.readTemperatureC(); // Dit haalt de temperatuur uit de sensor op. return LM75gradenC; }
Vragen en opmerkingen
We proberen de serie DE PROGRAMMEERBARE PLANTENKAS zo toegankelijk mogelijk te maken voor iedereen. Toch zijn sommige concepten best wel ingewikkeld, omdat er kennis van heel veel verschillende domeinen, zoals natuurkunde, elektrotechniek en computerwetenschappen, samen komen. Het kan daarom best zijn dat we iets niet goed uitgelegd hebben. Mocht er iets niet duidelijk zijn of iets niet zo werken zoals we het in deze tutorial uitgelegd hebben, stuur dan gerust een berichtje via de Disqus op deze pagina. Je kunt de Disqus vinden door naar beneden te scrollen, tot onder de advertenties.