PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe ich bin am verzweifeln ............. (SD20) :?:



alpha
20.01.2004, 19:51
Hi @ all

So nun bin ich schon seid Tagen auf der Suche nach einer vernüpftigen Anleitung wie ich mit dem SD20 nen servo ansteuern kann über RS232. Und man bekommt echt nur wischi waschi antworten, das ist alles nix Halbes und nix Ganzes.
Nach langer suche bin ich dann zu diesem Link gekommen :
http://www.the-starbearer.de/Roboterelektronik/servo/SD20.htm
so nun ich hatte mir gedacht super C-Control habe ich, bestellst dir halt den SD20. Dieser kam nun dann auch sofort und ich ahbe ihn nach der Anleitung zusammen gebaut. Aber irgendwie funktioniert das alles nicht.

Mittlerweile ist mir echt egal wie ich das ding ansteuere ich brauche es nur langsam es ist dringend. Und ich möchte nicht mehr viel Geld dafür ausgeben am besten gar nix. Den mittlerweile hat mich der Spass schon über 50 € gekostet und das finde ich ein bischen sehr viel Geld.

Also bitte ich euch dringend um Hilfe.....

Wäre super wenn ihr mir helfen könntet.

THX schon mal im vorraus für evt. Antworten

P.S. ich bin ein absoluten Neuling in diesem Gebiet also bitte recht einfach beschreiben

Kjion
20.01.2004, 20:05
Was funktioniert denn genau nicht ?? Ohne zu wissen was nicht funktioniert ist es schwierig dir zu helfen...


So nun bin ich schon seid Tagen auf der Suche nach einer vernüpftigen Anleitung wie ich mit dem SD20 nen servo ansteuern kann über RS232.
RS232 kann aber nicht funktionieren. Der SD20 kann nur über I2C angesteuert werden.

Auf der Seite ist doch auch ein Bespielcode dabei. Hast du den denn mal ausprobiert ??

MfG Kjion

20.01.2004, 20:17
Das Beispiel von starbearer.de sollte eigentlich funktionieren:



'************************************************* **********
'* Ansteuerung von bis zu 20 Servos mit dem SD20 *
'* über den I2C Bus. *
'* das Programm dreht den Servo am Servo PIN 1 des SD20 *
'* und liest den Register 0 (Version) um die Vorgänge *
'* zu demonstrieren. *
'* (ohne Expanded Mode) *
'************************************************* **********

'*********** Ports für den I2C Bus**************************
define SDA Port[15]
define SCL Port[16]

define I2C_Daten byte
define N byte 'Schleifenvariable
define Startbyte byte
define Kommandobyte byte
define ServoNummer byte
define ServoWinkel byte

'I2C Bus Ruhezustand
SDA=ON
SCL=ON

'*********** Hauptprogramm********************************
#Main

Get Startbyte ' Startbyte von der seriellen Schnittstelle
If Startbyte <> 97 Then GoTo Main ' Schleife, solang bis ein Startbyte empfangen wurde
If Startbyte = 97 Then GoTo KlasseA ' falls Kommandobyte = asci(97)="a" springe zur #KlasseA

#KlasseA ' Klasse A: Servodirektsteuerung
get ServoNummer ' Nummer des anzusteuernden Servos von der seriellen Schnittstelle empfangen
get ServoWinkel ' Winkel des anzusteuernden Servos von der seriellen Schnittstelle empfangen
GoSub ServoStellen
GoTo Main


#ServoStellen
GoSub I2C_Start ' I2C-Startbedingung
I2C_Daten = 194 ' Adresse des SD20 am I2C Bus
GoSub I2C_Write ' Adresse übertragen
I2C_Daten = ServoNummer ' Register des Servos, der angesprochen werden soll schreiben
GoSub I2C_Write ' Register übertragen
I2C_Daten = ServoWinkel ' Winkel auf den dieser Servo drehen soll schreiben
GoSub I2C_Write ' Winkel schreiben
GoSub I2C_Stop ' I2C-Stopbedingung.
Return

'*********** I2C Bus Standard Routinen********************

#I2C_Start
SDA = OFF
SCL = OFF
Return

#I2C_Stop
SDA = OFF
SCL=ON
SDA=ON
Return

#I2C_Write
For n = 1 To 8 ' 8 Bit schreiben in For-Next-Schleife
SDA = OFF
if (I2C_Daten and 128) =128 then SDA=ON
pulse SCL
I2C_Daten=I2C_Daten shl 1
Next
pulse SCL
Return

#I2C_Read
I2C_Daten = 0
deact SDA
For n = 1 To 8 ' 8 Bit lesen in For-Next-Schleife
I2C_Daten=I2C_Daten shl 1
SCL=ON
If SDA Then I2C_Daten = I2C_Daten + 1
SCL = OFF
Next
Return

#Ack
SDA = 0
pulse SCL
Return

#NoAck
SDA = 1
pulse SCL
Return

alpha
20.01.2004, 21:13
Hi

Danke erst mal für die schnelle Antwort.
Also das Problem liegt darin, dass ich den Code einfach auf die C-Control gemacht habe die Schaltung gebaut habe, und das basic Programm zum laufen gebracht habe.

das basic Programm geht das habe ich testen können das sendet das was es soll. Nur habe ich das Problem das ich das gefühl habe die CC regiert gar nicht auf das was ich sende oder gibt es nicht an den SD20 weiter, dass heißt es passiert nix und ich finde den fehler nicht.

Wer möchte kann mir auch per ICQ schreiben 191799327

Joerg
20.01.2004, 21:36
So nun bin ich schon seid Tagen auf der Suche nach einer vernüpftigen Anleitung wie ich mit dem SD20 nen servo ansteuern kann über RS232. Und man bekommt echt nur wischi waschi antworten, das ist alles nix Halbes und nix Ganzes.

Also ich bin mir eigentlich sicher nicht gefragt worden zu sein.

Auch würde mich interessieren, was eigentlich nicht geht. Wie weiter oben schon steht, das Programmbeispiel von starbearer scheint OK zu sein. Zumindest muss sich am Servo erst mal was tun.

Hast du an die PullUp-Widerstände beim I2C gedacht?

Viele Grüße
Jörg

Frank
20.01.2004, 21:42
Hi alpha, hast Du SD20 auch wirklich an Port 15/16 angeschlossen oder an welchem Port? Hast Du das Beispiel entsprechend angepaßt !

Gruß Frank

20.01.2004, 22:11
Ja auf Port 15 & 16 auf Steckleiste 1
Wie kann ich kontrollieren ob das C Control auch was sendet ???
Oder eher gesagt wie kann man prüfen oder SD20 was empfängt ???

Joerg
21.01.2004, 08:25
Hallo alpha,


Wie kann ich kontrollieren ob das C Control auch was sendet ???
Oder eher gesagt wie kann man prüfen oder SD20 was empfängt ???

Am besten kann man sowas mit einem Oszi sehen. Vielleicht hast du ja die Möglichkeit einen leihweise zu bekommen.

Aber nochmal zurück zu Aufbau. Die Schaltung von starbearer ist aus Übersichtsgründen nicht ganz vollständig.
So fehlen z.B. PullUp-Widerstände (4,7K o.ä., hier unkritisch) auf den I2C-Leitungen. Weiterhin fehlt (bei Nutzung des Servo-Ausgangs 5 (Pin6) ebenfalls ein 4,7K PullUp.
Die Betriebsspannung ist nahe am Schaltkreis mit einem Kondensator 100n abzublocken. Sofern die Servos aus der gleichen 5V-Spannungsquelle, wie der Controller mit versorgt werden, sind weiterhin Elkos 100-1000uF (je nach Anzahl der Servos) vorzusehen, da die Anlaufströme teilweise erheblich sind. Besser ist hier auf jeden Fall eine eigene Versorgung für die Servos.


HTH und Viele Grüße
Jörg

21.01.2004, 10:22
Es sind doch schon PullUp Widerstände schon auf Starter- und Applikationsboard!

alpha
21.01.2004, 14:15
Zum einen erst mal Danke herr Pohl für die schnelle Antwort sowohl im Forum als auch per E-Mail.

So nun habe ich noch mal eine dumme Frage: muss ich die Mase der Schltung mit der masse vom C Control verbinden? weil dies war bislang nicht der fall. ich hatte sowohl eine Stromversorgung für das C-Control als auch für die Schlatung selbst.

Kann dies vielleicht der Grund sein warum sich nichts tut ???

Matthias
21.01.2004, 14:23
Ja natürlich, ohne gemeinsame masse hast du doch kein gegenpol zu den Datenleitungen.

Matthias

21.01.2004, 15:52
Hmmmm .........

ich glaube meine schaltung ist total wirr. kann mir jamnd vielleicht mal eine skizze machen die man das am besten zusammenbaut?
Wäre echt super ich hab in dem gebit noch nicht viel erfahrung habe mir gestern erst mal ein steckboard gekauft damit ich auschließen kann das ich was beim löten falsch gemacht habe.

Ich hoffe ich bekomme das bald hin ............

also Danke schon mal für die ganzen Antworten

alpha
21.01.2004, 16:29
Sagt mal ....

Wenn ich das auf Steckleiste 1 anschließe auf port 15/16 sind das die Digitalports 12/13 .....

Aber die SDA und SCL leitungen liegen doch auf Steckleiste 2 auf Port 11/12 welche muss ich nun nehmen ???

Kjion
21.01.2004, 16:46
Die SDA und SCL Leitungen kann man mit dem normalen Basic nicht ansprechen. Das geht nur über ASM Code. Aber auch das sollte nur mit Vorsicht gemacht werden, da an den Leitungen das EEprom hängt in dem das Programm gespeichert ist.

Du musst also zwei normale Digitalports dafür nehmen...

MfG Kjion