PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-Control I2C Bus deaktivieren



Dennis2006
09.11.2006, 19:35
Hi!

Wie kann ich den I2C Bus am RN-Control via BASCOM für 10 sek. deaktivieren?

Also dass keine I2C Signale gesendet werden.

Habt ihr eine Idee?

Danke!

Gruß

Dennis

PicNick
09.11.2006, 19:53
Nx versteht. Der sendet doch eh' nur, wenn du es ihm sagst ?

uwegw
09.11.2006, 20:35
Du müsstest im Register TWCR das Bit TWEN für die zehn Sekunden auf null setzen. Aber ich schließ mich der Frage von PicNick mal an: wozu?

Dennis2006
09.11.2006, 22:49
Hi!

Also wie schon in dem zuvor eröffnetem Thread habe ich das Problem, dass beim Einschalten (nicht immer) meiner Control Boards (RN-Control + AnxS20) die Servos wie wild in eine Position fahren und da stehen bleiben. Dies passiert immer ganz willkürlich und es ist auch kein Schema daraus zu erkennen oder sonstige Regelmäßigkeiten.

Die beiden Boards sind mit einem I2C Kabel verbunden.

Trenne ich nun dieses Kabel beim Einschalten so hören die Servos direkt auf mit dem Spuck.

Daraus schließe ich, dass es daran liegt, dass das Servoboard I2C Signale bekommt, die es nicht bekommen dürfte.

Um das zu verhindern dachte ich mir, dass ich einfach die I2C Schnittstelle 10 sek. deaktiviere, bis das Programm in den beiden Controllern läuft, und diese die richtigen Signale abgeben ohne durch irgendwelche Spannungsspitzen oder beim Einschalten verursachende Störquellen, die die Servos in Positionen steuern, wo sie gar nicht hinsollen.

uwegw wie meinst Du das mit den Registern?

Danke!

Gruß

Dennis

PicNick
10.11.2006, 07:56
Geh, schau mal, ob das was mit den +5V auf dem Kabel zu tun hat.
Sprich, du sollest das trennen, damit die Betriebs Spannungen der zwei Boards sich nicht gegenseiting masssakrieren

uwegw
10.11.2006, 15:00
hast du mal versucht, die I2C-Schnittstelle nicht sofort beim Einschalten, sondern erst nach nen kurzen Verzögerugn zu starten? Also die Konfigurationsbefehle nciht sofort beim Programmstart ausführen lassen.

Dennis2006
10.11.2006, 15:06
Hi!

Danke für die Info!

Welche 5 V auf dem Kabel meinst Du?

Sind die ausgehend vom Anx-Board oder vom RN-Control?

Also der I2C Anschluss vom ANX-S20 Board sieht so aus:

http://webmaster2004.we.funpic.de/pics/anx-SD20_I2C.jpg

Danke!

Gruß

Dennis

Dennis2006
10.11.2006, 15:09
Hi!

Also was ich schon probiert habe ist folgendes:


$regfile = "m32def.dat" 'Die Anweisung bestimmt Ccntrollertyp, hier AVR Mega 32
$crystal = 16000000

$baud = 9600

Wait 5

I2cinit
'Startet den I2C Bus

' I2C SETUP

Config Scl = Portc.0
Config Sda = Portc.1
Config Twi = 100000

'LED AUS
Config Portc.2 = Output
Config Portc.3 = Output

Portc.2 = 0
Portc.3 = 0

' CONSTANTS 'Anx-S20 Board Slave Adresse
Const Anx = &HC2

' FUNCTIONS
Declare Sub Anxwrite(byval Servo As Byte , Byval Pos As Byte)
...


Danke!

Gruß

Dennis

PicNick
10.11.2006, 16:51
Eigentlich alle + Spannungen. Da die Boards ja alle versorgt sind, braucht der Bus nur GND, SCL u. SDA.
Schaumal, manchmal kann man das auch jumpern

Dennis2006
11.11.2006, 12:55
Hi!

Also im RN-Control Handbuch steht:

Zum I2C Bus:

Die PIN?s 5,7,9 und 10 können über herausnehmbare Kurzschlussbrücken (Jumper JP6) vom
Board getrennt werden. Dies ist zum Beispiel dann notwendig, wenn bereits ein anderes
Masterboard die Spannungen auf den Bus legt. Es darf immer nur ein Board die Spannungen
bereitstellen.

Bei mir sind alle 3 Jumper herausgenommen (sind zuständig für UB, +5V und INT).

Danke!

Gruß

Dennis

Dennis2006
11.11.2006, 13:02
Hi!

Habe gerade mal den Anschluss durchgemessen. Dabei musste ich trotz herausgezogenen Brücken feststellen, dass auf den Pins 7 und 9 5 V anliegen!

Ist das normal?

Danke!

Gruß

Dennis

uwegw
11.11.2006, 15:11
auf welchem Board misst du, und wo ziehst du die Jumper? RNC oder das Servoboard?

Dennis2006
11.11.2006, 15:59
Hi!

Ich messe am RNC!

Die Jumper sind auf dem RNC direkt unter dem I2C-Bus:


https://www.roboternetz.de/wissen/index.php/Bild:Rncontrol1.4best%C3%BCckungsplan.gif

Danke!

Gruß

Dennis

uwegw
11.11.2006, 18:37
also herrscht jetzt folgende Situation:
- RNC und Servoboard in Betrieb
- Jumper auf dem RNC offen
- auf dem I2C-Kabel liegt Spannung vom Servoboard und kommt auf dem RNC an

Dann dürfte es jetzt funktionieren, wenn es an der Stromversorgung lang.

Dennis2006
11.11.2006, 18:55
Hi!

Ja das stimmt soweit, außer dass trotz offener Jumper am RNC, von den Pins 7 und 9 des RNCs Spannung auf diesen Pins liegt obwohl ja das Servoboard schon auf diese Pins Spannung legt!

Danke!

Gruß

Dennis

uwegw
11.11.2006, 19:02
?
das wass du da misst, müsste die Spannung vom Servoboard sein. Test>: I2C-Kabel abziehen, dann darf am RNC nichts mehr zu messen sein.

Dennis2006
11.11.2006, 22:40
Hi!

Genau das ist ja das Komische.

Ich habe das I2C Kabel vom Servobaord abgezogen und dann die Pins 7 und 9 gegen GND gemessen. Und liegen 5V an!


Ist doch nicht normal oder? Vielleicht ist das ja was zu dem komischen Servobewegungen beim Einschalten führt?

Danke!

Gruß

Dennis

Frank
12.11.2006, 23:55
5V kann nur an Pin 5 + Pin 7 anliegen, Pin 9 ist die Batteriespannung die höher sein muss. Da hast du sicher beim messen was verwechselt. Ist kein Jumper gesteckt ist auch keine Spannung drauf.
Sobald AnxS20 angeschlossen ist sieht das ganze anders aus, wie bereits gesagt wurde. Achte darauf das du AnxS20 nicht über das I2C Kabel mit Spannung versorgst, das würde für die Servos nicht ausreichen und zu Problemen führen.

Dennis2006
13.11.2006, 14:53
Hi!

Also das Anx-S20 Boar dwird nicht über den I2C Bus mit Spannung versorgt sondern das Board hat 4 Anschlussklemmen für die Spannungsversorgung:

http://webmaster2004.we.funpic.de/pics/Spannungsversorgung.jpg

Ich habe nun zwei Lipozellen mit Spannungsregler an das RN-Control und paralell dazu das Servoboard (an den Klemmen Servo + und Servo GND)angeschlossen. Der Jumper J5V auf dem Servoboard ist bei mir geschlossen damit er die 5 V Logikspannung aus der Servospannung generiert.

Ich habe es aber auch schon probiert, diesen Jumper zu ziehen und dann seperat nochmal 5 V Logikspannung an den Klemmen Logic GND und Logic +5V anzuschließen. Jedoch war das Problem damit nciht behoben. Es war erst behoben, als ich das I2C Kabel gezogen habe!

Danke!

Gruß

Dennis

Dennis2006
13.11.2006, 14:57
Hi!

Habe gerade nochmal nachgemessen.

Habe die Pins wohl verdreht herum abgelsen. Die 5 V leigen beim EInschalten des RN-Controls auf den Pins SDA und SCL.

Gruß

Dennis

Frank
13.11.2006, 15:32
Ich kenne das Anx-S20 nicht sehr gut, aber wenn ich oberes so anschaue, dann musst du den abgebildeten Jumper bei Anx-S20 einstecken damit es sich selbst mit 5V aus der Motorspannung versorgt.

Somit musst du unbedingt alle I2C Spannungsjumper bei RN-Control rausziehen. RN-COntroll braucht seine eigenen 5V, möglichst nicht die vom Servoboard.
Das erfolgt indem du RN-Control auch über die Schraubklemmen mit mindestens 8V versorgst. Wenn das dann immer noch Störungen gibt, dann ist die Spannung bei deinen Akkus nicht stabil genug, du solltest dann andere Spannungsquelle oder für RN-Control eigene Batterie (min. 8V) nutzen.

Mehrer Servos und ein Controllerboard sollte man möglichst nie an der gleichen Spannung betrieben, dies kann oft Störungen geben da die Servomotoren schon einiges an Strom verbraten.

uwegw
13.11.2006, 18:36
Die 5 V leigen beim EInschalten des RN-Controls auf den Pins SDA und SCL.
Das ist normal, die Pins werden über Pullup-Widerstände auf 5V gezogen. Die Datenübertragung funktioniert dann indem die Controller die Leitung auf Masse ziehen.

Dennis2006
18.11.2006, 20:10
Hi!

Nun habe ich mir gedacht, dass ja noch das EEPROM 24C64 auf dem Servoboard sitzt und ja Positionen ausgibt.

Ich dachte mir, dass das auch zu Störungen kommen könnte.

Ich habe es mal rausgezogen und siehe da, die Störungen sind weg WENN das I2C Kabel welches das Servoboard mit dem RN-Control verbindet vom Servoboard abgezogen ist.

Wird es draufgesteckt, so sind die unregelmäßigen Servobewegungen wieder da. Also muss das ja vom RN-Control I2C Bus kommen. Der muss irgendwelche Störsignale beim Einschalten auf den Bus geben. Leider habe ich kein Oska um das zu beweisen. Habe es mal mit dem Voltmeter probiert jedoch sind dort keine Spannungseinbrüche am I2C Bus beim Einschalten zu registrieren.

Um alle weiteren Fehlerquellen auszuschließen, werde ich den Akku nochmal vollladen.

Ich habe darüber mal mit meinem Informatiklehrer gesprochen. Der meint ich sollte dann eine kleine Transitorschaltung an den Bus hängen und einen Kondensator dazu, so dass der Bus verzögert auf das Servoboard geschaltet wird. Habt ihr eine Beispielschaltung dafür?

Danke!

Gruß

Dennis

Dennis2006
19.11.2006, 19:47
Hi!

Also ich habe den Akku vollgeladen und getestet... Immer noch das Gleiche...

Dann dachte ich mir ist der 2 zellige Lipo Akku mit 2000 mAh vielleicht zu schwach und habe mal ein Netzteil mit 9 V und 2 A angeschlossen.
Immer noch das Gleiche Problem.

Dann habe ich den Akku wieder angeklemmt und seperat die 5 V Logikspannung an das Servoboard angeschlossen... Resultat immer noch das Gleiche Problem...

So langsam weiß ich nicht mehr weiter...

Habt ihr noch eine Idee?

Danke!

Gruß

Dennis