PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SD20 über I2C an C-Control1 auf A.Board funktioniert nicht



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

Windt H.J.
22.02.2006, 18:37
Hello,
It could be that you are using an SD20 with Revision 2 software.
Writing a “0” as servo position will deactivate (turn off) the servo.
Try writing a “1” instead.
Success!
Greetings,
H.J. Windt

ubergeek
22.02.2006, 21:46
Funktioniert bei verschiedenen Stellungen ebenso wenig :(

Windt H.J.
23.02.2006, 00:10
DigitalPort 7 :arrowl: :!: an SD20 Port 15
DigitalPort 8 :arrowl: :!: an SD20 Port 14

Basic Programm:

define SDA Port[1] :arrowl: :!:
define SCL Port[2] :arrowl: :!:
.........

:arrowu: this could be the problem :arrowu:
Try changing your program to..

define SDA Port[7]
define SCL Port[8]

Greetings,
H.J. Windt

ubergeek
23.02.2006, 23:25
alle Kombinationen getestet - immer noch erfolglos ; Testprogramm für die Funktionsfähigkeit der IC?

Windt H.J.
24.02.2006, 19:26
Hello,
I have uploaded my E-I2C DEVICE SEEK software for you to try.
https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=311
This software will check all the I2C 7 bit addresses for any device connected to the E-I2C bus and display the address(es) on a terminal program.
This way we can make sure that the SD20 is reacting.
My software uses port[1] as SDA and port[2] as SCL.
Make sure to disconnect the servo first and let me know if the terminal program displays any found I2C devices.
Greetings,
H.J. Windt

ubergeek
27.02.2006, 16:59
" WINDT SYSTEMS
EI2C DEVICE SEEK
EI2C Search ADR = &d0"

Windt H.J.
27.02.2006, 17:15
Hello,
If the software finds anything then it will display:

*********************
EI2C Device!
Address = &dxx
*********************

xx is the decimal address
Greetings,
H.J. Windt

ubergeek
04.03.2006, 14:53
.....
EI2C Search ADR = &d194
*********************
EI2C Device!
Address = &d194
*********************
....

Die C.Control war kaputt :( , habe den IC jetzt an eine (zweite) CC1 Basic TypM angeschlossen.

Windt H.J.
04.03.2006, 17:46
Hello,
I’m sorry to hear that you C-Control is malfunctioning.
I have created a small test program for you to try.
You will need to use a terminal program because the program will ask you for a servo number and a servo position.
Make sure to use 2 power supply’s, 1 power supply for the C-Control and SD20(+5V from C-Control), the other power supply for your servo.
Remember to connect all the power supply GND’s (-) together.
Greetings,
H.J. Windt