PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ultraschall srf08 mit bascom



pebisoft
22.11.2004, 22:21
hallo, ich möchte mit basocm das srf08 ultraschallmodul ansteuern/auslesen. es hat einen i2c-anschluss. wer kann weiterhelfen.
mfg pebisoft

Joerg
23.11.2004, 08:02
Hallo pebisoft,

ein Beispiel zum SRF08 mit BASCOM findest du hier:

http://www.robot-electronics.co.uk/shop/Examples.htm

Viele Grüße
Jörg

Freiheitspirat
23.11.2004, 10:19
Eigentlich steht ja alles in der Beschreibung des SRF08, aber hier mal einen Stück kommentierter Code:

Ultraschall:
I2cstart 'Messung auslösen
I2cwbyte 0 '0 Adresse für alle Bausteine (Broadcastadresse)
I2cwbyte 0 'Register 0 - Befehlsregister
I2cwbyte 81 'Befehl 81 - Messung in cm
I2cstop

Waitms 65 'delay 65mS auf Ergebnis warten

I2cstart
I2cwbyte 224 'E0 Addresse vom 1. US
I2cwbyte 2 'Register 2 (+3) = 1. Entfernung

I2cstart
I2cwbyte 225 'Leseadresse (E1)
I2crbyte Msb , Ack 'Register 2 lesen
I2crbyte Lsb , Nack 'Register 3 lesen
I2cstop
Entfernungus = Makeint(lsb , Msb) 'Word als Ergebnis von 2 Bytes bauen
Print "Entfernung: " + Str(entfernungus)

Return

pebisoft
23.11.2004, 19:38
danke für die tipps.
mfg pebisoft

LuK-AS
24.11.2004, 05:47
kannst auch hier gucken:

http://www.cwnet.de/html/modules.php?op=modload&name=News&file=index&catid=&topic=2

Gruss Clemens

pebisoft
25.11.2004, 17:02
hallo, eure programmvorschläge für das ansprechen sind hervorragend.
sie funktionieren einwandfrei. nur ein problem: nach 6-7 messungen zeigt er nur noch 255 an , auch wenn der gegenstand näher ist. wenn ich resete macht er wieder 6-7 messungen und zeigt wieder 255, woran liegt das.
mfg pebisoft

LuK-AS
25.11.2004, 17:04
hast Du PullUps an den I2C Leitungen??

pebisoft
25.11.2004, 17:16
ja 10k-ohm. es werden ja 6-7 präzise messungen durchgeführt und genau ausgegeben und danach nur noch 255. wenn ich resete geht er wieder von vorn los 6-7mal. das i2ceeprom 24c256 funktioniert einwandfrei an diesem anschluss mit daten speichern und lesen.
in der beschreibung steht, das es dem i2c eeprom 24... conform ist.
läuft vielleicht irgendein speicher am srf08 über, der vielleicht entleert werden muss.
mfg pebisoft

pebisoft
25.11.2004, 17:19
dieses programm funktioniert. wenn du es dir mal anschauen würdest, 3 absätze vorher
mfg pebisoft

pebisoft
25.11.2004, 17:20
es trat schon einmal so ein problem auf hier irgendwo, finde es aber nicht mehr.

pebisoft
25.11.2004, 17:31
hallo, unter "sensoren srf08" ist eine beschreibung. da steht: das der letzte "ack" beim word-lesen nicht aktiv sein darf. wie setzte ich dieses in bascom um:
mfg pebisoft

Joerg
25.11.2004, 17:38
Hi,


läuft vielleicht irgendein speicher am srf08 über, der vielleicht entleert werden muss.

nein, definitiv nicht. Selbst wenn man mehr Messungen auslöst als Messwerte abholt, ist das kein Problem.
Ich sehe erst mal 2 mögliche Problemquellen, im Programm wird nicht lange genug gewartet bis die Messwerte da sind (65ms sollten aber reichen) oder es ist ein Hardware-Busproblem.
Gab's glaube ich hier auch schonmal. In diesem Fall bricht die Spannung am Modul zusammen, weil das Modul beim "Aufwecken" extrem kurzzeitig einen hohen Strom zieht. Wenn jetzt die Verkabelung nicht niederohmig genug ist, hängt sich das Modul auf. Das ist dann zumeist an einem ständigen langsamen Blinken der LED zu erkennen. Hier hilft ein kleiner Elko an den Spannungsversorgungsanschlüssen des Moduls.

Komisch ist allerdings, dass der Effekt reproduzierbar nach 6-7 Messungen auftritt. Da tendiere ich eher zu dem Softwareproblem (siehe oben).


es trat schon einmal so ein problem auf hier irgendwo, finde es aber nicht mehr.

ja da gab's genau eine Messung, dann gleiches Verhalten wie bei dir. Es lag an dem ACK-bit beim fortlaufenden lesen.
Glaube nicht, dass das Problem hier auch zuschlägt, dann täts ja auch gleich und nicht erst nach 6-7mal.

HTH und Viele Grüße
Jörg

Joerg
25.11.2004, 17:40
das der letzte "ack" beim word-lesen nicht aktiv sein darf. wie setzte ich dieses in bascom um:

das sollte die Lib von BASCOM eigentlich richtig machen.

weiter hoben im Thread stands ja schon mal:


I2cstart
I2cwbyte 225 'Leseadresse (E1)
I2crbyte Msb , Ack 'Register 2 lesen
I2crbyte Lsb , Nack 'Register 3 lesen
I2cstop

Viele Grüße
Jörg

pebisoft
25.11.2004, 22:34
hallo, problem ist gelöst. ich bin bis auf 75ms gegangen , jetzt läuft er.
vielen dank für eure mühe und konstruktiven hinweise.
mfg pebisoft

MarkusH
04.05.2005, 20:11
Hallo Leute, ich probier auch gerade mit dem srf08 rum (bin totaler anfänger in sachen i2c) aber ich kapier die syntax von dem bascom quelltext nicht. Wozu brauche ich die Leseadresse(225) wenn ich doch ober schon das register (2) angegeben habe? Und wieso springt er automatisch nachdem er das register 2 gelesen hat zu register 3? Und was ist der unterschied zwischen ack und nack?
Sorry für die warscheinlich dummen fragen aber ich hab schon einiges ausprobiert und kann irgendwie kein system erkennen.

Danke schonmal
Gruß, Markus

pebisoft
05.05.2005, 08:07
schau mal mit google nach.
"i2c" usw... es gibt in deutsch schöne seiten , wo aus verschiedenen ansichten der umgang mit i2c erklärt wird. ist ganz interessant. ich habe mir dann hier und da einpaar kleine ausdrucke als kurzes nachschlagewerk angelegt.
mfg pebisoft

MarkusH
08.05.2005, 12:58
Hey, inzwischen kann ich den srf08 auslesen. Habe so ziemlich den gleichen quelltext wie oben schon steht. Allerdings ist das MSB immer 0. Und das LSB kommt nie über 70. Bis 70cm misst er wunderbar, aber alles was weiter weg ist zeigt er auch als 70cm an. Obwohl die Verstärkung und die reichweite auf maximum stehn. Der sensor liegt hier aufm Tisch, das sind 2m bis zur decke. Wenn ich so ca. das 10. register auslese dann krabbelt das msb so langsam auf 1. Hat irgend jemand ne Idee?
Danke und Gruß

PicNick
08.05.2005, 17:04
Hi, zum Initialisieren "Range" und "Gain" einstellen.
(ich nehm Range 100 und Gain 1)

Joerg
08.05.2005, 17:49
Hallo Markus,

der Öffungswinkel der SRF04/SRF08 Module beträgt ca. 45°. Wenn das Modul auf dem Schreibtisch liegt, misst man schnell mal irgendeine Kante vom Computer oder Monitor (oder auch Kopf ;) ) mit.

In engen Innenräumen kommt es durch die hohe Empfindlichkeit zu Schwankungen des Messwertes verursacht durch Reflexionen im Raum. Wie robert gerade geschrieben hat, reicht es in diesen Fällen zumeist, die Verstärkung "herunterzudrehen" (Register 1). Die Reichweite würde ich erst mal generell auf dem voreingestellten Wert lassen, es sei denn, es gibt gute Gründe daran zu schrauben (Abtastfrequenz u.ä.)

HTH und Viele Grüße
Jörg

pebisoft
08.05.2005, 18:18
hallo, die reichweite ist vom werk auf 6 meter voreingestellt beim srf08. die einstellungen lassen bis 11 meter zu, aber die hardware spielt da nicht mit, also max 6 m oder bei vielen reflexionen auf gewünschten wert.
der srf04 mit pulse geht max nur 3m weit. ich habe ein programm in winavr-c geschrieben mit kameraden für den srf04. man kann die werte so abstimmen, das der srf04 genauer ist als der srf08.
mfg pebisoft