Forum: Analoge Elektronik und Schaltungstechnik Spannungs- oder Stromquelle mit exponentiellem Anstieg


von Maxim (maxim) Benutzerseite


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?

von Max H. (hartl192)


Lesenswert?

Exponentielle Spannung mit einem RC-Glied + Impedanzwandler.
Strom mit einem RC-Glied + Spannungsgesteuerter Stromquelle.

von Maxim (maxim) Benutzerseite


Lesenswert?

Sorry, ich muss wohl noch eine Angabe machen. Der Anstieg des Stromes 
soll proportional sein zu a^t, wobei a eine Konstante und t die Zeit.

: Bearbeitet durch User
von Max H. (hartl192)


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.

: Bearbeitet durch User
von Maxim (maxim) Benutzerseite


Lesenswert?

Ok, danke für den Tipp. Ich wollte eigentlich ohne einen uC auskommt. 
Mit uC kann ich die LEDs gleich durch einen FET per PWM steuern. Ich 
dachte, dass es eine triviale Lösung mit wenigen nicht-integrierten 
Bauteilen für das Problem gibt. Aber bisher habe ich auch nichts dazu im 
Netz gefunden.

von Falk B. (falk)


Lesenswert?

Eine Diode bzw. ein Bipolartransistor haben exponentielle Kennlinien. 
Allerdings sind die recht temperaturabhängig.
Ein uC zum Dimmer ist hier besser, ein kleiner ATtiny & Co reicht.

von Max H. (hartl192)


Lesenswert?

Maxim S. schrieb:
> proportional sein zu a^t, wobei a eine Konstante und t die Zeit.

Falk Brunner schrieb:
> Eine Diode bzw. ein Bipolartransistor haben exponentielle Kennlinien.

Da ist die Basis der Exponentialfunktion ('a'), wie auch bei der 
Kondensatorladekurve, die natürliche Zahl e und nicht wählbar.

von Maxim (maxim) Benutzerseite


Lesenswert?

Alles klar, dass muss halt ein uC her.

Danke!

von Thomas W. (Gast)


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.

von Max H. (hartl192)


Lesenswert?

Thomas W. schrieb:
> dann guck dich schon mal nach einem DAC mit 120 Bit um
LoL - dann guck dich schon mal nach einem C-Buch um. Und am besten auch 
noch gleich ein bisschen Verstand.

: Bearbeitet durch User
von Ulrich (Gast)


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.

von Max H. (hartl192)


Lesenswert?

Ulrich schrieb:
> Mit 1,2,4 usw. käme
> man tatsächlich irgendwo bei 120 Bit an.
Das war nur ein Beispiel, die ersten 3 Zahlen, die mir eingefallen sind. 
Man müsste sie dann natürlich berechnen.

von Thomas W. (Gast)


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

von Max H. (hartl192)


Lesenswert?

Thomas W. schrieb:
> 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.

Max H. schrieb:
> Das war nur ein Beispiel, die ersten 3 Zahlen, die mir eingefallen sind.
> Man müsste sie dann natürlich berechnen.

von Amateur (Gast)


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.

von Maxim (maxim) Benutzerseite


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.

Es gilt immer a>1. Rückgekoppelter Integrator hört sich interessant an. 
Ich werde mal nachsehen, wie das funktioniert.

von Amateur (Gast)


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.

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.