als allererstes möchte ich die aufkommende Frage "Hast du die Suchfunktion überhaupt benutzt? Da gibt es das ganze schon 1000x!" Gleich mal mit ja natürlich beantworten. Nun zu meinem Problem, wie man ja dem Titel schon entnehmen kann, möchte ich einen Lüfter (bzw 2 Lüfter Parallel) Temperatur gesteuert Regeln um meinen Schrank für meinen 3D Drucker zu temperieren.
Ich habe mir mal einiges an Kram zum basteln für den Arduino besorgt und habe aktuell bereits eine Schaltung um mit einem DHT 11 die Temperatur zu messen mit einem Poti einen Sollwert zu definieren und das ganze dann schön mit einem Display darzustellen.
Natürlich fehlt jetzt nur noch die Belüftung bzw Kühlung. Ich habe mich vorher schon mal bisl dazu belesen und um mir den Aufbau mit 3Pin Lüfter und Mosfet zu sparen mal gleich 4 Pin PWM Lüfter besorgt, alles mal am Breadboard zusammengesteckt aber ich bekomm die PWM Regelung nicht hin, also absolut nicht.
Ich habe natürlich zahlreiche Videos und Beiträge durch und verschiedenste Sketche probiert aber nix funktioniert so wie es soll. In meiner Ratlosigkeit versuche ich es somit hier mal.
Mein Aufbau:
Arctic F12 PWM Lüfter (später mal 2 parallel geschaltet)
-Arduino UNO R3 SMD (Originaler keiner China Klon)
-9V Netzteil für den Lüfter (später wird es mit 12v versorgt)
Die Lüfterpins sind entsprechend Angeschlossen und davon das PWM Signal auf Pin 9 sowie Pin 10 schon versucht, vom aufwändigen Sketch bis zum simplen AnalogWrite schon alles durch wobei letzteres immerhin fühlbare Veränderungen schafft, aber nicht im richtigen Verhältnis.
Wäre für ein Ordenliches Beispiel dankbar, bei Bedarf kann ich auch noch die Sketches posten die ich bereits durch habe
ich trau es mir fast nicht sagen aber es lag wirklich an der fehlenden Masse, ich war zwar noch nie wirklich gut in Elektrotechnik (deshalb will ich das mit nem Arduino auch bisl verbessern), aber natürlich kann kein Signal egal ob PWM oder nicht ankommen wenn der Kreis unterbrochen ist aber jetzt funktioniert es wie es soll. Mir geht es jetzt nur noch drum das ganze möglichst kompakt zu halten, ich möchte nämlich nur das Signal erzeugen bzw. ja Regeln und brauch auch keine Tacho Auswertung. Ich bin unter anderem auf folgenden Sketch gestoßen den ich so in mein Hauptprogramm integrieren möchte, ich nur noch wissen wollte ob das ganze so auch vernünftig aussieht da ich das ganze ja wirklich nur für das Signal brauch und keine Auswertung.
PS. was mich auch noch interessieren würde, wenn der Lüfter nicht gebraucht wird weil die Temperatur nicht zu hoch ist, reicht es den DutyCycle auf 0 zu setzen oder das ganze lieber per Mosfet komplett vom 12V zu nehmen, wenn Mosfet wäre ne ungefähre Bezeichnung hilfreich, danke euch.
const byte OC1A_PIN = 9;
const byte OC1B_PIN = 10;
const word PWM_FREQ_HZ = 20000; //Adjust this value to adjust the frequency
const word TCNT1_TOP = 16000000/(2*PWM_FREQ_HZ);
void setup() {
pinMode(OC1A_PIN, OUTPUT);
// Clear Timer1 control and count registers
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
// Set Timer1 configuration
// COM1A(1:0) = 0b10 (Output A clear rising/set falling)
// COM1B(1:0) = 0b00 (Output B normal operation)
// WGM(13:10) = 0b1010 (Phase correct PWM)
// ICNC1 = 0b0 (Input capture noise canceler disabled)
// ICES1 = 0b0 (Input capture edge select disabled)
// CS(12:10) = 0b001 (Input clock select = clock/1)
TCCR1A |= (1 << COM1A1) | (1 << WGM11);
TCCR1B |= (1 << WGM13) | (1 << CS10);
ICR1 = TCNT1_TOP;
}
void loop() {
setPwmDuty(50); //Die Zahl 50 wird natürlich später durch ne Variable ersetzt
delay(5000);
}
void setPwmDuty(byte duty) {
OCR1A = (word) (duty*TCNT1_TOP)/100;
}