mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ARM Cortex M3 - GPIO Strombegrenzung


Autor: Jan R. (superjany)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

nachdem ich meine anfänglichen Probleme mit meinem Eval-Board 
(EKC-LM3S6965) überwunden habe, sind schon nette Sachen in Richtung 
Webserver etc. entstanden. Zur Zeit schlage ich mich etwas mit den GPIOs 
herum.

Code-Ausschnitt:

SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOD );
GPIODirModeSet( GPIO_PORTD_BASE, GPIO_PIN_4, GPIO_DIR_MODE_OUT );
GPIOPadConfigSet( GPIO_PORTD_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, 
GPIO_PIN_TYPE_STD );
GPIOPinWrite( GPIO_PORTD_BASE, GPIO_PIN_4, 0xff );

Es liegt natürlich eine Spannung von 3,3V an PD4 an. Was mich allerdings 
irritiert ist der Umstand, dass statt 2mA ganze 8,5mA aus dem Ausgang 
geschossen kommen. Ersetze ich GPIO_STRENGTH_2MA durch GPIO_STRENGTH_4MA 
sind es sogar 16,5mA.

Nachdem ich nun "todesmutig" mittels Strommessgerät diese Zahlen 
eingesammelt habe, kann ich mir keinen Reim mehr auf die Funktionalität 
der GPIOs machen. Weiß jemand von euch, warum mehr als 2mA kommen und ob 
der ARM den Strom begrenzt?

Danke schonmal,
Jan

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du annimmst, der Controller hätte da eine auch nur annähernd 
präzise Stromquelle oder Strombegrenzung drin, dann liegst du falsch. 
Zwar lassen sich bei einigen ARMs die Treiber in mehreren Stufen 
einstellen, ob nun über eine Stromangabe (LM3) oder eine Frequenzangabe 
(STM32), aber damit ist eher eine Grössenordnung gemeint, die sich 
lastabhängig auf Slewrate und als Lastspitzenbegrenzung auswirkt. Das 
ist nicht als Stromquelle für LEDs gedacht.

Diese Stromangabe bei den LM3s ist daher auch im Datasheet nur als 
Mindestwert enthalten. Ein Maximalwert steht dort nicht drin.

Autor: Jan R. (superjany)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die fixe Antwort. Ich fasse mal zusammen und du sagst mir 
nochmal, ob ich korrekt liege..?

1. Begrenzung ja, aber irgendwo zwischen Spanien und Griechenland :-)
2. Schaltungen einfach klassisch mit Vorwiderstand dimensionieren (ist 
dann nach Messung auch sehr ungenau).
3. Wenn ich den Ausgang mit GND kurzschließe, kann dem Controller auch 
nichts passieren...? ^^

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jan R. schrieb:

> 2. Schaltungen einfach klassisch mit Vorwiderstand dimensionieren (ist
> dann nach Messung auch sehr ungenau).

Schaltungen konventionell dimensionieren. Der Innenwiderstand der 
Porttreiber ist wie auch bei anderen Controllern stark abhängig von 
I/O-Spannung und Temperatur und geht in die Rechnung stets mit ein. Nur 
kommt bei den LM3s und den STM32 noch ein weiterer konfigurierbarer 
Parameter hinzu.

Es war noch nie möglich, eine LED über Widerstand an einen Portpin zu 
hängen und daraus exakte 5mA zu beziehen. Es kam seit jeher immer "mehr 
oder weniger grob um 5mA herum" dabei raus.

Wenn dies zu ungenau ist, dann ist ein externer Transistor sinnvoll.

Autor: Jan R. (superjany)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Wenn dies zu ungenau ist, dann ist ein externer Transistor sinnvoll."

Wenn wir schon dabei sind ^^

http://www.mikrokopter.de/ucwiki/BrushlessCtrl#hea...

Sowas wollte ich gern an das Board hängen - allerdings in dreifacher 
Ausführung um dann einen BLDC schalten zu können. Jeweils ein Transistor 
soll mit PWM-Signal betrieben werden. Hast du da Tipps für mich? Wieviel 
Strom geben eigentlich die PWM-Ports her? Habe im Datenblatt überhaupt 
keinen Wert gefunden.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daumenregel:

- Will man mit MOSFETs irgendwas ab und zu mal schalten, dann hängt man 
ihn direkt ran, sofern die Gatespannung reicht.

- Will man einen Power-MOSFET sehr häufig umschalten, wie das für PWMs 
typisch ist, dann hängt man einen Treiber dazwischen, diskret oder als 
IC. Der Ausgang des µC kann den für leistungsarmes Schalten 
erforderlichen Strom nicht liefern.

Es gibt natürlich Grenzfälle bei niederfrequenten PWMs und µCs mit recht 
starken Port-Treibern (z.B. AVRs bei 5V).

Autor: Robert Teufel (robertteufel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch noch einen kleinen Beitrag von mir.

Wenn du 2 LM3 oder 2 STM32 hernimmst und genaue dieselben Messungen Port 
pin high gegen Grounnd durch AMP-Meter machst, dann wirst du recht 
verschiedene Ergebnisse bekommen. 1. Einen Transistor genau zu 
dimensionieren ist nur mit groesserem Aufwand in Silicon moeglich -> 
teurer -> wird nicht gemacht.
Du hast mal vom "ARM" gesprochen, den gibt es nicht in diesem 
Sprachgebrauch. Es gibt den LM3xxx, STM32F107xxx, LPC1768xxx oder den 
AT91SAM3U..., jede dieser Familien kann unterschiedliche Port-Treiber 
haben und das hat nichts mit dem Cortex selbst zu tun.

Mehr als 2 mA zu ziehen ist sicher moeglich doch letztendlich ist es 
erhoehter Stress fuer den Pin und somit sinkt die Lebenserwartung, ohne 
Begrenzung im dauerhaften Kurzschlussfall sogar drastisch. Geht nicht 
sofort kaputt aber bald :-)

Gruss, Robert
http://mcu-related.com/architectures/35-cortex-m3

Autor: Jan R. (superjany)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, aber wenn halt ein Bipolartransistor als Schaltstufe vorm MOSFET 
hängt, hätte ich eigentlich erwartet, dass es keine Probleme gibt. Denn 
bipolar schalten sollte funktionieren und da dann eine externe Spannung 
durchgeschalten wird dürfte ja auch der Strom genügen...

Kannst du denn sonst spezielle Treiberschaltungen oder ICs empfehlen?

Autor: Jan R. (superjany)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
wollte nochmal meine Ergebnisse posten. Also die Schaltung von 
Mikrokopter konnte ich 1:1 übernehmen und es gibt keine Probleme mit dem 
Cortex. Habe das PWM-Signal einfach an dem MOSFET mit vorgeschaltetem 
npn-Transistor ausgegeben. BLDC dreht sich einwandfrei ^^

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.