mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM mit MSP430 - Fehlersuche


Autor: Patrick A. (tuxifant)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich arbeite mich gerade durch die Code-Examples zum MSP430 (430G2231). 
Wollte jetzt mal etwas mit der PWM über Capture&Compare 
rumexperimentieren.
Zu meiner Testschaltung: Ich weiß selbst, dass das mit nem entsprechend 
dimensionierten Vorwiderstand natürlich sauberer wäre, aber den hatte 
ich gerade nicht zur Hand, deshalb hab ich kurzerhand vier rote LEDs in 
Reihe genommen. Die LEDs laufen an der Versorgungsspannung von 12V auch 
so, wie sie sollen.
Allerdings bekomme ich sie nicht über die PWM an P1.2 geschaltet. Aber 
den Code folgendermaßen geändert:
//original source: msp430g2xx1_ta_16.c
#include  <msp430g2231.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR |= 0x0C;                            // P1.2 and P1.3 output
  P1SEL |= 0x0C;                            // P1.2 and P1.3 TA1/2 options
  CCR0 = 51200-1;                             // PWM Period
  CCTL1 = OUTMOD_7;                         // CCR1 reset/set
  CCR1 = 2;                               // CCR1 PWM duty cycle
  TACTL = TASSEL_2 + MC_1;                  // SMCLK, up mode

  _BIS_SR(CPUOFF);                          // Enter LPM0
}

Da die Periode enorm groß ist zur EIN-Zeit (a = 2/51199 ≈ 4e-5) sollten 
die Leuchten faktisch aus sein. Sind sie aber nicht.
In der Schaltung vermute ich den Fehler eher nicht, wenn ich die 
Verbindung zum uC abziehe, erlöschen die LEDs.

Hat jemand eine Idee? Vllt interpretier ich ja nur die Zeilen des 
Codeschnipsels falsch

Autor: Maik Fox (sabuty) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick A. schrieb:
> Hat jemand eine Idee? Vllt interpretier ich ja nur die Zeilen des
> Codeschnipsels falsch

Das hat nichts mit dem Codeschnipsel zu tun. Deine Testschaltung ist 
Humbug.

Ändere das zu 12V - R - LED - Transistor - GND und es wird 
funktionieren. Und ein Widerstand zwischen Basis und uC-Pin wäre auch 
nicht verkehrt.

Autor: Patrick A. (tuxifant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maik Fox schrieb:
> Ändere das zu 12V - R - LED - Transistor - GND und es wird
> funktionieren.
Ja, die Last an den Emitter zu hängen war net so schlau, hätte man drauf 
kommen können.
Aber dass ich statt "R - LED" auch "R - LED - LED - LED - LED" schalten 
kann, darf ich doch annehmen?

>Und ein Widerstand zwischen Basis und uC-Pin wäre auch nicht verkehrt.
Ja, auch dafür war ich zu übereifrig. Hab jetzt leider keinen passenden 
da, muss ich erst suchen.

Gruß Patrick

Autor: Patrick A. (tuxifant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe jetzt doch alles zusammen, aber die ganze Chose verhält sich doch 
recht merkwürdig.
Im normalen Betrieb leuchten die LEDs voll. Wenn ich die 
Spannungsversorgung des uC kappe (sitzt auf nem Launchpad; dh ich zieh 
den vom USB-Port), leuchten sie weiterhin, aber deutlich schwächer.
Sollte das etwa daran liegen, dass die Spannungsversorgung der LEDs ein 
Schaltnetzteil ist? Der GND des Boards liegt bei ~ -5V zu GND des NT... 
Ich mach da nen Denkfehler...

EDIT: Hab nochmal gemessen während des Tippens, von daher: Wenn das mit 
den Potentialen geklärt ist, löst sich wohl auch das "ominöse" Leuchten 
auf.

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht ist der Portpin vom MSP ja auch kaputt nach der Aktion mit 
den 12 Volt. Lass doch die Schaltung mit dem Transistor weg und häng nur 
eine LED mit einem Vorwiderstand vom Portpin aus gegen Masse. So kann 
man zumindest testen, ob der Prozessor noch geht.

Grüße,

Peter

Autor: Patrick A. (tuxifant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich werde gerade aus dem Datenblatt nicht schlau. Schafft der Portpin 
überhaupt die 20mA für ne LED? Dann hätt ich mir die Klimmzüge oben 
sowieso sparen können...

Gruß und gut' Nacht!

Autor: Maik Fox (sabuty) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick A. schrieb:
> ich werde gerade aus dem Datenblatt nicht schlau.
> Schafft der Portpin
> überhaupt die 20mA für ne LED? Dann hätt ich mir die Klimmzüge oben
> sowieso sparen können...

Im Datenblatt (nicht Family User Guide) gibt es im Kapitel "electrical 
characteristics" ein Unterkapitel über die Outputs. Dort sind Tabelle 
und ein paar Diagramme.

Am Beispiel eines MSP430F20xx erkennt man folgendes: In den Tabellen 
steht, wieviel Strom man entnehmen/einspeißen darf, um in bestimmten 
Toleranzen für den High/Low-Pegel zu bleiben. Das sind bei 0.2V Toleranz 
zB 1.5mA. In den Fußnoten der Tabelle steht außerdem, dass die insg. 
Belastung über alle Pins je nach Pegeltoleranz nicht größer als +-12mA 
(für 0.2V) sein soll.

Die Diagramme auf der nächsten Seite zeigen, wie viel Strom 
raus/reinkommt je nach Spannung am Pin.

Eine LED direkt an den MSP430 anzuschließen ist also möglich, aber nur 
sinnvoll mit Low-Current-LEDs. Für mehr Strom braucht man einen 
Schalttransistor.

> Gruß und gut' Nacht!
Gruß und guten Mittag.

Autor: Patrick A. (tuxifant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maik Fox schrieb:
> Im Datenblatt (nicht Family User Guide) gibt es im Kapitel "electrical
> characteristics" ein Unterkapitel über die Outputs. Dort sind Tabelle
> und ein paar Diagramme.
>
> Am Beispiel eines MSP430F20xx erkennt man folgendes: In den Tabellen
> steht, wieviel Strom man entnehmen/einspeißen darf, um in bestimmten
> Toleranzen für den High/Low-Pegel zu bleiben. Das sind bei 0.2V Toleranz
> zB 1.5mA. In den Fußnoten der Tabelle steht außerdem, dass die insg.
> Belastung über alle Pins je nach Pegeltoleranz nicht größer als +-12mA
> (für 0.2V) sein soll.

Hallo,
genau diese Diagramme hatte ich im Auge und deshalb auch nachgefragt.
Ich habe jetzt die Ausgänge mit nem Multimeter durchgemessen und dabei 
kam raus:
Vcc = 3,5V
P1.2 = 2,6V ≈ 0,75*Vcc
Habe dazu natürlich den Code aus den Examples genutzt und daher ist das 
genau das gewünschte Ergebnis (was EUCH sicher weniger verwundert ;-) ). 
Und -oh Wunder- auch bei nem Duty Cycle von 0,5 funktionierts.

Ich begeb mich jetzt erst mal auf Suche nach passenden Widerständen. 
Normalerweise hat man die ja zu Hause, aber natürlich gerade nicht 
auffindbar.

Danke soweit, ich melde mich wieder.


Gruß Patrick

Autor: Patrick A. (tuxifant)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

ich habe meine Testumgebung jetzt neu aufgebaut - und trotzdem steckt 
noch ein Fehler drin.
Folgende Vorgehensweise habe ich angewandt:
* Aus dem Datenblatt zum Transistor 
(http://www.reichelt.de/?;ACTION=7;LA=28;OPEN=0;IND... 
):
  - Ube,on = 0,75V bei Ic = 20mA und Raumtemp
  - hfe = 220 bei 20mA, Raumtemp und Uce = 5 V (Seite 3 links oben)
    --> Ib = 20e-3/220 ≈ 91uA
      --> bei Pin-Spannung 3,5V: Rb = 3,5/91e-6 ≈ 38,5kR

* Aus dem Datenblatt der LED 
(http://www.reichelt.de/?;ACTION=7;LA=28;OPEN=0;IND... 
):
  - Uf = 2,3V
  - If = 20mA
    --> bei Betrieb an 12V: Rvor = (12 - 2,3)/20e-3 = 485R
        (hab nen 470R genommen; Ucesat ist vernachlässigbar klein)

Das Ergebnis seht ihr im Anhang. Habe bewusst 1:1 den Aufbau 
wiedergegeben, falls das mit der R-Kette eine Fehlerquelle darstellen 
sollte, die sich mir momentan noch nicht erschließt.

Wenn ich also wieder wie oben den Duty Cycle sehr klein wähle, messe ich 
mit dem Multimeter ~0V von P1.2 gegen GND des Boards. Wenn ich 
allerdings meine Schaltung an den Port lege, dann leuchtet die LED voll 
auf. Wenn ich das Kabel zwischen Basiswiderstand und Portpin abziehe, 
erlischt sie. Ich seh den Fehler gerade nicht... %(
Btw, sie leuchtet auch, wenn ich die Basis nur mit dem Finger berühre 
... das könnt ich mir aber noch mit irgendwelchen Kapazitäten 
meinerseits oder so erklären.

Gruß Patrick

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist denn deine GND-Verbindung von MSP und Steck-Board?

Patrick A. schrieb:
> Btw, sie leuchtet auch, wenn ich die Basis nur mit dem Finger berühre

Das ist normal.

Autor: Patrick A. (tuxifant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dennis schrieb:
> Wo ist denn deine GND-Verbindung von MSP und Steck-Board?

Nicht existent. Hab ich ja oben schon mal angerissen: Das Launchpad wird 
via USB versorgt, die LED über ein Schaltnetzteil (das ist an den 
Klemmen auf dem Steckbrett angeschlossen).

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick A. schrieb:
> Nicht existent.

Ja so funktioniert es aber nicht - du brauchst schon ein gemeinsames 
Bezugspotential.

Autor: Patrick A. (tuxifant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dennis schrieb:
> Ja so funktioniert es aber nicht - du brauchst schon ein gemeinsames
> Bezugspotential.

Daran hat es letztendlich noch gelegen, vielen Dank!
Trotzdem ist mir aus der theoretischen Analyse heraus nicht ersichtlich, 
warum das Potential unterschiedlich ist.

Das 12V-Netzteil und das NT vom Notebook hängen am gleichen 
Hausanschluss (sprich gleicher N-Leiter), daher würde ich erwarten, dass 
die Gleichrichtung zum gleichen Bezugspotential hin erfolgt. Und das 
hätte ich dann ja auch am USB!?

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick A. schrieb:
> Das 12V-Netzteil und das NT vom Notebook hängen am gleichen
> Hausanschluss (sprich gleicher N-Leiter), daher würde ich erwarten, dass
> die Gleichrichtung zum gleichen Bezugspotential hin erfolgt.
Das wäre nur der Fall wenn die Netzteile nicht netzgetrennt wären. Sowas 
gab es vor 100 Jahren mal, heutzutage schützt man die Menschen indem die 
Netzteile galvanisch trennen :)

Autor: Patrick A. (tuxifant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...wird völlig überbewertet! XD Aber leuchtet dann doch ein.

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.