• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Sanwa & Arduino Lichtsteuerung

Hallo zusammen,
ich hab jetzt so viel Stunden Beiträge lesen hinter mir und komme auf keinen grünen Zweig mit meinem Vorhaben. Ich brauche eure Hilfe.

Mein Plan:
Eine Lichtsteuerung mit einer Sanwa MT-44 & RX 482 Empfänger, über einen Arduino Nano (Später eventuell Diggispark um Platz zu sparen)
Das System soll folgendermaßen funktionieren:
SW2 schaltet Channel 3
5 Sekunden gedrückt halten Gesamtsystem Ein/Aus
<1 Sekunde drücken = 5 mal aufblinken (Fernlichthupe)

Signal für Bremse und Rückwärtsgang aus Channel 2 am Signalpin abgreifen. (Wie ich zwischen Bremse und Rückwärts fahren unterscheide ist mir noch unklar - ist aber aktuell mein kleinstes Problem)
Beim bremsen sollen die hinteren LEDs heller leuchten. Und beim rückwärts fahren auf weiß umschalten.
Das ganze möchte ich mit NeoPixeln realisieren.

Nun zu dem Problem, ich bekomme vom Empfänger am Pin S, egal in welchem Kanal, kein plausibles Signal.
Egal ob ich es an einem Digitalen (D7), oder Analogen Eingang (A0) auslese. Der Wert schwankt unabhängig davon ob bzw. welchen Befehl ich gebe zwischen 1-<10.000.
Ist die Funke aus, pendelt er irgendwo bei 1000 umher. Hat aber immer wieder massive ausreißer.
Ist die Funke an, und ich gebe keinen Befehl liegt der Wert durchschnittlich eher bei 60 - aber auch hier große ausreißer.
Es ist mir absolut nicht nachvollziehbar was da passiert, was ich falsch mache, oder ob ich irgendwo einen total doofen Denkfehler habe.

Zum Test habe ich im Code den Befehl gegeben bei Wert größer 1 soll ein Pixel leuchten. Aber nichts passiert. Gebe ich den Befehl leuchten wenn der Wert = 0, und ich schalte die Systeme aus, dann leuchtet sie, wie sie soll.
Ich hoffe irgendwer von euch kann mir einen Rat geben.

Ich bedanke mich schon mal im voraus für jede Hilfe!

Gruß
Patric
 

bernd-das-brot

Mitglied
Ich kenne deine Anlage nicht, aber ist der Ausgang, den du mit Pin S bezeichnest, evtl. einer, der ein Summensignal ausgibt? Bei diesem werden dann alle Kanäle nacheinander ausgegeben.

Die Erkennung, ob gebremst oder rückwärts gefahren wird, kannst du sicher eigentlich nur mittels Sensoren realisieren oder über ein flag, das dir signalisiert, ob gefahren oder gebremst wurde, das ist aber eher ein Schätzeisen.

Ob das mit dem Digispark funktioniert, was du auf dem Nano programmierst, wage ich wal zu bezweifeln. Das liegt hauptsächlich daran, daß der Digispark leistungsmäßig wesentlich schwächer ist als der Nano. Das Einlesen eines RC-Kanal ist sehr rechenaufwendig, auf einem Nano kann man zwei Kanäle einlesen und ihn dann nebenbei noch etwas anderes machen lassen, bei 3 Kanälen wird es mit zeitkritischen programmen schon kritisch. Wenn du noch etwas Platz einsparen, aber nicht auf Rechenleistung verzichten möchtest, nimm einen Pro Mini, dem fehlt der ganze USB-Krempel und ist dementsprechend kürzer als der Nano, zum Programmieren wird noch ein FTDI-Adapter benötigt.
 
Pin S ist der ganz normale Pin zur Signalausgabe für bspw. einen Servo vom Empfänger ausgehend. Also aus dem Dreiergespann eines Servokabel +,-,S.

Mich wundert einfach das es schon so viele Lichtsätze von Leuten mit Arduinos gibt, die aber leider nie dabei sagen welche Funke Sie nutzen. Denn ich vermute das Problem hier beim Hersteller. Das der vielleicht ein anderes Signal nutzt als üblich. Habe aber auch keine Möglichkeit das gegen zu prüfen. Zum Beispiel der Admin BAXL hat hier einen tollen Beitrag gemacht mit Bremslicht Funktion etc. Aber leider fehlen für mich in dem Beitrag an den konkreten stellen die Infos für mein Truble shooting. (1) Praxisbericht - Lichsteuerung über RC-Empfänger mit (Arduino) Nano - Experimentierthema | RC-Modellbau-Portal @BAXL Vielleicht kannst du hier aufklären? Das wäre klasse.

Ich vermute auch das der Digispark zu klein ist. Hängt ja aber auch mit der größe des fertigen Programm ab. Mal sehen wie sich das gestalten lässt.
 

bernd-das-brot

Mitglied
Ich zitiere mich mal selbst aus einem anderen Beitrag:


... Die Funktion ist ans US-Vorbild angelehnt: Die Leuchten hinten sind gleichzeitig Rücklicht, Bremslicht und Blinker. Vorne werden mit dem Licht auch die Blinker eingeschaltet. ... Um das Licht ein- und auszuschalten, reicht ein Schaltkanal, um, wie bei mir, Warnblinker, Standlicht, Abblendlicht, Fernlicht und Zusatzscheinwerfer getrennt zu schalten, werden 2 Kanäle mit Ein/Aus/Ein Schaltern benötigt.
Bei mir gehen die Bremslichter übrigens immer an, wenn der Knüppel in Neutralstellung ist. Ich benutze eine Jamara FCX6, die ist kompatibel mit der GT3B/C.

Meine Grundlage, für alle Basteleien mir RC-Decodierung, stammt von dieser Webseite: https://sturm.selfhost.eu/wordpress...zen-1-teil-viele-grundlagen-und-das-auslesen/

Ich kenne deine Fernsteuerung nicht, aber mit etwas Googlen bin ich über eine Funktion gestolpert, die die Reaktionsfähigkeit erhöht. Dabei lässt sich die Funktion für jeden Kanal Einstellen:

NOR = normal = für analoge Servos
SHR = Sanwa High-Response = für alle Digitalservos
SSR = Sanwa Super Response = nur für Sanwa Servos der SRG-Linie

Alles außer NOR dürfte dem Arduino Probleme bereiten.
 

BAXL

Admin
Mitarbeiter
Hallo @wintersun0000

ich habe für mein Experiment eine WFT09 genommen. Das hätte aber auch jede beliebige andere Anlage sein können. Entscheidend ist das ankommende PWM Signal bzw. wie groß die Pulspausen sind. Das kann beim Gaskanal ein sehr dynamischer Prozess sein. Das Signal beim Bremsen ist nach dem Stillstand des Fahrzeuges auch für Rückwärts. Ich hatte das Bremslicht nur im Stillstand bzw. bei Mittenstellung des Steuerhebels. Wenn Du dass im Fahrbetrieb unterscheiden willst, musst Du permanent den Gaskanal auf Signaländerung auswerten. Im Grunde zusätzliche Softwarezeilen.
 
....

NOR = normal = für analoge Servos
SHR = Sanwa High-Response = für alle Digitalservos
SSR = Sanwa Super Response = nur für Sanwa Servos der SRG-Linie...

Super Danke!
Du bist der erste der das Thema SHR, SSR und NOR anspricht. Das ist genau das was ich bisher in keinem anderen Beitrag gefunden habe, bzw. von keinem erwähnt wurde.
Mmmmhh, das werde ich direkt mal prüfen was der Arduino sagt wenn ich mit einem NOR Kanal arbeite.
 
Hallo @wintersun0000

ich habe für mein Experiment eine WFT09 genommen. Das hätte aber auch jede beliebige andere Anlage sein können. Entscheidend ist das ankommende PWM Signal bzw. wie groß die Pulspausen sind. Das kann beim Gaskanal ein sehr dynamischer Prozess sein. Das Signal beim Bremsen ist nach dem Stillstand des Fahrzeuges auch für Rückwärts. Ich hatte das Bremslicht nur im Stillstand bzw. bei Mittenstellung des Steuerhebels. Wenn Du dass im Fahrbetrieb unterscheiden willst, musst Du permanent den Gaskanal auf Signaländerung auswerten. Im Grunde zusätzliche Softwarezeilen.
Okay, danke dir für deine Antwort, das sollte ja machbar sein.
Sofern ich das SHR, SSR bzw. NOR Problem in den Griff bekommen habe.
 
Ich habe jetzt alle Kanäle auf NOR umgestellt.
Leider kein anderes Ergebnis.

Was schon seltsam ist, dass wenn ich den Arduino nur schon einstecke an A0 erscheinen schon die komischsten Werte.
Und das obwohl noch kein Akku angeschlossen ist oder das Auto eingeschaltet. Ist alles eingeschaltet unterscheiden sich die Werte kaum. Außer das nun, seeeeeehr häufig, der Wert 22 auftaucht. Aber auch nur 20% der Zeit.
Hier ein Auszug aus den Werten:
9083
11881
14318
6896
7156
7125
7590
8727
9705
10845
11300
13513
13595
13851
14022
13903
14697
15949
14533
13021
12680
9005
6783
6983
6890
6959
7693
13292
7394
9761
14440
14388
14622
12080
25483
12838
8466
6945
7134


Hier mal noch der Code, vielleicht sieht ja jemand ob der Wurm vielleicht dort drin ist.

int Controller;
int duration;

void setup() {
// put your setup code here, to run once:
pinMode(14, INPUT);
pinMode(6, OUTPUT);
strip.begin();
strip.show();
Serial.begin(9600);
}


void loop() {
// put your main code here, to run repeatedly:

Controller = pulseIn(14, HIGH);
duration = pulseIn(14, LOW);
Serial.println(duration);
delay(200);

if(Controller >= 1){
strip.setPixelColor(1, 255, 0, 0);
strip.show();
}
}
 
Mit deinem Digitalpin habe ich das auch schon getestet. Das Ergebnis war identisch. Es ist halt einfach komisch das schon Signale erfasst werden obwohl kein "Sender" in den Pin sendet... Da muss ja vor dem Code schon ein Fehler sein, oder nicht?
Ich teste aber auch gerne den anderen Code, welchen du verlinkt hast, mal
 
Habe jetzt das hier gefunden und auch Pin 2 und 3 getestet. Leider mit dem gleichen Ergebnis.

How to Use an RC Controller with an Arduino - Parts Not Included

"This is the trickiest part of the setup: connecting the servo signal pins to the Arduino.

For the best results the servo channel’s signal pin should be connected to a pin on the Arduino that is capable of external interrupts. This allows the Arduino to read the servo’s position in the background without disturbing your program.

The table above shows the interrupt capable pins for some common Arduino boards. On the Uno, pins 2 and 3 are capable of interrupts. Connect the signal pin (‘left’ in the 3-pin row) to an interrupt capable pin on the Arduino. For this tutorial I’m using pin ‘2’ on my Uno."
 

safty

Mitglied
Hast du denn auch die Masse (-) vom Empfänger durchverbunden, sonst hängt dein Servosignal ja wie eine Antenne "in der Luft"
(dann fehlt das Bezugspotential)
 
Zuletzt bearbeitet:

BAXL

Admin
Mitarbeiter
Wir kommen so nicht weiter in der Ratestunde. Bitte ein Bild oder zumindest Skizze was wo angeschlossen ist. Ich glaube in der Beschaltung ist ein Bock.
 

safty

Mitglied
Ich kann das jetzt auf den Fotos nicht so gut erkennen, aber ein Bezugspotential ( also Masse/ - )für das Servosignal wäre der Sache schon dienlich.
 
Zuletzt bearbeitet:
Top Bottom