Lieber Besucher, herzlich willkommen bei: RCLine Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Donnerstag, 31. März 2005, 17:57

Problem mit Microcontroller und Servos

Ich hab mir bei www.robotikhardware.de den Chip RNS1 bestellt, der kann über den PC 10 Servos steuern.

Da aus dem Seriellen Port ein anderes Signal rauskommt, als TTL hab ich noch nen Pegelwandler (MAX232) dazwischen gehongen. Wenn ich was aus der Seriellen rausschicke kann ich das 0V-5V Signal am Oszi einwandfrei sehen.

Under Visual Basic hab ich dann ein Programm Programmiert, das dem Chip sagt was er machen soll. Das hab ich mit dem MSCOMM Teil gemacht. Erst den Comm Port 1 geöffnet, Bautrate usw. festgelegt, und dann die Bytes rausgeschickt. Und da ist das Problem. Es funktioniert nicht, es scheint als ob der Chip die Signale nicht versteht.
In der Beschreibung steht das das Signal aus 4 Bytes besteht.

1. und 2. Byte sind immer #s
und 3. Byte ist die servonummer (1-10)
und 4. Byte ist die Position (0-255)

ich hab das dann unter VB FOlgendermasen geschrieben

MSCOMM1.output = "#s125" (also das das servo 1 die Position 25 ein nimmt)
Das tut es aber nicht.

Wenn ich das servo manuell auf vollauschlag drehe, und an den Chip anstecke stellt es sich in Mitellstellung. Also der CHip scheint zu gehen, aber irgendwas scheint mit den Daten nicht zu stimmen.

Kann mir da jemand helfen.
Danke

Mike
Wo sind meine Erdnüsse?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »reflexion1234« (31. März 2005, 18:02)


2

Donnerstag, 31. März 2005, 18:28

Zitat

"#s125"

Das sind 5 Byte !

0-255 heisst, das das gewuenschte Byte den Wert 0-255 annehmen kann. Nicht einen String mit dem Wert "0" - "255".
Gruss
Thomas

🖖
So long, and thanks for all the fish.


3

Donnerstag, 31. März 2005, 18:34

byte-string Hä?

Kannst du das kurz für einen Microcontroller Frischling erklären?

Wie soll ich das dann schreiben?
Wo sind meine Erdnüsse?

4

Donnerstag, 31. März 2005, 19:07

Das hat doch absolut nichts mit Microcontrollern zu tun.

Ein Byte ist ein 8 Bit Werte, welcher den Wert 0 - 255 annehmen kann. Oft auch als Character bezeichnet.
Ein String ist ein Character Array (also eine Folge von 8 Bit Werten).

Schickst du nun beispielsweise die Zahl 3 als "3" rueber, kommt dort der Wert der Zahl 3 an. Hexadezimal also hier 0x30.
Willst du den echten Wert 3 schicken muesste das also 0x03 heissen.

In deinem Fall musst du also "#s" schicken. Anschliessend den echten Wert 1-10 (und nicht die Zahl 10). Danach die Position wieder als echten Wert 0-255.

Tut mir leid, aber mit VB kenn ich mich nicht aus. Deswegen kann ich die nicht sagen wie man das da schreibt.
Gruss
Thomas

🖖
So long, and thanks for all the fish.


5

Donnerstag, 31. März 2005, 22:05

Das heißt alle Daten als Dezimal.

Aber warum muss ich #s "so" schicken ? soll ich das nicht auch ins dezimalsystem setzten?
Wo sind meine Erdnüsse?

6

Donnerstag, 31. März 2005, 22:09

Genau das musst du machen.
Gibt's in VB eine Art char Datentyp fuer ein Zeichen? Dann kannst du diese beiden Zeichen jeweils nacheinander als ein Zeichen rueberschicken.
Gruss
Thomas

🖖
So long, and thanks for all the fish.


7

Donnerstag, 31. März 2005, 22:12

ist das nicht die CHR funktion wo man schreibt CHR(inhalt) und er gibt das als binärwert aus? oder Dezimalwert oder sowas.

Mike
Wo sind meine Erdnüsse?

8

Donnerstag, 31. März 2005, 22:13

probiers mal damit:

Mscomm1.output = "#s"
Mscomm1.output = chr(servonummer)
Mscomm1.output = chr(servoposition)

9

Donnerstag, 31. März 2005, 22:14

Ooooppppppsss... und da war schon einer schneller :prost:

10

Donnerstag, 31. März 2005, 22:15

Danke Christian, darauf bin ich verdammt noch mal nicht gekommen.

Habs dauernt wie in dem Bascom besipiel mit output = "#s" ; CHR(a) ; CHR (b)

Da hat er mir dauernt den strichpunkt angemeckert (is ja auch bei VB kein wunder)

Ich geh jetzt mal den Code probieren.

Mike
Wo sind meine Erdnüsse?

11

Donnerstag, 31. März 2005, 22:17

Na also. Gemeinsam klappts. Sowas wie chr() hatte ich gemeint. Meine alten Basic Kenntnisse sind inzwischen doch sehr eingerostet. :D
Gruss
Thomas

🖖
So long, and thanks for all the fish.


12

Donnerstag, 31. März 2005, 22:33

nein es klappt nicht....

Mensch. Hab nochmal die schaltung überprüft, auch mal auf kalte lötstellen durchgemessen, nochmal signal am Oszi angeschaut, und es geht nix.

Ich weiß echt nicht weiter. Da geht einfach nix mit dem Ding. Hab alle Kanäle durchprobiert, aber da will nix!

Mike
Wo sind meine Erdnüsse?

13

Donnerstag, 31. März 2005, 22:36

Gibt's 'n Datenblatt wo die Programmiersequenzen und Antworten beschrieben sind?
Gruss
Thomas

🖖
So long, and thanks for all the fish.


14

Donnerstag, 31. März 2005, 22:43

Ja in der Zip Datei ist ein "Datenblatt" und ein Bascom besipiel

http://www.roboternetz.de/download/rns1.zip

Mike
Wo sind meine Erdnüsse?

15

Donnerstag, 31. März 2005, 22:51

OK. Das war einfach. Und wie schaut dein entspr. Code aus?
Gruss
Thomas

🖖
So long, and thanks for all the fish.


16

Donnerstag, 31. März 2005, 22:55

Also wenn das Programm startet

Private Sub Form_Load()

MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True

End Sub

und das wenn ich auf einen Button klicke

Private Sub Command1_Click()

MSComm1.Output = "#s"
MSComm1.Output = Chr(1)
MSComm1.Output = Chr(80)

End Sub
Wo sind meine Erdnüsse?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »reflexion1234« (31. März 2005, 22:57)


17

Donnerstag, 31. März 2005, 23:02

Du nutzt also den Code im zweiten Beispiel (Rnb_servo).
Und welche Hardware hast du dazu gebastelt (ueber welchen Port gehst du)?

Der Chip selber ist ja ein Standardchip mit etwas Software drauf.
Gruss
Thomas

🖖
So long, and thanks for all the fish.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Thomas_R.« (31. März 2005, 23:05)


18

Donnerstag, 31. März 2005, 23:06

Die Hardware hab ich nach dem Schaltplan ganz unten in der PDF Datei gebaut. Am Pin 2 hab ich den einen Pegelwandler angeschlossen. Mehr isses nicht.

Hab Servo angestöpselt, und strom drauf, aber wie gesagt, das servo bewegt sich nur in die grundposition. Der Controller ist nicht kaputt (hab mehrere gekauft, und auch mal ausgewechselt)

Mike
Wo sind meine Erdnüsse?

19

Donnerstag, 31. März 2005, 23:13

Wenn deine SW und die SW des Prozessors zusammen passen muesste es gehen. Hast du am Servoausgang mit dem Oszi ein Signal?
Gruss
Thomas

🖖
So long, and thanks for all the fish.


20

Donnerstag, 31. März 2005, 23:29

ja, aber das Signal ist eben das für mitellstellung (irgendwas mit 1,5 ms rum)

Was ist SW ?


Übrigends, ich benutze kein Board dafür, ich hänge den Chip DIREKT an den PC, ohne diese komischen Entwickler/experimentier/Robotor/C-Control oder was auch immer Boards!

Mike
Wo sind meine Erdnüsse?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »reflexion1234« (31. März 2005, 23:30)