- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 4 von 4

Thema: monitoring/sniffing einer SDI-12-Kommunikation

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.669
    Ich habe nachgedacht was wir tun können, um die Signale vom SDI Bus abzugreifen ohne Störungen zu verursachen und eine Anpassung an die Versorgungsspannung des Arduino zu erreichen. Es ist eine alternative und robuste Failsafe-Lösung, aufgebaut aus sehr günstigen diskreten Bauteilen.

    Klicke auf die Grafik für eine größere Ansicht

Name:	Bild1.jpg
Hits:	3
Größe:	30,7 KB
ID:	36089

    Sie gewährleistet, dass der Arduino-Mikrocontroller nicht beschädigt wird und die SDI-12-Buskommunikation nicht gestört wird, selbst wenn ein Fehler in der Software auftritt.

    Der SDI-12-Bus arbeitet mit 1200 Baud und verwendet eine Spannung von etwa 6V. Um dies mit einem Arduino zu überwachen, muss das Signal ohne Last auf dem Bus gelesen werden.
    Der 470 kΩ Widerstand (R3) an der Basis des BC547B-Transistors ist der Schlüssel dazu. Er begrenzt den Stromfluss vom SDI-12-Bus auf nur etwa 11 µA.
    Diese winzige Stromaufnahme stellt sicher, dass die Schaltung den Bus nicht stört und seine Kommunikation nicht beeinträchtigt.


    Der Transistor Q1 (BC547B) wandelt die Spannung um und invertiert dabei das Signal:
    Das invertierte Signal ist für den Arduino perfekt lesbar und kann mit einem einfachen Softwarebefehl (!digitalRead()) korrigiert werden.
    SDI-12-Signal ist HIGH (ca. 6V): Der Strom fließt durch R3 in die Basis des Transistors. Der Transistor schaltet durch und zieht den Kollektor auf 0V (LOW).
    SDI-12-Signal ist LOW (0V): Es fließt kein Basisstrom. Der Transistor sperrt und der Kollektor wird über den 4,7 kΩ Pull-up-Widerstand (R1) auf 5V (HIGH) gezogen.


    Widerstandsdimensionierung

    Der beste Wahl wird erreicht wenn R1 möglichst klein (nicht unter 1kOhm) und R2 möglichst groß ist (nicht größer als 1MOhm). Folgend einige Kombinationen (je nach verfügbaren Widerstandswerten, Kohleschicht oder Metallfilm).

    R1 (Pullup) R2 (Pulldown)
    1k 100k
    2.2k 100k
    4.7k 100k
    1k 470k
    2.2k 470k
    4.7k 470k
    1k 1M (Megaohm)
    2.2k 1M
    4.7k 1M


    1) Wenn der Arduino-Pin immer und garantiert als Eingang (INPUT) konfiguriert ist, kannst die Diode (D1) und der Pulldown-Widerstand (R2) weggelassen werden.
    Die Schaltung funktioniert dann im Normalfall genauso gut, wird aber einfacher und effizienter. Die Schaltung ist dann minimalistischer, verbraucht weniger Strom und ist noch einfacher aufzubauen.

    2) Die Diode (D1) und der Pulldown-Widerstand (R2) wurden in die Schaltung als Schutzschicht eingebaut. Die Schaltung ist extrem robust und fehlertolerant. Selbst ein Softwarefehler, der den Pin in einen Ausgang verwandelt, führt nicht zur Zerstörung des Arduinos oder zur Störung des SDI-12-Busses.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Bild1.jpg  
    Geändert von Moppi (Heute um 14:54 Uhr)
    Mit freundlichem Gruß
    Moppi

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 29.03.2017, 18:28
  2. Unterschied zwischen Sensorik(in der Technik) und Sensor-Monitoring?
    Von Kpanzou Bishop im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 16.01.2015, 13:49
  3. Handy Kommunikation atmega128 Kommunikation auswerten
    Von bastian07 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 26.04.2009, 17:58
  4. setzen einer Variable nach ablauf einer bestimmten Zeit
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 07.12.2008, 23:45
  5. Antworten: 4
    Letzter Beitrag: 25.01.2008, 21:03

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests