Arduino omvandlar


För att enkelt kunna omvandla blinkningar per wattimme till momentan effekt som Gnuplot kan visa i ett diagram behövs någon form av intelligens. Intelligensen fick Arduiono Pro stå för. Dessutom behöver man ett detektorkort för de fotodioder som monteras intill lysdioderna så att de lämnar TTL-nivåer in till Arduino-kortet. Slutligen måste enheten kunna kommunicera seriellt över hyggligt långa ledningar mellan elmätarskåpet och in till datorlabbet. Det får man ordna med extern kommunikationselektronik.

Arduiono Pro är ett mikrocontrollerkort baserat på ATmega168 eller ATmega328-kretsarna. Kortet är avsett för hobbyprojekt och konstruerades och tillverkas av Sparkfun Electronics, som säljer allt möjligt kul elektroniskt på Internet. Kortet, som kostar 20 dollar, finns i två versioner, nämligen en med 3,3 volt drivspänning och 8 MHz klockfrekvens, och en med 5 volt drivspänning och 16 MHz klockfrekvens. Kortet har 14 digitala I/O-pinnar, av vilka 6 kan användas för pulsbreddsmodulering. Som namnet anger är pinnarna dubbelriktade och kan skicka ut eller ta emot maximalt 40 mA. Dessutom finns 6 analoga ingångar (som används i detta projekt), en batterikontakt, en kraftbrytare och en reset-brytare. Det finns också en anslutning mot ett annat av Spakfuns kort som kan ge USB-anslutning.

ATmega168-kortet har 16 kB flashminne för programkod, 1 kB SRAM för variabler och 512 byte EEPROM som kan skrivas och läsas genom kretsen själv. ATmega329 har 32 kB flashminne, 2 kB SRAM och 1 kB EEPROM, för lite större projekt

Den som är ovan vid sådana här embeddedprojekt kan tycka att 8 MHz klocka och 16 kB programminne är lite, ja nästan ingenting, men det räcker gott och väl för att köra en liten robot med flera motorer eller samla in data från omvärlden. Utvärdering av datat får å andra sidan ske på en tyngre maskin, som en PC.

Arduino kan kommunicera med en yttre dator, en annan Arduino eller andra mikrocontrollers. Kortet har en UART med TTL-nivåer för dubbelriktad asynkron seriell kommunikation. Med tillbehörskortet som nämnts ovan kan det inbyggda kommunikationsprogrammet i Arduino användas för att skicka textdata fram och tillbaka mellan Arduino och en yttre dator via USB.

Konstruktionens delar



Låt oss börja med att gå igenom det tämligen enkla schemat.

Fotodioderna BPW 34 sitter helt nära lysdioderna och leder in ström på transistorns bas när lysdioden blinkar. Emittern dras upp mot 5-volten och skickar in en positiv puls på Arduinons AD0-, respektive AD1-ingångar.

Seriekommunikationen sker enligt RS-232 med 1200 baud. Arduinon kan bara sända, inte ta emot något. All dubbelriktad kommunikation med Arduinon får ske med testinterfacet (nedan). Vid RS-232-kommunikation behövs negativ spänning och den tas från datorns sändledare (som blir den här konstruktionens Rx-ledare). Den negativa spänningen får ladda upp den uppochnedvända elektrolyten negativt och laddningen räcker för att sända ett par tecken då och då. Skulle datorn få för sig att sända tecken, behövs seriedioden så att datorn inte försöker ladda ur kondensatorn (eller snarare ladda positivt) eller bränna sitt sänd-drivsteg med kondensatorns upplagrade energi.

Arduinon håller även koll på bakgrunds-ljusnivån och det hela fungerar så länge nivån inte ändras alltför snabbt eller ingången bottnar (som till exempel vid solljus in i ett öppet elmätarskåp).

Detektorkortet med fotodioderna och dess drivkretsar på, installerades på ett enkelt sätt invid elmätaren.

Så här ser Arduinokortet ut när det är anslutet till ett testinterface som användes för att prova konstruktionen, skicka in programvara i Arduinon etc.

Elektroniken monterades i en vattenskyddad burk som sitter nära elmätarskåpet och en fyrledare drogs ut till vänster och vidare upp till detektorkortet med fotodioderna, som sitter monterat invid elmätaren. Den niopoliga D-sub-kontakten till höger går vidare till PCns seriella port. Kommunikationselektroniken är byggd enligt principen råttbo direkt på D-sub-kontaktens anslutningsstift och därefter intejpad i gul tejp. Varför överanstränga sig?

Burken sitter en bit från elmätarskåpet vilket medför en del störningar på signalledningarna. Om man har försumbart korta ledare mellan detektorn och Arduinon kan man utesluta drivtransistorerna BC 107, 1N4148 och 10 k-motstånden och byta ut 47 nF-kondensatorn till 1 nanofarad så ska det fungera lika bra, men blir mer störkänsligt.