Gör din egen temperaturkontroll med en Arduino

Gör din egen temperaturkontroll med en Arduino / DIY

Höj det perfekta brödet, brygg vacker öl och bakre lyckliga kycklingar med en Arduino temperaturregulator. Om du bor i ett mindre än tillförlitligt klimat som England, är vägbeskrivningar som säger att du behåller något vid en bestämd temperatur inte särskilt bra - vi har inte luftkonditioneringsapparater, och det är inte praktiskt att höja termostaten för hela huset. bara gör en brödbröd. Även hålls inuti kan kycklingar dö om temperaturen sjunker på natten; och få dem att kläcka i första hand har ett jämnare strängare temperaturområde. Men jag behöver mitt bröd, och kycklingarna behöver kläckning - så istället för att köpa dyr utrustning kan vi koppla samman en kompetent temperaturregulator med en Arduino och hushållsbitar.

Detsamma gäller också för att hålla föremålna svala - det kan vara slösigt att köra ett helt kylskåp bara för att göra yoghurt - men med en temperaturregulator är principen densamma. I stället för att aktivera ett värmeelement aktiverar du pluggen på ett minikylskåp eller annat kylelement, som en Peltier (termoelektrisk kylare) - och naturligtvis kommer logiken att vändas.

Vad du kommer att behöva

Detta är ett Arduino-projekt - om du aldrig har jobbat med Arduino tidigare, är vår gratis nybörjare guide ett fantastiskt ställe att börja.

  • Arduino
  • Temperatursensor - Jag använder en TMP36, en billig enstaka paket som levereras med Oomlout (UK) / Sparkfun (US) nybörjarsats.
  • Relä- eller RC-kontaktbrytare
  • Skruvplintar
  • Box för att fälla upp värmen
  • Värmeelement eller glödlampa och fixtur (eller båda)

Det sista föremålet har lämnats medvetet vagt. Om du har glödlampa (den typ som blir varm, inte en energibesparande lampa) eller en varm lampa för sportskador och så är det förmodligen lättast att ställa in. Jag använder ett värmeband - i grunden ett band av gummi som blir varmt när el passerar, används på karboxer och keggar för initiala jäsningssteg i vin eller öltillverkning - tekniskt kan detta vara en brandrisk när det inte sårar något , så snälla gör inte det här, jag använder bara den för att testa. Du kan även köpa värmekuddar för samma ändamål.

Av säkerhetsskäl använder jag dessa RC-pluggar för att byta AC-enheter, med en kontroller hackad i detalj i denna hemautomatiseringsartikel. Kontrollapparater från An Arduino: Starten av hemautomatikstyrningsapparater från en Arduino: Starten av hemautomatisering Senast På tiden visade jag dig några sätt att göra dina Arduino-projekt talstyrda via SiriProxy, OS Xs inbyggda talbara objekt och vissa Automator-skript, eller till och med ett dedikerat hårddisk för ljudigenkänning. Jag ... Läs mer. Det är trådlöst, så jag behöver inte på något sätt vidröra levande ledningar.

Temperaturavkänning

Låt oss börja med att koppla upp och testa sensorn. [Diagram från Adafruit]

Med den plana sidan mot dig och benen vänd nedåt, är temperaturgivaren TMP36 ansluten +, signal, GND i den ordningen. + Går till 3.3 V-utgången från Arduino; du behöver också en annan linje från +3,3 V till AREF-stiftet - detta berättar att Arduino använder 3.3 V för analog ingångsreferens istället för 5 V. Anslut sensorns signalstift till A1. I tidigare försök hade jag använt TMP36 direkt på 5 V-linjen; det fungerar, tyvärr, när det var kopplat till ett relä, var det ett strömfall när reläet aktiverades, vilket resulterade i mycket fluktuella mätvärden.

Jag använde en gammal nätverkskabel som signalkabel - mycket användbar att ha runt, eftersom det finns 8 ledningar inuti. Kabeln är dock ganska tunn, så var noga med att stärka den andra änden med löddet där den skruvas in i ett plint.

Formeln i koden förutsätter att du använder tMP36-sensorn; Du borde kunna hitta ett kodprov för andra sensorer. Denna provkod är från Adafruit - ladda upp den och öppna seriekonsolen för att undersöka produktionen.

Jämför med en termometer om möjligt. Läsningar inte rätt?

  • Kontrollera att spänningen som levereras är faktiskt 3,3 V
  • Är AREF ansluten till 3,3 V också?

Lägga till i Switch Logic

För att styra värmeelementet använder jag dessa RC-uttag från Maplin och har tagit bort kontrollenheten. Endast marken och styrstiftet måste anslutas. Jag har ändrat koden för att inkludera relevanta bibliotek som du kan hämta härifrån.

Vid denna tid kommer jag också att ta bort alla referenser till Farenheit och fortsätta att arbeta med Celsius bara. Jag har då definierat en önskad temperatur för att upprätthålla och läggas till i en enkel kontrollstruktur som så:

if (temperatureC < desiredTempC) mySwitch.switchOn(1,1); Serial.println("Heater ON");  else Serial.println("Heater OFF"); mySwitch.switchOff(1,1);  

Det finns inget komplex här som du inte förstår - bara jämföra den aktuella temperaturavläsningen till önskad, och slå på strömbrytaren om den är lägre; annars, stäng av den.

Den fullständiga koden finns här, men du måste justera detta om du använder ett relä (det är inte svårt). Här är det fullständiga kopplingsschemat som jag använde:

Få alltid att falla på plats

Tape sensorn i rutan du använder, och placera värmeelementet vart som är lämpligt. Ställ in önskad temperatur och sätt på den hela tiden. Om du håller datorn ansluten för tillfället kan du använda seriekonsolen för att observera ändringar när din lådan värmer upp.

Ytterligare arbete

  • För att minska effekten av temperaturfluktuationer kan du försöka utjämna resultaten. Skapa en matris för att lagra 10 läsningar och beräkna ett medelvärde på varje slinga.
  • För att undvika snabb aktivering och avaktivering av värmeelementet, skapa en variabel för att lagra en nedräkning. Varje gång du aktiverar eller avaktiverar, spelar du in den aktuella tiden i nedräkningen, och innan du växlar till staten, kontrollerar du om X-tiden har gått sedan den senaste staten ändras.
  • För ett datorlösa projekt, koppla in en liten LCD-skärm för att visa aktuell temperatur och låta dig se aktuell och önskad temperatur.

Sätter det på provet

Slutligen, vad skulle det här projektet vara utan ett litet test? Jag piskade upp en sats färdigblandad deg i brödmaskinen och delade den i två bröd. Den som sörjde inuti lådan var mild, men då är omgivningsluftstemperaturen idag ungefär 26 grader Celsius - det skulle vara mycket mer användbar på vintern. Oavsett, jag går bättre med att göra lite soppa för att följa med det här fina brödet.

Så vad skulle du göra som kräver en konstant temperatur?

Utforska mer om: Arduino.