Forum: Mikrocontroller und Digitale Elektronik µC und externer pull up: Open Drain nötig?


von Michael T. (michelback)


Lesenswert?

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

von spess53 (Gast)


Lesenswert?

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

von Michael T. (michelback)


Lesenswert?

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

von spess53 (Gast)


Lesenswert?

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

von Michael T. (michelback)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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

von Michael T. (michelback)


Lesenswert?

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)

von (prx) A. K. (prx)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

Hi

Such mal nach 'IOL (avg)'. Steht jedenfalls so beim R8C drin.

MfG Spess

von Michael T. (michelback)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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.

von Michael T. (michelback)


Lesenswert?

hallo Spess,
IOL hab ich gefunden, vielen Dank fürs recherchieren :D

von Michael T. (michelback)


Lesenswert?

@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.

von (prx) A. K. (prx)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Michael T. (michelback)


Lesenswert?

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.

von Michael T. (michelback)


Lesenswert?

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
Noch kein Account? Hier anmelden.