[gelöst] Stromzähler mit IR-Phototransistor an optischer Schnittstelle auslesen

Hi,

ich habe einen Stromzähler der Serie LK11 von Logatrex. Dieser verfügt über eine Schnittstelle, die über IR, 9600 baud, kleine Datentelegramme sendet, die aktuelle Daten zu Gesamtverbrauch etc. bereitstellen.

Mit einem IR-Lesekopf wie von Volkszaehler wollte ich diese Daten auslesen. Leider gelingt mir nicht, auch nur irgendeine Ausgabe zu generieren.

Ich benutze einen Arduino Uno, einen Phototransistor OSRAM SFH 309 FA und einen 1k Widerstand. Die aktuelle Schaltung stammt von hier, siehe Screenshot im Anhang mit meinen "Anpassungen".

Der Code stammt ebenfalls aus dem anderen Thread:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(4, 3, true); // RX, TX

void setup()
{
  pinMode(4, INPUT);
  Serial.begin(9600);
  Serial.println("starting...");
  mySerial.begin(9600);
}

void loop()
{
  if (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
}

Wie gesagt, wenn ich nun das alles so verbinde und den Transistor vor der IR-Schnittstelle am Stromzähler anbringe, passiert gar nichts. In meiner Verzweiflung hab ich dann mal das eingehende Signal von Pin 4 auf Analog3 umgesteckt und siehe da, nahezu jede Sekunde kommt ein Häufchen von Signalen an. Diese sind entweder 0 oder 57 (also entsprechend weit von 1023 entfernt) - siehe Screenshot.
Heißt das, dass ich einfach nur den gewählten Widerstand von 1k tauschen muss, und wenn ja - welcher ist der richtige? Oder was muss gemacht werden, dass in dieser Konstruktion das Signal digital richtig interpretiert werden kann?
Danke und viele Grüße
Micha

Hallo
Deine Angaben:

Dieser verfügt über eine Schnittstelle, die über IR, 9600 baud, kleine Datentelegramme sendet, die aktuelle Daten zu Gesamtverbrauch etc. bereitstellen.

stimmen nicht mit den Einstellungen im Sketch

 mySerial.begin(2400);

überein.

Sorry, das ist im Zuge des Kopierens falsch gewesen. Ich hatte es beim Testen auf 9600 geändert und es hat genauso wenig funktioniert. Ich hab es im Original-Post geändert.

Hallo
zeige mal was du über den Arduino empfängst

Im deinem Verweis auf Volkszaehler wird der Widerstand als Pullup genutzt und du nutzt ihn als Pulldown.

Scherheinz:
Im deinem Verweis auf Volkszaehler wird der Widerstand als Pullup genutzt und du nutzt ihn als Pulldown.

Das sollte für den Signalpegel erstmal zweitrangig sein.
57 statt 1023 ist aber deutlich zu wenig. Da würde ich sehen wollen, was bei 10k statt 1k passiert, und dann wohl auf 20k gehen.

Serielle Signale sind in Ruhe HIGH. Also wenn das Analogsignal passt (also auch digital gelesen werden kann), Widerstand und Phototransistor tauschen (pullup).

Das ist richtig, zumal er hier mit 5V arbeitet und in seinem Link geht es um 3,3V am Raspberry.

michael_x:
Das sollte für den Signalpegel erstmal zweitrangig sein.
57 statt 1023 ist aber deutlich zu wenig. Da würde ich sehen wollen, was bei 10k statt 1k passiert, und dann wohl auf 20k gehen.

Serielle Signale sind in Ruhe HIGH. Also wenn das Analogsignal passt (also auch digital gelesen werden kann), Widerstand und Phototransistor tauschen (pullup).

Super! Ich hab erst 10k getestet und analog kam dann irgendwie noch weniger an (13 oder so), mit nem 22k Widerstand hatte ich aber dann Werte die klar zwischen 1000+ und 0 hin- und hersprangen.
Mit dem oben gezeigten Testcode hat es dann an Pin 4 auch auf Anhieb geklappt und ich hab alle Werte auslesen können. Vielen Dank dir!

Da es ja nun klappt: Ist der Tausch auf pullup hinfällig oder birgt das weitere Vorteile?

michaelmueller:
Da es ja nun klappt: Ist der Tausch auf pullup hinfällig oder birgt das weitere Vorteile?

Es birgt Vorteile.
Kein Signal: alles irgendwo zwischen x und y
Signal: 0
Das lässt sich dann auch digital auswerten. 0==LOW alles andere ==HIGH

Noch ne Bitte:
Im ersten Post den Betreff mit einem [gelöst] ergänzen - für die Nachwelt :wink:

Ist der Tausch auf pullup hinfällig

Der dreht den Signalpegel um.
Ruhe = Stopbit sollte vermutlich kein Licht = HIGH bedeuten.

Aber wenn du so die erwartete serielle Nachricht mit read() kriegst, ist alles gut.

Vielen Dank für eure Hilfe!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.