PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I²C Schaltung



Fabsen
14.03.2018, 14:13
Hi
ich möchte über einen I2C Bus mehrere Ultraschallsensoren mit dem µC verbinden. Dabei zu beachten sind die Pull-Ups das weiß ich schon. Es gibt auch jede Menge Sensoren die bereits ein I2C Interface mitbringen und einfach nur angeschlossen werden müssen. Ich möchte das aber für jeden Sensor selber aufbauen. Kann mir jemand sagen welche bausteine ich dazu benötige oder wo ich schon so ein fertiges Schematic finde. Meine Sensoren haben kein interface nur die Pins Trigg und Echo bzw VCC und GND, es wird ein PWM Signal am Ausgang erzeugt

Danke33348

Ceos
14.03.2018, 15:30
okay da musst du aber auhc mal mehr infos geben


Meine Sensoren (http://www.rn-wissen.de/index.php/Sensorarten) haben kein interface nur die Pins Trigg und Echo bzw VCC und GND, es wird ein PWM Signal am Ausgang erzeugt

okay du nennst hier 5 pins, VCC & GND (die sind wohl selbsterklärend) + TRIG + ECHO + "Ausgang"

welcher pin macht was? und welcher pin ist "Ausgang" ... ich vermute mal ECHO, aber was macht TRIG dann und wie sieht das PWM aus? Periode? Wie verhält sich die Pulsbreite (ungefähr Schätzen bitte, denn "geht hoch und runter" reicht nicht als Antwort)

Fabsen
14.03.2018, 16:24
Nach Triggerung mit einer fallenden Flanke (TTL - Pegel) misst das Modul selbstständig die Entfernung und wandelt diese in ein PWM Signal welches am Ausgang zur Verfügung steht.
Ein Messintervall hat eine Dauer von 20ms. Es können also 50 Messungen pro Sekunde durchgeführt werden.

1: VCC, Versorgungsspannung 5V
2: Triggereingang, TTL-Pegel
3: Echo, Ausgang Messergebnis, TTL-Pegel
4: GND, 0V

Wie würdes du 2-3 dieser Sensoren an einen µC anschließen?
Ich könnte diese auch mit fertigem I2C Interface teurer kaufen aber das ist langweilig...ich habe gedacht entweder ich mach daraus selber ein digitales Signal das ich an den I2C hängen kann oder ich schließe die Sensoren analog an den µC an, habe aber nur begrenzte analoge eingänge...

021aet04
14.03.2018, 23:31
Was sind das für Sensoren (Typ)? Ich kenne z.b. den HC-SR04, bei dem ist die Länge des Echo Impulses von der Laufzeit (=Abstand) abhängig. Ist das so einer?

Ich würde einen uC nehmen der die Auswertung übernimmt. Die Sensoren nacheinander auslesen, also zuerst Sensor 1 Trigger und dann warten bis die Antwort kommt, dann weiter zu Sensor 2,... zur Sicherheit ein Timeout einfügen. Dieser uC ist gleichzeitig ein I2C Slave und stellt die Messergebnisse zur Verfügung.

MfG Hannes

RoboHolIC
14.03.2018, 23:40
Geht es hier um dieses beliebte Ultraschall-quasi-Standard-Modul HC-SR04? Die Pinbezeichnungen sprechen ja dafür, aber der Name ist noch immer nicht gefallen.

Ceos
15.03.2018, 07:31
okay dann bin ich mit meiner idee raus, ich wollte den I2C ein wenig "mißbrauchen" aber das ginge nur wenn der burst wesentlich früher käme :P

morob
15.03.2018, 10:45
warum willst du das selber bauen, bei deinem kenntnisstand?
du benötigst für jeden sensor einen microcontroller, der im i2c slave modus läuft.

Fabsen
15.03.2018, 10:48
Das Ultraschall Modul HC-SR04 eignet sich zur
Entfernungsmessung im Bereich zwischen 2cm und ca.
3m mit einer Auflösung von 3mm. Es benötigt nur eine
einfache Versorgungsspannung von 5V bei einer
Stromaufnahme von <2mA. Nach Triggerung mit einer
fallenden Flanke (TTL - Pegel) misst das Modul
selbstständig die Entfernung und wandelt diese in ein
PWM Signal welches am Ausgang zur Verfügung steht.
Ein Messintervall hat eine Dauer von 20ms. Es können
also 50 Messungen pro Sekunde durchgeführt werden

Das bedeutet ich verwende einen digitalen Pin zur Triggerung und einen digitalen Pin zur Verarbeitung des Messergenisses?
Ansonsten hätte ich da noch an Reflektierende optische Sensoren TCRT1000 gedacht, meint Ihr mit denen Ist eine Roboter Kollisionsverhinderung auch zu realisieren??

morob
15.03.2018, 11:02
du benötigst zwei digitale pins zur signalverarbeitung.
du kannst diese aber nicht auf den i2c bus packen.
es gibt noch ein trick, sensoranzahl +1 pins, wenn man den triggerpin einzeln macht und den signalpin sammelt und mit einer diode gegeneinander schützt.

HaWe
15.03.2018, 11:08
wenn du den HC-SR04 verwenden willst, warum tust du es nicht einfach und bindest eine entspr. Lib in deinen Code ein?
http://www.mindstormsforum.de/viewtopic.php?f=78&t=8491&p=69272#p69272
Der HC-SR04 ist allerdings kein i2c-Sensor.

I2C US-Sensoren wären hingegen SRF-02 und SRF-08, und auch für die gibt es fertige Libs.
http://www.mindstormsforum.de/viewtopic.php?f=78&t=8491&p=69272#p69273

morob
15.03.2018, 11:15
ich liebe den srf-02

HaWe
15.03.2018, 11:17
ich liebe den srf-02
naja, sag ich doch, dann soll der OP ihn doch nehmen, dann hat er auch i2c wie er wollte.


I2C US-Sensoren wären hingegen SRF-02 und SRF-08, und auch für die gibt es fertige Libs.
http://www.mindstormsforum.de/viewtopic.php?f=78&t=8491&p=69272#p69273

Fabsen
15.03.2018, 11:53
du benötigst zwei digitale pins zur signalverarbeitung.
du kannst diese aber nicht auf den i2c bus packen.


ja weiß ich dafür gibt es Sensoren mit I2C Ausgang, Problem ist ich benötige mehrere Sensoren dafür ist denk ich mal I2C eine gute Lösung, da du dir Pins sparst
Gibts es vielleicht Infrarot vorschläge zur Kollisionserkennung? Die Reichweite ist halt nicht so groß als beim Ultraschall aber das dürfte denk ich kein Problem sein.
Hab da an mehrere analoge Infrarot Sensoren gedacht, bei denen ich das analoge signal durch schmidt triggerung auf ein sauberes digitale wandle und dann für jeden Sensor einen digitalen Pin benötige.
Genauer gesagt geht es um eine Studienarbeit und ich möchte mehrere Konzepte vorstellen...

HaWe
15.03.2018, 12:04
i2c ist nur gut, wenn deine i2c Geräte auch verschiedene und ein-eindeutige i2c-Adressen haben, sonst wird es doch wieder deutlich komplizierter.
Aber warum du mit "I2c" titelst und dann nach dem HC-SR04 in diesem Zusammenhang fragst, ist mir immer noch unklar, denn das ist ja gar kein i2c Sensor.
Such dir also einfach i2c-Sensoren mit variabel einstellbaren i2c-Adressen.

morob
15.03.2018, 12:05
ja weiß ich dafür gibt es Sensoren mit I2C Ausgang, Problem ist ich benötige mehrere Sensoren dafür ist denk ich mal I2C eine gute Lösung, da du dir Pins sparst
Gibts es vielleicht Infrarot vorschläge zur Kollisionserkennung? Die Reichweite ist halt nicht so groß als beim Ultraschall aber das dürfte denk ich kein Problem sein.
Hab da an mehrere analoge Infrarot Sensoren gedacht, bei denen ich das analoge signal durch schmidt triggerung auf ein sauberes digitale wandle und dann für jeden Sensor einen digitalen Pin benötige.
Genauer gesagt geht es um eine Studienarbeit und ich möchte mehrere Konzepte vorstellen...

wenn du genug io pins an deinem microcontroller hast , musst du kein i2c verwenden.
analoge sensoren zu verarbeiten ist noch mal eine klasse extra, weil man dann noch mit dem ad wandler kämpft.

was studierts du?

HaWe
15.03.2018, 12:15
das Thema hier heißt "i2c", also sollte man auch nur darüber reden - und ansonsten ein neues Topic aufmachen, wenn man über was anderes reden will

- abgesehen davon, dass man für analoge Sensor-Signale überhaupt nichts "kämpfen" muss, bei Arduino reicht da ein einziger simpler Befehl für die Analog-Pins, nämlich
analogRead()
- und das ist noch 1000mal einfacher als i2c-Libs und - Protokolle.

Fabsen
15.03.2018, 13:03
also sorry für die Thema Verfehlungen und schonmal Danke für die Hilfe von euch.
ich studiere Mechatronik...
also ganz ehrlich wäre es mir mit analogen Sensoren auch lieber da mein µC ADC fähig ist und ich damit keine Probleme habe, aber meine analogen Pins sind alle belegt, deshalb hab ich da an i2c gedacht.
Aber eine Möglichkeit die ich sehe ist einfach auch analoge sensoren nehmen und die per schmidt triggerung und op verstärker in ein digtales signal umwandeln und an digitale pins hängen, dann brauche ich die ganzen i2C libs und protokolle nicht...

HaWe
15.03.2018, 13:55
also sorry für die Thema Verfehlungen und schonmal Danke für die Hilfe von euch.
ich studiere Mechatronik...
also ganz ehrlich wäre es mir mit analogen Sensoren auch lieber da mein µC ADC fähig ist und ich damit keine Probleme habe, aber meine analogen Pins sind alle belegt, deshalb hab ich da an i2c gedacht.
Aber eine Möglichkeit die ich sehe ist einfach auch analoge sensoren nehmen und die per schmidt triggerung und op verstärker in ein digtales signal umwandeln und an digitale pins hängen, dann brauche ich die ganzen i2C libs und protokolle nicht...

analoge Sensoren lassen sich ganz leicht per i2c-Port-Multiplexer (PCF8591, ADS1115) an den µC anschließen und dann ähnlich wie die eingebauten ADC Ports abfragen.
http://www.mindstormsforum.de/viewtopic.php?f=78&t=8491&start=75#p69282
http://www.mindstormsforum.de/viewtopic.php?f=78&t=8491&start=75#p69283