Att styra ett 230V-relä med Arduino, version 2

OBS! All installation som innefattar starkström/230V skall utföras av elektriker! I detta fall handlar det om reläet.

Ett av de första inläggen vi la upp på bloggen var ett där jag byggde en fläktkontroller som skulle ta indata från två temperatursensorer för att avgöra huruvida en fläkt skulle vara på eller inte.

Detta fungerade genom att en Arduino sammankopplades med två DS18B20-sensorer på kabel, och jämförde temperaturen. Under fördefinierade förhållanden aktiveras sedan en transistor som lägger på 5V till ett anslutet HRM-S-relä som i sin tur styr spänningen till fläkten.

Nu har vi gjort en ny version! Dels för att det utlovats och efterfrågats, men också för att den första av okänd anledning inte vill fungera helt som tänkt (kanske beroende på alla fina lödningar).

Hårdvaran

Nano på PermaProto-kortFör att göra en maximalt snygg lösning använder vi, precis som på vår julprodukt ”X-mas lights by m.nu”, en Mnu Nano monterad på ett PermaProto-kort. Nanon behöver i de flesta fall inte lödas fast, så här till höger har vi en bild på resultatet. Observera att ”pinnarna” på Nanon sitter på raderna D och H samt att USB-kontakten är på den sidan med högst nummer.

Det som ska monteras på kortet kan delas upp i tre olika delar: Terminalen för anslutning av temperatursensorerna, knappen för att skifta driftläge, och delen som sköter reläet.

Det gamla diagrammet var inte så där jättefint, så jag har gjort ett nytt baserat på det här fotot. Den finns för nedladdning i PSD-format, där jag lagt varje del i ett eget lager för bättre översikt:

Anslutningsdiagram Fanduino (PSD) (347 nedladdningar)

fanduino-schematicsFör den som inte har Photoshop eller annat program som fixar PSD, finns såklart en PNG-fil också. 🙂

Som synes är det inga direkta konstigheter. Några motstånd, en diod och en transistor utöver de komponenter som nämnts tidigare. Den slutgiltiga layouten kommer inte se exakt ut så här, men komponenterna kommer sitta på de sidor där de för närvarande visas vilket medför lite kabeldragning på baksidan då vi vill ha 5V och GND+/- på vänstersidan.

Byggsteg

Färdigmonterad, framsidaFärdigmonterad, baksidaBilderna här till höger visar den färdigmonterade enheten, både på fram- och baksidan.

Om vi börjar med vänstra sidan:

  • 1x Terminal löds fast på A4 och A6 (med hålen vända utåt). A5 är valfri, den används inte då ben 1+3 på DS18B20 ska kopplas till GND och ben 2 till Digital 3.
  • 1x Motstånd 4,7kΩ från ”+7” till B6 (eller C6). Då vi kör temperatursensorerna i parasitläge kopplas 5V genom motstånd på mittenbenet och går sen vidare till input-pinnen.
  • På baksidan löder vi fast en kabel för 5V mellan översta +-hålet och I4. 5V behövs till både 1-wire och knappen.
  • Vi löder också en kabel från C4 (GND) till ”-3” (eller någon annan). Denna används bara till knappens pull-down-motstånd. Detta ser till att insignalen från knappen är ”0” så länge man inte trycker på knappen, så den inte står och svänger.
  • 1x Motstånd 10kΩ löds fast mellan B13 och ”-15”. Detta är tidigare nämnda pull-down.
  • 1x Knapp löds på ”+13” och A13. Observera att jag valde en annan knapp än den jag hade i byggschemat, då den helt enkelt passade bättre på kortet.

Nu är vi klara med den vänstra sidan, kvar har vi transistorn på höger sida, som styr reläet, samt en diod och ett motstånd! Vi gör som följer:

  • 1x Motstånd 1kΩ mellan J7 och ”-5”. Detta motstånd begränsar strömmen något från den pinne som styr transistorn (genom att strömsätta dess ”base”-ben).
  • 1x Diod mellan J4 och ”+1”, ”strecket” på dioden ska vara riktat mot J4. Denna sitter där för att skydda kretsen mot strömspikar som kan uppstå när magnetfältet som bildas av reläets spole kollapsar tillbaka in i elektroniken. Jag har valt att sätta dioden på baksidan, detta då dess stift är perfekta för att sätta kablarna på som går vidare till reläet. Därmed klipper jag dess ben så de sticker upp lite mer, ungefär 1 cm.
  • Avslutningsvis, en transistor! Benen är benämnda ”Emitter”, ”Base”, och ”Collector” från vänster till höger när man har den platta sidan vänd mot sig. Collectorn, det högra benet, sätts på ”+3”. Emittern, det vänstra benet, sätts på J2. Och avslutningsvis, Base, som när den strömsätts släpper igenom strömmen från Collector till Emitter, löds fast på ”-2”.

Innan vi går vidare med anslutning behöver vi flasha in mjukvaran. Så det gör vi nu! 🙂

Installera mjukvaran

Den som inte har någon erfarenhet av att programmera Arduino behöver ladda ner Arduino IDE. Dessutom krävs två externa bibliotek, för 1-Wire och DS18B20 (ZIP-filerna importeras i IDE:n under Sketch -> Import Library -> Add library).

Om du inte redan har serienumren för dina temperatursensorer, anslut dem till terminalen (guide längst ner i detta inlägg). Kör därefter denna sketch på din Arduino och starta Serial Monitor (Ctrl + Skift + M) så kommer programmet skriva ut serienumren i prompten:

Arduino 1-wire test (370 nedladdningar)

För att få adresserna på formatet ”0x00” som skickas in till DeviceAddress senare, lägg till 0x före och om det bara är ett tecken/siffra, lägg till en extra noll efter x.

Ladda sedan ner källkoden, nu i en något modifierad version, och ändra både ”outsideThermometer” och ”insideThermometer” till dina respektive sensorers serienummer:

Relayduino (407 nedladdningar)

Därefter laddar du upp mjukvaran till din Arduino och sen är den redo för montering! 😀

Ansluta det sista

Nu när all lödning är färdig är det dags att ansluta temperatursensorerna, reläet och strömförsörjningen. Det sistnämnda är enklast att köra AC77 tillsammans med Nanons medföljande USB-kabel.

Inkoppling NanoReläet ansluter man från J4 och ”+1” till A1 och A2 på reläet, jag har använt jumperkablar då honorna passar bra på diodens ben och hanarna går utmärkt att skruva fast i reläet. Observera att det inte spelar någon roll vilken som ansluts till vilken A-ingång, bara strömmen passerar igenom.

Som tidigare nämnt ska ben 1 och 3 på temperatursensorerna anslutas till vänstra hålet i terminalen och mittenbenet till det högra. Om man är så lyckligt lottad att man använder våra färdigbyggdna DS18B20 på kabel klipper man istället av kontakten och ansluter blåvit till vänstra hålet (GND), och blå till högra hålet (5V). De andra två kablarna används inte och kan isoleras bort.

Användning och felsökning

Den enda egentliga input användaren kan göra under drift är att byta läge på Arduinon genom att trycka på knappen. Det finns tre sådana: Alltid av, alltid på, och temperaturstyrd. LED-lampan märkt ”L” blinkar vid temperaturstyrning, annars är den av respektive på.

Eventuella modifikationer man kan tänkas vilja göra i koden är dels intervallet för hur ofta Arduinon jämför temperaturer. För närvarande är intervallet 10 minuter, och ställs in på variabeln ”tempInterval” en bit ner i källkoden. Man kanske också vill ändra villkoren för när relät ska aktiveras, vilket görs i if-satsen nästan längst ner. Man skulle också kunna nöja sig med en temperatursensor för att starta fläkten, men det kräver större modifikationer. Vill du göra något liknande, läs igenom koden och försök förstå vad som händer! Den är inte så svår som den kanske ser ut. 🙂

I det fall Arduinon inte hittar båda de angivna sensorerna, kommer den att inaktivera det temperaturstyrda läget. Då skiftar den bara mellan av och på.

Vid felsökning rekommenderar jag att enheten ansluts till en dator så man kan utnyttja Serial Monitor. Vid behov kan man lägga in några utskrifter här och där för att se var den fastnar.

Det var allt för denna gång! Mycket nöje, lycka till, glad sommar och så vidare! 😀

5 svar till Att styra ett 230V-relä med Arduino, version 2

  • Försöker hitta adresserna till mina två givare genom
    -Arduino 1-wire test (5 nedladdningar ) även testat ”Strangeparty” variant.
    De meddelanden jag får i första testet är , ”no more addresses”.
    Strangepartys variant för jag följande:
    ”1-Wire DS18B20 example code
    Looking for 1-Wire devices…
    That’s it.

    Requesting temperatures…DONE”

    Kopplat givarna, blå/vit till ground, och blå till input 3 som texten sa.

  • Kommentera