Forum: Mikrocontroller und Digitale Elektronik [BeagleBone Black] GPIOs sicher anschließen


von X. A. (wilhem)


Lesenswert?

Hallo zusammen,
ich habe da eine Verständnisfrage.
Ich habe eine von diesen Platinen BeagleBone Black und möchte nun eine 
Motoransteuerung an mehreren GPIOs, die als Output konfiguriert sind, 
anschließen.

Das Problem ist, dass die einzelnen GPIOs nicht zu viel Strom liefern 
dürfen. Die Dürfen max. 6 mA liefern.
Nun...zwischen GPIOs und meiner Schaltung habe ich dieses Bauelement 
eingebaut: http://www.nxp.com/documents/data_sheet/74HC_HCT245.pdf

In dem Datenblatt wird es aber nicht genannt, wie hoch die 
Eingangsimpedance ist. Demzufolge bin ich etwa unsicher, ob ich die 
GPIOs des BeableBone Black durch eine direkte Verbingung mit dem Logic 
Shifter verbinden darf oder nicht.

Aus diesem Grund habe ich mir gedacht einen Widerstand in der Reihe 
einzusetzen (nach dem folgenden Schema)

----                                    ----------------
    |                                  |
    --------          R = ?        ----|
BBB: Pin 60 |------/\/\/\/\/\-----|  Input Pin: 74HCT245
    --------                       ----|
    |                                  |
----                                   |
                                        ---------------

Da das System mit 3.3 V arbeitet und der max. Strom 6 mA ist, komme ich 
auf einen Wert von R > 550 Ohm.

Ich habe also erst eine allgemeine Frage.
Wie schließe ich am sichersten eine Platine wie der BBB mit einem 
externen elektronischen Komponent wie in dem obigen Fall? Woher weiß 
ich, wie viel Strom wird das Bauelement "saugen"?

Gruß

von chris (Gast)


Lesenswert?

Seite 7:
ILI input leakage current VI = VCC or GND; VCC = 6.0 V - - ±0.1 µA

Den Eingangswiderstand darfst du selber ausrechnen :)

Allgemein: CMOS hat einen extrem hohen Eingangswiderstand.

Du kannst also zur Sicherheit auch 1-100k dazwischen schalten, je 
nachdem welche Frequenzen drüber müssen. Du baust dir natürlich mit der 
Eingangskapazität einen Tiefpass.
Notwendig ist der Widerstand nicht unbedingt, aber er schützt deinen 
GPIO, wenn der 74HCT abraucht oder durch andere Umstände dein GPIO 
irgendwohin kurzgeschlossen wird.

von X. A. (wilhem)


Lesenswert?

chris schrieb:
> Allgemein: CMOS hat einen extrem hohen Eingangswiderstand.

Naja...extrem hoch definiert aber keinen Wert.

Danke für deine Hilfe, ich habe das Datenblatt gelesen, dennoch wusste 
ich es nicht, dass der Begriff "Input Current Leakage" in diesem Fall in 
Frage kommt.

Allgemein: würdest du eine Entkopplung durch Oktokoppler oder durch das 
Bauteil oben?

von Clemens L. (c_l)


Lesenswert?

Dave A. schrieb:
> Woher weiß ich, wie viel Strom wird das Bauelement "saugen"?

Ein CMOS-Eingang saugt gar keinen Strom. (Die < 0,1 µA kann man 
vernachlässigen.)

> Naja...extrem hoch definiert aber keinen Wert.

R=U/I, hier: 60 MΩ

> würdest du eine Entkopplung durch Oktokoppler oder durch das
> Bauteil oben?

Einen Oktopoppler brauchst du nur, wenn du die Motorsteuerung vom BBB 
galvanisch trennen willst.

Wie sieht den diese Motorsteuerung genau aus?

von Frank K. (fchk)


Lesenswert?

Dave A. schrieb:
> chris schrieb:
>> Allgemein: CMOS hat einen extrem hohen Eingangswiderstand.
>
> Naja...extrem hoch definiert aber keinen Wert.
>
> Danke für deine Hilfe, ich habe das Datenblatt gelesen, dennoch wusste
> ich es nicht, dass der Begriff "Input Current Leakage" in diesem Fall in
> Frage kommt.
>
> Allgemein: würdest du eine Entkopplung durch Oktokoppler oder durch das
> Bauteil oben?

Der 245 ist bidirektional. Brauchst Du hier nicht bzw kannst DU hier so 
oder so nicht nutzen. Ein HCT244 oder HCT541 wäre genau das passende, 
wobei der 541 layouttechnisch schöner ist.

fchk

von X. A. (wilhem)


Lesenswert?

Clemens L. schrieb:
> Ein CMOS-Eingang saugt gar keinen Strom. (Die < 0,1 µA kann man
> vernachlässigen.)
>
>> Naja...extrem hoch definiert aber keinen Wert.
>
> R=U/I, hier: 60 MΩ

Also, den Wert habe ich auch durch diese Einfache Gleichung berechnet.
Allerdings frage ich mich: wenn der CMOS-Eingang keinen Strom saugt, 
wieso braucht man einen solchen Widerstand?

Der Eingang sollte bereits hochhomig genug sein, oder????

Frank K.
> Der 245 ist bidirektional.

Ja, richtig. Aber die Richtung kann ich über einen Pin einstellen. Wieso 
ist dann das Bauteil nicht zu gebrauchen?

Gruß

Die Motoranschaltung habe ich nicht hier. Morgen poste ich poste den 
Schaltplan.

von Clemens L. (c_l)


Lesenswert?

Dave A. schrieb:
> Allerdings frage ich mich: wenn der CMOS-Eingang keinen Strom saugt,
> wieso braucht man einen solchen Widerstand?

Einen separaten Widerstand braucht man nicht.

von X. A. (wilhem)


Lesenswert?

Clemens L. schrieb:
> Dave A. schrieb:
>> Allerdings frage ich mich: wenn der CMOS-Eingang keinen Strom saugt,
>> wieso braucht man einen solchen Widerstand?
>
> Einen separaten Widerstand braucht man nicht.

Ok,
super. Ich dachte mir, dass die einzelnen GPIO Pins mit dem HCT245 nicht 
direkt angeschlossen werden dürfen. Manchmal sind die Datenblätter 
dieser Komponenten etwa verwirrend. Obwohl drin steht, was man sucht, 
braucht man die richtigen Begriffe.

von Konrad S. (maybee)


Lesenswert?

Dave A. schrieb:
> Frank K.
>> Der 245 ist bidirektional.
>
> Ja, richtig. Aber die Richtung kann ich über einen Pin einstellen. Wieso
> ist dann das Bauteil nicht zu gebrauchen?

Dave A. schrieb:
> HCT245

Wenn du den '245 in Richtung BBB schaltest, dann grillst du damit die 
GPIOs. Warum? Weil HCTs mit für den BBB zu hoher Spannung betrieben 
werden.

Zusätzlich musst du darauf achten, dass die GPIOs Spannungsfrei sind, 
wenn der BBB aus ist. Die Doku des BBB enthält diesbezüglich deutliche 
Warnungen.

von X. A. (wilhem)


Lesenswert?

Konrad S. schrieb:
> Zusätzlich musst du darauf achten, dass die GPIOs Spannungsfrei sind,
> wenn der BBB aus ist. Die Doku des BBB enthält diesbezüglich deutliche
> Warnungen.

Die GPIOs sind alle als Output konfiguriert.
In dem BBB_SRM sind zwar interessante Informationen enthalten, aber gibt 
es einen Punkt, den ich sehr verwirrend finde (S. 113):

/There are several precautions that need to me taken when working with 
the expansion
headers to prevent damage to the board.
1) Do not apply any voltages to any I/O pins when the board is not 
powered on.
2) Do not drive any external signals into the I/O pins until after the 
VDD_3V3B rail is up.
*3) Do not apply any voltages that are generated from external sources.*
4) If voltages are generated from the VDD_5V signal, those supplies must 
not become
active until after the VDD_3V3B rail is up.
5) If you are applying signals from other boards into the expansion 
headers, make sure
you power the board up after you power up the BeagleBone Black or make 
the
connections after power is applied on both boards.
Powering the processor via its I/O pins can cause damage to the 
processor./

Punkt 3 finde ich unklar. Meint der Author, dass keine externe 
Versorgungsspannung an einem GPIO angeschlossen werden darf?!?!? Falls 
nicht, wie kann ich 3.3 V Signale von einem anderen Board generiert 
einlesen?

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Dave A. schrieb:

> Punkt 3 finde ich unklar. Meint der Author, dass keine externe
> Versorgungsspannung an einem GPIO angeschlossen werden darf?!?!? Falls
> nicht, wie kann ich 3.3 V Signale von einem anderen Board generiert
> einlesen?

Eine Lösung wäre zB: 74LVC1T45/2T45/8T245

http://www.nxp.com/documents/data_sheet/74LVC_LVCH8T245.pdf

Die Bausteine mit T in der Funktionsgruppe sind genau dafür ausgelegt. 
Wenn eine der Versorgungsspannungen wegfällt, schaltet der Baustein ab. 
Es besteht also keine Gefahr, irgend einen Schaltungsteil über 
Schutzdioden etc mitzuversorgen.

fchk

von Konrad S. (maybee)


Lesenswert?

Dave A. schrieb:
> Punkt 3 finde ich unklar. Meint der Author, dass keine externe
> Versorgungsspannung an einem GPIO angeschlossen werden darf?!?!? Falls
> nicht, wie kann ich 3.3 V Signale von einem anderen Board generiert
> einlesen?

Im Kapitel über "Capes" findet sich dieser Text:
"The VDD_3V3B rail is supplied by the LDO on the BeagleBone Black and is 
the primary power rail for expansion boards. If the power requirement 
for the capes exceeds the current rating, then locally generated voltage 
rail can be used. It is recommended that this rail be used to power any 
buffers or level translators that may be used."

Es läuft darauf hinaus, zwischen BBB und der "Welt da draußen" einen 
Interface-Baustein zu platzieren, dessen Stromversorgung vom BBB über 
VDD_3V3B kommt und der sicherstellen muss, dass bei abgeschaltetem BBB 
keine Spannungen an die GPIOs kommen, denn

"Powering the processor via its I/O pins can cause damage to the 
processor."

Die Anforderung "Versorgung über VDD_3V3B" schließt die Verwendung von 
HCT-Bausteinen aus, somit ist kein "billiges" Level-Shifting für Outputs 
möglich. Als Interface-Bausteine kommen z.B. 74HC125 oder 74HC126 in 
Betracht.

von Konrad S. (maybee)


Lesenswert?

Frank K. schrieb:
> Eine Lösung wäre zB: 74LVC1T45/2T45/8T245

Ein sehr guter Tipp für ein bidirektionales Interface.

von X. A. (wilhem)


Lesenswert?

Konrad S. schrieb:
> Die Anforderung "Versorgung über VDD_3V3B" schließt die Verwendung von
> HCT-Bausteinen aus, somit ist kein "billiges" Level-Shifting für Outputs
> möglich. Als Interface-Bausteine kommen z.B. 74HC125 oder 74HC126 in
> Betracht.

Super, vielen vielen Dank.
Dann noch eine Sache: ist es dann nicht einfacher optokoppler 
einzusetzen? Somit habe ich nicht den Streß mit dem anfänglichen Zustand 
der GPIO beim Boot.
Ich frage nur, weil ich Angst davor habe, etwas wichtig zu übersehen.

von Sebastian S. (amateur)


Lesenswert?

Optokoppler sind zur Isolation gut, aber sie sind manchmal nicht die 
Schnellsten.

Ansonsten einfach nach Schema Äff vorgehen.
Einschalten:
1. Knochen mit Strom versorgen
2. Peripherie versorgen.
Ausschalten:
1. Peripherie von der Versorgung trennen
2. Knochen abschalten.

Aber Vorsicht:
So einfach, wie es klingt ist es nicht. Die üblichen Kondensatoren 
können sehr nachtragend wirken. Somit stimmt dann der tatsächliche 
Abschaltzeitpunkt nicht mit dem des gewünschten Zeitpunktes überein.

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.