[Tutorial] analoge Strom- Gas- und Wasserzähler auslesen und Daten auswerten

  • Hallo Hofei. Hm. Ja, das ist ein wunder Punkt. Aber in der Anleitung zur bcm2835 (Link siehe oben) ist auch kein Hinweis zu finden. Man könnte aber annehmen, dass es beim Raspi4 genauso geht wie beim Raspi2 und 3. Da ich keinen zum Testen habe, gilt hier: Ausprobieren. Dieses Zählerprojekt funktioniert aber einwandfrei mit einem RaspI 1B+ . Also ist es auch gut, um ältere und schwächere, dafür aber Strom-sparsamere Pi's noch zu verwenden. Dennoch: Ein wenig Experimentierfreude ist bei diesem Projekt schon nötig. Aber wer sowas nachbauen will, der hat die ja in der Regel. Ich gehe davon aus, dass sich alle Probleme irgendwie lösen lassen.

  • Hallo, danke für die Anleitung. Ich hab Informatik aber nahezu keinen Elektronikhintergrund, darum gefiel mir dein Ansatz irgend ein Signal zu bekommen, welches dann per Software verarbeitet wird. ich habe Probleme beim Auslegen des Kondensators und der LED Lichtquelle. Die Entladung des Kondensators (100nF) benötigt bei Zimmerhelligkeit in der Größenordnung von 300ms zum Entladen; Im Dunkel des Sicherungskasten braucht ein Tastzyklus mehrere Sekunden -- viel zu lang um in sinnvoller Frequenz die Helligkeit abzutasten. Kann ich daran was ändern ohne eine andere lichtstärkere LED zu kaufen?

  • Ja. Du könntest einfach einen kleineren Kondensator verwenden. z.B. 50nF oder 20nF. Dann entläd der sich schneller. Allerdings sind Millisekunden schon recht lange. Da hat der Raspberry Pi wohl einen sehr hohen Innenwiderstand. Welche Version des Pis ist es denn?

    Wenn es nur daran liegt, dann kannst Du du einen echten 50kOhm Widerstand einbauen, so wie im Schaltplan. Aber ich fürchte , dann unterscheiden sich die Zeiten für Hell und Dunkel nicht mehr so gut. ALso würde ich dann den Phototransistor / Photodiode gegen einen anderen tauschen.

  • Hallo zusammen,


    vielen Dank für die Anleitung. Ich möchte mit meinem Raspberry 4 meinen Gaszähler auslesen, habe aber bislang keine Kenntnisse über Raspberry, Linux oder C. Ich habe es geschafft, die Quelldateien zu kompilieren, so dass im Verzeichnis gaszaehler/src eine Datei "gaszaehler" liegt (auch wenn ein paar Warnmeldungen wegen write/fwrite erschienen sind). Wenn ich diese mit ./gaszaehler starten will, erscheint eine Fehlermeldung:


    pi@raspberrypi:~/gaszaehler/src $ ./gaszaehler

    open() failed.

    Segmentation fault


    Was kann ich da machen? Kann das daran liegen, dass ich beim Raspberry 4 #define ST_BASE (0x3f003000) angegeben habe und das nicht stimmt?



    Dankeschön!


    EDIT: Ich bin etwas weitergekommen. Der Debugger sagt folgendes:

    Code
    main (argc=1, argv=0xbefff654) at gaszaehler.c:71
    (gdb) print st
    $1 = -4683755824282101576
    (gdb) print ot
    $2 = 400431460093984
    (gdb) print timer
    $3 = (long long *) 0x0

    Zeile 71:

    Code
      st=ot=*timer;

    Edited 4 times, last by toom ().

  • Hallo toom,

    aus der Fehlermeldung würde ich eher ein permission error rauslesen, aber das mit der Timer-Adresse kann natuerlich auch sein.


    Hast Du gaszaehler mit "sudo" gestartet?


    Probier mal, ob /dev/mem vorhanden ist und lesbar für den user pi. Wenn nicht lesbar, dann muss gaszaehler mit sudo gestartet werden.


    bei mir:

    Code
    crw-r----- 1 root kmem 1, 1 Jul 21  2021 /dev/mem


    Ich starte den gaszaehler mit:


    Code
    screen -m -d sudo /home/pi/gaszaehler/src/gaszaehler
  • Dankeschön. Ich wollte gerade noch schreiben, dass die erste if-Abfrage in timer.c greift. Natürlich nicht mit sudo gestartet... *seufz* naja, jetzt weiß ich wenigstens, was gdb ist... ;)


    Jetzt bekomme ich keine Fehlermeldung mehr. Ich werde mir jetzt einen Reed-Kontakt und Widerstand besorgen (habe erstmal probiert, ob ich das mit der Software hinbekomme) und mal schauen, ob es funktioniert. Anscheinend muss der GPIO Offset für den Timer noch geändert werden.