Forum: Mikrocontroller und Digitale Elektronik Problem mit Digitalen Potentiometer


von Hoonse S. (hoonse)


Lesenswert?

Hallo Freunde

Mein Name ist Hoonse und ich bin der Neue hier =)

Mein Problem:

Ich habe eine Schaltung mit der ich über ein Mechanisches Potentiometer 
die Drehzahl eines DrehstromMotors steuern kann. (über einen 
Frequenzumformer)

Das ganze würde ich jetzt gerne fernsteuern können und habe mir dazu 
eine kleine "Schaltung" mit einem ArduinoBoard und einem digitalen 
Potentiometer aufgebaut.

(eigentlich habe ich schon 3 verschieden digitale Potentiometer 
ausprobiert aber leider ohne erfolg: intersil X9318, Dallas DS 1669, und 
Xicor X9C103)

Ich glaube mein Problem gefunden zu haben:

Über den Arduino werden die digitalen Potentiometer mit +5V versorgt.

Die SteuerSpannung des Frequenzumformers beträgt aber +10V (4mA).

Ich bin quasi noch ein Anfänger im Bereich Elektronik und nach langen 
Nächten des Datenblätter lesens bin ich einfach zu keiner Lösung 
gekommen...

Vielleicht könnte mir jemand einen Wink mit dem Zaunpfahl geben:
Ich brauche einen Bausteiner gerne IC DIP der sich mit  +5V ansteuern 
lässt und +10V steuern kann. Am liebsten mit INCrement, DECrement 
Ansteuerung

Bin auch für andere Lösungsvorschläge offen... =)

Hier noch mein Code wie ich die potentiometer von intersil und Xicor 
angesteuert habe die aber total sinnlose werte geliefert haben:

DigitalPotentiometer Library:
1
void DigitalPotentiometer::startupSequence(int incrementpin, int updownpin)
2
 {
3
 inc = incrementpin;
4
 updown = updownpin;
5
 
6
 updownstate = false;
7
 
8
 pinMode(updown, OUTPUT);
9
 pinMode(inc, OUTPUT);
10
 digitalWrite(updown, HIGH);
11
 
12
 i = 0;
13
 
14
 setToZero();
15
 }
16
 
17
 void DigitalPotentiometer::setToZero()
18
 {
19
 digitalWrite(updown, LOW);
20
 for(i = 0; i <= 99; i++)
21
 {  
22
 digitalWrite(inc, LOW);
23
 delay(1);
24
 digitalWrite(inc, HIGH);
25
 delay(1);
26
 }
27
 currentposition = 0; 
28
 }
29
 
30
 boolean DigitalPotentiometer::setCurrentPosition(int position)
31
 {
32
 
33
 if(currentposition == position || position > 99 || position < 0) return(false);
34
 
35
 else if(currentposition > position) 
36
 {
37
 digitalWrite(updown, LOW);
38
 updownstate = false;
39
 }
40
 else if(currentposition < position) 
41
 {
42
 digitalWrite(updown, HIGH);
43
 updownstate = true;
44
 }
45
 
46
 if(updownstate)
47
 {
48
 for(; currentposition < position; currentposition++)
49
 {
50
 digitalWrite(inc, LOW); 
51
 delay(1);
52
 digitalWrite(inc, HIGH);
53
 delay(1);
54
 }
55
 
56
 return(true);
57
 }
58
 
59
 else
60
 {
61
 for(; currentposition > position; currentposition--)
62
 {
63
 digitalWrite(inc, LOW);  
64
 delay(1);
65
 digitalWrite(inc, HIGH);
66
 delay(1);
67
 }
68
 
69
 return(true);
70
 } 
71
 }
72
 
73
 int DigitalPotentiometer::getCurrentPosition()
74
 {
75
 return(currentposition);
76
 }


Arduino Test Programm:
1
 for(i = 0; i != 98; i++)
2
  {
3
    geschw.setCurrentPosition(i);
4
    Serial.println(geschw.getCurrentPosition());
5
    delay(500);
6
  }


Vielen Dank für eure Hilfe

Grüße aus Österreich
Hoonse

von me (Gast)


Lesenswert?


von Hoonse S. (hoonse)


Lesenswert?

Sorry ich verstehe den Link nicht ganz...

Mir ist aber noch eine Idee gekommen:

Der Frequenzumformer (SPS) erwartet doch eigentlich nur eine analoge 
Spannung zwischen 0 und 10V ?!?

Könnte man das nicht eigentlich auch mit PWM lösen?!?

Ich bräuchte soetwas wie ein "Relai" mit dem ich die 10V SteuerSpannung 
der SPS
über das Arduinoboard schnell genug ein und aus schalten könnte dann 
müsste das doch funktionieren oder?


Bitte entschuldigt meine "Einfälltigkeit" ich mache das ganze 
Elektrotechnik Ding nur HobbyMäßig (eigentlich bin ich 
MaschinenBauer)...

Ich wünsche euch ein schönes WochenEnde

Grüße aus (dem verregneten) Österreich
Hoonse

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


Lesenswert?

> Ich glaube mein Problem gefunden zu haben:
> Über den Arduino werden die digitalen Potentiometer mit +5V versorgt.
> Die SteuerSpannung des Frequenzumformers beträgt aber +10V (4mA).
Richtig: digitale Potentiometer können üblicherweise nur zwischen 0V und 
der Versorgungsspannung des Potis arbeiten...

> Bin auch für andere Lösungsvorschläge offen... =)
Gib über einen ADC (oder eine entsprechende PWM) 0..5V aus und mach mit 
einem OpAmp dann über eine Verstärkung von 2 eine Spannung von 0..10V 
draus. Fertig ist die Laube.

von Otto (Gast)


Lesenswert?

Ein Frequenzumformer ist keine SPS !

Die meißten FU (Frequenzumrichter) haben aber Steuereingänge, welche man 
mit Tastern beschalten kann um einen Drehzahlsollwert vorzugeben.

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


Lesenswert?

> Die meißten FU (Frequenzumrichter) haben aber Steuereingänge, welche man
> mit Tastern beschalten kann um einen Drehzahlsollwert vorzugeben.
Blöderweise weiß man dann aber nicht, was man gerade "eingetastet" 
hat... :-o

von Otto (Gast)


Lesenswert?

Wie meinst Du das denn jetzt ?

Die Eingänge erhöhen und verringern den Drehzahlsollwert.

Der erreichte Wert bleibt gespeichert.

von Hoonse S. (hoonse)


Lesenswert?

Vielen Vielen dank für eure schnellen antworten


> Gib über einen ADC (oder eine entsprechende PWM) 0..5V aus und mach mit
> einem OpAmp dann über eine Verstärkung von 2 eine Spannung von 0..10V
> draus. Fertig ist die Laube.

Wie gesagt ich bin (noch) nicht so versiert im Thema Elektrotechnik...
Es wäre nett wenn du mir sagen könntest was ADC und OpAmp heißt. =)

Ich sollte vielleicht noch dazusagen das der Frewuenzumformer und meine 
"Steuerung"(Arduino) nicht den selben Stromkreis haben (2 verschiede 
GNDs)
(Weil ich den Arduino und den ganzen Rest der da dran hängt über eine 
Batterie betreibe und der Frequenzumformer über einen Generator läuft)

Sorry das hätte ich euch vielleicht schon vorher sagen sollen.

Aber trotzdem vielen Dank das ihr euch die Mühe macht und mir hier am 
Wochenende helft.

Grüße aus Österreich
Hoonse

von Otto (Gast)


Lesenswert?

Der Sollwert von Deinem Board muß natürlich über 2 Leitungen an den FU 
geführt werden - also Sollwert und GND - mit 5V erreichst Du immer noch 
50% der max. Drehtahl.

von Hoonse S. (hoonse)


Lesenswert?

@Otto

Ich verstehe was du meinst.

Das ist in meinem Fall etwas schwierig weil das was ich fernsteuern muss 
ist ein "Fahrzeug" in der Landwirtschaft welches eben mit einem 
Generator betrieben wird und der einzige Strom den ich irgendwo 
abzweigen kann ist eben die Starterbatterie von diesem Generator... (Die 
SteuerSpannung vom FU liefert nur 4mA und ich brauche mit Funk und GPS 
aber ca 1A...)

Ich bräuchte eben ein Bauteil welches mit einer Steuerspannung von 5V 
(Arduino) die 10V vom Frequenzumformer steuern kann.

Ich wollte auch schon einfach 2 Servos an 2 Mechanische Potentiometer 
flanschen und so arbeiten aber meine Potentiometer haben einen weg von 
ca 270° und ein Servo halt nur von 180°... Aber das ist auch eine sehr 
unelegante Lösung da die Servos viel Platz verbrauchen und eine sehr 
lange Zeit brauchen bis sie den bestimmten wert angefahren sind...



Grüße aus Österreich
Hoonse

von Otto (Gast)


Lesenswert?

Sollwert ist der Wert, der an den Drehzahleingang des FU geführt wird !

Der FU liefert meißt eine Hilfsspannung von 10V und ein paar mA (in 
Deinem Fall 4), um ein Poti zu versorgen - das Du hiermit Dein 
Arduino-Board nicht speisen kannst, versteht sich von alleine !

Du klemmst also einmal GND des Arduino-Boards an den FU an und einmal 
den Drehzahlsollwert.

Um von den 5V Deines Digitalpoti auf 10V zu kommen, benötigst Du einen 
Rail-to-Rail Operationsverstärker mit einer Verstärkung von 2, welcher 
mit mindestens 10V versorgt werden muß.

Zum Testen reichen aber auch die 5V, die Du max. herausbekommst - der 
Motor läuft dann mit 50% der Drehzahl.

Evtl. kannst Du aber am FU einstellen, dass 5V Eingang = 100% Drehzahl 
bedeutet.

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


Lesenswert?

Otto schrieb:
>> Wie meinst Du das denn jetzt ?
>> Die Eingänge erhöhen und verringern den Drehzahlsollwert.
>> Der erreichte Wert bleibt gespeichert.
Und wenn das nächste Mal der uC neu gestartet wird, woher weiß er dann, 
welcher Wert im FU gespeichert ist?
Logisch: der uC muß den Wert selber auch noch speichern.

Nur: was passiert, wenn die Dinger aus welchem Grund auch immmer nicht 
mehr den selben Wert haben (z.B. wegen EMV, Power-Fail, korrupte Daten 
in einem der beiden Speicher)?

Dieses Step-Up + Step-Down Interface ist idR. die übelste Lösung.


> Evtl. kannst Du aber am FU einstellen, dass 5V Eingang = 100% Drehzahl
> bedeutet.
Oder dass 10V = 200% der gewünschten Drehzahl sind. Dann hast du bei 5V 
eine Drehzahl von 100%. Alles nur eine Sache der Skalierung... ;-)

von Hoone (Gast)


Lesenswert?

Du meinst also ich schließe +5V und GND an Poti high und low an und 
verstärke einfach die spannung die bei poti Wiper herauskommt?

Wenn ja:
Könntest du mir bitte eine bezeichnung geben? Ich weiß das ist sehr 
unverschämt von mir aber ich würde wirklich nur ungerne wieder ICs 
bestellen die dann nicht passen...

 Ich bedanke mich nocheinmal für die schnelle hilfe.
Alleine wäre ich nie aus diese lösung gekommen.

Wenn ich dir mal bei was maschinenbau technischen helfen kann stehe ich 
immer zur verfügung =)

Grüße Hoonse

von Otto (Gast)


Lesenswert?

@hoone,

bitte prüfe doch zuerst, ob Du die Wichtung des Sollwerteinganges 
verändern kannst - das wäre noch einfacher als die (einfache) 
OPV-Schaltung.

Das Signal "Wiper" kommt auf den Eingang des Operationsverstärkers und 
der Ausgang auf den Drehzahlsollwerteingang des FU. Ausserdem muß die 
Masse angeschlossen werden. Gut wäre, dafür einen abgeschirmte Leitung 
zu verwenden.

Verwendbar wäre der LM321 (SMD) - dieser ist aber kein "Rail-to-Rail" 
(bedeutet, Du kommst nicht ganz auf 0V runter) aber bei 12V Speisung 
sollte 10V Ausgang kein Problem darstellen.

http://www.national.com/profile/snip.cgi/openDS=LM321

Datenblatt siehe:

http://www.national.com/ds/LM/LM321.pdf

Schaltung Seite 5 - ACHTUNG - die Verstärkung über die Widerstände 
einstellen und nicht vergessen, die Versorgungsspannung anzuschliessen !

von Otto (Gast)


Lesenswert?

Nachtrag:

das Teil ist natürlich relativ klein - ohne einen vernünftigen Lötkolben 
geht das nicht - aber ähnliches gilt auch für die "normalen" 
DIL-Varianten , wenn Du so etwas noch nie gelötet hast.

Evtl. solltest Du jemanden im Bekanntenkreis suchen, der dies schon 
öfter praktiziert hat.

von Hoonse (Gast)


Lesenswert?

Gibt es denn nicht einfach ein digitales poti mit 10kOhm wo die einfach 
die 2 stromkreise (stromkreis mit dem ich das poti ansteuere und 
stromkreis der gesteuert wird) getrennt sind?

Das wäre das einfachste...

Gruß Hoonse

von Otto (Gast)


Lesenswert?

Mir ist keines bekannt

von Hoonse S. (hoonse)


Lesenswert?

Ich weiß nicht ob du schonmal was vom Mikrokopter Projekt gehört hast 
(www.mikrokopter.de) da hab ich mir die ganzen Platinen zusammengelötet. 
war alles SMD
=) Lieber wäre mir ja etwas was ich auf ein Breadboard stecken kann für 
die ersten Tests...

Ich kann schon Löten wenn ich einen Schaltplan habe und noch einige hoch 
aufgelöste Fotos... Ich kenn mich halt nur nicht so mit Elektronik aus 
das ist mein Manko...

Grüße Hoonse

von Benni L. (sutter_cain)


Lesenswert?

Ein paar Beispiele findest du ab Kapitel 4.2 im Datenblatt von Microchip 
digitalen Potentiometer:
http://www.reichelt.de/?;ACTION=7;LA=28;OPEN=0;INDEX=0;FILENAME=A200%252FMCP42010_MIC.pdf

Ich hoffe das hilft dir auf die richtige Idee zu kommen.

von Otto (Gast)


Lesenswert?

Kannst ja auch den LM324 nehmen, welcher 4 gleiche OP enthält.

Diesen gibt es noch in DIL:

http://www.national.com/ds/LM/LM124.pdf

von Hoonse S. (hoonse)


Lesenswert?

So danke Leute.
Ich werde eure Ideen übers Wochenende mal Testen und sehen ob es was 
bringt =)

Vielen Vielen Dank für eure schnelle und kompetente Hilfe...

Ich halte euch auf dem Laufenden

Schönes Wochenende
Hoonse

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.