Att läsa temperaturen med en Arduino är en extremt användbar funktion. Det är den typ av funktion som är avgörande för många projekt, allt från att bygga en egen hemtermostat för att skapa en väderstation. Dessutom är det enkelt att implementeras om några minuter med någon Arduino och bara två enkla komponenter.
I denna handledning visar jag dig hur du använder en Arduino för att läsa temperaturen från en termistor och skriva ut den på seriell port. En termistor är en enkel elektronisk komponent som ändrar motstånd baserat på temperaturen. Denna handledning fokuserar på det enklaste och billigaste sättet att läsa temperaturen. Längs vägen kommer du att lära dig ett enkelt, kärnbyggande block av elektronik som gör att du kan utforska en hel värld av sensorer med din Arduino.
Det finns flera sätt att läsa temperaturen med en Arduino. Några av dessa inkluderar:
Denna handledning fokuserar på att använda termistormetoden av flera anledningar. För det första svarar det snabbt på temperaturförändringar, för det andra är det billigt och äntligen är det lätt att använda.
Det finns också två väldigt viktiga begrepp att lära av denna handledning:
Variabla motståndssensorer är tillverkade för att mäta alla möjliga saker i den fysiska världen och möjligheten att läsa dessa sensorer med din Arduino kommer att vara en utmärkt grundläggande färdighet att behärska. Rotation, tryck, belastning, flex, ljus och värme är alla exempel på saker du kan mäta med hjälp av en analog stift och en spänningsdelare krets.
För det här projektet behöver du
Arduino analoga stift läser en spänning som förväntas sträcka sig från 0V till 5V. Ett vanligt sätt att vrida motståndsförändring i en termistor till en spänningsbyte som Arduino analoga stift kan läsa är att skapa en spänningsdelare krets. Kretsen använder två motstånd i en krets med en känd spänning för att skapa ett matematiskt förutsägbart spänningsvärde: Vout.
Det är en mycket enkel krets som visas nedan. När R1-värdet (motståndet 1) ändras ändras Vout. I vår handledning kommer R1 att vara termistoren och dess värde kommer att förändras i förhållande till temperaturen. Vout är ansluten till vår analoga port på Arduino så vi kan övervaka den.
Spänningsdelare krets schematiskNog teori, låt oss gå vidare för att bygga upp brödbrädet och Arduino.
Ställ in ditt brödbräda och Arduino bräda som detta diagram nedan. Diagrammet gjordes med Fritzing ett bra verktyg för att leda upp projekten logiskt innan de greppade ledningar och komponenter. Den övre grå komponenten är termistoren, eller R1, i diagrammet ovan. Detta är ett av många sätt att koppla upp kretsen, jag valde det eftersom det uppfyller några bra, grundläggande breadboarding metoder.
Breadboard layout med termistor och spänningsdelare kretsAtt läsa den analoga pinnen på en Arduino är ganska enkel. Stiften A0 - A5 på Arduino är speciella stiften som när de läses med analogRead ()
funktionen returnerar värdet från 0 till 1023 där ingångsspänningen är från 0V till 5V. När värdet på R1, termistoren ändras baserat på temperaturen, kommer spänningen in i A0-stiftet att förutsäga mellan 0V och 5V.
Låt oss skriva upp en kod och trycka den över till Arduino.
void setup () // Den här funktionen kallas när Arduino startar Serial.begin (115200); // Denna kod ställer in seriell port vid 115200 baud rate void loop () // Denna funktion loopar medan arduino är driven int val; // Skapa en heltal variabel val = analogRead (0); // Läs den analoga porten 0 och lagra värdet i val Serial.println (val); // Skriv ut värdet till seriell portfördröjning (1000); // Vänta en sekund innan vi gör det igen
Tips: Se till att baudfrekvensen för seriell bildskärm matchar vad vi ställt in i inrätta()
fungera. I det här exemplet: 115200.
Utgången ska se ut så här:
463
463
463
463
463
463
Om inte din brödbräda ligger i en mycket het ugn, är dessa värden inte meningsfulla. Det beror på att dessa bara är spänningsprover översatta till en skala från 0 till 1023. Därefter måste vi göra dessa till ett användbart temperaturvärde.
Ovan nämnde jag att använda termistorn skulle vara enkel, och det är för att vi kan stå på giganters axlar. Det finns en ekvation för att göra översättningen från samplingsvärde till temperatur som kallas Steinhart-Hart-ekvationen. (http://en.wikipedia.org/wiki/Thermistor) Steinhart-Hart-ekvationen har redan översatts för Arduino. Ett exempel på detta finns på playground.arduino.cc i en artikel av Milan Malesevic och Zoran Stupic. Jag har illustrerat sin funktion Termistor ()
nedan och lagt till kommentarer om hur man använder den.
#inkludera// laddar de mer avancerade matematiska funktionerna void setup () // Denna funktion kallas när Arduino startar Serial.begin (115200); // Den här koden ställer in seriell port med 115200 baud-hastighet dubbel termister (int RawADC) // Funktion för att utföra den snygga matematiken för Steinhart-Hart-ekvationen dubbel Temp; Temp = log ((10240000 / RawADC) - 10000)); Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp)) * Temp); Temp = Temp - 273,15; // Konvertera Kelvin till Celsius Temp = (Temp * 9.0) / 5.0 + 32.0; // Celsius till Fahrenheit - kommentera den här raden om du behöver Celsius Return Temp; tomrumsling () // Denna funktion loopar medan arduino är driven int val; // Skapa en heltal variabel dubbel temp; // Variabel för att hålla ett temperaturvärde val = analogRead (0); // Läs analog port 0 och lagra värdet i val temp = Termister (val); // Kör den snygga matematiken på det raka analoga värdet Serial.println (temp); // Skriv ut värdet till seriell portfördröjning (1000); // Vänta en sekund innan vi gör det igen
Nu ska produktionen se mycket mer ut så här:
69,22
69,07
69,22
69,22
70,33
72,07
72,86
73,34
74,13
Nu är det här meningsfullt. Min verkstad är faktiskt 69 grader Fahrenheit. Under det här exemplet rörde jag termistorens övre del med mitt finger och det kände av temperaturökningen som du kan se.
Försök att experimentera med din inställning för att bli mer bekväm med dessa nya färdigheter. Här är några förslag.
analogRead ()
värden baserade på ljusförändringar (tips: använd första kodsegmentet)Det är allt som finns där. Nu kan du gå och skapa något sätt av uppfinning med en mycket billig termistor.
Dessutom från denna handledning har du lärt dig hur man:
analogRead ()
analogRead ()
fungeraMedan du i början programmerar din Arduino för att läsa och förstå världen runt det kan låta komplicerat, i verkligheten finns det en hel del enkla och billiga sensorer som gör det möjligt för dig att snabbt och enkelt få kontakt med den verkliga världen. Spänningsdelningskretsen och en viss enkel kod kan ge din nästa skapelse nya och kraftfulla sinnen.