Hallo!
@ Cysign
Für mich am einfachsten wäre sowas änliches, wie im Beispiel: http://www.ebay.de/itm/THERMOSCHALTE...item4ac2d0a8f4 . Das würde ich isoliert an der heißester Stelle des Motors befestigen.
Hallo!
@ Cysign
Für mich am einfachsten wäre sowas änliches, wie im Beispiel: http://www.ebay.de/itm/THERMOSCHALTE...item4ac2d0a8f4 . Das würde ich isoliert an der heißester Stelle des Motors befestigen.
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Ich würd mal sagen: einfache Strommessung über Shunt-Widerstand (zb. 0,5 Ohm oder so) und wenn der Strom zu hoch wird per PWM die Motorspannung absenken. Das wäre dann eine einfache Stromregelung, um den maximalen Strom zu begrenzen. So könnte man den Motor auch mit noch höheren Spannungen betreiben. Vorteil wäre ein schön schneller Motor, der bei Blockieren nicht sofort durchbrennt. Mittels der Strommessung ließe sich sogar ein Blockieren detektieren und die Maschine könnte in eine Art Störmodus gehen. Du sagst, der Motor ist für 3V zugelassen? Dann müsste der Strom so etwa bei 3V/4Ohm=0,75A liegen, oder halt niedriger bei höherem Widerstand. Kann sein, dass du die Spannung vom Shunt noch verstärken musst oder am Controller eine geeignete niedrige Referenzspannung verwendest (0,75A*0,5Ohm wären dann ja nur 0,375V). Mit einer Referenzsspannung von 0,5V könntest du dann Messtechnisch den Bereich bis 1A gut abdecken.
AI - Artificial Idiocy
Das hilft Cysign aber nicht weiter. Er muß ihn mit höherer Spannung, also mit mehr Strom als bei 3V fließen, betreiben.
Es darf nur nicht zu lange sein, sonst überhitzt er wieEine Reduzierung der Spannung ist nicht machbar, da er dann für den gewünschten Anwendungsbereich zu schwach ist.Was man rausbekommen muß ist, wie lange hier die "3 Minuten" sind, oder wie heiß er wirklich ist.Bei vielen Küchen-Mixern sind überlastete Motoren eingebaut, weshalb da irgend wo z.B. "KB 3 Minuten" drauf steht. Nach 3 Minuten wird der Motor zu heiss und man muss ihn erst abkühlen lassen, bevor man weiter machen kann.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Mit der Strombegrenzung würde man ja auch erreichen, dass der maximale Strom, den der Motor aushält, nicht überschritten wird. Wenn häufiger der Maximalstrom überschritten wird, macht der Motor das eh nicht lange mit. Da würde wirklich nur ein größerer Motor helfen.
Gibt es denn ein Bild oder so, wo man sehen kann, wie der Motor verbaut ist?
AI - Artificial Idiocy
Hallo,
Da müsste man halt messen.
Möglichst die Temperatur der Wicklung messen.
Dann den Motor 1-2s mit einem bestimmten Strom (Last) laufen lassen und wieder die Wicklungstemperatur messen.
Alles wirklich wieder abkühlen lassen und mit einem anderen Strom messen.
Die Kurven entsprechen dann e-Funktionen, also der Ladekurve eines Kondensators.
Die erste Messung sollte man mit dem gänzlich unbelasteten Motor machen.
Die Zweite würde ich mit blockiertem Motor machen.
Weitere Kurven müssten dann dazwischen liegen.
Zur Überwachung müsste man dann den Strom über die Zeit Integrieren.
Per Software würde man dann den Strom während Laufzeitzeit z.B. jede Sekunde in einer Variablen addieren.
Diese Variable wird in der Stromlosen Zeit jede Sekunde mit einem Faktor <1 multipliziert.
Wenn die Variable einen bestimmten Wert überschreitet hat der Motor zu heiss.
Kann man natürlich noch etwas genauer und komplizierter machen, indem man über die e-Funktion rechnet.
Grundsätzlich sollte man über den aktuellen Strom gehen, da die Motorbelastung ja sehr unterschiedlich sein kann.
Mf Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Naja, wenn es ein 3V-Motörchen ist wird das Temperaturmessen schwierig.
Ich vermute mal das Ding wird nicht allzu groß sein -> wenig Masse -> geringe thermische Kapazität -> ergo wird er sich ein gutes Stück wieder abgekühlt haben bevor der Sensor ein brauchbares Ergebnis anzeigen kann (Zeit zum Auseinanderbau mit einbezogen).
Den Motor nach seiner Temperatur zu regeln wäre zwar theoretisch machbar, wird aber wahrscheinlich ziemlich aufwändig. Zum einen die Regelung selber, zum anderen wird die Temperturmessung im Betrieb ein Problem sein, dessen Lösung bei kleinen Baugrößen ebenfalls recht aufwändig sein dürfte.
Vorschlag: Bau dir eine Konstantstromquelle aus einem LM317 und schalte den davor. Dann würden zwar im Maximalfall nur noch ca. 5,7V am Motor anliegen, aber dafür kann dein Motor nicht mehr durchbrennen wenn du ihn belastest. Im Überlastfall würde er einfach stehenbleiben weil der LM317 die Spannung über dem Motor runternimmt.
Unter der Vorraussetzung, dass Wirkungsgrad und thermische Kapazität bekannt sowie die maximale Betriebszeit definitiv begrenzt sind könntest du den Motor auch definiert überlasten, dazu mußt du nur den über die Betriebszeit maximal verträglichen Dauerstrom berechnen und die LM317-Stromquelle entsprechend auslegen.
Soo doof ist die Idee mit dem Vorwiderstand gar nicht. Wenn der Motor 4 Ohm hat und du noch einen 4 Ohm Widerstand davorschaltest, fließt beim blockierten Motor nur noch der halbe Strom, was dann nur noch ein viertel der Wärmemenge ergibt. Die Leerlaufdrehzahl wird sich kaum ändern und auch die Drehzahl, bei der du den besten Wirkungsgrad hast, die ist ungefähr 80 % der Leerlaufdrehzahl. Da fließt dann nur noch ein kleiner Strom, und der Widerstand stört nicht sehr. Allerdings wird auch der Widerstand warm, du musst also einen entprechend leistungsfähigen Typen auswählen.
Da er prinzipiell bei etlichen Testläufen kein Problem mit den 7V hatte, habe ich vorhin mal versucht, eine Einschalttauerüberwachung in meinen Code zu implementieren. Simples C-Gefrickel, aber die While-Schleife, welche die Positionen abruft und wartet, dass der Stop-Sensor sein Auslösesignal abgibt, mag meine Ideen zur Zeitbegrenzung nicht.
Sobald die Bewegung einsetzt, speichere ich den aktuellen Zeitwert. Wenn dieser nun um 5 Sekunden überschritten wird, würde ich gerne eine Zwangspause einlegen und einen reneuten Versuch nach einer kurzen Abkühlphase starten. Aber genau da liegt das Problem.
Theoretisch sollte ich mir mit der Funktion millis() die aktuellen Millisekunden auf meinem Diyplay ausgeben können. Aber das funktioniert genau einmal, kurz nach dem Aufruf der Funktion.
Also habe ich ohne zeitliche Konstante eine Zahl inkrementiert. Das klappt super, ich kann sie mir auch auf meinem Display anzeigen lassen, rasselt schön sauber hoch.
Sobald ich das jedoch als if-Abfrage in meine While-Schleife (kopfgesteuert) einbinde, zählt da nichts mehr. Irgendwie muss es in While-Schleifen mit Abfragen geben. Auch n kurzes Delay hat keine Abhilfe geschafft...
Wenn die While-Schleife zu lange läuft, muss ich den MotorPin wieder auf low setzen. Aber irgendwie komm ich da nicht raus.Code:void turn() { if (karusellInAction == 0) { karusellInAction = 1; karusellPosition = 0; digitalWrite(relayVoltagePin, HIGH); digitalWrite(motorPin, HIGH); delay(leadTime); // adjust for each model relay1 = 0; relay2 = 0; relay4 = 0; relay8 = 0; while (analogRead(relayStop) <= 20) // A0 default: 40 active: 340 { if (analogRead(relayeins) >= 50) { relay1 = 1; } // A1 default: 42 active: 342 if (analogRead(relayzwei) >= 50) { relay2 = 1; } // A2 default: 41 active: 341 if (analogRead(relayvier) >= 50) { relay4 = 1; } // A3 default: 40 active: 340 if (analogRead(relayacht) >= 50) { relay8 = 1; } // A4 default: 41 active: 340/341 } writePosition(); delay(overTravelTimings[(karusellPosition-1)]); // adjust for each model digitalWrite(motorPin, LOW); digitalWrite(relayVoltagePin, LOW); previousTurn = lastTurn; buttonTime = millis(); if (jumpedOver <= 1) { jumpedOver++; } lastTurn = millis(); // moved before stop-sensing karusellInAction = 0; //lcd.clear(); } }
Lesezeichen