• Die Forumsregeln und Nutzungsbedingungen findet ihr in der Navbar unter Impressum !
    Bitte unbedingt beachten!
    Wie überall im Leben gibt es Spielregeln, so auch hier!
    Die Datenschutzerklärung zum DSGVO findet ihr ebenfalls in der Navbar unter Datenschutzerklärung !
    Hinweis nach DSGVO :
    Es ist hier keinerlei Angabe erforderlich. Alle Angaben in diesem Bereich sind öffentlich sichtbar und werden freiwillig gemacht. Mit einem Eintrag in diesem Bereich erkenne ich dieses an, und bestätige die Datenschutzerklärung zur DSGVO für das Forum gelesen zu haben.

    Danke
  • Hallo Gast, beschränke dich hier bitte auf den Bereich der Elektronik. Die Fahrzeuge oder Gebäude, wo diese Elektronik eingebaut wird bitte in dem passenden Fachbereiich behandeln. Auch wenn Teile des Projektes dadurch im Forum doppelt vorhanden sind! Danke.

Arduino Simulation des Servonaut Schaltvorgangs

gismow

Active member
Registriert
03.03.2012
Beiträge
2.203
Moin, moin...

Ziel dieses Projekts ist es den Schaltvorgang für Servonaut Fahrregler durch ein Arduino Board ausführen zu lassen. Initiiert wird die Schaltung durch einen Schalter an der Funke. So wird am Knüppel ein kanal frei, welcher vorher für die Schaltung (meistens links/rechts) genutzt wurde.

Die Schaltung:

Die Servosignale für gas/Bremse und für den "Richtungswechsel-Schalter" werden vom Empfänger an die Arduino Schaltung gesendet. Dort wird über Optokoppler das Servosignal in digitale Signale für das Arduino Board umgesetzt. Durch die Optokoppler erreiche ich auch eine physikalische Trennung der Stromkreise. Das Arduino Board analysiert beide Signale. Im Normalzustand (kein Richtungswechsel) wird das Gas/Bremse Signal 1:1 an den Fahrregler weitergeleitet. Wurde der Richtungswechsel-Schalter betätigt, geht das Programm in einen Schaltmodus. In diesem Modus wird das gas/Bremse Signal ignoriert und statt dessen durchläuft das Programm nacheinander 5 Stati:
- Schaltung initiiert
- Gaskanal zurück
- Schaltungskanal auf Endstellung
- Schaltkanal auf Mittelstellung
- Gaskanal auf Mittelstellung

Zwischen den einzelnen Stati definiere ich einen Delay um der Elektronik Zeit zu geben den neuen Status intern umzusetzen. Danach springt das Programm wieder in den Normalmodus und das Gas/Bremse Signal wird wieder durchgeschleift.

Hier ein erstes Video meines aktuellen Stands:

Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.

Im nächsten Schritt muss das Signal nicht an Servos, sondern an den Fahrregler geliefert werden.

Hier benötige ich etwas Hilfe bei der Schaltung, denn ich vermute mal es funktioniert nicht einfach den Ausgangspin mit dem PWD Signal mit dem orangen Kabel und die Arduino Masse mit dem braunen Kabel zu verbinden, oder ? Aktuell steuere ich die Servos über die Servo.write() Methode.
 
Hier auch wieder die Frage.
Wiso wird der Knüppel frei?
Der M20+ braucht ihn auch für Licht, Blinker, Warnblinker, Amo, Servosteuerung am Auflieger. Der gleiche Knüppel Rechts/Links wie für die Schaltung.


Du kannst das PWM Signal 0-255 des Arduino nicht an einen Fahrregler senden. Er kann damit nichts anfangen.
Das Signal muss in ein für den Fahrregler verständliches Signal per Software aufbereitet werden. Von daher ist es schon richtig wenn du schreibst es reicht wohl nicht Braun und Orange mit dem Arduino zu verbinden.
Den Optokoppler im Eingang kannst du dir sparen wenn dein Empfänger an einem BEC hängt. Du kannst den Empfänger direkt am Arduino anschließen.
 
Mit dem Freiwerden verstehe ich auch nicht so ganz.
Der Schaltkanal kann ja auch für andere Funktionen wie Licht und Blinker
gut verwendet werden.
Entweder mit dem 20+ Regler oder auch mit externen Modulen
über Tip- und Memory-Schalter.

Ausser man nimmt einen Nautic-Schaltkanal für die Richtungssteuerung.
 
Moin, moin...

Vielleicht zur Erläuterung, ich nutze die Lichtfunktionen des Fahrreglers nicht. Das Licht wird komplett über die Beier Platine gesteuert, daher benötige ich den Schalt Kanal wirklich nur zum Schalten.

Gut, genau genommen wird die Schaltung auf einen anderen Kanal geschoben, die Anzahl benötigter Kanäle bleibt also gleich, aber der Schaltvorgang wird zum einen vereinfacht und er kann auf einen Taster oder Kippschalter auf der Funke ausgelagert werden.

Wenn ich mein Programm erweitere um das PWD Signal selber in ein High/Low Muster umzusetzen, reicht es dann die Signalleitung zu belegen oder muss ich dann auch die Masse des Servonaut Kabels mit der masse des Arduino verbinden ?
 
O.K. wenn du nur für dich und deine Spezielle Anwendung baust ist es so o.k.
Ich war davon ausgegangen, das du hier was baust, was jeder benutzen kann, der einen M20+ nutzt.
Arduino und Servonaut brauchen eine gemeinsame Masse. Minus muss verbunden sein.
 
Moin Winni,

in meinen bisherigen Versuchen habe ich die Signalleitung des Fahrreglers direkt auf Pin 2 gelegt und per IRQ abgefragt. Dieses Konstrukt lieferte irrwitzige Werte und funktionierte überhaupt nicht.

Mit Hilfe die Optokoppler funktioniert es einwandfrei. An die eine Seite des Optokopplers (Diode) sind die Signalleitung und die Masse des Fahrreglers angeschlossen, auf der anderen Seite 5V des Arduino auf einen Pin mit einem Shutdown (ich glaube so heißt er) Widerstand von 10K-Ohm.

Ich vermute mal dass meine ersten Versuche schlicht und ergreifend an mangelndem Fachwissen scheiterten. Der Beruf des Elektroingenieurs ist nicht umsonst ein Studiengang.
 
Zum Hintergrund : Ich bastele diese Schaltung für meinen E20. Ich setze grundsätzlich keinen M20+ ein, da die licht und Soundsteuerung in meinen Trucks über die Beier Platine läuft. Sie bietet weit aus mehr Flexibilität und Funktionsumfang im Sound sowie im Lichtbereich (mehr Lichtarten (Tagfahrlicht, Kurvenlicht, Blitzer, Rundumleuchten, etc.), flexibler zu konfigurieren, etc.).

Daher stellt sich das Problem des Blinkers bzw. Pannenblinkers bei mir nicht, der E20 hat nur Anschlüsse für Brems- und Rückfahrlicht. Blinker und Pannenblinker funktionieren an ihm nur in Verbindung mit einer ML4.
 
Mit Abtasten am IRQ hab ich noch nicht getestet. Ich frage normale digitale Eingänge ab.
 
Ich war vom M20+ ausgegangen, weil du schriebst Softwarelösung meiner Schalplatine. O.K. von M20+ stand da nichts.
 
Das Abtasten des IRQ hat den Vorteil dass der normale Programmablauf sich mit solchen Auslesemechanismen beschäftigen muss. Der loop() bekommt die zur Verarbeitung notwendigen Daten quasi laufend untergeschoben. Die Variablen müssen aber als "volatile" Variablen deklariert werden um Zugriffskonflikte zu vermeiden.

Ich werde den Versand der Signale wohl ebenfalls über Timer Interrupts realisieren. So habe ich den loop() frei für andere Dinge.

Ich ging davon aus dass Deine Platine auch für den E20 gedacht ist. Der K40 hat ja eine andere Belegung, da geht es eh nicht.
 
Ich habe jetzt mal mit dem Interupt-Eingang getestet. FrSky V8FR-Empfänger direkt am Arduino Micro Pin 3, und Masse und 5 Volt.
Ich habe keine Signalprobleme. Ich bekomme saubere Werte.
 
Ich nehme an der Fehler lag in der Stromversorgung. Ich habe den Empfänger an einen Fahrregler angeschlossen (wegen des BEC) und habe nur das Signal an einen Pin gelegt.

Du hast ja auch die Stromversorgung über die Arduino Platine realisiert.
 
Ich habe jetzt mal mit dem Interupt-Eingang getestet. FrSky V8FR-Empfänger direkt am Arduino Micro Pin 3, und Masse und 5 Volt.
Ich habe keine Signalprobleme. Ich bekomme saubere Werte.
Hallo Winni,

hast Du zwischenzeitlich mal am FrSky-Empfänger die Spannung der Servosignale mit dem Oszi getestet?

Heiko
 
Ich nehme an der Fehler lag in der Stromversorgung. Ich habe den Empfänger an einen Fahrregler angeschlossen (wegen des BEC) und habe nur das Signal an einen Pin gelegt.

Du hast ja auch die Stromversorgung über die Arduino Platine realisiert.

Ja, du kannst nicht nur das Signal an den Pin legen. Das funktioniert nie!
Die Masse muß von allen angeschlossenen Komponenten Identisch sein.
Also Masse und Signal muss zwingend angeschlossen sein.
Wo soll denn sonst das Bezugspotential (geschlossener Stromkreis) herkommen? Eine Lampe Leuchtet doch auch nicht wenn du nur den Pluspol anschließt.
 
Hallo Winni,

hast Du zwischenzeitlich mal am FrSky-Empfänger die Spannung der Servosignale mit dem Oszi getestet?

Heiko

Noch nicht, ich weiß gar nicht ob mein alter Oszi noch funktioniert. Über 15 Jahre schon nicht mehr benutzt.:hfg
 
Ja, du kannst nicht nur das Signal an den Pin legen. Das funktioniert nie!
Die Masse muß von allen angeschlossenen Komponenten Identisch sein.
Also Masse und Signal muss zwingend angeschlossen sein.
Wo soll denn sonst das Bezugspotential (geschlossener Stromkreis) herkommen? Eine Lampe Leuchtet doch auch nicht wenn du nur den Pluspol anschließt.

Hmmm... Das ist ja so etwas von logisch...

Danke für den Wink mit dem Zaunpfahl, ich gelobe Besserung... ;)
 
Hallo Winni,

danke für die Info. Also identisch mit den Zwo4-Modulen. Ich lehne mich jetzt mal ganz weit aus dem Fenster und behaupte, dass beide sendeseitig das ZigBee-WLAN-Modul nutzen. Jetzt muss ich nur noch rausfinden, wieso Du offenbar Empfängersignale am 5V-Arduino problemlos auswerten kannst und ich nicht. :frage

Heiko
 
Moin, moin...

Nach längerer Zeit habe ich mal wieder meine Arduino Lösung für die alternative Schaltung für den E20 herausgekramt. Da ich gerade meinen Actros teilzerlegt habe, komme ich an den Empfänger und den Fahrregler heran.

Bei der Simulation des Schaltvorgangs ist es nicht möglich die einzelnen Positionen nacheinander anzuspringen. Es müssen die Wege korrekt "abgegangen" werden, sprich man muss den manuellen Schaltweg, wie es ein Mensch bewegen müsste, simulieren. Zum anderen muss das Modul eine eigene Einmessroutine haben, um die korrekten Werte für den "Marsch" zu haben.

Es war etwas Gefriemel, aber es hat funktioniert. Er schaltet wunderbar.

Der Schaltung arbeitet über einen 3-Positionen Schalter. Hoch = Vorwärts, Runter = Rückwärts, Mitte = Leerlauf. Wenn in den Leerlauf bzw. anderen Gang geschaltet wird, bremst die Platine das Modell erst einmal ab. Dabei wird die tatsächliche Geschwindigkeit über das simulierte Fahrreglersignal abgegriffen und gebremst bis sich dieses Signal nicht mehr verändert.

Nun muss ich noch eine eigene kleine Platine für den Kram löten und es verschwindet im Tank :)

Hier ein Video zur Verdeutlichung:

Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.
 
Moin, moin...

Ein weiterer Schritt ist geschafft, das Projekt hat die Hexenküche verlassen und liegt in einem ersten Prototypen vor.

IMG_2661.JPG

Zu sehen ist der ATMega328 Chip zur Steuerung. Von links 3 Anschlüsse für Signaleingänge (Fahrkanal, Schaltkanal und simuliertes Soundsignal des E20). Dann der Quarz zur Taktung, gefolgt von den beiden Ausgängen für Fahr- und Schaltkanal und zum schluss noch eine Kontroll-LED.

Wie funktioniert das ganze nun.

1. Der E20 muss auf 2 Kanäle der Funke entsprechend der Anleitung eingemessen werden.
2. Die Kanäle werden nun an die Platine angeschlossen und der Einlernvorgang hier wiederholt. (Fahrkanal nach vorne beim Einschalten und halten bis die LED blinkt. Dann beide Kanäle in die jeweiligen Endpositionen bewegen. Danach beide Kanäle in der Mittelstellung belassen und warten bis die LED erlischt.
3. Den Soundausgang und die Fahr- und Schaltkanalanschlüsse des E20 ebenfalls an der Platine anschließen.

Fertig.

Warum das erneute Einmessen ? Die Platine muss die maximalen Werte der einzelnen Positionen (Oben, Unten und Neutral) kennen. Nur so kann die Platine die Werte simulieren, die der E20 bekommen hätte und auf die er eingemessen wurde. Das Soundsignal verwendet die Platine um das Fahrzeug beim Schalten abzubremsen. Die Bremse (Fahrkanal nach hinten) wird solange betätigt, wie sich das Soundsignal signifikant verändert. Bleibt es nahezu gleich ist davon auszugehen dass das Fahrzeug steht und es kann geschaltet werden.

Kaum war die Platine mit Plastidip vergossen, hatte ich die erste Erweiterungsidee, welche in die nächste Version mit einfließt. Wenn die Platine in Neutral steht, soll man mit dem Fahrkanal "an Gas spielen können", ohne dass das Fahrzeug sich in Bewegung setzt.

Und ? Was haltet Ihr davon ?
 
Moin, moin...

Eines hatte ich noch vergessen zu erwähnen, die Stromversorgung erfolgt über den BEC des E20, es wird kein eigener Anschluss genötigt.
 
Moin, moin...

Nach längerer Zeit habe ich mal wieder mein Schaltmodul für den E20 heraus gekramt und etwas weiter entwickelt.

Die Schaltung erfolgt über einen 3-Positionen Schalter mit "Vorwärts", "Neutral" und "Rückwärts". Wenn man in Neutral schaltet bremst die Platine den Truck automatisch bis in den Stand ab. Hier gab es auch eine Weiterentwicklung. Man kann nun die Bremsstärke über ein Poti regeln oder aber eine Knüppelstellung als Bremswert festzulegen und mit dem Poti rund um den Wert fein justieren. Gleichzeitig prüft die Platine den Fahrkanal. Wird z. B. für eine Vollbremsung ein stärkerer Bremswert erkannt überschreibt dieser den errechneten Wert. Eine Vollbremsung ist also jederzeit möglich.

Hier ein kleines Video zur Verdeutlichung der Funktionen. Neben der Funke liegt die Platine. Die orangene LED signalisiert den Schaltvorgang, die rote LED ist die Bremse. Die blaue LED ist nur für die Konfiguration am Anfang.

Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.
 

Servonaut
Zurück
Oben Unten