Forum: Mikrocontroller und Digitale Elektronik 12F629 LED Ansteuern in versch. Helligkeitsstufen


von Sebastian (Gast)


Lesenswert?

Guten Morgen,

Ich würd gerne mit dem Pic 12F529 eine kleine LED Steuerung realisieren
und Zwar benutze ich 3 Ausgänge an denen Jeweils eine LED ,mit 180ohm
Vorwiderstand, hängt (1ne rote, 1ne grüne, 1ne blaue).
Ich würde Gerne die LEDs in einer unterschiedlichen Helligkeit haben so
das es Verschiedene Farbverläufe gibt zum Beispiel:

Am Anfang 3 Sek nur die Rote LED mit 100% Helligkeit dann nimmt die
rote LED auf ca. 70% ab und zusätzlich wird die grüne Led auf 30% hoch
gefahren. Danach die rote auf 30% die grüne auf 60% und die blaue auf
30%.

Ich hoffe ihr versteht was ich mit dem Beispiel meine :).

So, nur wie schaffe ich es das die LEDs in einer versch. Helligkeit
leuchten ?
Spannung am Ausgang kann ich ja nicht ändern, da es Digitale Ausgänge
sind. Eine Puls-Weiten-Mudulation hat der 629 nicht. Den Storm am
Ausgang verändern geht auch nicht.

Das einzigste was ich mir vorstellen könnte sowas zu Programmieren wäre
mehrer Schleifen.

Wenn ich z.B. Annehme das wenn eine LED mit einer Schleife 1sek lang
für 100% an ist das das die maximale Helligkeit wäre und ich sie dann
500ms an und dann 500 ms aus schalte das sie dann nur 50% Helligkeit
hat.

Könnte das klappen ?

Hättet ihr vieleicht andere Lösungsvorschläge ?

von Magnus Müller (Gast)


Lesenswert?

>> und ich sie dann 500ms an und dann 500 ms aus schalte das sie dann
>> nur 50% Helligkeit hat.

Nein, Sebastian... dann blinkt sie!

von Sebastian (Gast)


Lesenswert?

Stimmt hab das irgentwie von der PWM genommen aber da sind die ja mit
ner Frequenz von 10khz angesteuert da merkt man das ja nicht mehr ob
die nur 10% davon leuchtet.

Mhm wie könnte man es denn noch realiesieren ? oder gehts überhaupt
oder dann doch lieber nen 16F84A der kleine wäre nur so schön klein
gewesen.

Vieleicht Hat ja noch jmd ne Antwort :)

von Philipp Karbach (Gast)


Lesenswert?

also ich könnte mir vorstellen dass das mit einem IR2E27A (IC) geht. das
ist ein LED Treiber der bei verschiedenen spannungen auch LEDs dimmen
kann (soweit ich weiß). du könntest dann einen kleinen addierer davor
bauen der dir verschiedene spannungen liefert. Aber warum nicht einfach
nen chip nehmen der PWM hat ;)?

von Schoasch (Gast)


Lesenswert?

Man kann auch gewisse Hardwaremodule mit Software simulieren ;-).
In deinem Fall würde ich auch nicht mal aufs PWM-Modul zugreife, wenn
eines vorhanden wäre. ISt ja zu umständlich.

Wie Magnus schon gesagt hat, 500ms sind zu lang.. versuchs mit 5ms oder
so.. Probieren geht über studieren ;-)

Ich würds mal so versuchen:
while(1)
{
 LEDrot=1;
 delay_ms(3000);

 for(i=0;i<=??;i++){// ?? steht für eine Zahl die du errechnen musst..
        //??=(Gewünschte Leuchtdauer)/(Dauer des SChleifendurchlaufes)

   LEDrot=1;
   LEDgruen=0;
   delay_ms(7);
   LEDrot=0;
   LEDgruen=1;
   delay_ms(3);
   }

 for(i=0;i<=??;i++){// ?? steht für eine Zahl die du errechnen musst..
        //??=(Gewünschte Leuchtdauer)/(Dauer des SChleifendurchlaufes)

   LEDrot=0;
   LEDblau=0;
   LEDgruen=1;
   delay_ms(7);
   LEDblau=1;
   LEDrot=1;
   LEDgruen=0;
   delay_ms(3);
  }

}
In der letzten schleife habe ich etwas geschummelt.. die grüne LED
würde mit ca 70PRozent leuchten. Was natürlich auch noch eine
verfälschung bringt, ist die if Abfrage die etwas zeit braucht.dH du
müsstest den Wert des letzten delay_ms in den schleifen dem
entsprechend anpassen.

mfg Schoasch

PS.: Der code soll eher als Inspiration dienen ;-) Er wurde nicht
überprüft.

von Simon K. (simon) Benutzerseite


Lesenswert?

Alternativ Software-PWM!

von Sebastian (Gast)


Lesenswert?

@Simon

Ja so eine Software PWM Könnte evtl die Lösung sein. Kannst du mir auch
sagen wie man sowas realisiert ?


@Schoasch

Ist das ne C Programmierung ? damit kenn ich mich nicht so aus kenen
nur die Assembler sprache direkt vom PIC

@Philipp

Ich hab den 629 genommen weil ich ihn Grad da hab und er sehr klein ist
mit seinen 8 Pins Ich hab aber auch den 16F84A da auf den würde ich wenn
alles Platzt ausweichen. Aber so klein wie möglich wäre am besten

von Frank (Gast)


Lesenswert?

http://www.emanator.demon.co.uk/bigclive/rgb.htm
Der hat sowas ins Netz gestellt. Früher (bevor er die Chips fertig
verkauft hatte) war sogar ein Hex-File vorhanden. Vielleicht einfach
mal anfragen, ob er das noch rausrückt. Eventuell hat ja auch noch
Jemand die alte Version der Seite (inklusive der Files) aufm
Rechner...

bye

Frank

von Frank (Gast)


Angehängte Dateien:

Lesenswert?

im Zweifelsfall sogar ich selbst...
Eins der ASM Files häng ich einfach mal an, vielleicht ists ja ne
Hilfe.

bye

Frank

von Schoasch (Gast)


Lesenswert?

Hi

Ja, es ist in C-geschrieben. Aber ich glaube schon, dass du ungefähr
verstehen kannst was ich meine. Das gnaze sollte sich recht einfach in
ASM umschreiben lasse.

von kevin (Gast)


Lesenswert?

hallo,
ich weiß der thread ist schon etwas älter. wollte mal fragen ob jemand 
das asm file von frank zum laufen bekommen hat. welche mikroprozessor 
hat denn der typ auf der 
http://www.emanator.demon.co.uk/bigclive/rgbcont.htm seite verwendet? 
und gibt es nen einfachen brenner für diesen chip wenn ja wo ?
wäre nett wenn mir einer helfen würde. (oder gibt es gar einen 
einfacherern weg zu einem rgb controller zu kommen )

mfg
kevin

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.