Spannungs- oder Stromquelle mit exponentiellem Anstieg

OP Persönliche Seite #3548026
Lesenswert?

Ich benötige eine Stromquelle, die nach dem Einschalten den Strom von 
0mA auf einen definierten Wert (ca. 1 bis 10mA) exponentiell erhöht und 
dann konstant hält. Der Anstieg soll etwa 30 Sekunden dauern. Damit 
möchte ich einen Darlington ansteuern, welcher eine starke LED mit Strom 
versorgt.

Wie lässt sich der exponentielle Stromanstieg realisieren?
#3548120
Lesenswert?

Du könntest einen kleinen µC verwenden und in einer Lookup Table deinen 
Spannungsverlauf speichern und dann abrufen und mit PWM ausgeben.

z.B. so oder ähnlich
1
const unsigned char lut[120]={0,1,2,4,8,...}
2
for(i=0;i<120;i++)
3
{
4
  PWM=lut[i];
5
  delay_ms(250);
6
}
7
while(1);

Dann hast du auf deiner Platine nur einen 8-Pin µC, einen Tiefpass um 
das PWM zu glätten, und einen Impedanzwandler oder Stromquelle.
Du kannst eine beliebige signalform damit erzeugen, alles was Auflösung 
des PWM-Moduls, Geschwindigkeit und Speicher deins µCs zulassen.
Gast #3548613
Lesenswert?

Max H. schrieb:
> Du könntest einen kleinen µC verwenden und in einer Lookup Table deinen
> Spannungsverlauf speichern und dann abrufen und mit PWM ausgeben.
>
> z.B. so oder ähnlichconst unsigned char lut[120]={0,1,2,4,8,...}
> for(i=0;i<120;i++)

Lol - dann guck dich schon mal nach einem DAC mit 120 Bit um. Und am 
besten auch noch gleich nach einem Pufferverstärker mit über 700 dB 
Dynamikumfang.
Gast #3548679
Lesenswert?

Den Exponentiellen Anstieg kann man auch Analog erzeugen. Das mit der 
Basis ist kein Problem, das ist nur einer Frage der Zeitkonstante:
a^t = exp( ln(A) * t)
Einen Unterschied gibt es nur ob a kleiner oder größer als 1 ist. Mit a 
< 1 hat man die Entladekurve beim Kondensator, mit a > 1 ein 
exponetielles Wachstum, für das man eine aktive Schaltung braucht.

Eine Möglichkeit wäre etwa ein Integrator mit positiver Rückkopplung. 
Ein anderer Weg wäre über die Exponetielle Diodenkennlinie (linear 
zunehmender Spannung) - ist aber halt Temperaturabhängig.

Das Beispiel mit dem C-Code oben war nicht so toll. Mit 1,2,4 usw. käme 
man tatsächlich irgendwo bei 120 Bit an. So schwer wird es aber nicht 
sein eine feinere Tabelle zu erzeugen. Es bleibt aber das Problem, dass 
man ggf. einen DAC mit hoher Auflösung braucht, wenn das Signal über 
einen großen Bereich variieren soll.
Gast #3548762
Lesenswert?

Max H. schrieb:
> const unsigned char lut[120]={0,1,2,4,8,...}

Max H. schrieb:
> LoL - dann guck dich schon mal nach einem C-Buch um. Und am besten auch
> noch gleich ein bisschen Verstand.

Dir fehlen anscheinend ein paar Grundlagen über geometrische Folgen [1] 
und über Zahlenbereiche von in C verwendeten Ganzzahlen.

Erzähl mal, wie du bei deinem Array das 120-ste Element in ein unsigned 
char packen möchtest, wenn jedes Element um einen Faktor 2 größer als 
das vorhergehende sein soll. Schon bei lut[10] wird das ausgesprochen 
eng.

[1] 
http://de.wikipedia.org/wiki/Folge_%28Mathematik%29#Geometrische_Folgen
Gast #3548875
Lesenswert?

Der Hauptnachteil einer digitalen Lösung ist: Am Ende geht's nur noch 
mit Riesenschritten weiter. Selbst ein etwas höher auflösender Wandler 
bekommt hier ein Schild mit der Aufschrift: Vorsicht Stufe.
Ich würde mal nach einer analogen Lösung suchen.
Gast #3548897
Lesenswert?

>Also das Problem mit zu wenigen Bits kann man ja einfach akzeptieren und
>die Exponentialfunktion auf die Anzahl an verfügbaren Werten möglichst
>gleichmäßig verteilen.

Eben nicht.
Eine Exponentialfunktion hat im Anfangsbereich eine sehr geringe 
Steigung, so dass sich der Ausgangswert, über einen größeren Bereich, 
gar nicht ändert. Später aber in nicht teilbaren Riesenschritten 
fortschreitet.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren