PWM fanregelaar


tuinkabouter

Well-known member
Lid geworden
18 januari 2010
Berichten
10,521
Locatie
alkmaar
ik had vandaag het goede idee me koelfans van mijn verlichting te gaan regelen middels een PWM signaal zodat de snelheid regelbaar was.
Echter het werkte.. ff.. binnen een minuut was er geknetter en rook..
De transistor doet dus niks meer nu..
Ik had een BC547B gebruikt en alsvolgt aangesloten:
-voeding - op C
-PWM op B
-PWM - op E
-fan - op E

Het zijn 6x 12v fans die op een 24v voeding aangesloten zitten (2x3 fans in serie)
Zijn gewoon simpele fans dus vraag me een beetje af waar het mis is gegaan..
Heb ik wat verkeerd aangesloten of was de transistor gewoon te zwak?
 
Je hebt computerfans met een eigen PWM aansluiting die je met een hogere frequentie dient te sturen..
 
yup die bestaan dat klopt, maar ik heb simpele standaard fans meegeleverd gekregen met mijn heatsinks..
gezien ik weet dat je normale fans met PWM kan bedienen zou dit toch mogelijk moeten zijn...
 
Niet iedere fan is te regelen met PWM, sommige dc motoren lusten dat niet en gaan dan hele vervelende feedback generen. Dat kan je transistor wel eens gesloopt hebben.
 
ik had vandaag het goede idee me koelfans van mijn verlichting te gaan regelen middels een PWM signaal zodat de snelheid regelbaar was.
Echter het werkte.. ff.. binnen een minuut was er geknetter en rook..
De transistor doet dus niks meer nu..
Ik had een BC547B gebruikt en alsvolgt aangesloten:
-voeding - op C
-PWM op B
-PWM - op E
-fan - op E

Het zijn 6x 12v fans die op een 24v voeding aangesloten zitten (2x3 fans in serie)
Zijn gewoon simpele fans dus vraag me een beetje af waar het mis is gegaan..
Heb ik wat verkeerd aangesloten of was de transistor gewoon te zwak?
PWM moet toch alleen op Basis? Om een grotere stroom te laten lopen van Collector naar Emitter?
 
Niet iedere fan is te regelen met PWM, sommige dc motoren lusten dat niet en gaan dan hele vervelende feedback generen. Dat kan je transistor wel eens gesloopt hebben.
Crap.. zal ik eens de specs van de makersled heatsink fan controller moeten bekijken of opvragen...

PWM moet toch alleen op Basis? Om een grotere stroom te laten lopen van Collector naar Emitter?
Dat klopt, maar je PWM heeft een oorsprong (arduino) en moet dus weer terug naar de bron om zo een circuit te maken
 
correct, le moet een common ground hebben om PWM te kunnen gebruiken.
dat is ook de reden waarom alle - aansluitingen van me led voedingen aangesloten zijn op de GND van de arduino
 
Niet zo best...
Heb een TIP120 gebruikt en het werkt naar behoren..
Echter, door de 400hz die ik gebruik op me PWM geeft deze een hele irritante zoem..
Ik heb nog een bd135 liggen die ik met koellichaam zou kunnen testen, maar ik ben bang voor hetzelfde resultaat.

Andere optie is een arduino nano aanschaffen om het signaal te boosten naar 40khz, ver buiten het menselijk gehoor dus
 
arduino nano geplaatst en dit werkt.
fans reageren op PWM en de TIP120 is niet meer te horen.
 
Hoe heb jij je pwm signaal naar 40khz geduwd? Ik heb in het verleden ook wel eens zoiets gedaan maar dat gaf irritante bijgeluiden.
 
Code in de nano geladen en aangesloten en klaar eigenlijk

Code:
// Reads the PWM signal duty cycle and frequency from Analog pin A0
// and outputs the same PWM duty cycle to pin D10 @ 25Khz for quiet cooling fan control.
// last updated 1/29/2016 by Aaron Kovacs

#include <TimerOne.h>

#define READ_PIN A0  // analog pin A0
#define PWM_OUTPUT 10 // digital pin D10
int dutyValue = 0;
int inputState = 0;
static double duty;
static double freq;
static long highTime = 0;
static long lowTime = 0;
static long tempPulse;

void setup(){

pinMode(READ_PIN,INPUT);
Serial.begin(9600);
Timer1.initialize(40); // 25Khz PWM = (40).
Timer1.pwm(PWM_OUTPUT, 0);
}

void loop(){
  // this section of the code determines the input's (A0) frequency/duty cycle(true 0 - 100%)
  // A 25KHz copy of the original input signal is then sent to pin D10 as an output.
  // The serial monitor can be used to display the input duty cycle and the signal status of the output.
  readPWM(READ_PIN);
 
  int dutyValue = (duty);
  dutyValue = map(dutyValue, 0, 100, 0, 255);
  int inputState = digitalRead(READ_PIN);
 
  if (tempPulse > 1){
    analogWrite(PWM_OUTPUT,dutyValue);
    Serial.print("Duty % = " );
    Serial.println(duty);
  }
  if (tempPulse < 1 && inputState == 0) {
    digitalWrite(PWM_OUTPUT,LOW);
    Serial.print("Input_State =  ");
    Serial.println(inputState);
    Serial.println ("Cooling Fan - OFF");
  } 
  if (tempPulse < 1 && inputState == 1) {
    digitalWrite(PWM_OUTPUT,HIGH);
    Serial.print("Input_State =  ");
    Serial.println(inputState);
    Serial.println ("Cooling Fan - ON");
  }
}

//Takes in reading pins and outputs pwm frequency and duty cycle.
void readPWM(int readPin){
highTime = 0;
lowTime = 0;

tempPulse = pulseIn(readPin,HIGH);
if(tempPulse>highTime){
highTime = tempPulse;
}

 
tempPulse = pulseIn(readPin,LOW);
if(tempPulse>lowTime){
lowTime = tempPulse;
}

 
freq = ((double) 1000000)/(double (lowTime+highTime));
duty = (100*(highTime/(double (lowTime+highTime))));

}
 

Terug
Bovenaan