Forum: Mikrocontroller und Digitale Elektronik [STM32] Peltier-Element mit Stepper-Driver ansteuern


von Rasmus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich soll für ein Praktikum an der Uni versuchen, ein Peltier-Element mit 
einem Stepper-Treiber mittels PWM-Signal anzusteuern. Zur Verfügung habe 
ich ein STM32F401RE Controller mit dem Treiber-Board X-NUCLEO-IHM03A1 
als shield. Das Peltierlement soll heizen und kühlen, dafür soll es 
zwischen den Ausgängen A- und A+ am X-NUCLEO-IHM03A1
angeschlossen werden.

Mein momentaner Ansatz lautet wie folgt:
1) 1 step bewegen
2) Ausschalten der H-Brücken (damit am Ausgang A+ kein High-Signal 
anliegt wenn am Ausgang A- Low anliegt)
3) Pause, je nachdem welcher Duty-Cycle erwünscht ist
4) Repeat

Im Code (Schleife ignorieren, ist nur zum testen):
1
 int i=1;
2
while(i <= 10000) {
3
4
  BSP_MotorControl_Move(0, FORWARD, 1);
5
6
  /* Wait for the motor of device 0 ends moving */
7
  BSP_MotorControl_WaitWhileActive(0);
8
9
  BSP_MotorControl_CmdHardHiZ(0);
10
11
  HAL_Delay(600);
12
13
  i++;
14
}

So weit so schlecht. Leider tut der Treiber das was er machen soll und 
wechselt nach 2 Steps artig mit dem High-Signal von Ausgang A- auf A+ 
und danach vice versa, sprich die erwünschte Wirkung wird nach 2 Steps 
immer umgekehrt. Das macht auch Sinn, nach meinem Verständnis sind die 
Ausgangssignale an den 4 Ausgängen (A/B- und A/B+) jeweils überlappend 
um 90° Phasenverschoben (also Step 1+2 =  A- high; Step 2+3 = B- high; 
Step 3+4 = A+ high, Step 4+1 = B+ high).

Fällt einem von Euch vielleicht eine Möglichkeit ein den Treiber da 
auszutricksen, also dass er immer wieder die Pulse am Ausgang A- beginnt 
und nicht "durchzählt"? Ein ResetPosition-Command in der Schleife hat 
leider nicht geholfen.

Screenshot vom Signal hänge ich an (rote Kurve A+, blaue A-), das 
DataSheet für den powerStep01-Chip gibt es hier ganzen oben (Product 
Specifications): 
https://www.st.com/en/motor-drivers/powerstep01.html#documentation

Freue mich über jeden input. Vielleicht gibt es keine Lösung, aber ich 
dachte ich frage lieber hier nochmal nach bevor ich die Flinte ins Korn 
werfe.

Viele Grüße
Rasmus

: Verschoben durch Moderator
von Kevin M. (arduinolover)


Lesenswert?

Wie wäre es mit einem für die Aufgabe geeigneten Bauteil? Eine normaler 
DC Motor Treiber z.B. dem kann man das gewünschte PWM direkt geben und 
muss nicht mit den Steps knaupen. Gibt es auch als Shield.

An der Stelle wie schon so oft in dem Forum angemerkt. Peltier Elemente 
sind konstantstrom getriebene Bauteile. Da sie im Gegensatz zu einem 
Motor keine Induktivität haben produziert eine H-Brücke alleine keinen 
konstanten Strom, dadurch sinkt sie Effizienz der Elemente recht stark.

von Helmut W. (Gast)


Lesenswert?

Wenn er es für ein Praktikum wissen muss, ist es wahrscheinlich Teil der 
Vorgabe, das Teil zu benutzen und wahrscheinlich weiß er auch, dass ein 
DC-Treiber den Zweck weitaus besser erfüllen würde.
Ich stimme Kevin allerdings zu. Meiner Meinung nach geht das nicht und 
sprengt den Rahmen eines Praktikums, falls es doch ginge. Wäre aber 
selbst interessiert ob es hierfür eine Lösung gibt.

von Kevin M. (arduinolover)


Lesenswert?

Helmut W. schrieb:
> Wenn er es für ein Praktikum wissen muss, ist es wahrscheinlich Teil der
> Vorgabe, das Teil zu benutzen und wahrscheinlich weiß er auch, dass ein
> DC-Treiber den Zweck weitaus besser erfüllen würde.

Das ist mir auch klar, in dem Fall stell ich mal die Aufgabenstellung 
seitens des Lehrstuhls in Frage. Ziel sollte doch eine 
Lösungsorientierte Arbeit sein, die auch sinnvoll ist.

Mal abwarten was der TO so meint, vielleicht hat ja auch jemand lust 
sich eine Lösung zu überlegen :D

von -gb- (Gast)


Lesenswert?

Rasmus schrieb:
> heizen und kühlen

Daher wohl die Umkehrung der Stromrichtung. Ist lösbar, auch mit der PWM 
für wenig heizen oder wenig kühlen.

von Horst (Gast)


Lesenswert?

Ist es tatsächlich noch irgendwo Lehrmeinung, daß Peltier und PWM 
irgendwie vernünftig funktionieren könnte?

von Alex F. (test432)


Lesenswert?

Hallo,

Ich sehe da drei mögliche Lösungen:

1. Anstatt den Teiber "auszutrichsen" dass er immer wieder bei A- 
beginnt, kann man ihn auch einfach eine ganze Sequenz sehr schnell 
durchschalten lassen, bis er wieder bei A- ankommt. Das ganze PWM kann 
ja im Verhältnis dazu relativ langsam verlaufen (Das Peltier ist 
thermisch ja recht träge). Da fallen die paar µs mit "falscher" 
Polarität nicht ins Gewicht.

2. Das Microstepping von Controller "Missbrauchen": Wenn man zu dem 
Peltier in Serie eine Spule hängt, hat man faktisch einen Schaltwandler 
gebaut, der Spannnungen zwischen +Vcc/-Vcc erzeugen kann. Dann braucht 
man auch kein PWM mehr "on top" da man (mit gewissen Einschränkungen 
durch die Schrittauflösung) beliebige Spannungen einstellen kann.

3. Noch mal mit dem Prof sprechen. Wie andere schon gesagt haben, Ist 
ein Schrittmotor-Conroller für so was denkbar ungeeignet.

VG

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Horst schrieb:
> Ist es tatsächlich noch irgendwo Lehrmeinung, daß Peltier und PWM
> irgendwie vernünftig funktionieren könnte?

Warum nicht. Z.B. 1 min an und 30sek aus ist immer noch PWM wenn man die 
Pulzbreite auch variieren kann.

von Robert M. (r_mu)


Lesenswert?

Möglicherweise ist gedacht, den POWERSTEP01 auf Mikroschritt-Betrieb zu 
konfigurieren. Die PWM stellt man dann über den Mikroschritt ein, das 
Puls/Pausenverhältnis sollte sich dabei ähnlich eines Sinus verändern. 
Insgesamt würde man sich dann nur innerhalb von 2 Vollschritten bewegen.

von Robert M. (r_mu)


Lesenswert?

Alex F. schrieb:
> 2. Das Microstepping von Controller "Missbrauchen": Wenn man zu dem
> Peltier in Serie eine Spule hängt, hat man faktisch einen Schaltwandler
> gebaut, der Spannnungen zwischen +Vcc/-Vcc erzeugen kann. Dann braucht
> man auch kein PWM mehr "on top" da man (mit gewissen Einschränkungen
> durch die Schrittauflösung) beliebige Spannungen einstellen kann.

Der Mikroschritt-Generator wär ja genau die PWM, Spule sollts da keine 
brauchen.

von Guest (Gast)


Lesenswert?

Robert M. schrieb:
> Der Mikroschritt-Generator wär ja genau die PWM, Spule sollts da keine
> brauchen.

Was passiert denn beim PWM egal mit welcher frequnez? Es ist an und dann 
aus, also fließt Strom und dann keiner mehr. Sobald der Strom aus ist 
fließt die Wärme von der heißen Seite zurück und erwärmt die kalte Seite 
nochmal. Dadurch sinkt die Effizienz und das Element wird nicht so kalt 
wie es sein könnte.

Natürlich geht das ohne Induktivität und mit lückendem Strom, aber eben 
zulasten der erreichbaren temperatur. Und wie einige andere hier auch 
sollte der Anspruch einer Universität sein anständige Lösungen zu 
entwickeln.

von Rasmus (Gast)


Lesenswert?

Erstmal danke für die vielen Vorschläge und sorry für die verspätete 
Rückmeldung.

Ein Update: Man kann den Treiber "austricksen", indem man den StepMode 
ändert. Das setzt die elektrische Position des Treibers zurück, der 
ResetPos-Command hat hingegen nur das mitzählende Register wieder auf 0 
Null gesetzt. Gerade versetze ich den Treiber also nach jedem Step in 
HalfStep-Mode und danach direkt wieder in Fullstep-Mode und bekomme 
dadurch tatsächlich eine saubere PWM.
Allerdings ergibt sich aus dieser "Lösung" direkt das nächste Problem: 
Vorwärts und Rückwärts verliert seine Bedeutung wenn die Position immer 
wieder auf 0 gesetzt wird. Es ist also egal in welche Richtung ich ihn 
laufen lassen, ich kann nur heizen (oder eben nur kühlen). Dafür fällt 
mir noch kein Fix ein.

Das hin- und herschalten (ob jetzt mit Mikrostepping oder Full-Step) ist 
halt super ineffizient, selbst wenn man bei richtig gewähltem Duty-Cycle 
"effektiv" heizt/kühlt. Meine Betreuer meinte außerdem das killt das 
Peltierelement, da soll wohl eine heiz/kühl Periode mindestens eine 
Minute dauern oder so. Aber da muss ich nochmal drüber nachdenken, 
vielleicht ist Mikrostepping doch der bessere Ansatz.

Um meine Betreuer hier mal in Schutz zu nehmen: Ich denke die Aufgabe 
ist es, halt mal zu schauen wie weit man kommt und etwas Neues 
auszuprobieren. Die Möglichkeit das es nicht klappt ist einkalkuliert.

von Kevin M. (arduinolover)


Lesenswert?

Rasmus schrieb:
> Um meine Betreuer hier mal in Schutz zu nehmen: Ich denke die Aufgabe
> ist es, halt mal zu schauen wie weit man kommt und etwas Neues
> auszuprobieren. Die Möglichkeit das es nicht klappt ist einkalkuliert.

Das ist ja nett, aber nicht zielführend. Wie du selbst merkst, ist der 
Treiber einfach ungeeignet und mir persönlich erschließt sich der 
pädagogische nutzen nicht. Die Ansteuerung dieser Elemente ist jetzt 
nichts neues, wenn man schon ein shield benutzt, kann man doch auch 
einfach ein passenderes nehmen.

Rasmus schrieb:
> Meine Betreuer meinte außerdem das killt das
> Peltierelement,

Die Ansteuerung mit PWM ohne Stromglättung tut das auch.

von Helge (Gast)


Lesenswert?

Microstepping schaltet ja auch nur zwischen den Potentialen. Hat das 
Pelztier jetzt eine nennenswerte Temperaturdifferenz aufgebaut, geht 
diese Potentialdifferenz beim Microstepping direkt in den Motortreiber 
zurück. Da ist wenigstens eine Induktivität sinnvoll. Das ist besser für 
treiber und Peltier.

von Michael B. (laberkopp)


Lesenswert?

Rasmus schrieb:
> Fällt einem von Euch vielleicht eine Möglichkeit ein den Treiber da
> auszutricksen, also dass er immer wieder die Pulse am Ausgang A- beginnt
> und nicht "durchzählt"?

Ein Schrittmototreiberr bestromt immer die eine Spule 50% der Zeit (und 
die andere um 25% zeitversetzt ebenfalls 50%).

ABER: Die Zeit kann man beeinflussen: In dem die Schrittimpulse nicht 
mit der immer gleichen Frequenz kommen, sondern je nach gewünschtem 
duty-cycle mal mehr Pause und mal weniger Pause haben.

Bei Vollschritt erst mal Schriotte mit 50us, dann Impulse mit 25us 
ergibt erst einen langes high und dann ein kurzes low:
1
Step __-_____-_____-__-__-___
2
Aout ___------------______---
Bei höher eingestelltem Vorteiler müssen eben mehr Impulse kommen bevo 
Aout umschaltet.

Deinen BSP-MotorControl kannst du also völlig vergessen.

ABER: Peltiers mögen kein PWM. Es muss eine grosse Spule in Reihe mit 
dem Peltier-Elemente geschaltet werden um den Strom zu glätten. Die 
Induktivität der Spule sollte so hoch sein, daß sich bei der PWM 
Frequenz der Strom nur so um 5% ändert. Je schneller man den 
Schrittmotortreiber taktet, um so kleiner und billiger kann also die 
Spule sein.

von Kevin M. (arduinolover)


Lesenswert?

Michael B. schrieb:
> ABER: Peltiers mögen kein PWM. Es muss eine grosse Spule in Reihe mit
> dem Peltier-Elemente geschaltet werden um den Strom zu glätten. Die
> Induktivität der Spule sollte so hoch sein, daß sich bei der PWM
> Frequenz der Strom nur so um 5% ändert. Je schneller man den
> Schrittmotortreiber taktet, um so kleiner und billiger kann also die
> Spule sein.

Ich bin ja für GaN da kann man die Spule richtig klein machen :D

von Georg (Gast)


Lesenswert?

Michael B. schrieb:
> Peltiers mögen kein PWM. Es muss eine grosse Spule in Reihe mit
> dem Peltier-Elemente geschaltet werden um den Strom zu glätten

Das wäre auch meine Kritik an der Aufgabenstellung sowieso gewesen: 
Schrittmotortreiber sind für induktive Lasten gemacht, eben für die 
Motorwicklungen, i.A. arbeiten sie im Chopperbetrieb zur Erzielung 
konstanten Stroms, und Peltiers haben so garnichts induktives an sich.

Aber über abwegige Aufgabenstellungen wundere ich mich schon lange nicht 
mehr.

Georg

von W.S. (Gast)


Lesenswert?

Rasmus schrieb:
> Um meine Betreuer hier mal in Schutz zu nehmen: Ich denke die Aufgabe
> ist es, halt mal zu schauen wie weit man kommt und etwas Neues
> auszuprobieren. Die Möglichkeit das es nicht klappt ist einkalkuliert.

Für jemanden, der nicht nur gedankenlos pröbelt, ist das vorherige 
Denken angesagt - gilt auch für deinen Betreuer. Sinnlos Peltierelemente 
kaputt zu machen, sehe ich nicht als zielführend an.

Also, mal ganz einfach zum Peltierelement: das kann sowohl heizen als 
auch kühlen, wobei zu beachten ist, daß die Verlustwärme mit zunehmender 
Temperaturdifferenz auch größer wird, bis sie so etwa bei 65..70 Kelvin 
an Differenz die maximal dem Peltier zumutbare Leistung erreicht.
Soweit so gut (wie es grad geht).
Aber der Stromfluß durch's Peltierelement sollte kein allzu hohes dI/dt 
aufweisen. Das verbietet sich - es sei denn, man legt auf die 
Lebensdauer keinerlei Wert. Ich sag mal nen Pi mal Fensterkreuz Wert: 
nicht mehr als so etwa 10A/s, was jegliches PWM aus der Betrachtung 
herausfallen läßt.

Wahrscheinlich geht es bei deinem Versuchsaufbau um den Versuch, ohne 
Umschalten ein Peltierelement für Kühlen und Heizen mit möglichst wenig 
Schaltung zu benutzen - und du sollst herausbekommen, wie man da 
hinkriegt.

W.S.

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.