| | Scan der Umgebung mit ROBO TX und Robo Pro
|
Drehkranz angetrieben durch Motor an M1 mit
Endtaster an I1 und Impulstaster an C1. UltraschallSensor (ersatzweise
auch Photowiderstand) an I8, sowie rote Lampe an O3 Programm RadarTurm :
Der Turm oszilliert zwischen Position 0 und 200. Dabei wird alle 20
Impulse der am Ultraschallsensor gemessene Abstandswert in cm ausgegeben.
Programm RadarTurmZwei :
Wie Eins. Hinzugekommen ist die rote Lampe zur Anzeige von Distanzwerten
kleiner 16 cm. Die Messung wurde in die Unterprogramme DistR und DistL verlegt. Programm
RadarTurmDrei :
Wie Zwei. Hier aber in 1er-Schritten. Die Messung wird jetzt in einem
Unterprogramm erledigt. Programm RadarTurmVier :
Flexiblere Lösung durch Ausprogrammierung der Schleifen anstelle der
Verwendung des Schleifenbausteins. Außerdem wird der Turmmotor zwischen
den Messungen nicht mehr abgestellt, läuft dann flüssiger Programm
RadarTurmFuenf :
Dauerbetrieb unter Nutzung der Funktionen vom EncoderMotor (aber weiterhin
mit dem MiniMotor) Download-Modus, Anzeige
auf dem TX Display Programm RadarTurmSechs
:
Wie TurmVier. Hinzugekommen ist eine Bewegung des Ultraschallsensors um
die waagerechte Achse (Motor an M2, Lampe an O5) Vergleiche auch mit den Python
und VB2008 Lösungen |
Programm RadarTurm, der einfachste Fall :
|
Anfahren des Endtasters : Home-Position
Anzeige des aktuellen Abstandes in cm
Feststellen des Abstandswertes
Drehen um 20 Impulse nach rechts
Schleife 10mal Messen
Feststellen des Abstandswertes
Drehen um 20 Impulse nach links
Schleife 10mal Messen
|
Anmerkungen :
Alles in einem Programm. Will man laufend messen, kann man die Schleife auf 200
ändern und ein einfaches Warten auf Impusdurchgang einbauen.
Program RadarTurmZwei :
|
Aufbau wie oben
Home-Position wie gehabt.
Jetzt Anzeige Position und Abstand
Messung in den Unterprogrammen DistR(echtsDrehen)
und DistL in 10er-Schleife. Die jeweilige Startposition
wird in pos vorgegeben.
Grund für die Unterprogramme : Übersichtlichkeit
|
|
Unterprogramm zum Messen des aktuellen
Abstandes und zur Anzeige von Position und Abstand. Schalten rote Lampe
Abstand messen und Anzeigen
Position anzeigen
Wenn Abstand kleiner 16 dann rote Lampe an,
sonst aus
Drehen um 20 Impulse nach rechts
bei DistL nach links
Aktualisieren der Position um 20 Impulse
bei DistL wird subtrhiert. |
Anmerkungen :
- Aufbau wie Eins. Die Messung und Positionierung wurde in Unterprogramme
verlagert.
Programm RadarTurmDrei
|
Aufbau wie oben, aber nur ein -
parametrisiertes Unterprogramm. Hier wird laufen (in 1er-Schritten
gemessen.
Position = 0
Aufruf Dist mit -8 : RechtsDrehen mit FullSpeed
Position Aufaddieren.
200er-Schleife
Position = 200
Aufruf Dist mit 8 : LinksDrehen mit FullSpeed
Position Aubtrahieren.
200er-Schleife
|
|
Unterprogramm zum Messen des aktuellen
Abstandes wie oben, aber für beide Richtungen.
Hier ist der Grenzwert für die rote Lampe = 12
Motor in Richtung und Speed schalten.
einen Impuls abwarten
Position aktualisieren. |
Anmerkungen :
Die Nutzung nur eines Unterprogrammes reduziert den Code, macht ihn hier auch
schon unübersichtlicher. Die Parameterübergabe für Geschwindigkeits- und
Richtungswerte ist eine recht unübersichtliche Angelegenheit. Hier eine
Kompromisslösung mit Level 3.
Programm RadarTurmVier : Die Luxus-Version
|
Aufbau wie Drei, aber DreiwegeAbfrage statt
Schleifenbaustein, Turmmotor wird nach einer Messung nicht mehr abgestellt
- so ordentlich muß man nicht sein.
Anfahren Home, mit anschließenden Umschalten auf Rechtslauf
Schleife für den Rechtslauf unter Verwendung des Unterprogramms Dist.
Beginn bei Position 0, Ende 200
Schrittweite 10
Umschalten Motor auf Linkslauf
Schleife links mit Beginn bei 80, Ende bei 200, Schrittweite
-10 um Dist den Linkslauf mittzuteilen.
Vorteil der Lösung : Die Positionswerte werden nur einmal im
Hauptprogramm als Konstanten festgelegt, und lassen so zentral leicht
ändern. |
|
Unterprogramm Dist.
Anzeige aktueller Abstandswert und Position in Impulsen ab Home.
Abfrage auf zu große Nähe (Abstand < 16 cm), ggf. rote Lampe.
Auswerten des Vorzeichens des inc Parameters (die RoboPro Funktion abs()
ist leider noch nicht implementiert). Hier wird die Obergrenzen des Loops
über die Schrittweite einheitlich positiv gesetzt. Der Loop ist
erforderlich, weil der Baustein Impulszählen leider keinen Eingang dafür
hat.
Schleife über die Impulse in Schrittweite (der Anzeige)
Achtung : Eingang C1D und C1Z unterscheiden sich auch beim gleichen
Impulstaster D liefert 8 und Z nur 4 Impulse pro Umdrehung des Impulsrades
(unabhängig vom eingestellten Symbol).
Aufaddieren der aktuellen Position. |
Programm RadarTurmFuenf : Die Patentlösung
|
Hier Dauerbetrieb im "EncoderStyle"
mit Anzeige
auf dem Display des TX-Controllers. Download
Betrieb sinnvoll möglich.
Anfahren Home-Position
Rechtsrunde 111 Impulse
Im eigenen Thread : Schalten der roten Lampe
Linksrunde 111 Impulse wieder in Richtung Home |
Anmerkung :
Anzeige Count her wie her ab null aufsteigend, da nur der Zähler angezeigt
wird, nicht die Position.
Der eingesetzte C1Z-Counter zählt nur 4 Impulse pro Impulsradumdrehung,
deswegen sind die 111-Runden etwas länger als die 200er.
Modifiziertes Modell : jetzt kann der UlraschallSensor auch nicken.
|
Das Hauptprogramm entspricht RadarturmVier.
Hinzugekommen ist die Anzeige der Höhe, entfallen ist das Schalten des
TurmMotors (jetzt über Parameter -8 rechts und 8 links in Dist).
Neu ist Unterprogramm AufAb : Bei Aufruf linksdrehend zu Endtaster und
dann in 7er-Schritten wieder nach vorne neigen. Begonnen wird mit der mit
der Anzeige aller Werte und dem Schalten der roten Lampe dann erst kommt
das Neigen des Sensors.
Unterprogramm Dist ist kleiner geworden :
Die Anzeigen der Werte und die rote Lampe wurden nach AufAb verlagert.
Dafür gleich am Anfang ein Aufruf AufAb.
Das Neigen in AufAb ist nicht so komfortabel wie das TurmDrehen (Grund
: Faulheit). Die Methode Turm ein Increment und dann AufAb kann natürlich
auch auf den Kopf gestellt werden : Turm einmal über den ganzen Weg
drehen, dann UltraschallSensor einen Schritt bewegen - wieder TurmDrehen
... |
Programm RadarTurmSechs : AufAb des
Ultraschallsensors bei jeder Position des Turms.
Download
Sources enthalten in RoboRadarTX.ZIP
Weitere Radartürme sind auf radar.htm und radarex.htm
zu bewundern.
Stand : 05.02.2010
|