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.
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
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.
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.
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.)
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
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
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.
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 ...
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.
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.
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.
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?
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
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...
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...
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?
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
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.
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. :)
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.
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.
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.
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...
... 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
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
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.
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 ;)
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.
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?
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.
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.
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 |