Hallo,
ich habe 2,3 grundsätzliche Fragen zu einem Projekt an dem ich sitze.
Ich möchte für einen Extruder ein Stück von einem Rohr mit NiCr-Draht auf ca. 230°C erhitzen.
Um die benötigte Spannung zu erreichen (vermutlich im Bereich von 12-15V, steht allerdings noch nicht genau fest), dachte ich an ein MOSFET. Und um die Temperatur konstant zu halten würd ich es gerne mit einer Regelung versuchen.
Die Temperatur wird mit Hilfe von Thermoelementen und dem MAX31855 gemessen und eingelesen.
Da ich weder Erfahrung beim regeln mit dem Arduino noch mit MOSFETS habe, bin ich mir unsicher wie ich am besten an die ganze Sache herangehen sollte.
Wäre es am sinnvollsten erstmal unabhängig von der Regelung sich in das Thema MOSFET einzuarbeiten (Schaltplan erstellen etc..)und schliesslich in abhängigkeit von der benötigten Spannung/Strom ein Produkt auszuwählen und sich danach um die Regelung zu kümmern?
Letzten Endes noch die Frage, ob die Idee mit Regelung und MOSFET für eine konstante Temperatur im Draht überhaupt sinnvoll ist?
Mit NiCr Draht und Mosfet ist das ohne weiteres möglich. Die E-Zigaretten Dampfer tun dies ständig.
Den Draht gibt es in verschiedenen Querschnitten und unterschiedlichen spezifischen Widerständen. Du kannst die Heizung entweder mit PWM oder als Paketsteuerung realisieren. Der Draht ist so träge, daß langsame Pulse ohne weiteres möglich sind.
Wenn der Widerstand der Heizung aufgrund der Drahtlänge zu hoch wird, dann nimm einfach zwei Heizdrähte parallel.
Der Heizdraht kann ohne weiteres mittels PWM geregelt werden. Dazu brauchst Du einen Logic Level MOSFET (damit Du ihn mit 5V ansteuern kannst). Zur Regelung ist ein PID Regelung sinnvoll.
Wieso nimmst Du nicht als Beispiel einen Extrudeer eines 3D Druckers? Viele sind Open Source.
Für die Einarbeitung in das Thema MOSFET gibt's dazu ein passendes Erweiterungspaket ... in der Arduino-Welt "Shield" genannt (http://shop.cboden.de/Digispark/Shields/MOSFET-Erweiterungssatz.html). Der dabei verwendete MOSFET kann theoretisch bis 30 Ampere und 60 Volt schalten. Allerdings sollte man das in der Praxis nicht ausreizen. Wenn man doch in die oberen Leistungsregionen kommt, macht auf alle Fälle ein zusätzlicher Kühlkörper für den MOSFET Sinn. Alternativ kann der MOSFET auch gegen einen leistungsfähigeren N-Kanal MOSFET (nicht zu verwechseln mit den P-Kanal-Typen!!!) ausgetauscht werden.
In meinen Augen immer sinnvoll ist die Verwendung eines LCD-Display (http://shop.cboden.de/Digispark/Shields/I2C-LCD-Erweiterungssatz.html). Darauf kann man im Betrieb nicht nur die Soll- und Ist-Temperaturen sowie den aktuellen PWM-Wert sondern auch Debug-Informationen zur Fehlersuche ausgeben.
Beim Sensor würde ich persönlich eher zu einem PT1000 tendieren. Bei Einsatz des LCD-Displays wird ja bereits der I2C-Bus genutzt. In dem Fall würde ich dann auch gleich zu einem I2C-Interface für den Sensor raten. Damit würde beides über den gleichen Bus laufen.
mgcss:
Für die Einarbeitung in das Thema MOSFET gibt's dazu ein passendes Erweiterungspaket ... in der Arduino-Welt "Shield" genannt (http://shop.cboden.de/Digispark/Shields/MOSFET-Erweiterungssatz.html). Der dabei verwendete MOSFET kann theoretisch bis 30 Ampere und 60 Volt schalten. Allerdings sollte man das in der Praxis nicht ausreizen. Wenn man doch in die oberen Leistungsregionen kommt, macht auf alle Fälle ein zusätzlicher Kühlkörper für den MOSFET Sinn. Alternativ kann der MOSFET auch gegen einen leistungsfähigeren N-Kanal MOSFET (nicht zu verwechseln mit den P-Kanal-Typen!!!) ausgetauscht werden.
mgcss; Leider Muß ich Dir widersprechen. Der FQP30N06 auf den vorgeschlagenen Platine ist kein Logic Level MOSFET und darum reskiert man daß bei 5V ansteuerung der MOSFET nicht ganz durchsteuert und somit viele Verlustleistung hat und kaputtgeht. Auch gefällt mir bei der Platiene nicht, daß keine Möglichkeit vorgesehen ist, diese irgendwo zu montieren/anzuschrauben. Ein fehlender Schaltplan macht das Teil nicht sympatischer.
Der Aufwand einer Sensorwertaufbereitung ist bei einem Thermoelement gegenüber einem PT100/ PT1000 Temperatursensor Kleiner (es braucht nur 1 IC zB den MAX6675 oder MAX31855). Darum tendiere ich zu einem Thermoelement da dieses kleiner hergestellt werden kann und somit eine kleinere Zeitkonstante hat (erreicht schneller die Temperatur des zu messenden Meduims).
Wie alle meine Vorredner schon bestätigt haben:
Es geht und es ist sinnvoll.
Um mal anzufangen, würde ich zuerst versuchen einen Temperatursensor zu wählen (auch gerne verschiedene zum Testen), den über den Arduino einzulesen und den Wert anzuzeigen. Zuerst über Serialmonitor, dann über Display.
Deine Wahl mit den Thermoelementen ist sicher keine schlechte. Allerdings würde in dringend davor warnen, eine eigene Auswerteschaltung zu bauen, dafür braucht man viel Know how über die funktionsweise von Thermoelementen.
ich würde eines der fertigen kaufen, z.B. sowas: MAX31855K Single-ch Type K Thermocouple Breakoutboard ich habe das 4-Fach Board dieser Firma im Einsatz und bin sehr zufrieden damit.
Wenn du es etwas günstiger willst, dann kannst du auch NTCs nehmen. hierfür gibts auch Beispiele im Playground.
Wenn du Temperaturen einlesen kannst, dann kannst du dich mal um die Leistungsseite kümmern.
Das kann ungefähr so aussehen:
Für den Anfang erstmal versuchen, ohne Heizung, die LED zu Schalten, dann über PWM zu dimmen.
Wenn das geht, die Heizung mit anschliessen und messen, welche Temperturen du erreichst.
Zu guter Letzt kannst du dir dann die PID-Library ansehen. Mit der ist die Regelung dann recht einfach. Wenn dir das zu kompliziert ist, dann tuts für eine Heizung meist auch ein einfacher Zweipunktregler.
Aber die Regelung kommt erst dran, wenn alles andere funktioniert.
Fang' einfach mal an, das wird!
Von einem NTC rate ich ab, da dieser die notwendigen Temperaturen nicht verträgt BZW Du den NTC nicht an ein Kabel anlöten kannst weil das Lötzinn bei dieser Temperatur schmilzt bzw weich wird. Die Extrudertemperatur liegt um 200°C.
uwefed:
Der FQP30N06 auf den vorgeschlagenen Platine ist kein Logic Level MOSFET ....
Ein fehlender Schaltplan macht das Teil nicht sympatischer
Links zum Schaltplan gibt's auf der Hersteller-Seite (https://s3.amazonaws.com/digistump-resources/files/d2e95eae_mosfet.pdf), auch wenn ich Dir Recht gebe, dass Sie im deutschen Shop fehlen. Mit dem verwendeten FQP30N06L hatte ich bislang am ATtiny noch nie Probleme, denn das L am Ende bedeutet (wenn ich mich nicht irre), dass es sehr wohl ein Logik-Level MOSFET ist!
schon, aber der wird bei 2,5A schon recht warm. Der IRLZ44 ist da noch völlig kalt und hat genügend reserven.
Ich nehm ihn gerne, er ist ein richtiges Arbeitspferd.
Danke für die ganzen Antworten, das hat mir schon weitergeholfen.
Ich habe mir jetzt den IRLIZ44N rausgesucht. Was mir noch nicht ganz klar ist, wie komme ich auf den Widerstand zwischen dem Pin und dem Gate vom Mosfet?
Wenn Du einen Logik-Level MOSFET nimmst (wie den oben besprochenen FQP30N06L), dann brauchst Du eigentlich gar keinen Widerstand (denn genau das ist ja der Sinn eines Logik-Level-Bausteins). Wenn Du Dir den Schaltplan des Digispark MOSFET-Shields ansiehst, wirst Du dort dennoch einen finden. Der hängt aber nicht zwischen Pin und Gate sondern zwischen Gate und Masse. Das hat den Sinn, das Gate auf einen definierten Low-Pegel herunter zu ziehen (deshalb heißen die Dinger Pull-Down-Widerstände). Das ist erforderlich, wenn die Betriebsspannung am MOSFET anliegt noch bevor der Mikro-Controller so weit ist, seinen Ausgang-Pin in einen definierten Zustand zu setzen. Während dieser Spanne würde das Gate "in der Luft" hängen. Um das zu vermeiden, dienen die Pull-Down-Widerstände (unter anderem).
Für Nicht-Logic-Level MOSFETS findest Du hier einige Hintergrundinfos zur Berechnung des Basis-Widerstandes eines Transistors: Basiswiderstand – Mikrocontroller.net. Da der MOSFET auch nur eine besondere Form des Transistors ist, gilt das dort gesagte auch für sie.
Übrigens noch eine kleine Anmerung zur Schaltung von guntherb: die Vorwiderstände für die LED sind deutlich zu hoch. Bei 24 Volt Versorgungsspannung und einer Standard-LED mit 25mA Stromaufnahme komme ich auf rund 880 Ohm ... da ist EIN 1k Widerstand ausreichend. Bei 12 Volt Versorgungsspannung komme ich sogar nur auf rund 400 Ohm.
Bei FETs heißt das Ding Gate-Ableitwiderstand. Neben der sicheren Abschaltung bei fehlendem Ansteuer-Signal, hat er noch einen weiteren Grund. Bei sehr schnellen Schaltvorgängen (im kHz Bereich) entlädt er die Gate-Kapazität schneller und der Transistor sperrt eher. Das spielt aber bei der sehr niedrigen PWM-Frequenz des Arduino keine Rolle. Bei Schaltnetzteilen dagegen extrem wichtig. Die sind oft mehrere 100k bis wenige MOhm groß.
Für Nicht-Logic-Level MOSFETS findest Du hier einige Hintergrundinfos zur Berechnung des Basis-Widerstandes eines Transistors: Basiswiderstand – Mikrocontroller.net. Da der MOSFET auch nur eine besondere Form des Transistors ist, gilt das dort gesagte auch für sie.
Du bringst da Bipolar- und Unipolar-Transistoren durcheinander. Basiswiderstände gibt es bei FETs nicht, egal ob Logic Level oder normal. Logic Level heißt nur, dass er bei 5V schon fast voll durchschaltet (nicht immer ganz!), während normale FETs dafür 6-10V brauchen.
Bipolar-Transitoren werden über Strom gesteuert. Daher braucht man den Basiswiderstand um die Stromverstärkung einzustellen. Unipolar-Transistoren/FETs werden über Spannung gesteuert. Es fließt lediglich ein sehr kleiner Strom um das Gate zu laden (das sich wie ein Kondensator verhält).
Der Widerstand zwischen Pin und Gate ist dazu da um den Strom der aus dem Pin fließt zu begrenzen. Das ist aber hauptsächlich um den Controller zu schonen, nicht für die Funktion des FETs. Deshalb muss man es da anders als bei Bipolar-Transistoren nicht so genau nehmen.
die beiden Widerstände am FET sind reine sicherheitswiderstände.
Der 22K zwischen Gate und Source (kann auch deutlich größer sein) sorgt nur dafür, dass bei einer fehlenden Verbindung zum Arduino der FET nicht selbstständig aufsteuert.
Der 1k zum Arduino (muß mindestens Faktor 10 kleiner sein als der 22K) "schont" den µC Ausgang, dadurch dass die Gate-Source Kapazität nicht hart am Arduino-Pin hängt. Dadurch werden die Umschalt-Stromspitzen etwas kleiner.
Wie schon gesagt, du "brauchst" die nicht unbedingt. Aber es ist besser und sauberer.
Die Bezeichnung "Logic-Level-Fet" hat garnichts mit den Widerständen zu tun, sondern einzig und alleine damit, dass diese Fets schon bei UDS von 5V, also Logic-pegel, voll durchgesteuert sind. "Normale" Fets tun dies manchmal erst bei 10V, bräuchten also noch eine zusätzliche Transistorstufe vorher.
Nicht ganz uninteressant ist auch die Größe des Extruders. Je nachdem muss die Masse ja auch erwärmt werden. Wenn die Masse größer ist, dann kann man mit der Ein und Ausschaltzeit ruhig etwas höher gehen. Die Takte wären im Bereich von einigen Sekunden. Je größer die Masse, desto träger dürfen die Heizpulse sein.
Wäre das aber so ein Miniding im Bereich von einigen Millimetern, dann wäre die ordinäre PWM ausreichend.
Der Vorwiderstand am Gate des FET´s macht bei sehr hohen Frequenzen durchaus Sinn, da das Gate sehr häufig umgeladen werden muss. Wir wollen ja den Ausgang des µC nicht übermäßig belasten. Diese Dimensionierung der Ansteuerung hat maßgeblich mit der Realisierung der angestrebten Schaltung zu tun. Soll heißen: Nach Klärung der mechanischen Verhältnisse (Masse die erwärmt werden soll) kann die Dimensionierung der Bauteile festgelegt werden.
Ich schätze hier haben wir es mit Taktzeiten im Sekundenbereich zu tun. Einen 100 Ohm Widerstand würde ich schon mal aus materialschonenden Gründen am Gate vorsehen. Und der Aussage von guntherb mit dem 22k Widerstand zwischen Gate und Source kann ich nur zustimmen.
Serenifly:
Bipolar-Transitoren werden über Strom gesteuert. Daher braucht man den Basiswiderstand um die Stromverstärkung einzustellen.
Kleine Richtigstellung: Der Basiswiderstand begrenzt den Basisstrom da zwischen Basis und Emittor eine Diodenstrecke das heißt ca 0,7V liegt ( Bei Darlingtontransistoren ca 1,4V). Ohne Basiswiderstand würde am Arduinoausgang zuviel Strom fließen weil die Basis einen fast Kurzschluß zu Masse darstellt. Das hat nichts mit der Verstärkung zu tun.
Grüße Uwe
Für den kleinen DC-Motor den ich zur Zeit benutze hab ich noch ein L293D verwendet was ich allerdings vermutlich noch ändern werde wenn ich einen leistungsstärkeren Motor verwende.
Ich hoffe das ist alles einigermassen nachvollziehbar. An den Mosfet habe ich an Drain vorerst eine Led gehangen zur Veranschaulichung .
Der nächste Schritt wäre dann das ich mich mit der Regelung für die Temperatur auseinandersetze.
Ich habe allerdings noch eine Frage zu dem NiCr-Draht. Ich möchte den Strom über einen Kupferdraht und Alligatorklemmen in den NiCr-Draht leiten, also praktisch in der Reihenfolge MOSFET - Kupferdraht - NiCrDraht.
Benötigte Spannung und Widerstand des NiCr-Drahtes ist alles bekannt. Was mir nicht ganz klar ist, muss ich irgendwo zwischen mosfet, kupferdraht und NiCrdraht noch einen Widerstand schalten?
Ich hatte in anderen Beispielen immer mal wieder was von Thermistoren gelesen, daher frage ich.