Steppender Linienfolger - Liniensensor erweitern aber wie?
von
am 20.12.2015 um 18:12 (2251 Hits)
Der Liniensensor bestand aus zwei Infrarot-LEDs zur Ausleuchtung der Linie, zwei Photodioden zum Aufnehmen des reflektierten IR-Lichtes und einer CNY70 Reflexlichtschranke. Der CNY70 erkannte ob das Vehikel die Linie verlassen hatte bzw noch drauf ist und die Auswertung der Photodioden steuerte je nach der aufgenommenen Lichtstärke die Drehzahl der Motore.
Wenn die Linie verlassen wurde, konnte ich bisher nicht festzustellen, auf welcher Seite das passierte. Das hätte ich aber gerne gewußt, um auf kürzestem Weg die Linie wieder zu finden. Also zB. Linie auf der rechten Seite verlassen - sofort harte Linkskurve bis die Linie wiedergefunden ist. Bisher war also das schnelle Wiedefinden der Linie nach der Verlustmeldung über den CNY70 außer in Ausnahmefällen recht zufällig. Ich hatte überlegt, ob es nicht durch mehr in die Tiefe gehende Auswertung der Differenzmessung der Photodioden mit Einbeziehung des CNY70 Statusses möglich wäre, eine zielstrebigere Suche nach der Linie zu starten. Bin nach halbherzigen Versuchen damit nicht zum Erfolg gekommen
Dann dachte ich daran einfach noch zwei zusätzliche Reflexlichtschranken dazu zu bauen um einfach zu detektieren, auf welcher Seite die Linie denn zuerst bzw zuletzt verloren geht.
Das hätte bedeutet, daß an dem Liniensensor-Tiny, an dem im Grunde schon alle Pins belegt sind, noch zwei weitere Pins benötigt werden. (Der Mega88 hätte noch Pins frei, allerdings ist die Bascom-Demo Codebegrenzung bis auf wenige Bytes dort schon ausgereizt und ohne auf jetzt schon lebenswichtige Programmteile zu verzichten, nicht mehr erweiterbar). Und auch bin ich immer noch nicht bereit, den Liniensensor-Tiny45 gegen zB einen Tiny24 mit mehr Pins auszutauschen.
Nach über einer Woche ununterbrochenen Grübelns bin ich nun drauf gekommen, das es mit nur zwei CNY70 auch funktionieren müßte. Die beiden Photodioden sind nun an PB5 und PB2 angeschlossen (PB5 ist zwar RESET aber die Konfiguration hatte ich früher in einem anderen Linienfolger schon so getestet. Differenzmessung mit ADC geht trotzdem ohne dauernd im Reset zu landen). Dann blieben noch 4 IO-Pins frei. Zwei davon als Datenleitung zum Mega88. Und die beiden anderen für nun nur noch insgesamt zwei CNY70 im Liniensensor. Den dritten CNY, wie gesagt nach einer Woche grübeln entschieden, braucht es nicht
Der Plan ist, daß wenn mindestens ein CNY die Linie meldet noch alles im grünen Bereich ist. Falls beide CNY keine Linie mehr melden, ist sie verloren und anhand der letzten "Linie vorhanden" Meldung kann man feststellen, auf welcher Seite die Linie verlassen wurde. Beide CNY sind direkt nebeneinander über der Linie angeordenet. Möglicherweise könnte man sie auf beiden Seiten der Linie auch so weit außen anordnen, daß sie melden, wenn die Linie gekreuzt wird. Keine Ahnung ob das Vorteile hätte
Ob das jetzt wirklich funktioniert, muß die Praxis zeigen. Kritisch sind rechwinklige Knicke in der Linie. Da schafft es das Vehikel nicht rechtzeitig scharf genug einzulenken, die Photodioden "sehen" die Linie nicht mehr und sucht dann im Blindflug solange, bis es die Linie wieder hat. Dadurch, daß es aber kurz zuvor etwas einlenkt (nur eben nicht schnell genug) ist meine Hoffnung nun, daß das für die beiden CNY ausreicht um zuverlässig festzustellen, auf welcher Seite die Linie verlassen wurde um dann gleich die richtige Richtung zum Wiederaufnehmen der Linie einzuschlagen.
Bei spitzwinkligen Knicken hatte ich bisher eine Lenktendenz kurz vor Verlust der Linie ausgewertet, die dem Ding ermöglichte gleich die richtige Richtung einzuschlagen. Da die Lenkbewegung aber entgegengesetzt war, wie sie bei rechtwinkligen Knicken nötig ist, bin ich mal gespannt, wie DAS jetzt weitergeht. Ich hoffe nicht, daß ich nur eine Art von Knicken beherrsche -die Praxis wird es zeigen- und doch noch den Liniensendor-Tiny durch einen Tiny24 ersetzten muß oder soger mein komplettes Konzept mit der Differenzmessung über den Haufen werfen muß
Der Umbau auf zwei CNY70 ist jedenfalls soweit fertig und einfaches Linienfolgen (das ohne Knicke in der Linie) geht auch schon wieder. Da jetzt schon vier IR-LEDs betrieben werden, die zusammen etwa 30 bis 40mA ziehen, habe ich noch einen PNP-Transistor eingebaut, über den sie eingeschaltet werden. Ein PNP wegen Verkabelung - spart mir eine Leitung. Hätte gern einen P-Kanal FET genommen aber keinen kleinen bei mir in der Kiste gefunden. Vorher ging die Spannung am Portpin des RC5-Tinys beim Einschalten auch schon etwas gegenüber eines unbeschalteten Pins bei ca. 15 bis 20mA in die Knie .
Im Anhang wieder der gegenwärtige Schaltplan. Wer Fehler findet auch Denkfehler meinerseits, Fragen hat oder Vorschläge und auch Kritik - nur zu.
Gruß
Searcher