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
inti=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
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.