PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SRF02 Adresse ändern von 0xE0 auf 0xE2



superkato
05.11.2010, 13:23
Hallo ich habe drei SRF02 Ultraschallsensoren.

Ich würde gerne die Adressen der drei Sensoren ändern.
Von der standardmäßigen Adresse 0xE0 auf 0xE2.

Ich schließe meinen Ultraschallsensor dafür an ein I2C Board von ELV:

http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=24012&flv=1&bereich=&marke=

und benutze zur Kommunikation HTERM.

Die Verbindung zum ELV-i2c-Board baut HTERM auf.

In der Beschreibung des SRF02:

http://www.robot-electronics.co.uk/htm/srf02techI2C.htm

steht das man folgende Sequenz absenden muss um die Adresse zu ändern:


Changing the I2C Bus Address
To change the I2C address of the SRF02 you must have only one sonar on the bus. Write the 3 sequence commands in the correct order followed by the address. Example; to change the address of a sonar currently at 0xE0 (the default shipped address) to 0xF2, write the following to address 0xE0; (0xA0, 0xAA, 0xA5, 0xF2 ). These commands must be sent in the correct sequence to change the I2C address, additionally, No other command may be issued in the middle of the sequence. The sequence must be sent to the command register at location 0, which means 4 separate write transactions on the I2C bus. When done, you should label the sonar with its address, however if you do forget, just power it up without sending any commands. The SRF02 will flash its address out on the LED. One long flash followed by a number of shorter flashes indicating its address. The flashing is terminated immediately on sending a command the SRF02.

jetzt schreibe ich in das Terminal folgendne Befehl:

S50 A0 S50 AA S50 A5 S50 E2 P

Die Befehlsspezifikation vom ELV Board lautet :


Beispiele:
Schreibe das Daten-Byte 0xFF in das Gerät mit der Geräte-Adresse 1000 000X (binär).
Bildung der Adresse: 1000 000X + Schreib-Bit (0) = 1000 0000 (binär) = 40 (hexadezimal)
[Start] [Write-Adr:0x40] [Daten:0xFF] [Stopp]
S 40 FF P

aber wenn ich dann den Sensor an den I2C USB Adapter anschließe um das SRF02 Tool zu nutzen, sagt er mir das er immer noch die Adresse 0xE0 hat und auch von dort aus die Daten empfängt :(

Hat jemand eine Idee?

Gruß
SK

Richard
05.11.2010, 18:20
Moin moin hier einmal nicht auf Plattdeutsch.

Änderung der I2C Slave ID
Die Slave ID muss nur geändert werden wenn mehrere SRF02 an einem I2C Bus betrieben werden
sollen oder aber wenn ein anderer Busteilnehmer zufällig die gleiche Slave ID besitzt.
Um die Slave ID zu ändern, darf lediglich nur ein SRF02 am I2C-Bus angeschlossen sein. Die Slave
ID wird geändert indem man eine 3 Byte-Sequenz (Hex A0 AA A5) und die neue Slave ID selbst an
das Modul sendet.
Die einzelnen Bytes dieser Sequenz müssen an das Register 0 gesendet werden. Man muss also 4
getrennte I2C Schreibbefehle nutzen, wobei der Abstand zwischen jeder Registerbeschreibung 50ms
sein sollte.
Um Beispielsweise die Standard ID E0 auf F2 umzustellen, müsste nacheinander das Register 0 mit
den Werten A0, AA, A5, F2 beschrieben warden.
Die neue Slave ID sollte man sich gut merken, am besten irgendwo notieren. Falls man die ID mal
vergessen hat, so kann man diese durch das blinken der roten LED nach dem Einschalten des
Modules entnehmen (siehe Tabelle):
Slave ID Langes
Blinken
Kurzes
Dezimal Hex Blinken
224 E0 1 0
226 E2 1 1
228 E4 1 2
230 E6 1 3
232 E8 1 4
234 EA 1 5
236 EC 1 6
238 EE 1 7
240 F0 1 8
242 F2 1 9
244 F4 1 10
246 F6 1 11
248 F8 1 12
250 FA 1 13
252 FC 1 14
254 FE 1 15


Quelle: Robotic Hardware

Gruß Richard

superkato
05.11.2010, 21:05
das ist doch das gleiche was ich oben in english geschrieben habe vom hersteller.

das problem ist nur das ich das über das terminal scheinbar nicht kann.
oder gibts ne andere möglichkeit das über das terminal zu erledigen?

Richard
06.11.2010, 08:37
das ist doch das gleiche was ich oben in english geschrieben habe vom hersteller.

das problem ist nur das ich das über das terminal scheinbar nicht kann.
oder gibts ne andere möglichkeit das über das terminal zu erledigen?

Dort ist beschrieben das die Daten einzeld aber im Zeitraum von 50 ms gesendet sien wollen. Du tippst wahrscheinlich zu langsam...?

Gruß Richard

Searcher
06.11.2010, 10:18
Hallo,

hab sowas gefunden (hast Du ja vielleicht schon):

http://www.elv-downloads.de/downloads/programme/usb_i2c/dokumentation/usb_i2c_dokumentation_v1_0.pdf


Mal versucht, soetwas zu senden:

S 50 A0 P
S 50 AA P
S 50 A5 P
S 50 E2 P

oder
S 50 A0 P S 50 AA P S 50 A5 P S 50 E2 P


Gruß
Searcher

superkato
08.11.2010, 11:32
es geht nicht. hab keine ahnung wie ich das machen soll :(

ich hab noch zur not ein myavr board aber keine ahnung wie ich dort den twi/i2c port nutze.
also verdrahtet hab ich ihn aber programmieren bzw. befehle senden. hab kein plan :(

Richard
08.11.2010, 16:15
Kannst Du denn überhaupt auf den Chip zugreifen? Lesen und Schreiben auf der Original Adresse, sieht doch eher so aus als wenn die Verbindung an sich schon nicht klappt. ich meine jetzt den Chip von dem Du die Aresse ändern möchtest, nicht das ELV Interface.

Gruß Richard

superkato
02.04.2011, 12:59
Das Problem hab ich gelöst war mit hilfe von jemanden einfach zu lösen. Per H-Term einfach die Kommandos auf den Sensor geschickt und voila , die Adressen waren geändert.
Eine LabVIEW Schnittstelle habe ich auch, die darf ich aber so ohne erlaubnis vom eigentlichen Programmierer nicht rausgeben.

TobiKa
02.04.2011, 13:08
http://www.robotikhardware.de/download/srf02doku.pdf
Dort isses doch auch gut erklärt.