www.mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Stromspiegel mit Digitalpotentiometer


Autor: Thomas Grafe (thomas-g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander,

ich möchte einen einstellbaren Stromspiegel aufbauen. Dieser 
Stromspiegel soll einen einstellbaren Strom liefern, wobei die 
Einstellung aus einem PIC heraus von statten gehen soll. Nun habe ich 
mir gedacht, dass ich in dem Zweig von der Basis zur Masse, zur 
Einstellung des Basisstroms und damit auch zum Einstellen des Stroms aus 
dem Stromspiegel ein digitales Potentiometer einbaue, welches ich über 
den PIC ansteuern kann.

Problem hierbei ist, dass ich nur etwa 2 PINs noch frei habe. Die 
restlichen kann ich nicht freimachen und auch ein größerer PIC kann aus 
Kosten- und Platzgründen nicht eingesetzt werden.

Nun suche ich also ein Digital-Poti was mit nur einem Draht mit mir 
kommunizieren kann und einen Widerstandswert von max. 10 kOhm besitzt 
und in etwa 32 Schritten einstellbar, aber bei einer Toleranz von max 
5%.
Meinetwegen kann der maximale Widerstnadswert auch größer sein, dann 
aber auch mehr Schritte zum Einstellen.

Das einzige Poti was ich gefunden hatte war das DS2890P von MAXIM, aber 
das hat eine Toleranz von ±25%.

Habt ihr evtl. noch andere Typen oder Erfahrungen in solchen Sachen?
Ich hoffe ihr könnt mir da ein wenig helfen

MfG Thomas

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

ich würde den Strom nicht mit einem einstellbaren Widerstand ändern, 
sondern den Widerstand konstant lassen und die Spannung ändern. Mit
einer PWM des Pics und einem RC-Glied kann man 0..5V erzeugen.

Autor: Thomas Grafe (thomas-g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider ist das nicht möglich.
Ich brauche die Stromquelle für max. 50-60 µs, das schaff ich mit dem 
PIC nicht als PWM. Zusätzlich muss die Abarbeitungszeit des Codes 
richtig niedrig halten, damit ich möglichst wenig Strom verbrauche. Die 
Stromquelle an sich schalte ich auch ab wenn ich sie nicht brauche und 
sie muss Ströme zwischen 300 und 800mA liefern in dieser kurzen Zeit.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Problem hierbei ist, dass ich nur etwa 2 PINs noch frei habe.
Eher 1,6 oder eher 2,4   :-o

> Die restlichen kann ich nicht freimachen ...
Evtl. kannst du irgendwelche Pins doppelt verwenden. Dann wäre auch ein 
up/down-Poti oder I²C-Poti sogar ein SPI-Poti drin.

Autor: Thomas Grafe (thomas-g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Problem hierbei ist, dass ich nur etwa 2 PINs noch frei habe.
> Eher 1,6 oder eher 2,4   :-o
>
 ^^ :-P naja eher so 2,718281828459

>> Die restlichen kann ich nicht freimachen ...
> Evtl. kannst du irgendwelche Pins doppelt verwenden. Dann wäre auch ein
> up/down-Poti oder I²C-Poti sogar ein SPI-Poti drin.

da ich mehrere undabhängige MOSFETs als Schalter für verschieden lange 
Zeiten damit aktiv halten und LEDs einzeln schalten muss ist es mir 
derzeit nicht möglich. Weil ich dann an anderen Stellen wieder zu viel 
Strom verbrauche wenn ich sie nicht getaktet sondern ständig aktiv halte

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll das ein Stromspiegel oder eine variable Konstantstromquelle werden?
Dein Text lässt eher letzteres vermuten.

Eine Konstantstromquelle benötigt üblicherweise eine Referenzspannung,
die in deinem Fall einstellbar sein muss. Das geht entweder mit einem
gewöhnlichen DAC oder auch mit einem Digitalpotentiometer, das als
Spannungsteiler geschaltet ist.

Beachte, dass bei einem Spannungsteiler für die Genauigkeit nicht der
Gesamtwiderstand, sondern die Linearität maßgeblich ist, und die ist
beim DS2890 mehr als ausreichend. Der Gesamtwiderstand sollte lediglich
klein genug sein, dass die eingestellte Spannung auf Grund der Belastung
durch die nachfolgende Schaltung nicht zu sehr verfälscht wird.

Was die 2 Pins betrifft: Die reichen für einmal I²C, einmal SPI oder
zweimal 1-Wire. Damit bist du doch in der Wahl der Schnittstelle frei,
oder verstehe ich da etwas falsch?

Autor: Thomas Grafe (thomas-g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stimmt, variabel Konstantstromquelle triffts eher und so soll es auch 
gedacht sein.

Genau um diese Referenzspannung einzustellen benötige ich das 
Digitalpotentiometer. Nun ist es aber so dass ich eine Software habe die 
nicht noch eine Regelung durchführen kann. Das Problem an der großen 
Widerstnadstoleranz ist, dass ich in der Software gewisse Werte 
einprogrammiere, die dann in gewissen definiteren Strömen der 
Konstantstromquelle resultieren sollen. Wenn ich nun ein Poti wie das 
DS2890 habe, was 25% Toleranz hat so hab ich im schlimmsten Fall das 
Szenario, dass ich eine Software mit Werten schreibe die die gewünschten 
Ströme erzeugt und das mit einem Poti mit +25% und wenn ich dann in 
größeren Stückzahlen Potis mit 2% Abweichung oder gar -25% habe müsste 
ich jedesmal die Software umprogrammieren, das soll aber nicht 
geschehen.

Ich dachte immer bei I²C und SPI benötigt man Takt, Daten und Enable 
oder CS, was dann 3 PINs wären, oder irre ich mich da?

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Thomas Grafe:

Damit es vielleicht etwas klarer wird, was ich oben gemeint habe:

Wenn du ein mechanisches Poti als Spannungsteiler, bspw. zwischen 5V und
GND, schaltest, und du stellst es auf die 50%-Position, bekommst du am
Abgriff 2,5V. Diese Spannung ist unabhängig davon, ob das Poti einen
Gesamtwiderstand von 10k, 7,5k (-25%) oder 12,5k (+25%) hat. Wichtig ist
nur, dass die an den Bahnenden angelegte Spannung (also die 5V)
ausreichend genau und die Linearität des Potis gut genug ist.

Beim digital einstellbaren Poti ist das nicht anders. Allerdings ist zu
beachten, dass es den DS2890 in zwei Gehäusevarianten gibt, nämlich
dreipolig und sechspolig.

Bei der sechspoligen Variante sind alle benötigten Anschlüsse,
insbesondere RH, WIPER und RL herausgeführt. Schließt du RH an 5V und RL
an GND, kannst du an WIPER die gewünschte Spannung abgreifen. Diese ist
vom Fehler des Gesamtwiderstands zwischen RH und RL unabhängig.

Bei der dreipoligen Variante sind WIPER und RL intern beide auf GND
gelegt. Damit kann man sie nicht als Spannungsteiler, sondern nur als
einfachen, variablen Widerstand schalten. Um eine variable Spannung zu
erzeugen, müsstest du einen Spannungsteiler aus dem Poti und einem
externen Festwiderstand aufbauen. Genau dann stellt sich das von dir
beschriebene Problem, weil sich die große Toleranz des Potis auf das
Verhältnis zum externen Widerstand und damit die Ausgangsspannung
niederschlägt.

Du wolltest aber ja ein DS2890P (mit dem Suffix 'P') nehmen, also die
sechspolige Variante, damit hast du dieses Problem nicht.

Besser geeignet für diesen Zweck wäre aber trotzdem ein DAC, da dieser
im Vergleich zum Poti einen niedrigeren Ausgangswiderstand hat, so dass
die Spannung weniger von der Belastung durch den Rest der Schaltung
abhängt.

> Ich dachte immer bei I²C und SPI benötigt man Takt, Daten und Enable
> oder CS, was dann 3 PINs wären, oder irre ich mich da?

Das ist schon richtig. Bei den meisten I²C- und SPI-Bauteilen kann man
aber den Enable-Eingang statisch auf GND legen, so dass sie immer aktiv
sind. Für die Kommunikation braucht man dann nur noch Takt und Daten,
also 2 I/O-Pins am Controller.

Autor: Thomas Grafe (thomas-g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo yalu,

auf die Idee mit dem DS2890P als Spannungsteiler aus sich selbst heraus 
habe ich nicht gehabt... Danke dafür, das klingt plausibel und machbar.
Das muss ich dann demnächst mal ausprobieren. Das Ganze über einen DAC 
zu machen geht an sich auch, die Kommunikation wäre ja identisch wie bei 
den I²C oder SPI Komponenten...

Danke für den Hinweis und deine Antwort!

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Stromspiegel
> aber bei einer Toleranz von max 5%.

Ein Stromspiegel hat doch sowieso eine grössere Toleranz als 5%, dein 
Ansatz ist also soweiso zum Scheitern verurteilt.

Wie wäre es, du gibt per D/A-Wandler eine Spannung vor, und setzt diese 
per OpAmp in einen Strom um ?

> da ich mehrere undabhängige MOSFETs als Schalter für verschieden lange
> Zeiten damit aktiv halten und LEDs einzeln schalten muss ist es mir
> derzeit nicht möglich.

Klingt doch mal wieder wie Schwachsinn.

Wie wäre es mit TLC5940 oder TLC5628 und 8 OpAmps ?

Dann reichen auch die Anschlüssen wieder.

Autor: Seppl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem Enable statisch auf GND ist in Prinzip richtig. (Radio 
Eriwan)
Schau bitte noch mal ins Datenblatt, manche Bausteine übernehmen die 
ankommenden Daten (über Takt und Data) in einen Buffer, der erst nachdem
der Enable wieder inaktiv ist.
Hatte da schon mal Probleme gehabt........
Also Datenblatt genau lesen.

Gruß

Seppl

Autor: Thomas Grafe (thomas-g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
>> Stromspiegel
>> aber bei einer Toleranz von max 5%.
>
> Ein Stromspiegel hat doch sowieso eine grössere Toleranz als 5%, dein
> Ansatz ist also soweiso zum Scheitern verurteilt.
>

Nicht der Stromspiegel sondern das Poti sollte die 5% haben... das hab 
ich aber im ersten Post auch so geschrieben. und ob ich 300mA oder 315mA 
Strom bekomme ist mir auch egal.

> Wie wäre es, du gibt per D/A-Wandler eine Spannung vor, und setzt diese
> per OpAmp in einen Strom um ?
>

Du meinst per DAC also die Referenzspannung erzeugen? prinzipiell keine 
schlechte Idee, würde auch gehen.

>> da ich mehrere undabhängige MOSFETs als Schalter für verschieden lange
>> Zeiten damit aktiv halten und LEDs einzeln schalten muss ist es mir
>> derzeit nicht möglich.
>
> Klingt doch mal wieder wie Schwachsinn.
>
> Wie wäre es mit TLC5940 oder TLC5628 und 8 OpAmps ?
>
> Dann reichen auch die Anschlüssen wieder.

is kein Schwachsinn... da ich die LEDs mit Strömen zwischen 300 und 
800mA für kurze Zeit (30µs) betreiben muss. Daher kommen keine 
LED-Treiber in Frage, das habe ich im Vorfeld schon überprüft.


@Seppl:

danke für den hinweis, ich werds mir ganz genau anschauen!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.