PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servos an RNBFRA



Houddy
04.02.2005, 09:33
hi hab jetzt endlich einen servo an meinem RNBFRA über
2 RNFUNK-Module steuerfähig.

allerdings wenn ich 2 servos anschliese is dann aus mit meinen programmier künsten. Die beiden servos lassen sich nur sehr ungenau
ansteuern und zucken ständig hin und her.
warum dieses problem entsteht weis ich ungefähr. ich steuere, besser gesagt ich will die 2 servos mit meinem gamepad ansteuen und hab mir
dazu unter VB ein programm gebastelt das mir das Gamepad ausliest und diese werte an das RNBFRA sendet. Für den Output hab ich einen Timer der mir die werte so ca. alle 40ms senden soll. ist der timer schul?
ich weis leider nicht mehr weiter

hoffe auf eure hilfe
danke houddy

PicNick
04.02.2005, 09:36
Normalerweise will ein Servo alle 20ms hören, wo es hingehört, sonst wird es nervös. mfg robert

Houddy
04.02.2005, 09:41
naja mit 40ms funktionierts aber noch am besten ich schätzte das
das funk-Board auch eine verzögerung hat und das schaft die 20ms
irgendwie nicht so gut.
hat jemand schon mal so ein problem gehabt?!
bin warscheinlich nicht der serste mit 2 servos :-)

PicNick
04.02.2005, 09:47
Du brauchst ja nicht so oft zu senden. Aber dein AVR sollte den gerade gültigen Wert halt immer wiederholen (Timer z.B)
auf dem RNBFRA sind ja zwei AVR's wer redet denn bei dir mit wem und wer redet mit den Servos ? mfg

Houddy
04.02.2005, 09:51
was meinst du jetzt genau
mein timer im VB-Programm schickt alle 40ms die Befehle aber mein
Board kann diese beiden befehle (für servo 1 und servo2) nicht trennen und mach dann was es will.

Houddy
04.02.2005, 09:56
besser gesagt wie kann ich das board mit dem PC-Programm
synchronisieren ?

PicNick
04.02.2005, 10:01
? Wenn dein VB sagt, Servo 1 auf x und servo 2 auf y, muß ja dein Programm das zum Servo 1 respektive Servo 2 weitergeben, das Board kann da nix dafür. Das macht nämlich nicht das, was es will, sondern das, was Du ihm sagst.
Da wirst du wohl dein Programm rausrücken müssen. mfg

Frank
04.02.2005, 10:10
Hi,
fein das es mit dem Funk nun bei dir klappt. So ganz verstehe ich nur nicht warum du so schnell so viele Befehle über Funk überträgst. Ich nehme an du steuerst die Servos mit dem CoController. Der übernimmt doch automatisch das Timing und Servosteuerung. Du brauchst nur deinmal die Position zu übermitteln und dann erst wieder was senden wenn Servo in eine neue Position gehen soll.

Gruß
Frank

PicNick
04.02.2005, 10:42
Hi Frank, wie geht das, wenn der Funk mit dem anderen AVR auch plaudern möchte ? mfg robert

Frank
04.02.2005, 17:36
Die Frage hab ich nicht so recht verstanden! Was willst du genau machen?

Ich gehe mal von aus das du ein Funkmodul am PC hast und eines am Hauptcontoller bei RNBFRA. Der Hauptcontroller könnte die PC-Steuerbefehle empfangen und an den Servo-Cocontroller weitergeben. Nebenbei könnte er natürlich auch andere Befehle empfangen und andere Arbeiten erledigen.
Man kann RN-Funk ja an jeden Controller mit RS232 anschließen. Entweder mit TTL oder eben über vorhandenen Max. Man kann ja auch Funkkanal wechseln und dann mit anderem AVR kommunizieren. Wie man Kanal wechselt steht im Datenblatt des Funkmodules. Im Grunde nur ein Print-Befehl mit ein paar Parametern.

PicNick
04.02.2005, 18:25
Hi, Frank,
Problemstellung RNBFRA1.2.:

PC redet mit UART oder Funk mit dem Main Proc. (dialog-messages mit ACK und Pi Pa Po)

Einige Messages sagen dem Main, er soll Servos stellen.

wie sagt der Main das dem Co ?
UART ist belegt

Ich kann am Main-TX den RX vom CoProcessor dazuhängen, damit er mithört und auf Servo-Kommandos reagieren kann

Aber:
Jede Message mit einem "#s" irgendwo drin ist genau ab dann ein ServoKommando, ob ich will oder nicht.
Die CoProc-Servovariante mit UART ist also nix.

Bleibt nur die I2C Variante auf 100 kHZ, die war aber unwillig, und wir hatten nicht die Zeit, daß zu klären.

Keine Hektik nun, wir haben uns mit einem I2C-ServoBoard geholfen.

Aber die Frage bleibt offen, wie lösen das andere ?

mfg robert

Frank
04.02.2005, 20:52
Die Lösung ist einfach. Du verbindest den CoController mit einem freien Port des Hauptcontrollers. In Bascom kannst du ja ganz leicht mit einem Befehl aus einer Portleitung eine rs232 Schnittstelle machen.

Wenn ich mich nicht täusche, dann ist das bei der Firmware zum CoController (Servosoftware rns1) irgendwo beschrieben.

Frank
04.02.2005, 20:54
Hier ist es beschrieben:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=1995&highlight=servo+cocontroller+rns1

PicNick
05.02.2005, 07:51
Danke, aber ich lese Doku, Datasheets und Helps sehr sorgfältig, bevor ich irgendwo rumwerke.
Mir wurde gesagt, der Bascom verwende für I2C grundsätzlich NICHT die Hardware. Das hat mir dann schon gereicht, normalerweise ist das ein Scheidungsgrund. Da werd ich nicht auch noch eine UART türken lassen.
Aber laß nur, im Grunde hast du meine Frage beantwortet.
danke u. mfg robert

Frank
05.02.2005, 10:11
Hi,
das betrifft die ältere Version von Bascom. In der aktuellen Version gibt es auch die Möglichkeit den Hardware I2C in Bascom zu nutzen.
Viele der RN-Boards (z.B. RN-Speak, RN-Motor) nutzen bereits diese Möglichkeit.

Zudem ist das softwaremäßige simulieren einer Rs232 TX-Leitung (RS bräuchtest du ja für Servosteuerung nicht) auch keine besonders zeitkritische Sache. Der Rechenaufwand ist nur geringfügig höher. Und wenn nur ab und zu Servo Befehle geschickt werden, dann ist der Aufwand für den Controller kaum höher als mit dem echten Uart.

Etwas mehr Performance würde der Empfang von Daten (simulation von RX) darstellen.

Probier´s mal aus, du wirst überrascht sein wie fein das funktioniert

PicNick
05.02.2005, 11:33
Sicher, Frank, async TX simulieren ist wie Urlaub in Bad Schallerbach.
Nur weiß ich ohne Response wieder nicht, ob der Co überhaupt drin steckt.
Ich bin zu der Problematik gekommen wie die Jungfrau zum Kind (Support f. ein Projekt) und fand (finde) es nicht einsichtig, daß sich ausgerechnet die Kommunikation mit dem Co so quer legt.
Wir haben uns dann für den SD21 entschieden (kennst du ?), der bietet einige Möglichkeiten mehr und ab da machte das ganze Servozeugs fast Spaß.
Schön, wenn der neue Bascom mehr HW-Nähe bringt, aber for future use ist mir der Bascom doch etwas zu sperrig. Will ihn aber nicht schlecht machen, jeder, wie er glaubt. mfg robert

Frank
05.02.2005, 12:41
Hallo Robert,

nu CoController ist ja auf dem gleichen Board, verschwinden tut der sicher nicht ;-) RNS1 sendet sowieso keine Rückmeldung. Für viele Fälle ist das schon eine ausreichende Lösung um 10 Servos anzusteuern, insbesondere auch weil sie umsonst ist :-) (RNS1 gibts ja im Downloadbereich)
Aber wenn natürlich spezielle Erfordernisse/Sicherheit gefragt ist, dann ist sicher der SD21 auch eine feine Lösung. Klar, kenn ich auch.

Ich wollte Houddy nur ne einfache Lösung beim RNBFRA Board aufzeigen, danach hatte er ja gefragt. Und da ist RNS mit CoCOntroller natürlich das naheliegenste!

Was HW-Nähe von Basom betrifft, da sehe ich das etwas anders. Ich finde gerade in Bascom ist man so Hardware nah wie kaum in einer Programmiersprache. Die kompletten LIB´s liegen im Quellcode vor, man sieht genau was für Code dort eingebunden wird und kann sehr schnell auf Assemblerebene Änderung vornehmen. Auch lassen sich vorhandene Funktionen einfach durch einene Libarys ersetzen. Und das alles ohne umständliche Projektdateien, Headerdateien, Libary kompilierungen etc. Aber ich weiss natürlich das das Wort "Basic" große Vorurteile provoziert. Aber ist ja auch egal, Hauptsache man erreicht sein Ziel!

Gruß Frank

PicNick
05.02.2005, 15:58
Hi nochmal


nu CoController ist ja auf dem gleichen Board, verschwinden tut der sicher nicht ;-)

Sicher, aber ein "ay ay sir" hört man immer wieder gern.


RNS1 gibts ja im Downloadbereich

ja, als hex, Source is nich, wir haben gefragt.


Ich wollte Houddy nur ne einfache Lösung beim RNBFRA Board aufzeigen,

Ich glaub, der haben wir eh' schon vergrault


Aber ich weiss natürlich das das Wort "Basic" große Vorurteile provoziert. Aber ist ja auch egal, Hauptsache man erreicht sein Ziel!

Compiler is'n Werkzeug, wo's paßt, isses super, wo nicht, isses Müll
(ich selbst pimpere seit 25 Jahren in den perversesten Sprachen auf den schrägsten Kisten herum, Vorurteile könnt' ich nicht brauchen, ich brauch Ergebnisse)

Wie auch immer, RBNFRA Board ist super, ready to go, eigentlich billig, mindestens als Evaluation Board absolut empfehlenswert, und wenn es Unfug treibt, hat man es normalerweise auch selbst so reingeschrieben.
also, keep codin' robert

Houddy
05.02.2005, 21:21
also :-)
die servos werden vom coControler gesteuert!
und der wiederrum bekommt die befehle vom HauptContr. die sind mit einer externe com-leitung am board verbunden das is meinem PC egal!
der Hauptcontrl. hängt an einem Funk-Ding und bekommt die Servo nummer und gibt diese fürs erste weiter.
Allerdings will ich die Servos nahezu in echtzeit steuern also so schnell wie
ich die knüppel auf meinem Gamepad drücke so schnell hätte ich auch gerne die servos!
bin aber der lösung auf der spur :-)
jo und mein programm kommt dann auch gleich