Eigenprojekt für eine Geschwindigkeitsanzeige

  • Hallo...


    Für mein Hobby ist die Geschwindigkeit des Bowlingballes wichtig.
    Ich brauch einen Denkanstoß für die Auswertung der Geschwindigkeit.
    Der Ball soll durch zwei Lichtschranken (bereits vorhanden mit potentialfreien Kontakten) rollen. Die Zeitdifferenz will ich mir in "km/h" auf einer großen LED Anzeige ausgeben lassen.
    Leider habe ich gerade keine Idee wie ich die Auswertung machen könnte. Vielleicht habt Ihr eine Idee die mir weiterhelfen könnte.

  • Abstand der Lichtschranken genau ausmessen, z.B. 1 Meter. Ich kenne nicht
    die "üblichen" Geschwindigkeiten einer Bowlingkugel, aber ein paar Millisekunden
    sollte zwischen beiden Impulsen liegen.
    Was sind "potentialfreie Kontakte"? Mechanische Kontakte sind zu langsam,
    verzerren evtl. bei kleinem Abstand der beiden Lichtschranken das Ergebnis;
    besser ist Optokoppler-Ausgang, und Lichtschranken, deren Ansprechverhalten
    bekannt und definiert ist.
    Beliebigen 8-Bit-Mikrokontroller (ausser Microchip!) nehmen, mit Quarz genau
    takten. Die beiden Lichtschranken jeweils auf einen Interruptfähigen Eingang
    legen. Internen Timer aufsetzen, und Zeit zwischen den beiden Impulsen messen,
    Geschwindigkeit ergibt sich durch Kehrwert. Achtung, evtl. Timerüberlauf bei
    langsamer Kugel abfangen.
    Bei der LED-Anzeige entweder jedes Segment einzeln ansteuern (sind aber 21
    Leitungen bei drei Stellen), oder multiplexen (10 Leitungen bei drei Stellen);
    falls multiplext die Frequenz oberhalb der Trägheit des menschlischen Auges
    wählen, z.B. 100Hz. Umrechnung Zahlenwert in 7-Segment-Wert als kleine
    Tabelle anlegen.


    Ist eine banale Aufgabe, mit 100...200 Zeilen Assembler kommst Du hin.

    "As we know, there are known knowns. There are things we know we know. We also know there are known unknowns. That is to say we know there are some things we do not know. But there are also unknown unknowns, the ones we don't know we don't know." (Donald Rumsfeld)
    "Ich weiß, dass ich nichts weiß." (Sokrates)
    "Ich weiß nicht mal, dass ich nichts weiß." (Simba2)
    "Ich weiß' alles" (Alpina-Katze)

  • Ich danke dir schonmal für die Antwort.


    Leider bin ich der Programmierung nicht mächtig und habe auch keine Mittel dafür.


    Zum Verständnis nochmal. Der Abstand beider LS soll 40 cm betrag. Das Gestell (es geht hier nur um Training) soll ziemlich weit am Ende der Bahn stehen.
    Deswegen große LED 7 Segmentanzeigen. So ähnlich war es auch vor dem Neubau der Bahn gewesen. Die zu messende Geschwindigkeit soll zw. 15 und 35 km/h liegen.
    Das ergibt mir eine Zeitdifferenz von 97 bzw. 41 ms.


    Hier mal der Schaltplan: http://www2.produktinfo.conrad…nke_Sender_Empfaenger.pdf


    Denn C8 habe ich bereits gegen 0,1 µF getauscht, weil die Schaltung zu träge war.
    Die Reaktionszeit zw. T2 und T1 liegt derzeit bei 20 ms (wechsel von LOW auf HIGH).
    Wegen der Reaktionszeit der Relais, würde ich diese gegen Widerstände tauschen.
    Ich muss die LS später nochmal testen ob die auch funktioniern wenn der Ball durchläuft.


    Heut ist mir ein kleiner Ansatz eingefallen, ich komme aber trotzdem nicht weiter.


    Ich könnte beide LS auf ein RS-Flipp Flopp setzen. Die erste auf den Setz und die zweite auf den Rücksetzeingang.
    Damit hätte ich doch schonmal ein auswertbares Pulssignal. Ab hier komm ich aber vorerst nicht weiter.
    Gibt es vielleicht einen Ic oder eine Schaltung, die mir das weiter Wandeln kann, um auf meine 7-Segmentanzeige zu kommen??

  • Ja, das IC gibt es, und nennt sich Mikrokontroller.
    Die Lichtschranke ist soweit ok, wenn Du diese ganzen dusseligen C's und das
    Relais raushaust.
    20ms bei 41ms Messsignal? Na ja...
    Klar kannst Du das auch diskret aufbauen, Torschaltung und Impulse zählen...
    oder analog Konstantstrom über einen C integrieren. Bleibt aber das Problem,
    dass Du die Zeit misst, und für die Geschwindigkeit den Kehrwert bilden
    musst, das ist diskret/analog nicht unmöglich, aber zuviel Aufwand.
    Mikrokontroller, oder vergiss es. Die Tools und Doku gibt es frei im Netz,
    inklusive einfache Prommer.

    "As we know, there are known knowns. There are things we know we know. We also know there are known unknowns. That is to say we know there are some things we do not know. But there are also unknown unknowns, the ones we don't know we don't know." (Donald Rumsfeld)
    "Ich weiß, dass ich nichts weiß." (Sokrates)
    "Ich weiß nicht mal, dass ich nichts weiß." (Simba2)
    "Ich weiß' alles" (Alpina-Katze)

  • Ja doch, Du musst aber den Kehrwert bilden, da kommst Du nicht dran vorbei!
    s = v * t ---> v = s / t
    Da s = konst. bleibt 1 / t
    Physik-Grundlagen!
    Klar kannst Du Dir einen Analogrechner aufbauen (Multiplizierer über temperatur-
    kompensierter logarithmischen Kennlinien von Dioden, dann über OP Dividierer);
    oder mit 74er-TTL mit 4-Bit-Multiplizierern ein Rechenwerk basteln, der
    Aufwand ist aber tausendmal größer, als das zu programmieren; schließlich
    sind nicht mehr in den 1970ern! Das Programmieren erlaubt auch schnelle
    Änderung, wenn man einen Denkfehler drin hat, bei diskret aufgebauten
    Lösungen artet das schnell aus...
    Also: Grenzwerte für Impulslänge setzen, Prescaler des Timers richtig skalieren,
    auf Überläufe achten. Wert des Timers skalieren, für die Kehrwertbildung
    evtl. mit mehreren Bytes oder BCD arbeiten. Iterativen Algorithmus für die
    Division müsste sich im Netz finden, falls der Mikrokontroller das nicht im
    Befehlssatz hat - die meisten können aber multiplizieren, das ist schon mal ein
    Anfang.
    Wenn Du den Mikrokontroller nicht rechnen lassen willst, kannst Du auch von
    Hand mit dem Taschenrechner eine Lookup-Tabelle für alle Timerwerte in
    den Code implementieren, das ist dann eine Fleiß- statt Kopfarbeit, und das
    mit den 100...200 Zeilen gilt dann nicht mehr...

    "As we know, there are known knowns. There are things we know we know. We also know there are known unknowns. That is to say we know there are some things we do not know. But there are also unknown unknowns, the ones we don't know we don't know." (Donald Rumsfeld)
    "Ich weiß, dass ich nichts weiß." (Sokrates)
    "Ich weiß nicht mal, dass ich nichts weiß." (Simba2)
    "Ich weiß' alles" (Alpina-Katze)

  • Aber ja nicht "Microchip" verwenden, denn da kennt sich tcfkao aus.


    Lachmodus Ein:
    10 sec lachen:
    Lachmodus Aus:



    Gruß


    Wolfgang

    Geht nicht gibt´s nicht. Zumindest wäre es schön, wenn es so wäre!

  • Wolfgang, die Microchip mit ihrem kranken Registerbanking sind für einen
    Newbie in Assembler kaum zu beherrschen.
    Ich habe schon einige µC programmiert, und Du?

    "As we know, there are known knowns. There are things we know we know. We also know there are known unknowns. That is to say we know there are some things we do not know. But there are also unknown unknowns, the ones we don't know we don't know." (Donald Rumsfeld)
    "Ich weiß, dass ich nichts weiß." (Sokrates)
    "Ich weiß nicht mal, dass ich nichts weiß." (Simba2)
    "Ich weiß' alles" (Alpina-Katze)

  • Hi tcfkao,


    für einen Newbie ist es auch krank in Assembler zu programmieren. Ohne ordentliches Werkzeug finden sich nur wenige zurecht und vergeuden unendlich viel Zeit.
    Ich programmiere die Microchips mit einem C-Compiler (CCS) und muß mich nicht um´s Bankswitching oder sonstigen Müll scheren. Assembler wird nur eingesetzt, wenn´s garnicht anders geht.


    Wenn ich unsere Maschinen http://www.pbgmbh.de in Assembler programmieren müßte, hätte ich bei dermaßen umfangreichen Programmen schon längst das Handtuch geworfen.


    Da ich weiss, dass Du ein "eingefleischter" Microchip Gegner bist, beenden wir hier lieber den Disput.



    Gruß


    Wolfgang

    Geht nicht gibt´s nicht. Zumindest wäre es schön, wenn es so wäre!

  • C ist völlig ok für große Projekte, für einen Newbie halte
    ich aber Assembler programmieren für ok: 1) Wenn der µC sinnvoll
    aufgebaut ist, 2) das Verständnis für das, was in der Hardware
    passiert viel größer ist. Erst Assembler, dann C lernen halte ich
    für eine sinnvolle Reihenfolge wenn man embedded arbeiten will.
    Ich bin kein "eingefleischter" Microchip-Gegner, weiß aber, dass
    es wesentlich bessere Alternativen gibt. Jeder, wie er möchte.
    Ich kann von diesen Teilen nur sehr stark abraten.

    "As we know, there are known knowns. There are things we know we know. We also know there are known unknowns. That is to say we know there are some things we do not know. But there are also unknown unknowns, the ones we don't know we don't know." (Donald Rumsfeld)
    "Ich weiß, dass ich nichts weiß." (Sokrates)
    "Ich weiß nicht mal, dass ich nichts weiß." (Simba2)
    "Ich weiß' alles" (Alpina-Katze)