Forum: Mikrocontroller und Digitale Elektronik Zu wenige Pins


von Bernd (Gast)


Lesenswert?

Hallo,

ich möchte mit einem möglichst günstigen Microchip Controller eine 
Spannung messen und davon abhängig 3 LEDs ansteuern. Mehr Funktionen 
brauche ich nicht. Zuerst habe ich mir hierfür den PIC10F220 angesehen. 
Wenn ich es richtig sehe, wird dieser aber nicht passen. Der hat 6 Pins, 
wovon 2 natürlich für die Versorgung wegfallen. Bleiben 4 Pins - genau 
so viele brauch ich ja. Jedoch ist der MCLR-Pin nur als digitaler 
Eingang nutzbar und nicht als Ausgang oder analoger Eingang.

Meine Frage ist jetzt nur, ob ich das Richtig sehe, oder es vielleicht 
irgendeinen Trick gibt, mit dem ich den Controller doch benutzen kann?

Ansonsten würde ich wahrscheinlich auf einen PIC12F1571 gehen.

von RFID Bastler (Gast)


Lesenswert?

Wahrscheinlich soll ja immer nur eine LED leuchten.
Spannung zu hoch, OK , Spannung zu klein.
Da könnte man ja mit einer externen 2 zu 4 Dekodierschalung mit zwei 
Pins die 3 LEDs ansteuern.
Einfacher wird aber wohl doch ein PIC mit ein paar Pins mehr sein

von Peter D. (peda)


Lesenswert?

Der ATtiny10 im SOT-23 hat 4 IO-Pins.

von X4U (Gast)


Lesenswert?

Mit 3 I/O Pins kannst du 6 Led's betreiben.

http://ww1.microchip.com/downloads/en/appnotes/00234a.pdf

Seite 2-3

von Teflonfräser (Gast)


Lesenswert?

Bernd schrieb:
> Ansonsten würde ich wahrscheinlich auf einen PIC12F1571 gehen.

Nimm einfach einen eine Numme grösser, oder wälze dich noch
weiter zwei Wochen schlaflos nachts im Bett herum. Damit
du 20 Cent gespart hast.

von Bernd (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Der ATtiny10 im SOT-23 hat 4 IO-Pins.
Microchip ist leider gesetzt...

Teflonfräser schrieb:
> oder wälze dich noch
> weiter zwei Wochen schlaflos nachts im Bett herum. Damit
> du 20 Cent gespart hast.
Für 20 Cent würde ich mich sogar einen ganzen Monat herumwälzen. ;p Hier 
geht es zum Glück nur um 5 Cent.

X4U schrieb:
> Mit 3 I/O Pins kannst du 6 Led's betreiben.
>
> http://ww1.microchip.com/downloads/en/appnotes/00234a.pdf
>
> Seite 2-3
Danke! Die Lösung ist so einfach! :)
Ein Pin ist ADC, ein Pin bekommt ganz herkömmlich eine LED und der 
dritte Pin bekommt 2 LEDs, wie auf Seite 2 abgebildet. Es müssen zwar 
auch mal alle LEDs leuchten, aber das lässt sich dann ja über 
Multiplexen leicht lösen.

von X4U (Gast)


Lesenswert?

Bernd schrieb:
> aber das lässt sich dann ja über Multiplexen leicht lösen.

Oder mittels PWM was den uC entlastet (hilfsweise ein Uart Ausgang und 
Dauersendung von Hex 55.)

von TM F. (p_richner)


Lesenswert?

Könnte man die LEDs nicht im MC auf Masse schalten(Low-active), dann 
könntest du den MCLR auch als Steuerungspin für eine LED benützen.

von Anja (Gast)


Lesenswert?

TM FW schrieb:
> Könnte man die LEDs nicht im MC auf Masse schalten(Low-active), dann
> könntest du den MCLR auch als Steuerungspin für eine LED benützen.

Der MCLR hat keinen open drain Ausgang beim 10F220

Das einzige was am MCLR als Ausgang benutzbar ist ist der 
programmierbare Pull-up Widerstand. 50-400uA also ca 100K-12K. Das 
reicht ggf. um einen NPN (Darlington) Transistor durchzuschalten.

Gruß Anja

von Klaus (Gast)


Lesenswert?

Bernd schrieb:
> Der hat 6 Pins,
> wovon 2 natürlich für die Versorgung wegfallen.

Man sollte da nicht so knapp ran gehen. Ein bisschen sollte man auch das 
Programmieren bzw Debuggen berücksichtigen. Wenn man in die Stückzahlen 
geht, kann man sie fertig programmiert kaufen, sonst sollte man einen 
Plan dafür haben. Und da sind 6 Pins ziemlich knapp. Der kleinste, den 
ich verwende, ist der 12F1840 (ich spare nicht am Speicher). Da bleiben 
3 Pins zusätzlich zum ICD.

Bernd schrieb:
> eine
> Spannung messen und davon abhängig 3 LEDs ansteuern. Mehr Funktionen
> brauche ich nicht.

Mein Plan wäre: an den drei freien Pins den analog-in und zwei LEDs 
realisieren, Code entwickeln und debuggen. Die dritte LED an einen der 
ICD-Pins (nicht MCLR#). Das wird man dann auch ohne Debugger hin 
kriegen. Bei der CPU ist man dann mit einem $ bzw € dabei (mit weniger 
Speicher vieleicht etwas billiger).

My 2cent

MfG Klaus

von X4U (Gast)


Lesenswert?

Klaus schrieb:
> Man sollte da nicht so knapp ran gehen. Ein bisschen sollte man auch das
> Programmieren bzw Debuggen berücksichtigen.

Für die 6-Beiner gibt es sog. Header Pacs die einen speziellen Chip mit 
Debug Leitungen drauf haben.

Klaus schrieb:
> Bei der CPU ist man dann mit einem $ bzw € dabei

Dafür bekommst du in Stückzahlen ab 100 bei Microchip direct 2 Stück.

von Bernd (Gast)


Lesenswert?

Hallo zusammen,

ich habe es inzwischen wie angekündigt aufgebaut: Zwei LEDs antiparallel 
auf einen Pin und dann einen Widerstand auf 5V und einen auf GND. Eine 
dritte LED auf einem zweiten I/O herkömmlich mit Vorwiderstand auf +5V.

Nun gab es aber doch Probleme. Eigentlich wollte ich "Brilliant Green" 
LEDs verwenden. Diese haben aber immer ein U_f von > 3V. Die 
beschriebene Schaltung kann den LEDs bei Vdd = 5V aber prinzipbedingt 
nur < 2,5V liefern. Diese LEDs sind zwar äußerst effizient und leuchten 
trotzdem recht hell, aber mir ist eine gleichmäßige Helligkeit wichtig 
und diese ist nicht gewährleistet, da U_f recht hohe Toleranzen hat.
Außerdem gibt es mit diesen LEDs ein weiteres Problem. Sie sind derart 
Effizient, dass einig µA bereits für ein deutliches Leuchten sorgen. 
Selbst wenn der µC-Pin als Eingang beschaltet ist, glimmt mindestens 
eine der LEDs.

Schweren Herzens bin ich also auf grüne LEDs umsteigen, die etwas 
gelblicher leuchten. Die liegen bei U_f < 2,5V. Jetzt war nur noch die 
Helligkeit zu kompensieren. Eine der drei LEDs wird ja "normal" 
angesteuert und ist bei gleichem Vorwiderstand (Ich habe die 
Vorwiderstände als Array vorgesehen) deutlich heller. Das regle ich über 
PWM. Meine Sorge ist nun nur noch, dass in einer anderen Charge die 
Helligkeit plötzlich anders wirkt ...

von Marc S. (marc_s86)


Lesenswert?

X4U schrieb:
> Klaus schrieb:
>> Man sollte da nicht so knapp ran gehen. Ein bisschen sollte man auch das
>> Programmieren bzw Debuggen berücksichtigen.
>
> Für die 6-Beiner gibt es sog. Header Pacs die einen speziellen Chip mit
> Debug Leitungen drauf haben.

kannst du sowas verlinken? würde mich interessieren.

von Frank (Gast)


Lesenswert?

X4U schrieb:
> Mit 3 I/O Pins kannst du 6 Led's betreiben. 
http://ww1.microchip.com/downloads/en/appnotes/00234a.pdf
> Seite 2-3

Für was ist denn da eine Brücke zwischen den Widerständen? Wenn man die 
weg lässt müsste es doch gehen...

von John (Gast)


Lesenswert?

Marc S. schrieb:
> kannst du sowas verlinken? würde mich interessieren.

http://ww1.microchip.com/downloads/en/DeviceDoc/51292R.pdf

von nicht"Gast" (Gast)


Lesenswert?

Frank schrieb:
> Für was ist denn da eine Brücke zwischen den Widerständen? Wenn man die
> weg lässt müsste es doch gehen...

Die Brücke ist nötig, damit man die LEDs auch schalten kann. Wenn die 
nicht da ist, leuchten beide dauerhaft.

von R. M. (rmax)


Lesenswert?

Bernd schrieb:

> Nun gab es aber doch Probleme. Eigentlich wollte ich "Brilliant Green"
> LEDs verwenden. Diese haben aber immer ein U_f von > 3V. Die
> beschriebene Schaltung kann den LEDs bei Vdd = 5V aber prinzipbedingt
> nur < 2,5V liefern.

Hast Du mal versucht, die Verbindung zwischen R1 und R2 wegzulassen? 
Falls die LEDs dann schon im Ruhezustand leuchten, könntest Du jeder 
noch eine normale Diode in Reihe schalten.

von R. M. (rmax)


Lesenswert?

nicht"Gast" schrieb:

> Die Brücke ist nötig, damit man die LEDs auch schalten kann. Wenn die
> nicht da ist, leuchten beide dauerhaft.

Nicht, wenn die Summe ihrer Vorwärtsspannungen (ggf. durch Seriendioden 
künstlich vergrößert) hinreichend weit über der Versorgungsspannung 
liegt.

Wobei, wenn die LEDs so empfindlich sind, daß der Strom eines 
Eingangspins schon ausreicht, um sie zum glimmen zu bringen, 
funktioniert das vielleicht auch nicht, es kommt aber auf einen Versuch 
an.

@Bernd: Hattest Du an dem Eingangspin vielleicht versehentlich einen 
internen Pullup oder Pulldown aktiviert?

: Bearbeitet durch User
von Frank (Gast)


Angehängte Dateien:

Lesenswert?

nicht"Gast" schrieb:
> Frank schrieb:
>> Für was ist denn da eine Brücke zwischen den Widerständen? Wenn man die
>> weg lässt müsste es doch gehen...
>
> Die Brücke ist nötig, damit man die LEDs auch schalten kann. Wenn die
> nicht da ist, leuchten beide dauerhaft.

Ist doch Quatsch.

R. Max schrieb:
> Nicht, wenn die Summe ihrer Vorwärtsspannungen (ggf. durch Seriendioden
> künstlich vergrößert) hinreichend weit über der Versorgungsspannung
> liegt.

Genau.

R. Max schrieb:
> um sie zum glimmen zu bringen,
> funktioniert das vielleicht auch nicht, es kommt aber auf einen Versuch
> an.

Genau, sehe ich auch so.

Anbei mal noch ein Beispiel wie es in zig tausenden Discovery Boards von 
ST drin ist...da funktioniert das wunderbar mit allen drei Zuständen.

LED_STLINK = 0 --> Green on, Red off
LED_STLINK = 1 --> Green off, Red on
LED_STLINK = Z --> Green off, Red off

von Frank (Gast)


Lesenswert?

Frank schrieb:
> R. Max schrieb:
>> Nicht, wenn die Summe ihrer Vorwärtsspannungen (ggf. durch Seriendioden
>> künstlich vergrößert) hinreichend weit über der Versorgungsspannung
>> liegt.
>
> Genau.

Bzw. bei U_f > 3V und Vcc = 5V braucht man da ja garkeine zusätzlichen 
Dioden...

von Bernd (Gast)


Lesenswert?

R. Max schrieb:
> Hast Du mal versucht, die Verbindung zwischen R1 und R2 wegzulassen?
> Falls die LEDs dann schon im Ruhezustand leuchten
Habe ich schon probiert. Mindestens eine leuchtet dann immer.

R. Max schrieb:
> Wobei, wenn die LEDs so empfindlich sind, daß der Strom eines
> Eingangspins schon ausreicht, um sie zum glimmen zu bringen,
> funktioniert das vielleicht auch nicht, es kommt aber auf einen Versuch
> an.
Mit Dioden habe ich jetzt auch noch probiert. Das Glimmen ist noch da, 
jedoch so gering dass ich darüber nachdenke es zu vernachlässigen. So 
richtig zufrieden bin ich aber auch nicht mit der Lösung wegen der 
zusätzlichen zwei Bauteile. Da könnte ich dann auch schon fast den 
größeren Controller nehmen.

R. Max schrieb:
> @Bernd: Hattest Du an dem Eingangspin vielleicht versehentlich einen
> internen Pullup oder Pulldown aktiviert?
Der Controller hat Pull Ups, die ich aber sowohl im Config Word, als 
auch im Option Register explizit deaktiviert habe.

Frank schrieb:
> Bzw. bei U_f > 3V und Vcc = 5V braucht man da ja garkeine zusätzlichen
> Dioden...
Soweit die Theorie. Praktisch leuchtet eine 3,3V LED aber auch schon bei 
2,3V...

von Frank (Gast)


Lesenswert?

Bernd schrieb:
> R. Max schrieb:
>> Hast Du mal versucht, die Verbindung zwischen R1 und R2 wegzulassen?
>> Falls die LEDs dann schon im Ruhezustand leuchten
> Habe ich schon probiert. Mindestens eine leuchtet dann immer.

Auch bei High Z?

von Peter D. (peda)


Lesenswert?

Bernd schrieb:
> Praktisch leuchtet eine 3,3V LED aber auch schon bei
> 2,3V...

Wenn Du je eine 1N4148 mit der LED in Reihe schaltest, sollte es 
klappen.
(2,3V + 0,7V) * 2 = 6V

von Bernd (Gast)


Lesenswert?

Frank schrieb:
> Auch bei High Z?
Selbst wenn der Controller gar nicht verbunden ist.

Peter Dannegger schrieb:
> Wenn Du je eine 1N4148 mit der LED in Reihe schaltest, sollte es
> klappen.
> (2,3V + 0,7V) * 2 = 6V
Tatsächlich passiert leider das: (2,25V + 0,25V) * 2 = 5V  => LEDs 
glimmen

Übrigens verwende ich momentan 1k Vorwiderstände. Für die verwendeten 
LEDs sind die fast noch zu klein.

von Earl S. (Gast)


Angehängte Dateien:

Lesenswert?

das könntest du mal versuchen

von Bernd (Gast)


Lesenswert?

Earl Sinclair schrieb:
> das könntest du mal versuchen
Gerade Versucht und es funktioniert perfekt! Vielen Dank, ich denke so 
werde ich es machen! Zwar brauche ich auch 2 Dioden extra, und der 
eingesparte Widerstand war ja eh in einem Array, aber die Lösung 
funktioniert zumindest sauber. :)

von Earl S. (Gast)


Angehängte Dateien:

Lesenswert?

so müsste es auch mit einer Diode gehen

von Bernd (Gast)


Lesenswert?

Earl Sinclair schrieb:
> so müsste es auch mit einer Diode gehen

Noch besser :D

von TM F. (p_richner)


Lesenswert?

Bernd schrieb:
>> so müsste es auch mit einer Diode gehen
>
> Noch besser :D

Jetzt leuchtet die Rechts immer, wenn die Links leuchtet und die in der 
Mitte aus ist.
Mit den zwei Dioden kannst du alle drei separat schalten.

von Earl S. (Gast)


Lesenswert?

TM FW schrieb:
> Jetzt leuchtet die Rechts immer, wenn die Links leuchtet und die in der
> Mitte aus ist.

die rechte leuchtet nur, wenn beide Ausgänge auf 0 sind. Dann leuchten 
die beiden anderen nicht.

von Micha H. (mlh) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Wenn Du je eine 1N4148 mit der LED in Reihe schaltest, sollte es
> klappen.

Nein. Eine 1N4148 "hat" keine 0,7V. Auch die Schwellenspannung ist 
stromabhängig. BTDT.

von ... (Gast)


Lesenswert?

Ein 12F675 hätte 5 IOs (+ 1I) gehabt und wäre wahrscheinlich
auch billiger als der 10F200 gewesen.

Und jede LED hätte ihren individuell gebürsteten Vorwiderstand
bekommen können...

von Georg (Gast)


Lesenswert?

... schrieb:
> Und jede LED hätte ihren individuell gebürsteten Vorwiderstand
> bekommen können...

Aber dann hätte dieser Thread nicht die Chance, in die 
100-plus-Postings-Klasse aufzusteigen.

Georg

von 6a66 (Gast)


Lesenswert?

Bernd schrieb:
> Meine Sorge ist nun nur noch, dass in einer anderen Charge die
> Helligkeit plötzlich anders wirkt ...

a) Dann musst Du gebinnte Ware einsetzten
b) Auch im Bin kann die Helligkeit im Verhältnins 1:4 (mnachmal nur 1:2) 
schwanken. 1:2 wird normalerweise nicht auffallen.

rgds

von Peter D. (peda)


Lesenswert?

6a66 schrieb:
> 1:2 wird normalerweise nicht auffallen.

Schau Dir mal die Datenblätter von 7-Segmentanzeigen an, selbst da ist 
oft ein Unterschied von 1:2 zwischen einzelnen Segmenten erlaubt.

von Michael S. (rbs_phoenix)


Lesenswert?

Wieso nimmst du nicht einfach n 8pinner? Ist u.U. teurer, dafür brauchst 
du nicht diese Diode(n), verbrauchst weniger Platz auf der Platine und 
hättest dir die Mühe und vorallem Zeit(=Geld) bis jetzt aufgrund dieses 
Threafs sparen können. Die 8pinner gibts auch im TDFN Package. Die sind 
winzig. Also bleibt der eigentliche Faktor Kosten übrig.

Du kannst auch ne Soft I2C Schnitstelle machen und da nen IO Expander 
und ADC dranhängen ;)

von Peter D. (peda)


Lesenswert?

Michael Skropski schrieb:
> Wieso nimmst du nicht einfach n 8pinner?

Die optimale Schaltung braucht doch nur eine Diode und 2 Widerstände.
Beitrag "Re: Zu wenige Pins"

Mit 3 Drähten bräuchte man 3 Widerstände bei paralleler Ansteuerung, 
spart also nichts, außer etwas Software zum Multiplexen.

von TM F. (p_richner)


Lesenswert?

Earl Sinclair schrieb:
> die rechte leuchtet nur, wenn beide Ausgänge auf 0 sind. Dann leuchten
> die beiden anderen nicht.

Wenn der untere Ausgang im Bild auf low-ist, leuchtet die rechte LED 
über die Speisung zum low-Ausgang.
Wenn jetzt der obere Ausgang auf high ist, leuchten demzufolge beide. 
Oder sehe ich hier etwas falsch?

von Michael S. (rbs_phoenix)


Lesenswert?

Peter Dannegger schrieb:
> Die optimale Schaltung braucht doch nur eine Diode und 2 Widerstände.
> Beitrag "Re: Zu wenige Pins"
>
> Mit 3 Drähten bräuchte man 3 Widerstände bei paralleler Ansteuerung,
> spart also nichts, außer etwas Software zum Multiplexen.

Ok. Zugegeben. Man könnte aber auch bei 3 Ausgängen multiplexen und nur 
ein R für 3 (gleiche) LEDs nehmen. Wären also 4 Bauteile gegen 6.

Mir gings darum, dass er in der Zeit, wo er selber am grübeln war, wie 
das machbar ist, schon Schaltplan und Layout fertig hätte. In der Zeit, 
die hier ins Land gegangen ist, wäre die Software fertig. Und das alles, 
weil ein Pin bzw ein Output fehlt..

Nicht falsch verstehen. Ich bin sonst auch der Meinung, nicht immer 
gleich das nächst Größere oder Leistungsfähigere nehmen zu müssen. Aber 
wegen einem Input... Ich weiß nicht. Man braucht so jetzt mehr Zeit, 
mehr Platz und man spart an Geld nur die Differenz des PICs (62.5ct 
[PIC12F1571] - 53ct [PIC10F220]) = 9.5ct abzüglich der zusätzlichen 
Diode (3.2ct [1N4148]) und eines zusätzlichen Rs (ca 1ct). Bleibt also 
eine Ersparnis von satten 5.3ct (abzüglich des ggf mehrbedarf auf der 
Platine). Da muss schon viel gebaut werden, dass der Preisunterschied 
die Zeitkosten wett machen. Wenn die Kosten keine Rolle spielen, würde 
ich ggf den 12F1822 oder 1840 nehmen, dann hat man deutlich mehr Flash 
und Ram.

von Konrad S. (maybee)


Lesenswert?

TM FW schrieb:
> Oder sehe ich hier etwas falsch?

Ja.
Denk mal darüber nach, was die Diode macht, wenn oben Plus anliegt und 
unten Minus.

von TM F. (p_richner)


Lesenswert?

Konrad S. schrieb:
> Ja.
> Denk mal darüber nach, was die Diode macht, wenn oben Plus anliegt und
> unten Minus.

So gesehen leuchtet die LED links ja gar nie, wenn du eine normale Diode 
parallel zur LED hast.

von Konrad S. (maybee)


Lesenswert?

TM FW schrieb:
> So gesehen leuchtet die LED links ja gar nie, wenn du eine normale Diode
> parallel zur LED hast.

Überleg mal für diese Kombinationen den Stromfluss:

oben  | unten |
------+-------+-----
plus  | minus |
minus | plus  |
minus | minus |
plus  | plus  |

von TM F. (p_richner)


Lesenswert?

Jetzt ist der Knüppel raus. Habe nicht daran gedacht, dass wenn oben + 
dann an der rechten Diode nur 0,7V sind :)

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.