Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

25 kHz 4-pins PWM-ventilatorbesturing met Arduino Uno – Bouw, Code & Test

Onderdelen en benodigdheden

  • Axiale ventilator, 12 VDC (1×)
  • Arduino UNO (1×)
  • USB-A naar Mini-USB kabel (1×)
  • Draadjes (standaard) (1 set)

Apps en online diensten

  • Arduino IDE

Over dit project

Ik wilde mijn 4-pins PWM-ventilatoren besturen en had er vijf liggen. De frequentie is instelbaar tussen 125 Hz en 8 MHz, met variabele duty cycle. De schakeling gebruikt Timer 1 in fase-correcte PWM-modus (mode 10) op OCR1A (pin 9) en ICR1 (pin 10). Een handoscilloscoop was onmisbaar om frequentie en duty cycle te verifiëren.

25 kHz 4-pins PWM-ventilatorbesturing met Arduino Uno – Bouw, Code & Test
Meetopstelling met handoscilloscoop
25 kHz 4-pins PWM-ventilatorbesturing met Arduino Uno – Bouw, Code & Test
25 kHz PWM signaal met 25% duty cycle

Belangrijk: Raadpleeg de datasheet van uw ventilator. De besturingsdraad was in mijn geval geel (normaal de tachodraad). Controleer de acceptabele frequentierange ("centering frequency"). U moet wellicht de code aanpassen. Een goede voeding is essentieel (ik gebruik een omgebouwde ATX-voeding).

Let op: Het besturen van twee ventilatoren onafhankelijk met een tweede timer werkt niet. De resolutie van de tweede timer is lager (8-bit vs 16-bit), wat leidt tot ruis en vervormde golven. Het is ook minder intuïtief bij het invoeren van waarden.

Code

De code configureert Timer 1 voor 25 kHz fase-correcte PWM op pin 9 (OC1A). De duty cycle wordt in de loop aangepast via setPwmDuty() (0–100%).

const byte OC1A_PIN = 9;
const byte OC1B_PIN = 10;
const word PWM_FREQ_HZ = 25000; // Frequentie in Hz (hier 25 kHz)
const word TCNT1_TOP = 16000000 / (2 * PWM_FREQ_HZ);

void setup() {
  pinMode(OC1A_PIN, OUTPUT);
  TCCR1A = 0; TCCR1B = 0; TCNT1 = 0;
  // COM1A1=1, WGM11=1 → fase-correcte PWM, clear op match
  TCCR1A |= (1 << COM1A1) | (1 << WGM11);
  // WGM13=1, CS10=1 → geen prescaler
  TCCR1B |= (1 << WGM13) | (1 << CS10);
  ICR1 = TCNT1_TOP;
}

void loop() {
  setPwmDuty(0);   delay(5000);
  setPwmDuty(25);  delay(5000);
  // setPwmDuty(50); delay(20000);
  // setPwmDuty(75); delay(20000);
  // setPwmDuty(100); delay(20000);
}

void setPwmDuty(byte duty) {
  OCR1A = (word)(duty * TCNT1_TOP) / 100;
}

Schema

25 kHz 4-pins PWM-ventilatorbesturing met Arduino Uno – Bouw, Code & Test
Schakelschema: Arduino pin 9 → PWM-in van ventilator, GND gemeenschappelijk, 12V op ventilator

Tip: Gebruik altijd een flyback-diode over de ventilator-aansluitingen als u de voeding rechtstreeks schakelt. Voor 4-pins ventilatoren is de PWM-in hoogimpedant, dus een directe verbinding met de Arduino werkt prima.

Productieproces

  1. LED helderheid regelen met PWM via drukknop op Arduino Mega
  2. Je plafondventilator bedienen met Alexa: Stap-voor-stap handleiding
  3. Bouw een Arduino Real-Time Clock voor Islamitische Gebedstijden
  4. Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
  5. Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
  6. Twee Stappenmotors Sturen met Arduino Nano & Joystick – Simpele Tutorial
  7. Afbeeldingen Weergeven op een 1,17-inch TFT LCD met Arduino UNO
  8. Een 8×8 LED-matrix beheersen met Arduino Uno: Stap-voor-stap handleiding
  9. Bouw een 4x4x4 LED-kubus met Arduino Uno & 1Sheeld – Interactief LED-project
  10. ThimbleKrox: Vingergemonteerde Muizenbesturing met Arduino Micro & MPU-6050
  11. DIY Arduino Kakerlakbesturingssysteem – Bouw voor minder dan $30