Gør det selv-IOT: Sådan bygger du en dims der kan tænde/slukke for andre dimser over internettet – Del 3/4: Hardwaren

VIGTIGT: LÆS DETTE, før du beslutter dig for at bygge noget i denne retning. Denne enhed forbindes direkte til 230V, hvilket er livsfarligt at rode med! Jeg joker ikke – Det gør i bedste fald p*sseondt at få stød, og i værste fald DØR du af det. Du kan starte en brand og det kan man også DØ af! Du bør ikke rode med netspænding uden et minimum af viden&erfaring.

Jeg har været i byen og shoppe ingredienser siden sidste artikel, så nu skal vi bage. Opskriften er simpel:

  1. Tag en spand og tilføj ingredienserne.
  2. Tilsæt loddetin
  3. Tilsæt varme
  4. Rør rundt
  5. Tilsæt et par dråber blod, et mindre brandsår og et passende udvalg af obskøne gloser (og her er der virkelig mulighed for at lade fantasien blomstre!)
  6. Rør rundt igen
  7. Konstater, at det ikke virker
  8. Stir arrigt på printet et par timer (eventuelt en lille detour omkring sidste del af step 5) og sov derefter på det
  9. Fix den helt åbenlyse fejl som du burde have opdaget efter 5 nanosekunder
  10. Prøv igen
  11. Hvis det stadig ikke virker, gå til step 8 (og husk nu step 5 – din hardware skal blive bange for dig, ellers er du for pæn i sproget)
  12. Hvis det virker, så slip hvad du har i hænderne, og fjern dig forsigtigt fra opstillingen

Nå spøg til side, hardwaren til vores dims er ganske simpel. Det eneste elektronik der skal laves er driverkredsløb til de to relæer. Jeg vælger at placere en LED over hver stikkontakt, som skal indikere om der er tændt eller ej. Denne LED forsynes af samme driverkredsløb.

Hvorfor ikke bare forbinde relæet direkte til RPIens GPIO pins? Det skyldes, at en microprocessor sjældent er i stand til at levere særlig meget strøm. Det er kun et kontrol interface. I RPIens tilfælde er det maksimale omkring 15-16 mA, hvor relæet typisk kræver noget højere strøm – specielt i ”skifte-fasen”. Et relæ består elektrisk af en spole omkring en ferritkerne, der når strømmen tilsluttes danner en elektromagnet. Magneten tiltrækker en kontakt som slutter 230V strømkredsen.

Relay2

Kilde: Wikipedia

Relæet jeg fandt i skuffen forlanger 6V/60 mA, så der er helt sikkert behov for at booste GPIO pinden en smule. For det første, er GPIO 3,3V og for det andet kan vi ikke source den mængde strøm direkte fra en Raspberry Pi GPIO port. En lille test viser at relæet virker fint ved 5V, hvilket er heldigt, da vi på Raspberry boardet direkte har 5V til rådighed.

Heldigvis er en driverkreds særdeles simpel at lave. Vi benytter blot en standard NPN transistor, som styres af GPIO pinden. En BC547 er fin til formålet, da den kan tåle 0,5W uden køling, og relæet vil maksimalt trække 0,36W (lige når fjederen skal overvindes). Vi bruger transistoren som kontakt og derfor skal der ikke regnes på arbejdspunkter osv, da vi helt bevidst driver transistoren i mætning.

En transistor er kort fortalt en komponent med tre forbindelser: Collector, Base og Emitter.

2016-01-22 10.17.02

Det smarte ved en transistor er, at man med en lille strøm gennem base-emitter I_b, kan kontrollere en meget større strøm gennem collector-emitter,I_c.

En BC547 har en DC gain (forstærkning) på mindst 100, så hvis der skal leveres 60 mA gennem collectoren, skal basen altså fødes med mindst 0,6 mA, og for at have lidt buffer, så siger vi 1,5 mA.

Base modstanden,R_b, bestemmer strømmen der går gennem basen i henhold til Ohm’s lov,U = R \cdot I.Output fra GPIO er 3,3V og spændingsfaldet over base-emitter strækningen på en BC547 er omkring 900 mV, så spændingsfaldet over base modstanden vil altså være 3,3-0,9=2,4V.

Hermed kan vi beregne basemodstanden til \frac{2,4V}{1,5mA} = 1,6 k\Omega. Jeg vælger at runde ned til 1k \Omega (vi skal være helt sikre på at transistoren tillader nok strøm til at relæet trækkes).

Lad os se på et samlet diagram for kredsløbet der skal tilsluttes vores RPI. Som I kan se består diagrammet af to identiske kredsløb, da vi skal kontrollere to relæer.

driver_schematic_1

Base modstanden, R2 har jeg beskrevet, men der er to yderligere ting som lige skal forklares: LED1/R1 og så D1.

LED1 er den lysdiode, som jeg vil bruge til at indikere på kassen om der er tændt for et strømudtag, og R1 begrænser den strøm som løber igennem LED1 til omkring 18 mA.

D1 sidder der for at beskytte transistoren mod overspænding fra relæet. Elektrisk består relæet af en spole, og spoler har den egenskab at en strøm igennem spolen resulterer i at et magnetfelt dannes. Når strømmen afbrydes brat vil magnetfeltet nedbrydes, hvilket resulterer i at spolen skaber en spændingstransient. Det er denne effekt der benyttes i en tændspole til at lave gnisten i tændrør. I vores tilfælde vil transienten kunne brænde transistoren af, hvilket forhindres af dioden.

Hermed selve hardwaren beskrevet. Hvis det skulle være et kommercielt produkt skulle vi nu lægge printet ud (designe hvordan traces skal løbe på printkortet), men da det er et one-off design, og hardwaren er så simpel, så vælger jeg at implementere det på en stump veroboard i stedet.

Jeg var så heldig at snuble over en kasse som kun kostede 29 kr, og næste skridt er, at få skohornet alle stumperne ned i kassen (som har en størrelse som lige er i underkanten – men 29 kr!! Jeg måtte have den.). Jeg gør mig ekstra umage med at isolere og fiksere alle ledninger som bærer 230V, så vi minimerer risikoen for stød, kortslutning og brand.

Det første jeg monterer er stikkontakterne, da de er synlige udefra og fylder en del inde i kassen. Jeg vælger at placere dem øverst på kassen for at få mest muligt rum til resten af elektronikken i kassen. Først skal der bores huller til forfradåserne som skal rumme stikkontakterne:

bore_huller

Nu kan vi så begynde at fifle rundt med alle stumperne for at se hvordan de bedst passer i kassen. Af primære stumper der skal placeres har vi:
– Raspberry pi kortet
– Print med driverkredsløb
– De to relæer
– En strømforsyning til raspberry pi’en

Lad os prøve at danne os et systemoverblik, så vi kan se hvordan de enkelte blokke skal forbindes:

system_diagram

Strømforsyningen til Raspberry Pi’en er en standard USB strømforsyning som vi kender den til f.eks. android telefoner. Jeg fandt en i skuffen som er nogenlunde lille, og hvor man kan lodde 230V ledningen direkte på strømforsyningen (pladsbesparende).

Ledninger monteres i et moderne Lauritz Knudsen udtag uden brug af skruetrækker. Den afisolerede ende stikkes blot ned i et hul og holdes automatisk fast af en intern fjederbelastet mekanisme. Derfor SKAL monteringsledning (en massiv kobberleder, 1,5 mm2 er nok til vores formål) benyttes. Det er komplet umuligt at gøre med flertrådet ’lampeledning’. Monteringsledningen er til gengæld ikke nem at lodde på relæets terminaler. Jeg vælger derfor at benytte kronmuffer, så jeg kan få fordelene af begge ledningstyper.

Efter en del fedten rundt og forgæves forsøg nærmede jeg mig konklusionen at jeg havde dummet mig og købt en for lille kasse, men så blev jeg stædig. Det skulle fandeme passe. Basta! Problemet var, at raspberry pi’en var for lang til at kunne sidde på tværs i kabinettet, men kun fordi det micro usb stik til strømforsyningen var for langt. Løsningen kunne være at lede på nettet efter et stik med 90 graders bøj, med det var sent og jeg ville være færdig, så jeg fattede loddekolben og loddede strømforsyningen direkte fast til raspberry pi’en. Der er masser af steder man kan gøre det. Jeg valgte at lave forbindelsen over C6, som er den store kondensator lige ved USB stikket.

indhold_af_kasse

Så er hele herligheden samlet, og ledningerne nogenlunde pænt ført. Det vigtige er som sagt, at sikre, at ingen dele kan røre ved 230V forsyningen.

Bemærk, at jeg har etableret et ethernet stik på siden af kassen. Dette er for at muliggøre opsætning af wifi forbindelsen.

Slut med hardwaren. Alle fingre i behold, og kun mindre brandsår. Lidt hæs af al banderiet, men ellers har jeg det glimrende. Men virker det så? Er kassen pæn udenpå, og hvilken idiot glemte at det var fronten da han borede hullerne til montering af raspberry pi printet? Se med i næste og sidste del af serien, hvor koden skrives og hele svineriet testes.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

This site uses Akismet to reduce spam. Learn how your comment data is processed.