ubergeek
22.02.2006, 16:22
Hallo, ich habe folgendes Problem mit dem SD20: Nach mehrmaligen Verkabeln (3 Versuche: 2 Platinen + nur noch Kabel angelötet) funktioniert der Controler immer noch nicht:
Beim Anlegen der Spannung zucken die Servos (normal) - Stromversorgung soweit an allen notwendigen Pins getestet.
Gibt es ein Kontrollprogramm , welches den SD20 auf sein korrektes Funktionieren überprüfen kann (Antwort über das terminal ausgeben)? Weitere Lösungsvorschläge für mein Problem wären sehr hilfreich. (mittlerweile schon zu viel Zeit damit verbracht - sehe keinen Fehler)
Zum kurzen Verwendungszweck: Es sollen lediglich 2 Servos von einer C-Control 1 auf dem Application Board angesteuert werden (mit einer möglichst präzisen Positionsangabe für einen 3dScanner) - Position soll per Comport mit einem Delphi Programm übermittelt werden ( als Sensoren sind ein GP2D12 u. GP2D120 montiert - funktionieren)
getestete Servos:
Graupner JR C507 @4.8V
Conrad ES-05 TopLine (2 verschiedene)
Wie folgt verkabelt:
C-Control1 auf Application Board
DigitalPorts 1/2 (7/8 oder 15/16 (An die Stiftleiste der C-Control angelötet))
z.zt:
DigitalPort 7 an SD20 Port 15
DigitalPort 8 an SD20 Port 14
C-Control GND an SD20 Port 19 sowie Port 8, Servo Farbe Schwarz(Conrad)/Braun(Graupner) , Mittelanschluß des Keramikresonator
C-Control 5V an SD20 Port20 sowie Port 1, Servo Farbe Rot (Conrad/Graupner)
Servo gelb/weiß an SD20 Port 3 (oder Port 1 od. 2 - beides getestet)
100nF (2 verschiedene getestet) an SD20 Port 19 zu 20
mitgelieferten Resonator Außenpole an SD20 Port 10 u. 9 (andere Anschlussrichtung getestet - horizontal um 180° gedreht)
Desweiteren habe ich einen eigenen Stromanschluss für die Servos angebracht - 6V (Am Akku oder mit Netzgerät), Ergebnis ist gleichbleibend.
#######
Basic Programm:
define SDA Port[1]
define SCL Port[2]
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
gosub I2C_Start ' I2C-Startbedingung
I2C_Daten=194 ' Adresse des SD20 am I2C Bus
gosub I2C_Write ' Adresse übertragen
I2C_Daten = 3' Register des Servos, der angesprochen werden soll schreiben
gosub I2C_Write ' Register übertragen
I2C_Daten = 0' 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
Beim Anlegen der Spannung zucken die Servos (normal) - Stromversorgung soweit an allen notwendigen Pins getestet.
Gibt es ein Kontrollprogramm , welches den SD20 auf sein korrektes Funktionieren überprüfen kann (Antwort über das terminal ausgeben)? Weitere Lösungsvorschläge für mein Problem wären sehr hilfreich. (mittlerweile schon zu viel Zeit damit verbracht - sehe keinen Fehler)
Zum kurzen Verwendungszweck: Es sollen lediglich 2 Servos von einer C-Control 1 auf dem Application Board angesteuert werden (mit einer möglichst präzisen Positionsangabe für einen 3dScanner) - Position soll per Comport mit einem Delphi Programm übermittelt werden ( als Sensoren sind ein GP2D12 u. GP2D120 montiert - funktionieren)
getestete Servos:
Graupner JR C507 @4.8V
Conrad ES-05 TopLine (2 verschiedene)
Wie folgt verkabelt:
C-Control1 auf Application Board
DigitalPorts 1/2 (7/8 oder 15/16 (An die Stiftleiste der C-Control angelötet))
z.zt:
DigitalPort 7 an SD20 Port 15
DigitalPort 8 an SD20 Port 14
C-Control GND an SD20 Port 19 sowie Port 8, Servo Farbe Schwarz(Conrad)/Braun(Graupner) , Mittelanschluß des Keramikresonator
C-Control 5V an SD20 Port20 sowie Port 1, Servo Farbe Rot (Conrad/Graupner)
Servo gelb/weiß an SD20 Port 3 (oder Port 1 od. 2 - beides getestet)
100nF (2 verschiedene getestet) an SD20 Port 19 zu 20
mitgelieferten Resonator Außenpole an SD20 Port 10 u. 9 (andere Anschlussrichtung getestet - horizontal um 180° gedreht)
Desweiteren habe ich einen eigenen Stromanschluss für die Servos angebracht - 6V (Am Akku oder mit Netzgerät), Ergebnis ist gleichbleibend.
#######
Basic Programm:
define SDA Port[1]
define SCL Port[2]
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
gosub I2C_Start ' I2C-Startbedingung
I2C_Daten=194 ' Adresse des SD20 am I2C Bus
gosub I2C_Write ' Adresse übertragen
I2C_Daten = 3' Register des Servos, der angesprochen werden soll schreiben
gosub I2C_Write ' Register übertragen
I2C_Daten = 0' 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