-         

Ergebnis 1 bis 8 von 8

Thema: digitale schieblehre auslesen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2007
    Beiträge
    11

    digitale schieblehre auslesen

    Anzeige

    Hallöchen,

    hab mir für die winterferien ein kleines Projekt ausgedacht und bräuchte da mal ein kleines bisschen Hilfe von euch.
    Ich will mir für meine Drehmaschine ne Digitalanzeige bauen. Weil Glas und Kohlemessysteme mir zu teuer sind hab ich gedacht ich nehme diese 10€ Baumarkt digital Schieblehren.
    Die haben ja einen Anschluss hinten drann damit man sie auslesen kann.
    nach ein bissl gegoogle hab ich die Protokolle rausgefunden.
    Es gibt zwei:
    7BCD: die einzelnen Dezimalstellen werden als BCD Zahl gesendet
    Sylvac: es werden zwei Packete a 24Bit gesendet. Das zweite packet enthält die relevanten Daten.
    Hier ein Timingdiagramm
    Ich denke, dass meine Schieblehren das Sylvac Protokoll haben da es häufiger ist. Hab auch kein Oszi zum nachschaun.

    Mein Problem ist jetz ich weiß nciht wie ich das ganze auslesen soll. Ich dachte da an den Befehl shiftin.
    Aber wann weiß ich dass ein Packet anfängt?
    Sonst fange ich ja an mitten drinn daten in die variable zu schreiben die dann aus zwei Packeten stammen könnten. Und genau die Pausen zwischen den Packeten zu treffen ist ja fast unmögich.[/img]

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Das ist ein einfaches serielles Protokoll - per UART kein Problem.
    Das hier ist neu (glaube ich), hatte ich bisher nicht gesehen: http://www.roehrenkramladen.de/DRO/P...e_MAS_V1_0.htm

    Den seriellen Port haben sogar ALLE Schieber! Meinem habe ich einen nachgerüstet

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Wenn du was fertiges suchst, kannst du bei ELV nach SLA 1 suchen.
    http://www.elv.de/output/controller....ereich=&marke=

    Gruß
    Gruß RePi!


    *** Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. ***
    *** (Albert Einstein) ***

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2007
    Beiträge
    11
    @ stefan

    Wie denn per UART?
    Der röhrenkramladen typ hat es auch mit shift in gemacht. Verstehe aber nciht wie er erkennt dass ein packet anfängt und er einlesen kann. Wenn man eins erkannt hat kann man ja abzählen wann ein neues anfängt.


    @repi

    wollte schon selber bauen dann hab ich was zu tun. Außerdem ist das ding ein bissl klein. Muss während der Arbeit gut ablesbar sein.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2007
    Beiträge
    11
    Habe noch ein Diagramm gefunden klick
    Könnte man nicht die Zeit zwischen den Tacktimpulsen messen? Also wenn Zwischen den impulsen mehr als 10ms vergangen sind dann kann ich auf das nächste packet warten und auslesen?

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Also es wird ein Clock-Signal geliefert - somit musst du den Takt nicht selber rausfinden, der entspricht logischerweise der Clock!
    Habe meine mal angeschlossen gehabt (einfach per MAX232 an den PC) und es kamen Daten.
    Allerdings müssen die Pausen erkannt werden ume eine anständige Auswertung zu machen, da hast du Recht.
    Die UART kann einen Reset erkennen, wie sich das mit den Pausen mitten im Paket verhällt weiß ich nicht.

    Shiftin ist nix anderes als den Zustand eines Pins in Abhängigkeit einer vorhandenen (oder selber generierten) Clock einzulesen.
    Im Prinzip gehst du hin und fragst immer wieder den Clockpin ab. Wenn der sich ändert, dann greifst du dir den Datapin und speicherst seinen Zustand in das erste Bit der Ausgabe-Variable.
    Dann Clock prüfen bis der umgekehrte Zustand eintritt, wieder Data abfragen, usw.

    Wenn Clock jetzt nicht nach der erwarteten Zeit wechselt, dann gehst du erstmal von der Startpause aus und merkst dir das.
    Falls die Pause noch länger ist, dann handelt es sich entweder um die End-Pause, oder es ist die Mittelpause. In den beiden letzten Fällen verwirfst du also erstmal eventuelle Daten.
    Hast du die Start-Pause und es kommt ein normales Signal hinterher speicherst du das, erkennst die Mittelpause, nimmst den 2. Block Daten und erkennst das Ende, fertig.

    Dann Daten verwursten, ausgeben und wieder von vorne.

    Oder du entkernst dir das Listing aus meinem Link um nur die reine Ausleserei übrig zu behalten - und baust darauf dann dein eigenes Programm auf.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2007
    Beiträge
    11
    Ich denke ich hab jezt den groben programmablauf im kopf.
    Mit dem externen interrupt erkenne ich eine ansteigende clock flanke. Dann warte ich ab ob wie lange die Zeit zwishcen den einzelnen flanken ist. Wenn ich einmal die pause gefunden hab merke ich mir das und gehe aus der ISR. Beim nächsten mal kann dann gleich ausgelesen werden. Jetzt stellt sich mit nur die Frage ob die Zeit zwischenansteigender Flanke(bei der der Interrupt auslöst) uund fallender Flanke(bei der ich auslese) nicht zu kurz ist. Weil es dauert ja bissl bis das auslesen anfangen kann....obwohl bit 0 - 3 werden glaube ich soweiso gelöscht.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    "Serial data at 10 to 16 kHz with 1 stop bit, 1 start bit, 1 parity bit (odd)"

    8MHz interner Oszi wäre also schon 500x schneller.. Sollte machbar sein

Berechtigungen

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