Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage: Mikrocontroller (Arduino) soll Last (12V) via PNP(?) ansteuern


von Martin S. (trickymartin)


Angehängte Dateien:

Lesenswert?

Hallo zusammen.

[Wer es eilig hat, möge direkt zu "PROBLEM" springen ;)]

Ich bin Software-Entwickler und hatte bisher mit "Hardware" nicht viel 
zu schaffen, und dementsprechend wenig Ahnung. Da mich das Thema 
Elektronik aber eigentlich immer interessiert hat und ich ganz gerne mal 
was bastele, habe ich sozusagen als Einsteiger-Projekt eine 
Leuchtturm-Landkarte gewählt. Das soll eine Landkarte sein, bei der an 
der Position der Leuchttürme (und Bojen etc.) eben LEDs sind. [Ziemlich 
genau so wie hier: 
http://www.ledhilfe.de/viewtopic.php?f=28&t=1481&hilit=seekarte&sid=4fbafb1e13fafa79a45d89d745cea357&start=25]

Inzwischen habe ich erfolgreich alle LEDs (ca 300) verlötet, jeweils zu 
"Gruppen" zwischen 1 und 5 Stück, alle mit passendem Vorwiderstand. Die 
Gruppen hängen alle parallel an einem 12V Netzteil. Das ganze 
funktioniert auch einwandfrei.

Als Kür sollen nun einige der LEDs "blinken" (natürlich jeweils mit der 
entsprechenden "Kennung"). Nachdem ich es zuerst mit einem ATmega8 
versucht habe, damit aber nicht weit kam, habe ich mir jetzt einen 
Arduino Uno besorgt. Die Programmierung war kein Problem, ich habe jetzt 
17 Ausgänge, die im richtigen "Muster" HIGH bzw LOW sind. Wenn ich da 
jeweils eine LED dranhänge, funktioniert auch alles. Da ich an ein 
einzelnes PIN aber nicht 5 LEDs (5*20mA) dranhängen will (oder sollte), 
will ich das ganze mit Transistoren lösen.

Das angehängte Diagramm soll das in etwa verdeutlichen. Bitte seht mir 
nach, dass ich noch nie Software zum Schaltplanzeichnen verwendet habe. 
Den abgebildeten Mikrocontroller habe ich nur als Platzhalter genommen, 
weils im Programm keinen Arduino gab. Ich habe jetzt mal nur einen 
Transistor eingezeichnet, tatsächlich habe ich das identische Problem 
natürlich 17 mal. Dummerweise habe ich die LED-Gruppen nach "Minus" 
(GND) hin alle bereits miteinander verlötet, und es wäre ziemliche 
Arbeit, das nochmal zu ändern. Richtung "Plus" (V) dagegen habe ich 17 
einzelne Litzen, die im Moment (also ohne Transistor und 
Mikrocontroller) alle via Lüsterklemme an der Quelle hängen. Deswegen 
nehme ich an, ich muss PNP-Transistoren verwenden.

PROBLEM: Wenn ich den MikroController und den BC327 wie im angehängten 
Schaltplan anschließe, gehen die LEDs4 bis 8 nicht ganz aus, sondern 
werden nur dunkler oder heller, je nachdem, was am Pin liegt. Ich 
vermute, das liegt am Spannungsunterschied zwischen Last (12V) und Pin 
(5V), zumindest gibt es einige Threads hier, die ich so interpretiere. 
Ich bin aber auch grundsätzlich nicht sicher, ob dies so überhaupt eine 
Lösung ist. Falls hierfür besser geeignete Bauteile gibt ("Driver"?), 
welche die Aufgabe besser lösen, bin ich für alle Vorschläge offen. Ich 
brauche auch nicht unbedingt die Komplettlösung in Diagrammform, ein 
paar Wegweiser würden mir sicher schon weiterhelfen.

Falls das relevant ist, hier noch ein paar Daten:
- Zwischen 1 und 5 LEDs pro "Gruppe"
- Spannung: Last: 12V, uC 5V
- 17 Gruppen sind via 17 Pins des uC zu schalten
- Vorwiderstände der LEDs (je nach Farbe und Anzahl in der Gruppe) 
zwischen 50 und 1.000 Ohm
- Alle LEDs 20mA


Vielen Dank schonmal fürs Durchlesen!

von MaWin (Gast)


Lesenswert?

> Dummerweise habe ich die LED-Gruppen nach "Minus"
> (GND) hin alle bereits miteinander verlötet,

Tja, dann lötest du sie eben wieder um.

Denn Masse zu schalten ist VIEL einfacher als Plus:

                 +--|<|--|<|--|<|--R-- +12V
                 |
Arduino --180R--|< NPN wie BC337
                 |E
                GND

oder du verwenmdest ICs:
Ein ULN2803 schaltet gleich 8.

Da gäbe es auch, deutlich teurer, den UDN2981,
der kann 8 Leitungen an plus schalten direkt
vom Arduino aus. Verwendung siehe Datenblatt.

Denn ein Aufbau mit Einzelteilen ist wesentlich aufwändiger:

               +-----1k-------+--- +12V
               |              |E
               +-------------|< PNP
               |              |
Arduino --1k--|< NPN BC547    +--|>|--|>|--|>|--R--+
               |E                                  |
              GND                                 GND

pro LED-Strang.

von Sebastian Heyn (Gast)


Lesenswert?

Hi,

erstmal kannst du den controller ned an +12V hängen.

Die Schaltung mit dem Transistor wie du sie geschaltet hast wird auch 
nicht funktionieren.

Dein Controller / Arduino kann ja nur zwischen 5V/0V schalten... - Dein 
Transistor ist bei 12V gesperrt, und bei 11,3V (und kleiner) leitend. 
Das heisst das der Transistor immer durchschaltet.

Du brauchst also noch nen BC547 in Emitterschaltung als Pegelwandler

von Martin S. (trickymartin)


Lesenswert?

Vielen Dank für die prompte Beantwortung.

Ich werde dann also Umlöten (inzwischen hab ich ja etwas Übung...) wie 
von MaWin beschrieben und dann 2x ULN2803 (für Nr. 1-16) und 1x BC337 
(für Nr. 17) verwenden. Brauche ich bei den ULN2803 auch jeweils (pro 
Pin) einen Basiswiderstand von 180 Ohm?

Wieso eigentlich 180 Ohm? Die Werte entsprechen doch eigentlich genau 
dem Beispiel 3.1 beim Basiswiderstand (hFE=100, max. 100mA, 5V), 
aber dort kommt man auf 1 kOhm?

@Sebastian: Laut Homepage sollten die 12V beim Arduino kein Problem sein 
(Input Voltage (limits): 6-20V; Input Voltage (recommended): 7-12V). 
Oder sehe ich das falsch?

Beitrag #2403751 wurde von einem Moderator gelöscht.
von Stryker (Gast)


Lesenswert?

Martin S. schrieb:
> @Sebastian: Laut Homepage sollten die 12V beim Arduino kein Problem sein
> (Input Voltage (limits): 6-20V; Input Voltage (recommended): 7-12V).

Das bezieht sich auf das Netzteil mit dem man den Arduino versorgt. 
Darauf befindet sich jedoch ein Spannungsregler der dem Controller 
irgendetwas zwischen 3 und 5 Volt gibt.

Beitrag #5456589 wurde von einem Moderator gelöscht.
Beitrag #5456628 wurde vom Autor gelöscht.
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.