Ventilátory určené pre počítačové skrine, či chladiče procesorov umožňujú ovládať výkon pomocou PWM signálu, majú snímač otáčok na magnetickom princípe a ventilátory určené pre herné počítače väčšinou majú aj farebné RGB podsvietenie. Všetky tieto funkcie môžete jednoducho ovládať pomocou Arduina, prípadne inej mikrokontrolérovej dosky
Použili sme ventilátor Silentium PC Fluctus 120 PWM ARGB
Ventilátor bez podsvietenia má jeden 4 pinový konektor. Niektoré ventilátory, ktoré nepodporujú reguláciu otáčok pomocou PWM signálu majú len trojpinový konektor
Na ovládanie RGB podsvietenia sa využíva ďalší káblik s trojpinovým konektorom-
Princíp ovládania je vysvetlený vo videu.
Snímanie otáčok a zobrazovanie na alfanumerickom LCD displeji. Väčšina ventilátorov generuje dva impulzy počas jednej otáčky. Signál je potrebné pripojiť na vstup mikrokontrolérovej dosky cez pull up rezistor pripojený na napájacie napätie. Nakoľko ventilátor sa napája napätím 12 V, najbezpečnejšie riešenie bude vytvoriť napäťový delič, ktorý zaručí, že úroveň signálu privedený na vstup Arduina neprekročí 5 V.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
const int nVstupPin = 2;
int nPocitadloPreruseni, rpm;
char znak[4] = "0000";
void setup()
{
delay(1000);
lcd.init(); lcd.backlight();
lcd.setCursor(0,0); lcd.print("NEXTECH");
lcd.setCursor(0,1); lcd.print("Test PC ventilatora");
Ovládanie otáčok PWM signálom, PWM signál sa generuje na analógovom výstupe. Technické špecifikácie udávajú frekvenciu PWM signálu 25 kHz a napätie 5V, regulácia však funguje v širokom rozsahu frekvencie. Rozsah 0 – 100 % je mapovaný na analógový výstup, ktorý má rozsah 0 – 255 takto: 0% =0; 20% = 51; 40% = 101; 60% = 153; 80% = 204; 100% = 255
Program zároveň zobrazuje na alfanumerickom displeji šírku PWM impulzu v percentách a otáčky z magnetického senzora
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
const int nVstupPin = 2;
const int nOvladaniePin =3;
int nPocitadloPreruseni, nRpm, nPwm, start_cas;
char znak[4] = "0000";
char znak1[4] = "0000";
void setup()
{
delay(1000);
lcd.init(); lcd.backlight();
lcd.setCursor(0,0); lcd.print("NEXTECH");
lcd.setCursor(0,1); lcd.print("Test PC ventilatora");
Ovládanie otáčok PWM signálom, PWM signál sa generuje pomocou čítača. Výhodou je, že parameter procedúry setPwmDuty() môžete zadávať priamo v percentách.
const byte OC1A_PIN = 9;
const word PWM_FREQ_HZ = 25000; //25kHz
const word TCNT1_TOP = 16000000/(2*PWM_FREQ_HZ);
void setup() {
pinMode(OC1A_PIN, OUTPUT);
// vynulovanie čítača
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
TCCR1A |= (1 << COM1A1) | (1 << WGM11);
TCCR1B |= (1 << WGM13) | (1 << CS10);
ICR1 = TCNT1_TOP;
}
void loop() {
setPwmDuty(25); delay(5000);
setPwmDuty(50); delay(5000);
setPwmDuty(75); delay(5000);
setPwmDuty(100); delay(5000);
}
void setPwmDuty(byte duty) {
OCR1A = (word) (duty*TCNT1_TOP)/100;
}
Ovládanie farebného RGB podsvietenia s využitím knižnice FastLED. Je to upravený príklad, ktorý je súčasťou knižnice