Hallo,
die Signalverarbeitung bei mir läuft nach dem weit verbreiteten EVA (Eingabe - Verarbeitung - Ausgabe) Prinzip ab. Ich teste also nicht der Reihe nach den ersten Eingang, verarbeite das Signal, teste den zweiten Eingang, verarbeite das Signal, teste den dritten Eingang usw., sondern ich lese zunächst alle Eingänge ein (bei mir derzeit etwa 15). Die Zustände der Eingänge muss ich natürlich irgendwo zwischenspeichern, also im RAM des Controllers. Diesen Schritt nennt man in der Steuerungstechnik "Prozessabbild der Eingänge". Jetzt kommt die eigentliche Rechenarbeit, aus den eingelesenen Werten müssen neue Sollwerte (z. B. Geschwindigkeit, Richtung usw.) bestimmt werden. Alle neuen Werte werden nicht direkt ausgegeben sondern wieder im RAM gespeichert. Dies ist die "Verarbeitung". Wenn alles neu berechnet ist kommt die "Ausgabe", in der Steuerungstechnik nennt man das "Prozessabbild der Ausgänge". Hierzu werden die neuen Sollwerte aus dem RAM geholt und ausgegeben (z. B. den Geschwindigkeitssollwert an den PWM-Generator, irgendwelche Schltbefehle an normale Ausgänge, usw.).
Der Vorteil des ganzen ist recht einfach erklärt: Wenn die Eingän direkt abgefragt und neue Werte sofort ausgegeben werden könnten sich innerhalb der Laufzeit des Rechenprogramms die Eingangszustände ändern. Dies kann bei gewissen Konstellationen ein Chaos verursachen. Außerdem müssen die neuen Sollwerte "gleichzeitig" ausgegeben werden. Berechnet man erst den Sollwert für den linken Motor, gibt diesen aus, berechent dann den Wert für den rechten Motor, gibt diesen aus fährt man eine Kurve obwohl man doch nur beschleunigen wollte (wenn das Programm langsam genug ist). In modernen Maschinensteuerungen wird das gleiche Verfahren angewandt denn dort kann ein Zyklus (Programmlaufzeit) durchaus bis zu 100ms betragen. In dieser Zeit kann sich viel ändern.
Übrigens, ich programmiere nur in Assembler und kenne mich in Hochsprachen leider nicht aus. Ich kann also leider keine Codebeispiele hier einstellen.
Zur Entfernungsmessung: Ich bestimme nicht den Abstand zur Schleife, noch nichtmal ob sich der Sensor genau darüber befindet. Ich bestimme nur Innerhalb / Außerhalb bzw. über einen 555 (Monoflop) in kürze ob die Schleife funktioniert. Es kommt auch nicht auf einen Zentimeter an. Ich werde wahrscheinlich gelegentlich die Schleife einmal komplett abfahren um die Ränder zu mähen (Christian macht das nebenbei mit wenn er die Ladestation anfährt).
Gruß,
Michael
PS: "unter Niveau" ist hier garnichts, man ist schließlich nicht überall Experte
wegen der Problematik mit dem Schwingkreis bei meinem Sensor habe ich noch andere Kondensatoren ausprobiert und siehe da mit 10 statt 100 nF gehts besser.
Also, falls jemand Lust hat meinen Sensor nochmal auszuprobieren, möchte ich ihn bitten auch 10 nF zu verwenden und zu berichten. Das Timing spielt natürlich ebenfalls eine Rolle. Das Programm reagiert ja auf die erste Spannungsänderung welche am ADC gemessen wird. Dies sollte die erste Halbwelle sein. Insofern könnte der Sensor sogar einen Schwingkreis bilden und trotzdem funktionieren.
Insbesondere möchte ich Michael bitten das mit seinem Oszi zu testen. Vielen Dank!
Hallo,
soeben aufgebaut. Am besten man lässt den Kondensator ganz weg. Die Schaltung ist erstaunlich empfindlich, reagiert allerdings recht stark auf die Störungen von Motoren.
Ich habe an meinem Testchassis jetzt mal vier Sensoren angebaut und werde demnächst mal ein wenig probieren. Evtl. passe ich die Dimensionierung der Sensoren noch etwas an.
Danke übrigens für den Artikel im RN-Wissen, ich habe vorhin noch zwei Zeilen ergänzt, mit dem Bild bist du mir ja zuvor gekommen.
Gruß,
Michael
ich danke für Eure Geduld, die ihr mit mir habt. Das mit dem „Niveau“ sollte keine Spitze sein; es war vielmehr eine Frustreaktion, weil einige Beiträge nicht auf m e i n e m Niveau sind.
Mein hartnäckiges Nachfragen hat jetzt aber wenigstens ein Missverständnis ausgeräumt. Ich habe – zugegeben – etwas leichfertig unterstellt, dass die Schleifenbegrenzung auch bei Euren Versionen „analog“ erkannt wird. Ich war sozusagen historisch vorbelastet und gedanklich festgelegt, weil der Solarmover von Husquarna so arbeitet. Mein ursprüngliches Kabel liegt deshalb seit 1997 auch unter einer Thuja-Hecke. Mein neues Kabel habe ich genau so verlegt. Dann sah ich die Software von Chistian H.; diese hatte ich auch so interpretiert, dass er die Amplitude oberhalb eines Schwellwertes misst. Und genau so mache ich es bisher auch. Über die Änderung des Schwellwertes bestimme ich die Entfernung vom Schleifendraht. Aber natürlich kann man es auch anders machen, wobei mir der Ansatz von MichalM besser gefällt(definiertes Signal für außerhalb). Das Kriterium „kein Signal“ ist direkt über der Schleife vorhanden, leider aber auch, wenn der Generator nicht an ist. Wenn ich die Methode ändere, muss ich wohl ober übel das Kabel neu verlegen.
Zu den Sensor-Varianten:
Ich habe fleißig gebastelt (Sensor nach MichaelM aufgebaut) und gemessen. Im Prinzip kann ich bestätigen, was Michael M berichtet.
Sensor nach Christian H
ist sehr empfindlich, etwa Faktor 5 gegenüber MichaelM.
Ist aber auch sehr empfindlich gegenüber Störungen.
Zur Impulsbreite, Schwingneigung etc:
Inzwischen beitreibe ich diesen Sensor (erneut räumlich etwas grosszüger aufgebaut) ohne Parallel-C und R. Die Schwingneigung ist zu meiner Überraschung weg. Ob mit oder ohne C (ich habe es mit 10n – 470n probiert, ich kann keine signifikante Veränderung der Impulsbreite am Osci erkennen. Die Impulsbreite (eines Spikes) ist etwa 5ms. Hierzu aber folgende Information: Mein Generatorsignal ist 5ms breit, Wiederholfrequenz ist 5. Zu Christian H: Wenn du Schwierigkeiten mit der Breite des Impulses hast, warum änderst du das nicht an der Quelle, nämlich am Generator. Meine 5ms ziehen zwar etwas mehr Strom, aber das bewegt sich alles noch im erträglichen Rahmen (100 m Kabel, ca. 2,6 OHM, Generator mit 12V (ohne Widerstand vor dem FET) im Mittel ca 150mA ).
Gerade eben habe ich meinen Generator testweise auf eine Impulsbreite von 150 µs umgestellt. Das Signal ist auf dem Osci kaum zu erkennen. Schon aus optischen Gründen bleibe ich deshalb zunächst bei 5 ms.
Sensor nach MichaelM
P1 ist bei mir ein 100k-Trimmer, eingestellt auf 100k, also maximale Verstärkung.
Warum die Empfindlickeit deutlich niedriger ist gegenüber der Version von Christian H, kann ich nicht so recht nachvollziehen. Wenn ich mal als Laie eine Vermutung wagen darf: Liegt vermutlich an dem anders ausgeführten Gegenkopplungszweig (P1 zu R3,R5,L1 usw. Bei ChristianH scheint mir die Spule als Impedanz für den Impuls ein bestimmendes Element der Gegenkopplung zu sein, während sie bei der Schaltung von MichaelM nicht Teil der Gegenkopplung ist. Ich hänge mich mal wieder weit aus dem Fenster ! Falls das Schwachsinn ist, macht das nichts, wenn ich denn von Euch eine bessere Erklärung bekomme.
Zum Generator
Ich habe mir die Signale ohne Freilaufdiode angeschaut. Der negative Spike ist extrem ausgeprägt.
Ob das gut oder schlecht ist, kann ich im Moment nicht beurteilen, weil ich diesbezüglich noch keine weiterführenden Tests gemacht habe.
In Kladde gesprochen, fällt mir dazu auf Anhieb nur folgendes ein: Wir suchen doch alle nach einem wirklich signifikanten Signal. Je grösser die Amplitude um so besser. Ist der Signalpegel deutlich grösser als die Störsignale, wären die Störungen doch besser in den Griff zu bekommen.
Zum Programmablauf / Verarbeitung der Daten
Vielen Dank für die Erläuterungn zum EVA-Prinzip. Leuchtet mir ein. Das Grundprinzip müsste sich m.E. auch in Bascom verwirklichen lassen. Auf die Problematik, wann die Daten verarbeitet und ausgegeben werden bin ich auch schon gestoßen. Bisher habe diese Probleme aber in den Griff bekommen. Assembler-Programmierung werde ich mir bei meiner persönlichen Restlaufzeit wohl nicht mehr antun.
Von meiner besseren Hälfte habe ich gerade einen Ordnungsruf bekommen, so dass ich jetzt einfach abbrechen muss. Das Wichtigste ist auch gesagt.
Gruss
jguethe
nochmal zu meiner Empfängerschaltung:
R4 und R5 bilden eine virtuelle Masse (+2V). Der Rückkopplungszweig (Spannungsgegenkopplung) besteht aus P1 und R3, maximal beträgt daher die Verstärkung (100k+10k)/10k = 11. R2 ist der Lastwiderstand für die Spule. R1 dient lediglich der Offsetkompensationd des OPs (ist ja in Wald- und Wiesen-OP). Meine Schaltung verstärkt also die Spanung die sich an R2 ergibt.
Empfänger von Christian: Diese Schaltng arbeitet mit einem invertierenden Verstärker. Diese Schaltungsart benutzt eine Stromgegenkopplung. Die Spannung an der Spule bleibt immer null, der Ausgang wird soweit aufgesteuert dass der Strom duch den Rückkopplungswiederstand genau so groß ist wie der Strom durch die Spule.
Ich habe heute meine Schleifenüberwachung fertiggestelt: Dazu führe ich die Impulse von allen Empfängern auf ein Monoflop. Der 555 ist leider von Haus aus nicht nachtriggerbar, mit einem externen Transistor (T2) ist es aber möglich. Die Impulszeit des 555 (R1 und C1) muss etwas größer eingestellt sein als die Periodendauer der Sendeschaltung. Die linke Seite der Schaltung arbeitet nur das Triggersignal auf, man kann auch mehr oder weniger Sensoren anschließen. Zur Funktion: Solange die Schleife funktioniert stehen an K3 Imulse an. Befindet sich der Sensor innerhalb ist das Tastverhältnis groß, befindet er sich außerhalb ist es klein. Zum Triggern wird nur die pos. Flanke benötigt. Befindet sich nun ein Sensor (oder 2) direkt über der Schleife und geben nur noch ein Dauersignal ab wird die Schaltung immernoch von den anderen Sensoren getriggert. Erst wenn kein Sensor mehr Pulse abgibt fällt die Triggerung aus und der Pegel an K7 wechselt nach 0V (LOW). Der Controller fragt (im noch zu schreibenden Programm) immer erst das Signal von K7 ab, ist dieses HIGH funktioniert die Schleife, ist es LOW bleibt das Fahrzeug stehen. Erst wenn die Funktion festgestellt wurde geht es an die Bestimmung der Position (innerhalb / außerhalb).
EDIT: Programm läuft, habe noch einen Kreidehalter angebaut und fahre die Garage ab.
ich habe mir mal die Simulation bei www.automower.de angesehen. Mal abgesehen davon, dass die Proportionen etwas "geschönt" sind (das Grundstück dort hat nur ca. 9 x 14m) ist mir vor allem eines aufgefallen: Der Automower dreht recht weit (meist 90 bis 200°) mehrfach hintereinander in die gleiche Richtung. Der Drehwinkel ist ein Zufallspodukt, die Richtung wahrscheinlich auch (z. B. 15 mal nach links, 5 mal nach rechts, 12 mal links, 22 mal rechts usw.).
Ich habe in Versuchen mit festem Winkel festgestellt, dass der Mäher bei zu kleinem Winkel nur den Bereich an der Schleife abfährt, bei großen Winkeln eher die Mitte der Fläche. Weiterhin kann sich der Mäher bei kleinen Winkeln besser aus Sackgassen befreien. Die Zufallsmethode muss ich noch ausprobieren, das Programm läuft soweit.
@Christian:
Mich würde etwas genauer interessieren wie du die Ladestation anfährst. Soweit ich weis fährst du solange bis du auf die Schleife triffst und dann immer der Schleife entlang. Leider hast du über das genaue Einparken noch wenig berichtet. Ich habe schon überlegt ob ich der Einfachheit halber auf jede Seite der Ladestation einen Kontakt mache und die Station einfach von der Seite anfahre (immer abwechselnd damit der Rand gemäht wird). Fährt dein Mäher täglich oder nur stundenweise?
Zur Strategie beim Automower kann ich was sagen. (... ich habe ja einen)
Der AM hat zwei Schleifen-Sensoren mittig im Front- und im Heckbereich. Eine Kollision erkennt er, wenn sich die elastisch befestigte Abdeckhaube ein Stück verschiebt. Dazu hat er zwei Melder die zwar einzeln erkannt, aber nicht unterschiedlich ausgewertet werden. Im normalen Mähbetrieb ist auch keinen unterschiedliche Reaktion beim erkennen der Schleife oder einer Kollision zu bemerken.
1. der AM stopt und setzt ein Stück zurück um von dem Hindernis bzw Schleife frei zu kommen.
2. Er dreht sich um einen zufälligen Winkel. Wenn in dieser Zeit einer der Sensoren anspricht geht er von einem Hindernis auf dieser Seite aus, wechselt die Drehrichtung und versucht es auf der anderen Seite.
3. Für den Fall das auch auf anderen Seite einer der Sensoren anspricht muss er in eine Gasse geraten zu sein. Da er sich die bisher zurückgemeldeten Drehwinkel gemerkt hat, kann er sich in die ursprüngliche Stellung zurück drehen und noch ein weiteres Stück zurück setzen. Dieses Spiel kann sich in einer Gasse noch mehrfach wiederholen.
4. Sollte einer der Sensoren beim zurücksetzen ansprechen ist der Mäher in eine missliche Situation geraten. Er schaltet das Mähwerk aus und versucht sich durch vor, rück und dreh Bewegungen zu befreien. Wenn das nicht innerhalb einer vorgegebenen Zeit gelingt, bleibt er mit Fehlermeldung stehen. Dabei kann er auch schon mal über die Schleife ins Blumenbeet geraten und mit den Rädern Löcher in den Rasen fräsen.
Der AM behält die einmal eingeschlagene Drehrichtung solange bei bis er durch ein Hindernis beim Wenden dazu gezwungen wird. Der Drehwinkel ist zufällig aber im Programm bei Gartenform zu beeinflussen.
Offen: der AM wendet überwiegend mit Werten zwischen 90° bis 180°.
Komplex: er wendet fast nur Winkel unter 90 Grad an.
Normal: hier wechselt er das Programm ab und zu zwischen Offen und Komplex.
Hallo,
danke für die Info. Anscheinend bin ich ja auf dem richtigen Weg. Zum testen muss ich allerdings erst wieder die Garage freiräumen (Metallgroßbearbeitung). Eine Suchschleife sowie ein Suchfeld um die Ladestation möchte ich eigentlich vermeiden. Wozu ist eigentlich der Lautsprecher im AM gut, nur für den Diebstahlalarm?.
Gruß,
Michael
Lesezeichen