PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SRF05 an M32 Erweiterungsboard



Stas
26.05.2010, 12:37
Hallo,
weiß jemand wo man "SRF05" Ultraschallsensor am "M32" Erweiterungsboard anschließen soll?
Und welchen Modi man verwenden soll?

Stas
27.05.2010, 12:13
Niemand ne Idee???

Jada
29.05.2010, 06:45
HI,
ich hab das gleiche problem.
Beim SRF08 wird am 2 Port SDA am Mega drauf gelegt und am 3 Port SCL.
Ich weiß nur nicht ob die baugleich sind und ich den so nutzen kann.
Ich brauche selber Hilfe bitte irgendjemand kann uns doch helfen oder????

Max Web
02.06.2010, 20:56
Hallo,
soweit ich informiert bin unterstützt der SRF05 gar keine I2C-Schnittstelle, wie sie beim SRF02, SRF08 und SRF10 vorhanden ist. Folglich kann der SRF05 nicht so einfach wie ein SRF08 (für den bereits ein Musterprogramm für den RP6 existiert) über I2C betrieben werden. Da der SRF05 einen SRF04-kompatiblen Modus unterstützt, müsste der SRF05 wie auf der folgenden Seite: http://kk.elektronik-4u.de/index.php?Sid=2 ausgewertet werden können, allerdings kann ich hier nicht garantieren, dass der Code auch zu 100 Prozent funktioniert, da ich dieses Ultraschallmodul nicht besitze.

Gruß,

Max

BMS
04.06.2010, 20:37
Hallo,
verwende die Sensoren an einem selber erstellten Board mit Atmega128.
Wie von Max Web erklärt, ist der SRF05 nicht für I2C o.ä. gedacht.
Habe als Modus den zweiten verwendet ("Single pin for both Trigger and Echo") um Pins zu sparen.
Dafür muss der Mode-Pin am Sensor mit GND verbunden werden.
Der Sensor kann nun praktisch an jeden freien Pin angeschlossen werden, welcher per Software sowohl als Eingang als auch als Ausgang schaltbar ist.

Vorgehensweise (Programm):
- Pin als Ausgang, unbedingt auf Low
- Pin auf High, kurzen Moment warten (z.B. 0,1ms), Pin wieder auf Low
- jetzt unbedingt wieder auf Eingang schalten, Pull-ups aus
- warten bis an diesem Eingang ein High erkannt wird
- Zeit messen, bis Pin wieder auf low ist
- die gemessene Zeit noch durch eine bestimmte Zahl teilen und man erhält die Entfernung in der gewünschten Einheit (cm,mm,inch,uSekunden)
- ca. 50ms warten, um bei einer neuen Messung keine Echos zu erkennen

das steht so ähnlich auch im Datenblatt des Sensors (z.B. Suche auf alldatasheet.com (http://www.alldatasheet.com))


falls keine Methoden/Funktionen für den konkreten Zugriff auf die Ports vorhanden sind, hier sind die zuständigen Register (Atmega32)
-----
Ein/Ausgang wird in den DDRx-Registern festgelegt
Ausgang auf high/low setzen mit den PORTx-Registern
Pull-ups ein/aus auch mit den PORTx-Registern
Eingang einlesen mit den PINx-Registern


Problem ist noch, dass bei falscher Programmierung (wenn Prozessor und Sensor die Leitung beide als Ausgang geschaltet haben und unterschiedliche Spannungen anlegen) die Ports beschädigt werden könnten. Um Softwarefehler (v.a. beim Anfang der Programmierung hierfür) aufzufangen, am besten noch einen Widerstand z.B. 470 Ohm in die Leitung schalten. Dann werden sicherlich keine Ports beschädigt.

Wichtig: Darauf achten, dass die Kabel richtig angeschlossen werden. Lieber zweimal mit dem Datenblatt vergleichen und schauen, obs auch wirklich richtig angeschlossen wurde, weil wegen einem Lötfehler den Sensor kaputt zu machen ist ärgerlich.

Das sollte euch mal einen Schritt weiter bringen.

Könnte auch C++ - Code posten falls nötig, ist allerdings für einen Atmega128.