Forum: Mikrocontroller und Digitale Elektronik 5V LED mit Sinuskurve pulsieren lassen?


von Codierer (weichware)


Lesenswert?

Hi,
ich habe hier eine kleine Deko-Lampe die über USB angeschlossen ist.
Ich habe sie geöffnet und festgestellt das dort einfach die 2 Drähte von 
der 5V Spannungsversorgung genommen wurden um eine kleine, superhelle, 
LED zu versorgen.

Ich würde sie gerne kontinuierlich und langsam pulsieren lassen. Einer 
Sinus-Kurve folgend. Mit einem kleinen Drehpoti in der Schaltung um die 
Frequenz einzustellen.

Aber Elektrotechnisch habe ich nur Grundkenntnisse und die ganzen 
Anleitungen sind meinem Eindruck nach viel zu professionell und komplex, 
damit sie perfekte Signale erzeugen, also das Gegenteil von dem was ich 
brauche. Oder nehmen gleich einen riesigen Arduino!

Wahrscheinlich ist mein Google-Fu nur zu schlecht? Ich denke das ist auf 
einem so niedrigen Anfänger-Level, es gibt da eine Anleitung für.
Hat jemand einen Link?

von Roland E. (roland0815)


Lesenswert?

Such dir einen (beliebigen) MuC, der einen ADC hat. Der Rest ist 
Software...

Ich empfehle einen älteren PIC12F675, oder so.
Der läuft mit 5V.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Codierer schrieb:
> Ich würde sie gerne kontinuierlich und langsam pulsieren lassen. Einer
> Sinus-Kurve folgend.

Es oszilliert sogar mit 1 Transistor, zumindest wird die LED heller und
dunkler. (siehe http://www.dieelektronikerseite.de/ Weichblinker, je 
höher
Betriebsspannung, je weicher blinkt er)
1
          LED
2
   +----+-|>|-+                                        LED
3
   |    |     |                +--------------------+--|>|--+
4
   |   470k  470R              |                    |       |
5
   |    |     |  +  -          |                   470k    470R
6
   |    |     +--22uF--+       |                    |       |
7
 + |    |     |        |     + |    +--22u----------(-------+
8
 9-12V  +----|< BC547  |  =  9-12V  |               |       |
9
 - |    | +   |E       |     - |    +--22u--+--10u--+------|< BC547
10
   |   10uF   |        |       |    |       |               |E
11
   |    | -   |  +  -  |       |   2k2     2k2              |
12
   |    +-----(--22uF--+       |    |       |               |
13
   |    |     |        |       +----+-------+---------------+
14
   |   2k2    |       2k2
15
   |    |     |        |
16
   +----+-----+--------+
Die nur 5V können ein Problem werden.

Es gibt Kerzenflacker-LED und Farbwechsel-LED, die nutzen neben den LED 
einen kleinen Chip, im Prinzip ein Mikroconroller wie Attiny5 oder 
PMS160.

Vielleicht kannst du aus einer RGB Farbwechsel-LED die blaue und grüne 
LED gezielt zerstören.

von Manfred P. (pruckelfred)


Lesenswert?

Michael B. schrieb:
> Es oszilliert sogar mit 1 Transistor, zumindest wird die LED heller und
> dunkler.

Für eine korrekt schöne Lösung "mit Sinuskurve pulsieren" müsste man den 
Strom natürlich nur oberhalb der minimalen Flußspannung variieren.

Aber so ..
Codierer schrieb:
> Aber Elektrotechnisch habe ich nur Grundkenntnisse und die ganzen
> Anleitungen sind meinem Eindruck nach viel zu professionell und komplex,

schlechte Karten, das wird komplex.

von Norbert (der_norbert)


Lesenswert?

So etwas ähnliches hatte ich schon einmal programmiert, allerdings 
leider nur für eine Cosinus-Kurve. Vielleicht könnte man ja mit einem 
Phasenschieber…

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wer übrigens meint, dass es ausreicht, die LED mit einem Sinusstrom oder 
einer Sinus-PWM anzusteuern, der hat die Rechnung ohne das 
logarithmische Helligkeitsempfinden des Auges gemacht.

Oder andersrum: wenn das Auge einen sinusförmigen Helligkeitsverlauf 
sehen soll, dann sieht die Ansteuerung bzw. der Stromverlauf sicher 
nicht sinusförmig aus.

von Christian S. (roehrenvorheizer)


Lesenswert?

Codierer schrieb:
> Aber Elektrotechnisch habe ich nur Grundkenntnisse

So eine ähnliche Transistor-Schaltung wurde oben schon genannt:

https://www.elektronik-kompendium.de/sites/praxis/bausatz_blinker.htm

oder

https://www.google.com/search?client=firefox-b-d&q=led+sine+oscillator

gleich das erste Video:
https://www.instructables.com/Sinusoidal-LED-Fader-Using-Twin-T-Oscillator/

darüber scheint es viel Material zu geben.

mfg

von Rolf M. (rmagnus)


Lesenswert?

Man sollte auch bedenken, dass LEDs nicht einfach an 5 Volt 
angeschlossen werden. Wenn dass bei dieser "superhellen LED" so ist, 
dann ist da ggf. noch eine Vorschalt-Elektronik mit integriert, und es 
ist unklar, ob sie sich dann überhaupt so einfach beliebig dimmen lässt.

von Rainer W. (rawi)


Lesenswert?

Roland E. schrieb:
> Such dir einen (beliebigen) MuC, der einen ADC hat.
Einer mit einem Komparatoreingang und ein Kondensator wäre auch eine 
Möglichkeit.

Codierer schrieb:
> Oder nehmen gleich einen riesigen Arduino!

Du könntest genauso gut einen kleinen Pro Mini nehmen (braucht aber z.b. 
einen anderen Arduino als Programmiergerät)
https://de.aliexpress.com/item/1005006035246840.html

von Georg M. (g_m)


Lesenswert?


von Obelix X. (obelix)


Lesenswert?

Codierer schrieb:
> Wahrscheinlich ist mein Google-Fu nur zu schlecht? Ich denke das ist auf
> einem so niedrigen Anfänger-Level, es gibt da eine Anleitung für.
> Hat jemand einen Link?

Meinst du die Antworten hier werden einfacher als deine 
Google-Ergebnisse? Frage lieber "Wer kann mir so etwas bauen?".

Lothar M. schrieb:
> Wer übrigens meint, dass es ausreicht, die LED mit einem Sinusstrom oder
> einer Sinus-PWM anzusteuern, der hat die Rechnung ohne das
> logarithmische Helligkeitsempfinden des Auges gemacht.

Könnte aber Softwaremäßig ausgeglichen werden. Wie wichtig ist dem TO 
aber die Einhaltung einer Sinuskurve.

Norbert schrieb:
> Cosinus-Kurve. Vielleicht könnte man ja mit einem
> Phasenschieber…

LOL ;-)

: Bearbeitet durch User
von Adam P. (adamap)


Lesenswert?

Lothar M. schrieb:
> Wer übrigens meint, dass es ausreicht, die LED mit einem Sinusstrom oder
> einer Sinus-PWM anzusteuern, der hat die Rechnung ohne das
> logarithmische Helligkeitsempfinden des Auges gemacht.

Ja, daran sollte der TO natürlich denken!

Als kleiner Ansatz zu dem Thema:
https://www.mikrocontroller.net/articles/LED-Fading

von Roland E. (roland0815)


Lesenswert?

Rainer W. schrieb:
> Roland E. schrieb:
>> Such dir einen (beliebigen) MuC, der einen ADC hat.
> Einer mit einem Komparatoreingang und ein Kondensator wäre auch eine
> Möglichkeit.
>

Der ADC wird für das Poti gebraucht.

Der Rest geht mit einem Portpin ...

von Rainer W. (rawi)


Lesenswert?

Norbert schrieb:
> So etwas ähnliches hatte ich schon einmal programmiert, allerdings
> leider nur für eine Cosinus-Kurve.

o.m.g

Stell deine Uhr einfach passend.

Roland E. schrieb:
> Der ADC wird für das Poti gebraucht.

Mit dem Komparator sollte die Zeit gemessen wer, um den Kondensator über 
den Widerstand des Potis umzuladen. Der ADC wäre dann überflüssig.

: Bearbeitet durch User
von Sebastian R. (sebastian_r569)


Lesenswert?

Ich hatte sowas in der Art mal für einen ATTiny10 aus Spaß an der Freude 
gemacht:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#ifndef F_CPU
4
#define F_CPU 1000000UL
5
#endif
6
7
volatile byte sinepos = 0;
8
9
byte sine[] = { 1, 1, 2, 3, 5, 8, 11, 15, 20, 25, 30, 36, 43, 49, 56, 64, 72, 80, 88, 97, 105, 114, 123, 132, 141, 150, 158, 167, 175, 183, 191, 199, 206, 212, 219, 225, 230, 235, 240, 244, 247, 250, 252, 253, 254, 255, 254, 253, 252, 250, 247, 244, 240, 235, 230, 225, 219, 212, 206, 199, 191, 183, 175, 167, 158, 150, 141, 132, 123, 114, 105, 97, 88, 80, 72, 64, 56, 49, 43, 36, 30, 25, 20, 15, 11, 8, 5, 3, 2, 1, 0 };
10
11
void main() {
12
  DDRB = 1 << DDB0;
13
14
  //Timer0 for PWM
15
  // PWM, Phase Correct, 8bit
16
  TCCR0A = (1 << COM0A1) | (0 << COM0A0) | (1 << COM0B1) | (0 << COM0B0) | (0 << WGM01) | (1 << WGM00);
17
  TCCR0B = (0 << ICNC0) | (0 << ICES0) | (0 << WGM03) | (1 << WGM02) | (0 << CS02) | (0 << CS01) | (1 << CS00);
18
19
  // Initialize ADC
20
  // No clock divider, MUX set to ADC2 -> PB2
21
  ADMUX = (1 << MUX1) | (0 << MUX0);
22
  ADCSRA = (1 << ADEN) | (0 << ADPS2) | (0 << ADPS1) | (0 << ADPS0);
23
24
  // LED Pins are outputs
25
  DDRB = (1 << DDB0) | (1 << DDB1);
26
27
  // Loop
28
  while (1) {
29
    unsigned char delayval;
30
31
    // Start conversion
32
    ADCSRA |= (1 << ADSC);
33
34
    // Wait for conversion to complete
35
    while (ADCSRA & (1 << ADSC))
36
      ;
37
38
    delayval = (unsigned char)ADCL;
39
40
    OCR0A = sine[sinepos];
41
    OCR0B = 255 - sine[sinepos];
42
43
    sinepos++;
44
45
    if (sinepos >= sizeof(sine)) {
46
      sinepos = 0;
47
    }
48
49
    _delay_ms(delayval);
50
  }
51
}

Die Periodendauer ist erstmal nicht groß umgerechnet, wenn man andere 
Werte haben möchte, müsste man das vielleicht noch entsprechend 
skalieren

von Norbert (der_norbert)


Lesenswert?

Rainer W. schrieb:
> o.m.g

So etwas wie Ironie rast, ähnlich einem Sack voller Neutrinos, völlig 
unbemerkt an dir vorbei, oder?

von Codierer (weichware)


Lesenswert?

Erstmal vielen Dank für die Antworten.

Und:
Christian S. schrieb:
> https://www.google.com/search?client=firefox-b-d&q=led+sine+oscillator
>
> gleich das erste Video:
> https://www.instructables.com/Sinusoidal-LED-Fader-Using-Twin-T-Oscillator/

Danke! Das ist es. Genau sowas habe ich gesucht. Ich habe einfach nur 
ständig die falschen Keywords benutzt und bin immer wieder bei denselben 
Ergebnissen gelandet. Danke auch für die Google Keywords, dann kann ich 
selber die Suche erweitern. :-)

Ich dachte mir doch das es nicht so kompliziert sein kann. Das waren 
alles Anleitungen für Leute die auf saubere Sinuswellen angewiesen sind 
oder sogar "rechteckige" Sinuswellen wollten. Brauch ich ja nicht.

Die 12V Quelle auf 5V umzubauen traue ich mir schon zu. Und einen der 
Widerstände durch einen Poti ersetzen, das werde ich ja wohl noch 
hinbekommen :-D.

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.