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
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.
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...? ^^
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.
"Wenn dies zu ungenau ist, dann ist ein externer Transistor sinnvoll." Wenn wir schon dabei sind ^^ http://www.mikrokopter.de/ucwiki/BrushlessCtrl#head-8594a6f5c3a15ea834a44df9b89fd5428ede23db 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.
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).
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
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?
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 ^^
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.