Streckenmessung mit Kugelmaus Lochblende+Lichtschranken

  • Hallo Rpi Forum,

    ich habe eine Frage zum Thema Streckenmessung mit Kugelmaus Lochblende+Lichtschranken, und hatte gehofft, dass irgendjemand schonmal von einer Lösung bzw. einem Projekt zu diesem Thema gehört hat.

    Ich bin nicht ganz sicher, ob das das richtige Unterforum ist.

    Ich habe aus einer alten Kugelmaus die Lochblende und 2 Lichtschranken ausgebaut und will damit eine Strecke messen. Die Strecke wird später mehrere hundert mal pro Tag gemessen, deshalb habe ich mich für diese "verschleißarme" Variante entschieden.

    Die Lichtschranken habe ich über einen MCP3008 und SPI angeschlossen. Das ganze Prinzip ist genauer erklärt unter folgenden zwei links: erste Erklärung und zweite Erklärung .

    Meine Frage ist also: Gibt es einen Python Code oder ähnliches, der mir dafür Werte ausspucken kann, die ich dann in cm umrechnen kann? Theoretisch müsste das ja im Mikrocontroller der Maus passieren? Oder machen das die Treiber?

    Vielen Dank im Voraus!

    LG
    Max

  • Streckenmessung mit Kugelmaus Lochblende+Lichtschranken? Schau mal ob du hier fündig wirst!

  • Interessantes Thema!

    Vor allem die Idee, die Teile aus der alten Maus zu nehmen, muss heute Abend mal suchen, da lagen doch noch ein paar Nager rum... :lol:

    Ich kann erstmal keinen Code beitragen, aber du hast mich da auf eine Idee gebracht:

    Falls das nicht zwingend mit dem RP laufen muss, könnte man einen Arduino nehmen: der hat Eingänge, die auf Flanken als Interrupttrigger arbeiten.... Damit sollte man die Drehrichtung und die Drehfrequenz ermitteln können...
    Also für die Arduiovariante könnte ich mich erwärmen...

  • Vielen Dank für deine schnelle Antwort.

    Ich wollte eigentlich schon den RP nehmen, weil ich daran 2 MCP3008 habe und 12 Fotowiderstände. Da hätte ich noch 4 Kanäle frei, die ich gerne belegen würde.

    Könntest du das mit den "Flanken als Interrupttrigger" etwas genauer erkären, dann könnte ich schauen, ob ich das auf dem RP auch machen / emulieren kann. Schliesslich sind die GPIOs doch ziemlich flexibel ;)

  • warum nicht am PI
    https://www.forum-raspberrypi.de/page-google-suche?q=interrupt

    der Interrupt wird ausgelöst wenn die Lichtschranke einen Impuls weiter ist und ein Zähler hochgezählt.

    Zählimpulse entsprechen dann der Strecke

    das muss natürlich in beide Richtungen damit man auch wieder runterkommt, dazu haben die Mäuse doch 2 Fenster
    einmal kommt Impuls 1 vor 2 für vorwärts und umgekehrt für rückwärts, das müsste man hardwäremäßig ausmaskieren und an 2 Ports leiten

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Die Frage ist halt immer, ob der PI schnell genug ist.

    Die CPU ist garantiert schnell genug, aber da laeuft bekanntlich ein Linux
    drauf. Das Linux hat ganz eigenen Ansichten was gerade laufen soll.

    Zum Beispiel kommt gerade der Cron-Prozess dran wenn ein Flanke
    wechselt oder ein Netzwerk-Prozess, oder ...

    Dann gilt es auch die vielen Layers von Software im Auge zu behalten.
    Der GPIO-Driver braucht seine Zeit, die GPIO-Library von python,
    der Garbage-Collector von Python und noch einiges mehr.

    WENN das Rad langsam genug dreht, kann das Programm mithalten,
    sonst verliert es Pulse. Aus diesem Grund macht man sowas normalerweise
    in Hardware, und fragt dann mit dem Programm das Zaehlregister ab.

    - - - -

    Warum nicht die Maus ganz lassen und die Maustelegramme zerlegen ?
    Der Mikrokontroller in der Maus hat nichts weiter zu tun als die Impulse
    auszuwerten.

    (Ob die Maus wirklich zuverlaessig ist muesste man allerdings noch probieren.
    Der Mensch kann problemlos damit umgehen wenn der Mauszeiger nicht ganz
    so weit geht wie er sollte)

  • jar Vielen dank für deinen Input! Allerdings bin ich nicht ganz sicher, ob du mir mit dem Link sagen willst, dass ich das hätte mal genauer googlen sollen oder er geht einfach nicht :P

    Entspricht das ( http://kampis-elektroecke.de/?page_id=3740 ) in etwa deinem Vorschlag?
    Der .py wäre zumindest mal eine Basis womit ich arbeiten könnte.

    Wenn ich aber von meinem Beispiel ausgehe, bei dem ich sowieso schon den ADC angeschlossen habe und und die LDRs aus der Kugelmaus auch Werte zwischen 0-1023 liefern müssten, könnte ich doch einfach Barrieren setzen. Wenn eine der Barrieren übertreten wird counter=counter+1 und vice versa für die 2. LDR.

    Was du mit hardwaremäßig ausmaskieren meinst, verstehe ich nicht ;)

    Tell: Das Mäuse ausschlachten geht jetzt noch für meinen Prototypen, allerdings haben wir vor (wenn es denn funktioniert) das ganze in 100+ Stückzahlen zu verbauen. Es kommt dabei nicht auf 1-2cm auf einer Strecke von 1,5m an.
    Wie finde ich denn raus, welchen Mikrokontroller ich verwenden kann?

    Einmal editiert, zuletzt von Monsterm4x (8. April 2014 um 13:51)


  • jar Vielen dank für deinen Input! Allerdings bin ich nicht ganz sicher, ob du mir mit dem Link sagen willst, dass ich das hätte mal genauer googlen sollen oder er geht einfach nicht :P

    forums suche interrupt, evtl. ein temporärer Link der nicht weitergegeben werden kann ?

    gehe mal oben in suche und tippe interrupt, kommt ne Menge von hier ;)


    Wenn ich aber von meinem Beispiel ausgehe, bei dem ich sowieso schon den ADC angeschlossen habe und und die LDRs aus der Kugelmaus auch Werte zwischen 0-1023 liefern müssten

    das verstehe ich nicht, ein LDR ist doch nicht in der Kugelmaus, dort wird auch nix analoges gesammelt, deswegen verstehe ich nicht was du mit einem ADC willst ? :s


    Was du mit hardwaremäßig ausmaskieren meinst, verstehe ich nicht ;)

    dann kann ich auch nicht weiter helfen, ich dachte Kugelmaus ist dir in der Funktion bekannt....(da du das angesprochen hattest)

    müsste ähnlich wie ein inkrementaler Drehgeber arbeiten:
    http://de.wikipedia.org/wiki/Inkrementalgeber

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (8. April 2014 um 14:34)

  • das verstehe ich nicht, ein LDR ist doch nicht in der Kugelmaus, dort wird auch nix analoges gesammelt, deswegen verstehe ich nicht was du mit einem ADC willst ? :s


    Ich habe den ADC wegen einer anderen Sache eingebaut und war irgendwie dem Gedanken verfallen, dass würde Sinn machen. Aber bei nochmaligem Lesen, tut es das nicht :D

    dann kann ich auch nicht weiter helfen, ich dachte Kugelmaus ist dir in der Funktion bekannt....(da du das angesprochen hattest)

    müsste ähnlich wie ein inkrementaler Drehgeber arbeiten:
    http://de.wikipedia.org/wiki/Inkrementalgeber

    Die Kugelmaus ist im Prinzip natürlich ein inkrementaler Drehgeber. Es werden Quadratursignale in definierten Zeitabständen ausgewertet und daraus die Bewegung des Mauszeigers errechnet.

    Zitiert von http://www.rn-wissen.de/index.php/Beis…ranke_ermitteln

    Ich habe nur keine Ahnung, wie ich das A. anschliessen soll und B. Softwareseitig auswerte.

    Einmal editiert, zuletzt von Monsterm4x (8. April 2014 um 15:04)

  • > Das Mäuse ausschlachten geht jetzt noch für meinen Prototypen
    Ich hab vorgeschlagen die Maus NICHT auszuschlachten, sondern
    die Maus ganz zu lassen und das Protokoll der Maus auszuwerten.

    Bei einer seriellen Maus scheint mir das nicht kompliziert:

    Protokoll der Microsoft-Maus

    > allerdings haben wir vor (wenn es denn funktioniert) das ganze in 100+ Stückzahlen zu verbauen.
    Fuer mehr als 100 Stueck solltet Ihr besser einen fertigen Encoder kaufen !

    Und bei diesen Stueckzahlen seid Ihr im Harwaregeschaeft und braucht CE-Zertifizierung,
    EMV-Test, Entsorgung der verkauften Hardware, und sicher noch einiges mehr.

    Das braucht dann einen Profi...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!