Bidrag: USB ansluten energilogger - Tripp

Här presenteras bidragen i Svenska Elektronikforumets Elektroniktävling 2009. Instruktioner för omröstning finns också!
Användarvisningsbild
Tripp
Inlägg: 397
Blev medlem: 29 januari 2004, 08:14:39
Ort: Tullinge
Kontakt:

Bidrag: USB ansluten energilogger - Tripp

Inlägg av Tripp »

En USB-ansluten energilogger.

Bild

Varför mäta och logga energiförbrukning?

En större medvetenhet om sin elförbrukning kan ändra ens beteenden, och därigenom spara på miljön och ekonomin!

El är dyrt, ofta den största kostnaden i ett hushåll.
Den senaste tiden har elpriset varit uppe på 10kr/kWh
Med USB-loggern ser man hur mycket el man förbrukar för tillfället.
Man behöver inte koppla upp den mot en PC eftersom den har en LCD.
I displayen kan du se den för tillfället förbrukade mängden el i kW

Fastighetens fast monterade elmätare visar endast ackumelerad förbrukning, inte den aktuella.
Energi-loggern visar aktuell förbrukning och är alltså ett bra verktyg för att hitta energibovar. Därefter kan man göra åtgärder!

Genom att använda energi-loggern kan man på ett enkelt sätt läsa av enskilda apparaters strömförbrukning.

Exempel:
Läs av den aktuella strömförbrukningen på LCDn.
Koppla in tex en frys.
Läs därefter av strömförbrukningen en gång till på LCDn.
Skillnaden mellan de olika värdena visar frysens strömförbrukning.
Nu kan man göra en bedömning om huruvida förbrukningen är rimlig eller ej.

Eller tex se hur mycket belysningen i garaget kostar.
I mitt fall kostar garagebelysningen ca 6000kr per år.
Nu när jag vet hur mycket belysningen kostar, släcker jag i garaget... :)


Här ligger en kort video som visar funktionen av energiloggern kopplad till en PC.
Bild



Jag har försökt att göra projektet enkelt och tydligt.
Källkoden till både PIC och PC är enkla att förstå för att kunna modifieras efter egna behov.
Koden till PICen är skriven i ProtonDevSuite dvs Picbasic.
Det finns en Lite version att ladda ner.

Under framtagning av koden till PICen har jag laddat ner den nya firmwaren till PICen via USB
med Tinypic bootloader. Hexfilen var till PIC18F2420, men funkade ändå.
Kortet har automatisk reset vid omprogrammering.
Koden är skriven för en elmätare med 1000 impulser/kWh, men den är enkel att anpassa till andra varianter.
För att hålla ner kostnaden under 200kr, använder jag Internal Oscillator 8Mhz.


PIC-källkoden:

Timer1 klockar över 4 gånger/sek, samt genererar en interrupt 4 gånger/sek.
När fotodioden jordar ner PortB.0 blir det en extern interrupt.
Nu räknas tiden ut mellan två blinkningar i millisekunder.
I main loopen i programmet räknas aktuell strömförbrukning ut, samt skickas till PC och LCD.


PC-källkoden:

Windowsmjukvaran är skriven i C# från microsoft. (endast 31 rader kod :) )
Bild
Det finns en gratisversion av Visual Studio att ladda ner.



Så här kan en loggfil se ut när den öppnas i Excel:
Bild
Här kan man se när tvättmaskinen startar centrifugering.


Källkod till windowsmjukvaran: (endast 31 rader kod :) )

Kod: Markera allt

    public partial class Form1 : Form
    {
        private string loggfile;

        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = textBox1.Text;
            serialPort1.Open();
            timer1.Enabled = true;
            timer1.Start();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (serialPort1.BytesToRead > 1)
            {
                string indata = serialPort1.ReadLine();
                label1.Text = indata;  
                loggfile = loggfile + indata+"\r\n";;
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            TextWriter tw = new StreamWriter("loggfile.txt");
            tw.Write(loggfile);
            tw.Close();
        }
    }
}
[/size]


Kretskortet:

När jag ritade schemat och designade kretskortet, la jag som bonus även till bla:
Dubbla PICar (en på undersidan av kretskortet, core2PIC :) )
MAX 232 (ingick i kittet från elfa.)
4 Lysdioder
4 knappar
Serie port
Dubbla USB kontakter. (en USB mini och en kretskorts kontakt.)
I2C minne (för tex loggning av mätdata)
Plats för kristall
On/Off knapp.
Plats för 3 typer av LCDer.
Plats för 9-pol d-sub för seriell anslutning.
Spännings regulator med LM317.
Automatisk reset vid omprogramering.
Strömförsörjning via USB.


Kretskortet kan även användas som ett generellt utvecklingskort för PIC processorer.
Kretskortet ansluts till PC via USB eller com-port.
Analog ingång 0 till 5 är utdragna till en list på kretskortet, så att man kan använda kortet som en USB spännings logger.


Här testas en DOG LCD.
(PICen är monterad på undersidan) Spänningsmatning sker via USB kontakten.
Bild



Att hålla kostnaden under 200kr för komponenter gick bra.
Här är alla komponenter som behövs för att loggern ska fungera:

Bild


Här finns alla filer som en zip fil:
Bild

Filen innehåller:
Kopplingsschema.
Kretskorts filer (PCB)
Källkod PIC
Källkod C#
Hex fil PIC
Hex fil Bootloader


Till slut lite fler bilder:

Bild
Bild
Bild
Låst