Sterowanie kilkoma wentylatorami 4pin z Arduino

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
drFeelGood
Młodszy majsterkowicz
Posty: 10
Rejestracja: 14 gru 2015, 20:53

Sterowanie kilkoma wentylatorami 4pin z Arduino

Post autor: drFeelGood » 11 gru 2016, 03:22

Witam, znalazłem w sieci kod pozwalający sterować wentylatorem komputerowym 4 pin. Czy ktoś ma pomysł jak przerobić ten kod aby można było sterować kilkoma wentylatorami podłączonymi do pozostałych pinów PWM w arduino?

Kod: Zaznacz cały

int VentPin = 3;

void setup() {
  pinMode(VentPin, OUTPUT);
  pwm25kHzBegin();
}

void loop() {
  pwmDuty(19); // 25% (range = 0-79 = 1.25-100%)
  delay(5000);
  pwmDuty(39); // 50% (range = 0-79 = 1.25-100%)
  delay (5000);
  pwmDuty(59); // 75% (range = 0-79 = 1.25-100%)
  delay (5000);
}

void pwm25kHzBegin() {
  TCCR2A = 0;                               // TC2 Control Register A
  TCCR2B = 0;                               // TC2 Control Register B
  TIMSK2 = 0;                               // TC2 Interrupt Mask Register
  TIFR2 = 0;                                // TC2 Interrupt Flag Register
  TCCR2A |= (1 << COM2B1) | (1 << WGM21) | (1 << WGM20);  // OC2B cleared/set on match when up/down counting, fast PWM
  TCCR2B |= (1 << WGM22) | (1 << CS21);     // prescaler 8
  OCR2A = 79;                               // TOP overflow value (Hz)
  OCR2B = 0;
}

void pwmDuty(byte ocrb) {
  OCR2B = ocrb;                             // PWM Width (duty)
}

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
Zbycho_GL
Majsterkowicz
Posty: 51
Rejestracja: 11 kwie 2016, 19:54
Lokalizacja: Gliwice

Re: Sterowanie kilkoma wentylatorami 4pin z Arduino

Post autor: Zbycho_GL » 15 gru 2016, 21:33

To chyba nawet z jednym nie zadziała
drFeelGood
Młodszy majsterkowicz
Posty: 10
Rejestracja: 14 gru 2015, 20:53

Re: Sterowanie kilkoma wentylatorami 4pin z Arduino

Post autor: drFeelGood » 19 gru 2016, 01:03

Działa, działa.
Awatar użytkownika
Zbycho_GL
Majsterkowicz
Posty: 51
Rejestracja: 11 kwie 2016, 19:54
Lokalizacja: Gliwice

Re: Sterowanie kilkoma wentylatorami 4pin z Arduino

Post autor: Zbycho_GL » 21 gru 2016, 21:29

Hmmm,
Nie jestem super fachowcem w programowaniu, jednak brakuje mi w kodzie odwołania do portu 3.
Jest zmienna VentPin oraz konfiguracja portu, ale nic więcej. Skąd więc program zasadniczy wie na który port wysłać dane ?
stiven
Złota rączka
Posty: 1643
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Sterowanie kilkoma wentylatorami 4pin z Arduino

Post autor: stiven » 22 gru 2016, 13:38

W tym programie jest sterowanie pinem PWM przez timer. Z danym pinem PWM powiązany jest inny bit rejestru timera. Ta linijka w funkcji pwmDuty()

Kod: Zaznacz cały

  OCR2B = ocrb;                             // PWM Width (duty) 
wpływa na pin 3.

Znalazłem forum, z którego pochodzi ten kod https://forum.arduino.cc/index.php?topic=415167.0
Chodzi o to, że te wentylatory wymagają do sterowania innej częstotliwości PWM niż jest normalnie przy funkcji analogWrite(). A korzystając z timera można ustawić tą wymaganą częstotliwość 25kHz. Osoba, która dała ten kod, napisała, że wykorzystując timer1 i timer2 można sterować dwoma pinami PWM z częstotliwością 25kHz i dwoma z częstotliwością 31,37kHz, lub trzema z częst. 25kHz. Tylko nie wiem jaka byłaby różnica przy tych 31,37kHz, może nie dałoby się tych wentylatorów zatrzymać całkiem.

https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM
Awatar użytkownika
Zbycho_GL
Majsterkowicz
Posty: 51
Rejestracja: 11 kwie 2016, 19:54
Lokalizacja: Gliwice

Re: Sterowanie kilkoma wentylatorami 4pin z Arduino

Post autor: Zbycho_GL » 27 gru 2016, 21:04

Dzięki za info. Poczytałem, teraz wiem więcej. Jednak za mało, aby Tobie pomóc. Możesz mieć rację, że 31,5kHz pwm nie zatrzyma całkowicie wiatraka. Równie dobrze może nie ruszyć wcale. Proponuję Ci sprawdzić to doswiadczalnie. Sam chętnie się dowiem. Życzę sukcesu !
ODPOWIEDZ

Strony partnerskie: