Hallo, ich möchte gerne einen SHT15 Feuchtesensor an einen µC (Renesas R5F2122) hängen. Die Schnittstelle ist 2-wire, aber nicht IIC! Hier der Link zum Sensor: http://www.sensirion.com/en/01_humidity_sensors/03_humidity_sensor_sht15.htm Im Datenblatt wird jetzt bei der Datenleitung (bidirektional) ein pull-up drangehängt. Über die Datenleitung soll der µC zum einen Befehle SENDEN un d zum anderen Daten EMPFANGEN. Wegen dem Pull-up muss doch der µC-Pin open-drain-fähig sein, wenn er als Ausgang geschaltet ist, oder? nur so bekomme ich ja einen 0V Pegel hin. Wenn ich aber mit zwei GPIOs des µCs arbeiten möchte, die kein Open-drain Ausgang besitzen, wie kann ich dann vorgehen? Kann ich evtl den externen Pull-up einsparen, wenn ich folgendermaßen vorgehe: 1)Datenpin am µC zunächst als input und internen PullUp aktivieren => Datenleitung auf HIGH 2)Beim aussenden des CLOCK-Signales (am CLOCK-Pin) den Datenpin auf output umschalten und gemäß Datenblatt für den gewünschten Modus (Temperaturmessung oder Feuchtemessung) die relevante Bitfolge aussenden. 3) Nach dem ACK-Bit übernimmt der sensor die Datenleitung => DatenPin des µC auf Eingang schalten und PullUp aktivieren Würde das so gehen? Wie sieht es da mit den definierten Pegeln auf der Datenleitung aus? Oder doch lieber die Variante mit externem PullUp und opendrain pin des µCs? (Wobei man da auch zwischen input und output hin und herschalten muss...) Grüße, Michael
Hi >Kann ich evtl den externen Pull-up einsparen, wenn ich folgendermaßen >vorgehe: >1)Datenpin am µC zunächst als input und internen PullUp aktivieren >=> Datenleitung auf HIGH >.... Im Datenblatt werden 10K als Pull-Up empfohlen. Solltest mal überprüfen, ob der interne Pull-Up diese Bedingung erfüllt. MfG Spess
Der µC interne Pullup hat 160kOhm (Typ). Ist das wohl zu hoch? Mir kommts aber darauf an, ob ich jetzt einen opendrain-Ausgang mit externem Pullup brauche oder nicht. Laut Datenblatt des SHT15 kann der Sensor an eine IIC Schnittstelle gehängt werden. Ich nehme an, dass darum der externe Pullup eingezeichnet ist (bei IIC muss ja ein externer Pull up ran, da der Pin am µC bei IIC Open drain ist). Darum die Frage, ob ich das Protokoll nicht nachbilden kann und auch auf Pins gehen kann, die kein Open drain haben. Gruß, Michael
Hi >Der µC interne Pullup hat 160kOhm (Typ). Ist das wohl zu hoch? Je grösser der Pull-Up, desto höher die Störanfälligkeit. >Darum die Frage, ob ich das Protokoll nicht nachbilden kann und auch auf >Pins gehen kann, die kein Open drain haben. Habe ich mit einem AVR auch gemacht: Externer Pull-Up, Ausgang auf L und Datenrichtung zwischen Ein- und Ausgang umschalten. MfG Spess
Ah ok, aber wo fließt dann bei dir der strom hin, wenn dein µC-Ausgang ein LOW ausgibt? Das ist nämlich genau die Frage die mich beschäftigt: Der HIGH-Pegel durch den externen pullup muss ja auf GND gezogen werden. Ich kenn das bisher eben nur über die Open-drain ausgänge von µCs. "Normale" Ausgänge können ja nicht so viel Strom aufnehmen, oder? Was hast du denn für einen Pullup genommen? auch 10k wie im Datenblatt vorgeschlagen? Dann würden bei 3,3V Spannung und 10k ja immerhin 330µA fließen und die müssen ja irgendwo hin??? Vielen Dank für deine Hilfe und Grüße, Michael
Michael T. schrieb: > Ah ok, aber wo fließt dann bei dir der strom hin, wenn dein µC-Ausgang > ein LOW ausgibt? Was spess53 schreibt ist technisch identisch zu Open Drain, weil der obere Ausgangstransistor nie einschaltet. > fließen und die müssen ja irgendwo hin??? In den Drain rein, durch Source wieder raus und an GND.
Hi Der Strom fließt nach GND. Genau wie bei Open-Drain. >Ich kenn das bisher eben nur über die Open-drain ausgänge von µCs. >"Normale" Ausgänge können ja nicht so viel Strom aufnehmen, oder? Ein AVR-Ausgang hat als 'Absolute maximum Rating' 40 mA. >Was hast du denn für einen Pullup genommen? auch 10k wie im Datenblatt >vorgeschlagen? Ja. war auch eine relativ kurze Leitung. > Dann würden bei 3,3V Spannung und 10k ja immerhin 330µA >fließen und die müssen ja irgendwo hin??? Ja und? Siehe oben. Z.B. arbeitet I2C mit noch kleineren Pull-Ups. MfG Spess
Danke euch beiden. Das Problem ist, dass ich keinen AVR habe, sondern den R5F2122CKFP von Renesas... Und ich finde einfach nicht den maximalen Eingangsstrom für einen Pin im Datenblatt. Unter Maximum ratings sind nur die maximal zulässigen Spannungen zu finden... Aber so wie ich es verstanden habe muss es also kein Open drain ausgang sein, sondern ich kann einen externen pull up auch mit einem GPIO auf GND ziehen (vorausgesetzt, der µC-pin verträgt so viel strom)
Michael T. schrieb: > Danke euch beiden. Das Problem ist, dass ich keinen AVR habe, sondern > den R5F2122CKFP von Renesas... Und ich finde einfach nicht den maximalen > Eingangsstrom für einen Pin im Datenblatt. Du suchst nicht den maximalen Eingangsstrom, sondern den maximalen Ausgangsstrom bei "low", der gelegentlich auch als "sink current" bezeichnet wird. Und selten weniger als 4mA darstellt. Wenn dich die Bezeichnung "Ausgangsstrom" bei Strom rein stört: Wenn das Datasheet penibel ist, dann hat der ein negatives Vorzeichen.
Hi Such mal nach 'IOL (avg)'. Steht jedenfalls so beim R8C drin. MfG Spess
Aaaaahhhhhh! Dann hab ichs gefunden :) vielen Dank, so langsam mag ich µCs ;) Für einen fortgeschrittenen Anfänger ist das alles erstmal schwer verständlich, vor allem wenn bei den FAQs auf der herstellerHP nicht die gewünschten Themen aufgelistet sind und im datenblat nicht erklärt wird, was das Minus bedeutet. Ich habs mir schon fast gedacht, aber es ist natürlich sehr schön, wenn man das bestätigt bekommt. Maximal sind 10mA erlaubt, im Schnitt über 100ms dürfens aber nicht mehr als 5mA sein. das heißt ich schließe jetzt einfach meinen SHT15 an zwei beliebige PortPins an und dann müsste es funktionieren, externer Pull Up mit 10k. ZumVerständnis: Wenn der Portpin sogar schon 10mA abkann, wofür ist dann ein open-drain ausgang da? ich vermute jetzt einfach mal um noch höhere Ströme nach GND zu leiten oder? Zu den Pull-up Werten: Wenn ich geringe Werte nehme (10k), habe ich eine geringere Störanfälligkeit, aber dafür einen höheren Stromfluss. Für eine batteriebetriebene Schaltung sollten dann wahrscheinlich größere Werte genommen werden (bis 100k??). Bei Pull-down-Widerständen gilt wahrscheinlich das Gleiche nehme ich an? Grüße
Michael T. schrieb: > Wenn der Portpin sogar schon 10mA abkann, wofür ist dann ein open-drain > ausgang da? ich vermute jetzt einfach mal um noch höhere Ströme nach GND > zu leiten oder? Nein. Open drain ist eine bestimmte Betriebsart eines Portpins.
hallo Spess, IOL hab ich gefunden, vielen Dank fürs recherchieren :D
@A.K.: Aha, ok. Aber nicht jeder Pin kann Open-Drain betrieben werden, oder? Jedenfalls steht bei mir im Datenblatt immer explizit dabei, dass man einen bestimmten Pin oopen drain betreiben kann(z.B. CS bei SPI). Bei anderen Pins steht das nicht dabei.
Grosser Widerstand => langsamer Spannungsanstieg => langsamer Takt nötig und empfindlicher auf Störungen. Der Strom fliesst auch nur, wenn der Sensor angesprochen wird und deshalb SDA runter gezogen wird. Solange SDA auf "high" liegt, fliesst nichts. Rechne mal den mittleren Stromverbrauch aus, wenn SDA alle zig Sekunden für einige zig Mikrosekunden auf low gezogen wird und nur in dieser Zeit 330µA fliessen.
Michael T. schrieb:
> Aha, ok. Aber nicht jeder Pin kann Open-Drain betrieben werden, oder?
Jein. Es gibt Mikrocontroller, die Pins explizit als open drain
betreiben können, entweder permanent oder entsprechend programmierbar.
Andere kennen diese Betriebsart offiziell überhaupt nicht.
Aber wie hier schon mehrfach dargelegt wurde, lässt sich das mit jedem
beliebigen Portpin erledigen indem man in passender Weise mit dem
Richtungsregister spielt. Denn ein Pin der grad als Eingang arbeitet,
der zieht weder rauf noch runter. Man muss nur drauf achten, dass nie
der Zustand Ausgang=1 auftritt.
Ok-ok, der Pin wird kaum belastet und der Stromverbrauch ist seeehr gering;) Hast mich überzeugt. Die 10k sind jetzt also fest eingeplant. vielen Dank.
Gut, dann werde ich mal versuchen alles so zu konfigurieren, dass es klappt. Vielen dank nochmal und einen schönen Abend an euch beide - habt mir den Abend gerettet :D
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.