-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Projekt: Stromzähler optisch auslesen mit Leistungsmessung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.02.2004
    Beiträge
    14

    Projekt: Stromzähler optisch auslesen mit Leistungsmessung

    Anzeige

    Hallo zusammen,
    aktuell erfasse ich die Umdrehungen meines Stromzählers mit einem CNY 70 und einem 1-wire Zähler. Die Signalaufbereitung erolgt über einen OPV.

    Die Auswertung der Daten erfolgt über meinen Misterhouse-Server http://misterhouse.wikispaces.com/Th...A+Webinterface

    Leider macht mein Zähler nur 75U/kWh, somit ist die Auflösung der Leistungsmessung begrenzt. (Ich zähle die Impulse in 5 Minuten intervallen)


    Jetzt möchte ich einen anderen Ansatz versuchen. Anstatt die Impulse über einen festen Zeitraum zu erfassen, möchte ich die Messung der Leistung über die Zeit die die Zählerscheibe für eine Umdrehung benötigt, berechen.

    dadurch habe ich für jede Umdrehung einen aktuellen Messwert, und nicht wie im moment nur alle 5 Minuten.

    Die Berechnung geht über die Zählerkonstante mit der folgenden Formel:

    P=n*3600/t*Cz also vereinfacht 3600/t*Cz

    Beispiel:
    Zähler braucht für eine Umdrehung 40sek. Cz= 75 u/kWh

    3600/40*75= 1,2kW

    Damit habe ich die aktuelle Leistung berechnet, zusätzlich kann man den Zählerstand weiterzählen. Bei Jeder umdreheung kommen 0,013333 kWh hinzu.


    Das ganze soll über einen Atmel AVR gemacht werde, der sich um die Auswertung und die Übertragung der Daten (Funk, USB, LAN, etc.) zum PC kümmern soll.

    Jetzt muss ich nur noch rauskriegen wie ich die Impulslänge bei relativ langen impulsen mit Bascom ermittle...

    Ambesten über einen Timer mit Interrupt? Oder mit dem pulsein-Befehl, wobei der eher für kurze Impulse geeignet ist - oder?

    Deteils gibt es später, ich wollte erstmal das Projekt Vorstellen.


    Gruß,

    Thorsten


    [/code]

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Wie lang ist der Impuls bei maximaler Drehgeschwindigkeit (Maximalstrom des Zählers erreicht)? Ein Ansatz wäre, im Timer-Interrupt mit einem kürzeren Zeitabstand (etwa doppelt bis viermal so schnell) zu pollen, dabei eine der Flanken zu erkennen und dazwischen die Interrupts zu zählen. Man bräuchte für niedrige Leistungen natürlich ne recht große Variable und ein timeout für den Fall, dass der Zähler komplett stehenbleibt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.02.2004
    Beiträge
    14
    Naja, besonders schnell drehen die Scheiben sich ja nicht...

    Es kommt ja auf die Zählerkonstante an - bei mir ist die relativ niedrig mit 75.

    Es gibt aber auch Zähler mit höherer Konstante.

    Ich würde sagen der messbereich liegt irgenwo ziwschen 5sekunden und 2-3 minuten (wenn ganz wenig last drin ist...)

    Das mit dem timeout ist auch keine schlechte idee....

    Ich gehe mal davon aus das eine Auflösung von 1 Sekunde ausreichend ist

    Haben die AVR's nicht auch einen Timer der als RTC arbeitet?

    Jetzt habe ich ja das Signal von der Scheibe. Da muss ich mit einer Flankenerkennung arbeiten um die Länge des 0-Pegels (silber) zu messen.

    Ich glaube ich muss mir mal ein paar Bascom codeschnipsel zusammensuchen und mal was zusammenfrickeln.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    5 Sekunden für eine volle Umdrehung?
    Interessanter ist eigentlich die Länge des Impulses, denn daraus ergibt sich die nötige Abtastrate.

    Alternativ könnte man auch einen externen Interrupt benutzen. Dafür ist es aber wichtig, dass das Signal prellfrei ist. Wenn kein Umgebungslicht im Spiel ist, dürfte es wahrscheinlich ausreichen, den OP als Schmitt-Trigger mit Hysterese zu schalten.

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Soweit ich weiss ist die Pulsein Funktion nur für kurze Zeiten geeigent, denn der µC wartet die ganze Zeit, macht also nichts zwischendurch.

    Die AVRs haben Timer, aber die gehen oft nicht so langsam. Ein Vorteiler von 1024 ist oft da Maximum. Die Methode der Wahl wäre damit wohl ein Software Timer der in einem Interrupt (vom Timer) alle etwa 10 ms hochgezählt wird und dabei den Eingang Testet.
    Wenn nötig kann man da auch Störungen noch abfangen, ggf. auch die Lichtschranke per AD Wandler einlesen, um von der Einstellung der Empfindlicheit los zu kommen.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    12.02.2004
    Beiträge
    14
    Ich erfasse ja die Zeit die die Scheibe für eine Umdrehung benötigt.

    Dazu möchte ich auf die flanke beim Übergang von Rot -> Silber triggern und die zeit bis zum nächsten Übergang Rot->SIlber messen.

    Als Sensor habe ich mir diese Schaltung von ELV ausgewählt http://www.elv.de/output/controller....ereich=&marke= die hat den vorteil der unempfindlichkeit gegen Fremdlicht und man kann Empfindlichkeit und Impulsdauer am Ashang einstellen.

    Mit meiner jetzigen schaltung bin ich nicht 100% zufrieden...

    Ursprünglich hatte ich vor die Funktionalität dieser PLL-Schaltung in Software nachzubauen, aber das schein zu kompliziert zu sein.


    Zur Auswertung schwebt mir sowas wie dieses Programm von Roland Walter vor (listing ganz unten):
    http://www.rowalt.de/mc/index.htm

    Code:
    '0014.BAS:  InputCapture mit Timer1 (2) (Frequenzzähler)
    'Hardware:  MAX232 an PD0/PD1
    '           Nullmodemkabel zum PC
    '           Pin ICP/PD6 an RTS
    '--------------------------------------
    $Regfile = "2313def.dat"
    $Crystal = 3686400  '3,6864MHz-Quarz
    $Baud    = 115200   'Hohe Baudrate
    
    Dim lCount As Word At &H60
    Dim wCountLo As Word At &H60 Overlay
    Dim wCountHi As Word At &H62 Overlay
    
    On ICP1 OnCapture   'Interrupt-Routine
    On OVF1 OnOverflow  'Interrupt-Routine
    
    Config Timer1=Timer,Prescale=1,Capture Edge=Rising
    
    Enable ICP1         'Capture-Interrupt
    Enable OVF1         'Overflow-Interrupt
    Enable Interrupts   'Interrupts global
    
    Main:               'Hauptschleife
    Goto Main
    '--------------------------------------
    OnCapture:          'Timer1-Capture
      wCountLo = Timer1 'Erst Wert sichern
      Timer1 = 0        'Sofort Timer-Reset
      Print lCount;" ";
      wCountHi = 0
    Return
    '--------------------------------------
    OnOverflow:
      Incr wCountHi    'lCount=lCount+65536
    Return
    Dann müssten noch zwei Zähler für den Gas- und Wasserverbrauvh eingebaut werden.


    Zur Datenübertragung werde ich vermutlich einen X-port auf LAN einsetzen, oder ein Datenfunkmodul (wenn ich ein Preiswertes finde...)


    Ich fang das Basteln mal an, habe mein STK500 schon angewärmt.

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Modulation der Lichtschranke durch den µC zu machen ist eigentlich keine Schlechte Idee, und auch nicht so kompliziert. Einen PLL in Software braucht man dazu auch gar nicht. Es genügt eine Modulation der LED und ein einlesen des Signals vom Fototransistor über den AD wandler.
    Jeweils Abwechslend für 1 oder 2 Wandlungen die LED einschalten und dann die Differenz der werte des AD wandlers messen. Für mehr unterdrückung ggf. noch die hauptsächliche Störfrequenz von 100 Hzachten.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    12.02.2004
    Beiträge
    14
    @Besserwessi:

    Mhhh, das hört sich interressant an... Leider sind meine µC-kenntnisse etwas eingerostet, habe seit meinem Techniker-Projekt 2006 nichts mehr mit AVR's gemacht..

    Also ich lasse einen Timer laufen der die LED mit ich sag mal 1-2 kHz pulst.
    Und wenn led = an mache ich eine Messung mit dem ADC? Oder wie muss ich mir das Vorstellen?

    Ich möchte ja verhindern das der Empfänger von Fremdlicht beeinflusst wird.

    Den ADC-Wert dann vergleichen mit einem Schwellwert und dann mit der Stoppuhr die Pulslänge messen.

    Mann kann doch den Analogkomperator auch auf den Interrupt schalten wenn mich nicht alles täuscht... fragt sich nur wie.

    Mhhh langsam habe ich wieder blut geleckt

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    12.02.2004
    Beiträge
    14
    So - ich habe mal ein Blockschaltbild erstellt wie es mal werden soll.

    Beim Stromzähler werde ich wohl die Signalaufbereitung extern machen, ich habe noch keine Zündende Idee das in Software umzusetzen.

    Die Beiden anderen Eingänge sind einfache Reedkontakte angeschlossen, bzw. OC-Ausgänge (evtl. beim Wasserzähler)

    Das LCD soll die Zählerstände und die momentane Leistungsaufnahme beim Strom anzeigen.

    Aber erstmal werde ich mich mit der Zeitmessung beschäftigen.

    Die Zähler für die anderen eingänge sind ja eher einfach zu machen. Die Laufen in der Hauptschleife dafür möchte ich keine Timer opfern, das sollte ausreichen.

    Ein erster test mit dem STK500 war vielversprechend - ich muss erstmal den Code für die Zeitmessung "entwickeln".

    Mein thread wurde anscheinend Verschobe, sorry für das falsche Unterforum.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken blockschaltbild_energiez_hler.jpg  

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Beim Stromzähler werde ich wohl die Signalaufbereitung extern machen, ich habe noch keine Zündende Idee das in Software umzusetzen.
    Eine Lösungsmöglichkeit wäre der Einsatz eines zweiten CNY 70, der neben den anderen montiert wird. Wenn Du die Differenz zwischen beiden Ausgangsspannungen verwertest, könntest Du den Farbenwechsel auch bei sehr unterschiedlich hellem Fremdlicht detektieren.

    Dazu würde sich z.B. der Analog-Komparator anbieten, der die Spannungen zweier Eingangspins vergleicht und bei einem entsprechenden Unterschied einen Interrupt (!!!) auslösen kann.

    Oder Du verwendest das Signal des "hinteren" CNY70 als externe Referenzspannung für den AD-Wandler. Dann hättest Du bei Silber/Silber einen stabilen Wert von 1023, bei Rot/Silber aber einen definitiv niedrigeren Wert.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •