Forum: Mikrocontroller und Digitale Elektronik Rundenzeitmesser auf Basis RSSI für RC Fernsteuerung


von Sebastian L. (sebastian_l669)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Nach über 15 Jahren Betriebe ich nun wieder das Hobby Modellbau. Als 
Fahrzeug habe ich einen Mugen MGX8r eco und Mugen MGX8T beide 
hauptsächlich für die Rennstecke. Als Funke habe ich eine Futaba T10px. 
Das reicht auch erstmal als Vorgeschichte :)

Jetzt aber zu meinen Gedanken ;) ich habe festgestellt das funke einen 
Rundenzeitmesser hat. Allerdings funktioniert dieser nur auf 
Tastendruck. Da dieser Tastendruck relativ ungenau ist, bin ich auf die 
Idee das zu automatisieren.

Ich möchte mit zwei ESP32 Heltec Lora 32 V3 und WLAN RSSI Messung den 
Rundenzeitmesser realisieren. Also immer bei fallender Flanke des RSSI 
Wertes soll ein Impuls den Taster an der Funke überbrücken und die 
Rundenzeit Starten/Stoppen. Also das drücken des Rundenzeittasters an 
der Funke für mich kontinuierlich übernehmen.
Den Schwellenwert kann ich mit einen Poti gut einstellen. Den RSSI sehe 
ich auch gut auf den kleinen Display. Den Taster Steuer ich mit einen 
kleinen 3.3V Reedrelais (CRR03-1A | Meder Reedrelais, 3V dc, 1-poliger 
Schließer).

Allerdings hänge ich momentan ein wenig weil das RSSI Signal von meinen 
Komponenten nicht häufig genug aktualisiert. Und ich weiß nicht warum.

Also wenn das Auto durch die Stelle fährt wo der RSSI hoch sein sollte 
wird das Signal nur sporadisch erkannt. (wenn ich langsam durchfahre 
klappt es)

Den Code und ein paar Fotos habe ich angehängt. Ich hoffe ihr könnt mir 
hier die entscheidenden Tipps geben oder ggf. andere Hardware empfehlen 
;)
Allerdings muss diese mit 5-6V funktionieren und extrem klein sein. Da 
ich diese im Fach der Fernsteuerung verstauen will.

vielen Dank und einen schönen Start in die neue Woche!

beste grüße Sebastian

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Sebastian L. schrieb:
> Allerdings hänge ich momentan ein wenig weil das RSSI Signal von meinen
> Komponenten nicht häufig genug aktualisiert. Und ich weiß nicht warum.
Da gibt es 2 Möglichkeiten:
1. weil die Hardware den RSSI-Wert nicht oft genug aktualisiert
2. weil die auslesende Software ineffizient programmiert und deshalb 
langsam ist

In deinem Fall würde ich erst mal 2. angehen. Denn wenn du in den 
Mainloop sowohl deine RSSI-Verarbeitung macht und gleichzeitig noch das 
Display ausrechnest und zudem noch mehrmals Rechenzeit per delay() 
verplemperst, wundert mich nichts mehr.

Trenne den ganze Grafik-Käse vom eigentlich wichtigen Teil des 
Programms: der Trigger-Erzeugung. Und deshalb male das Display nicht in 
jedem Durchlauf jedesmal komplett neu, sondern in einer Zustandsmaschine 
immer nur einen Teil davon und mach schnellstmöglich mit der Mainloop 
weiter.

Ein kleiner Merksatz: ein Programm, das ausserhalb der Initialisierung 
in der Mainloop ein delay() hat, enthält noch einen Fehler. Der muss 
behoben werden.

Mein Tipp: setzte einfach mal am Anfang der Mainloop einen Pin und setze 
ihn mittendrin wieder zurück. Und dann miss dann an dem Pin mit einem 
Oszilloskop (von steigender Flanke bis zu steigender Flanke), wie lange 
die Durchlaufzeit deiner Mainloop schlimmstenfalls ist. Wenn du dann 
Zeiten >50ms misst, dann solltest du daran arbeiten oder sicher sagen 
können, dass das für deine Anwendung unkritisch ist.

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.