PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RC-Fernbedienung: in weniger als 1 sec. 1 Byte übertragen?



-schumi-
16.04.2010, 20:12
Hallo!

Ich habe den RP6 (Roboter) und möchte jetzt über die serielle Schnittstelle an einem alten Laptop Befehle an ihn senden.

Ich war schon soweit:
Fernbedienung an RS232 (ohne irgendeine Zwischenschaltung)
Ausgang vom Empfänger an Eingang vom RP6.
Dazu muss gesagt werden: Die Fernbedienung ist aus einem alten Spielzeugauto, kann also 2 Motoren in 2 Richtungen bewegen und anhalten.
Das kann ich auch alles problemlos mit dem RP6 auslesen

Das Problem:
Das dauert viel zu lange, bis 5 Bit (32 Befehle reichen) empfangen worden sind: 2.5 - 3 sec. !!
Das ganze sieht so aus:
1. 500 mSec. High (damit der Robo merkt das ich was senden will)
2. Im 500 mSec.-Schritt die Ausgangsleitung auf Low oder High ziehen (je nach aktuellem Bit)
3. fertig (Es wird nicht überprüft, ob die richtigen Daten angekommen sind)

Ich nehme desshalb immer 0.5 Sekunden, weil sonst der Empfänger oft das Senden gar nicht mitkrigt

Sichere Datenübertragung: kein einziger Übertragungsfehler (hab ca. 100 Zahlen von 0-32 gesendet)
Reichweite: vom 2. Stock bis in den Keller (mit geschlossen Türen, Wänden und Co dazwischen)

Passt also, bis auf die Geschwindigkeit..
Die 2 Leitungen pro Motor können ja 3 Zuständen haben (rechts, links, gar nichts)
Mir würde 1 Signal (ein/aus) anstatt 2*3 Zustände aber auch schon reichen, wenn dafür die Geschwindigkeit höher wird..

Jetzt die Master-Frage:
Kann man Kanäle durch Geschwindigkeit ersetzen???
(bildlich gesprochen ;-) )

Oder fällt euch eine Datenübertragung ein, bei der man alle Zustände nutzt und somit unter 1 sec. kommt?? (Was vielleicht einfacher währe)

Schaltplan von Sender&Empfänger: nicht vorhanden
(ich bin mir auch nicht sicher ob ich den im I-net finde)
Ich benutze 27 Mhz falls das von Belangen sein sollte.

MFG
-schumi-

PS:
Ich kenne viele Beiträge wie "RP6 mit Pfeiltasten steuern", bringt mir aber nichts weil ich auch Geschwindigkeit etc. regeln will, oder vom RP6 zum PC Messergebnisse senden, mit ein paar Bytes lässt sich viel anstellen ;-)
Ich weis auch von den Modulen beim großen C, Pollin, Reichelt usw., die sind mir auch nicht zu teuer, aber die Versand-&Nachnahmekosten für 2 oder 4 kleine Platienchen schon

Ach, und noch was:
Ich möchte NICHT die Frequenz verändern oder ähnliches, um mich damit strafbar zu machen

Jaecko
16.04.2010, 23:33
Also normalerweise verwendet man hier z.B. auch Interrupts; dann muss man nicht warten, bis der RP6 irgendwann mal dazu kommt um nachzusehen, ob was da ist.
Wenn ein Interrupt ausgelöst wird, schaut der Controller im Prinzip "sofort" nach, was denn los ist. Also ich denk mal, dass man so dann in 1 Sekunde problemlos auf ne 3 bis 4-stellige (wenn nicht mehr) Anzahl an Befehlen kommen kann.

s.frings
17.04.2010, 19:46
Diese Fernbedienung wirst Du wohl kaum schneller bekommen. Am einfachsten ist wohl ein Bluetooth Modul (BTM-222) oder die Funkmodule von Pollin. Die sind auch schön billig und bereiten die Daten schon durch einen integrierten Mikrocontroller auf. Du musst nur noch seriell (SPI) andocken.

radbruch
17.04.2010, 20:12
Hallo


Fernbedienung an RS232 (ohne irgendeine Zwischenschaltung)...Bitte beschreibe doch mal genauer wie das angeschlossen ist. Wird die Fernbedienung aus der RS232-Schnittstelle versorgt und für jedes Bit nur ein- oder ausgeschaltet? Was genau erkennt der RP6 beim Empfänger? Um die Drehrichtungen am Empfänger zu erkennen könnte man die Motoren des RC-Models durch vier Optokoppler ersetzen.

Gruß

mic

-schumi-
17.04.2010, 21:48
@Jaecko:
Das Teil was ich bei 1. hingeschrieben hab ist ja quasi mein Interrupt. Der (und auch alle anderen Signale) dauert nur deswegen so lange, weil der Empfänger sonst nicht mitkriegt das am Sender ein Signal anliegt
Die Signale dauern im übrigen ganz genau genommen 520 msec., 10 mSec. kürzer und es funktioniert schon nicht mehr.


@s.frings:
Ja, ich weis: Billig, einfach zu handhaben, schnell. Aber gleich eine ganze Bestellung für ein paar Kleinteile rechnet sich einfach nicht. Und einen Bastelladen um die Ecke habe ich leider nicht... :-(


@radbruch:

Bitte beschreibe doch mal genauer wie das angeschlossen ist. Wird die Fernbedienung aus der RS232-Schnittstelle versorgt
Die Betriebsspannung kommt aus einem 9V-Blockakku

An der Ferbedienung sind pro Hebel (2 Richtungen, z.B. vor/rückwerts) ja 2 Schalter: entweder beide aus oder einer davon an
An den Schaltern ist ein Pol GND, also an GND von der RS232 angeschlossen.
Der andere Pol ist immer mit einem Ausgang der RS232 verbunden. Vorwiderstand ist nicht nötig, denn in der Schnittstelle selbst sind ja schon welche mit etwa 400 Ohm eingebaut


für jedes Bit nur ein- oder ausgeschaltet?
Je simpler desto geringer das Fehlerrisiko --> richtig. Das hat auch gleich aufs 1. mal hingehauen, was ja nicht allzu häufig vorkommt ;-)


Um die Drehrichtungen am Empfänger zu erkennen könnte man die Motoren des RC-Models durch vier Optokoppler ersetzen
Optokoppler - und gleich 4 Stück... bei mir hats ein ganz normaler 3 MegaOhm Widerstand auch getan. Der hat den Motor ersetzt und an den beiden Enden ist jeweils ein Eingang des RP6 angeschlossen
musste halt ein bischen ausprobieren, bis ich den richtigen R hatte...


Kleiner Denkanstoß (Könnte auch sein das das ganze völliger Mist ist ;-) ):
man kann mit so einem Auto mit so einer Fernsteuerung ja folgende Richtungen fahren/lenken:
1. Vorwärts
2. Vorwärts-rechts
3. Vorwärts-links
4. Rückwerts
5. Rückwerts-rechts
6. Rückwerts-links
7. Nur links
8. Nur rechts

8 Zustände also (ohne den Garnichtsmach-Zustand)
Binär währen das (logarithmus von 8 zur Basis 2) 3 Bit
Würde man das umgehen und nur noch 1 Bit senden können, währe das Ding ja eigentlich schon mal 3 mal schneller, oder??

MFG + Vielen Dank für eure Hilfe
-schumi-


EDIT:
bin grade auf eine PDF im i-net gestoßen, die anscheinend genau das macht was ich will!
http://www.mikrocontroller.net/attachment/52491/RC_Funk.pdf

Ziel ist es mit möglichst einfachen Mitteln eine serielle Kommunikation zwischen zwei nicht
miteinander verbundenen Systemen zu erstellen. Die Kommunikation soll nicht schnell sein,
sondern zuverlässig. Nicht schnell bedeutet hier 1 Byte pro Sekunde. Die Abstände
zwischen Sender und Empfänger sollen im Bereich zwischen zwei und zehn Metern liegen.
Werde mich damit mal ausführlich befassen