ONE WIRE BUS

Es gibt 6 Antworten in diesem Thema, welches 4.811 mal aufgerufen wurde. Der letzte Beitrag () ist von Gerrit.

  • es geht um probleme bei mehreren 1-wire sensoren an einem bus:


    mit der Arduino 1-Wire library (kann man auf der arduino seite downloaden) kann man
    den bus nach sensoren 'absuchen'.
    wie das mit .NET funktioniert kann ich leider nicht sagen, aber scheinbar gibt es viel mehr bibliotheken für c (wird halt länger unterstützt).


    dabei werden alle sensoren entsprechend ihrer seriennummer(aufsteigend) gefunden.


    das stellt leider ein problem dar, denn 'entsprechend ihrer seriennummer' hat nichts mit der tatsächlichen reihenfolge der anschlüsse auf dem bus zu tun.


    beispiel:
    3 heizungspuffer, ein bus mit 9 sensoren.


    reihenfolge der anschlüsse: P1Oben, P2Oben, P3Oben,
    P1Mitte, P2Mitte, P3Mitte,
    P1Unten, P2Unten, P3Unten


    reihenfolge der sensoren-seriennummern enstprechend der anschlüsse:
    3, 2, 5,
    4, 6, 9,
    7, 8, 1


    erkannt werden die sensoren aber eigentlich so 1,2,3,4,5,6,7,8,9.



    besser wäre ein funktion, die sensoren entsprechend ihres anschlusses auf dem bus findet, aber das funktioniert leider garnicht.
    warum? auf der folgenden info seite sieht man, das es unterschiedliche möglichkeiten gibt, einen bus aufzubauen ...


    http://shop.wiregate.de/1-wire-bus


    wie soll man das also lösen?


    zum beispiel so:
    bei der montage schliesst man die sensoren der reihe nach an und speichert die seriennummer - dann hat man die richtige reihenfolge mit der passenden seriennummer.
    dafür braucht man natürlich eine funktion, die den bus absucht, während man alles montiert - nicht weiter schwierig, wenn man sich die beispiele anschaut.


    alternativ ermittelt man vorher die seriennummern und beschriftet die sensoren - gernerell eine gute idee.
    dann kann man sich einen anschluss plan erstellen und den vor oder während der montage ausfüllen - auch hilfreich, wenn nach 2 jahren ein sensor gewechselt werden muss und man nicht gleich weiss wo der denn nun verbaut ist.



    will man nun die sensoren abfragen, spricht man jeden sensor (entsprechende funktion aufrufen) via seriennummer gezielt an.
    abgefragt wird z.B. nach folgender reihenfolge 3,2,5,4,5,9,7,8,1.


    das alles führt aber zu weiteren problemen:
    fällt ein sensor aus reicht es leider nicht, einfach den sensor durch einen neuen zu ersetzen, man muss ebenfalls die änderung dem programm 'mitteilen'.


    beispiel:
    oben war die situation folgende
    reihenfolge der sensor-seriennummer: 3, 2, 5,
    4, 6, 9,
    7, 8, 1


    erkannt werden die sensoren aber 1,2,3,4,5,6,7,8,9.


    tauscht man nun den sensor mit der nummer 5 gegen einen mit seriennummer 34 ändert sich das beispiel folgendermassen
    reihenfolge der sensor-seriennummer enstprechend der anschlüsse:
    3, 2, 34,
    4, 6, 9,
    7, 8, 1


    erkannt werden die sensoren aber 1,2,3,4,6,7,8,9,34


    die seriennummer ist weltweit einmalig für jeden sensor!


    tip: hat man die seriennummern auf SD-Karte gespeichert und liest die seriennummern bei arduino-aktivierung ein, kann man die daten in der datei ändern und braucht nur neu zu starten.


    der arbeitsspeicher des arduino ist relativ stark begrenzt - hat man viele sensoren angeschlossen und möchte deren werte protokollieren KANN es passieren, das der speicher zu klein wird, vor allem wenn man die seriennummern im speicher hält und nur die werte speichert bzw noch andere berechnungen damit anstellt.


    liest man dagegen die seriennummern jedesmal auf's neue ein, macht das die sache insgesamt nicht schneller.


    man muss also abwägen, wieviel sensoren an einem bus nötig sind bzw. wie schnell das alles laufen soll und damit rechnen, dass wenn man ein problem gelöst hat, ein neues auftreten KANN - aber es lohnt sich.



    tip: ich werde für mein projekt mehrere arduino benutzen und diese per netzwerk ( http://www.komputer.de/zen/ind…o&cPath=22&products_id=76 ) von einem pandaboard aus steuern.


    weil das pandaboard einem 'pc' schon sehr nahe kommt, kann ich dort entweder fertige produkte installieren(windows, linux, android) oder in der von mir bevorzugten programmiersprache (c, c++, .NET, php, java usw.) eigene lösungen entwickeln(lassen) und arbeitsspeicher ist auch genug vorhanden.


    weiterer vorteil - ich kann im gegensatz zum arduino für die datenverarbeitung eine datenbank installieren, die ist schneller als die SD-Karten lösung und lässt sich leichter per eingabemaske(weiterer programmteil) editieren.


    gruss
    mattes

  • Zum Thema one-wire / .net Micro Framework: Wie gesagt läuft die µC Anwendung auf dem Netduino in einer Art Sandbox. Das Multithreading und die Reservierung und Freigabe von Ressourcen macht das Framework, man hat keinen direkten Zugriff auf die Register und Timer. Auch Interrupts können verzögert werden - und genau diese Latenzen sorgen dafür, dass sich die one-wire Geschichte weghängt. Ich habe es selbst nicht ausprobiert, aber im Netz ist von 1...3ms(!!!) die Rede. Der Vergleich .net Framework vs. Mikrocontroller verhält sich also ähnlich wie ein Windows PC zum Echtzeitrechner.


    Das Problem ist also nicht die Programmiersprache, sondern die Schicht, die das .net Framework zwischen der Hardware und dem Programm bildet.



    Gruß
    Gerrit

    HVS40E mit Martins 12-Loch-Düse
    AK3000
    Lambdaregelung mittels Arduino Mega 2560 (3,2" Touch-Display)
    LSU 4.2 mit Knödler-Interface
    Luftverteilung per Kulisse und Belimo
    4000l Puffer





    "Don't mess with idiots. They drag you down to their level and beat you with experience."

  • Hallo,
    ...nur aus historischem Interesse ein alter Link auf dem HTD-Forum (2008/9)
    http://www.haustechnikdialog.d…mit-kleinem-Linux-Rechner
    Mit ein Grund, warum ich 1-wire später nie mehr angeschaut habe.
    mfG Max

    HVS25LC / 3100l Puffer / 300l WW / 10m²SolarFK
    UVR1611 / Fubo ca. 180m² / Wahei 16m²
    Eigenbau Keramikventuridüse mit SekLuft-Spalt
    als Kesselsteuerung anstatt AK3000:
    UVR1611E NM/DE + CMI + MTX-Lambdamodul + LSU4.2

  • Hallo,
    ...nur aus historischem Interesse ein alter Link auf dem HTD-Forum (2008/9)
    http://www.haustechnikdialog.d…mit-kleinem-Linux-Rechner
    Mit ein Grund, warum ich 1-wire später nie mehr angeschaut habe.
    mfG Max


    Hmmm...der Thread ist 5 Seiten lang. Was war jetzt der Grund?

    HVS40E mit Martins 12-Loch-Düse
    AK3000
    Lambdaregelung mittels Arduino Mega 2560 (3,2" Touch-Display)
    LSU 4.2 mit Knödler-Interface
    Luftverteilung per Kulisse und Belimo
    4000l Puffer





    "Don't mess with idiots. They drag you down to their level and beat you with experience."

  • Hallo Gerrit,
    ...naja, weil die Jungs z.B. über 5 Seiten mit Dallas, 1-wire und Linux rumdoktern.
    Mir sind dann letztendlich die Füsse eingeschlafen.
    "Wer die Vergangenheit nicht beherzigt, ist dazu verdammt, sie zu wiederholen."
    mfG Max

    HVS25LC / 3100l Puffer / 300l WW / 10m²SolarFK
    UVR1611 / Fubo ca. 180m² / Wahei 16m²
    Eigenbau Keramikventuridüse mit SekLuft-Spalt
    als Kesselsteuerung anstatt AK3000:
    UVR1611E NM/DE + CMI + MTX-Lambdamodul + LSU4.2

  • Ich kann dich verstehen, freizeit ist ein knappes gut und wenn man viel davon investieren muss um den nötigen kentnisstand zu erreichen ...

  • Heute auf COM4:


    Scanning Bus for DS18X20
    9 DS18X20 Sensor(s) available:
    # in Bus :1 : FC:28 (18B)SN: CB BD C0 03 00 00 CRC:07 CRC O.K.
    # in Bus :2 : FC:28 (18B)SN: 29 8C C0 03 00 00 CRC:09 CRC O.K.
    # in Bus :3 : FC:28 (18B)SN: D1 B8 C0 03 00 00 CRC:41 CRC O.K.
    # in Bus :4 : FC:28 (18B)SN: F6 B7 C0 03 00 00 CRC:1D CRC O.K.
    # in Bus :5 : FC:28 (18B)SN: 1A 98 C0 03 00 00 CRC:DE CRC O.K.
    # in Bus :6 : FC:28 (18B)SN: 2A 72 C0 03 00 00 CRC:54 CRC O.K.
    # in Bus :7 : FC:28 (18B)SN: 8A 93 C0 03 00 00 CRC:1F CRC O.K.
    # in Bus :8 : FC:28 (18B)SN: 12 77 C0 03 00 00 CRC:CA CRC O.K.
    # in Bus :9 : FC:28 (18B)SN: 64 9D C0 03 00 00 CRC:87 CRC O.K.


    :woohoo:


    Ich habe mich dort bedient. Sehr gut dokumentiert, fetter Funktionsumfang, einfach anzuwenden.

    HVS40E mit Martins 12-Loch-Düse
    AK3000
    Lambdaregelung mittels Arduino Mega 2560 (3,2" Touch-Display)
    LSU 4.2 mit Knödler-Interface
    Luftverteilung per Kulisse und Belimo
    4000l Puffer





    "Don't mess with idiots. They drag you down to their level and beat you with experience."

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!