Подключение вентиляторов 12V 1.8A (4 wire)

Тема в разделе "Силовая электроника", создана пользователем MaXi, 3 сен 2017.

  1. b707

    b707 Гик

    Вам rkit писал. что все не так просто, а вы не слушали. Управляющий ШИМ сигнал нужен 25КГц, а стандартный ардуиновский ШИМ даже до одного килогерца не дотягивает.
     
  2. MaXi

    MaXi Нуб

    Что же делать?)))Может быть есть другие контроллеры? Или готовые примочки)))
     
  3. MaXi

    MaXi Нуб

    // For Arduino Uno, Nano, Micro Magician, Mini Driver, Lilly Pad and any other board using ATmega 8, 168 or 328**

    //---------------------------------------------- Set PWM frequency for D5 & D6 -------------------------------

    //TCCR0B = TCCR0B & B11111000 | B00000001; // set timer 0 divisor to 1 for PWM frequency of 62500.00 Hz
    //TCCR0B = TCCR0B & B11111000 | B00000010; // set timer 0 divisor to 8 for PWM frequency of 7812.50 Hz
    TCCR0B = TCCR0B & B11111000 | B00000011; // set timer 0 divisor to 64 for PWM frequency of 976.56 Hz (The DEFAULT)
    //TCCR0B = TCCR0B & B11111000 | B00000100; // set timer 0 divisor to 256 for PWM frequency of 244.14 Hz
    //TCCR0B = TCCR0B & B11111000 | B00000101; // set timer 0 divisor to 1024 for PWM frequency of 61.04 Hz

    Согласно этой таблице я поднимал частоту до 62,5КГц и опускал до 61.04 Hz
    Эффекта НЕТ.
    Получается проблема не в частоте? =(
     
  4. MaXi

    MaXi Нуб

    По моим расчетам это должно быть 25КГц
    analogWrite(FAN,0 );
    delayMicroseconds (10);
    analogWrite(FAN,255 );
    delayMicroseconds (30);
    Тоже не сработало =(
     
  5. MaXi

    MaXi Нуб

    // Fan sens (tach) wire connected to digital_8 port
    int fanSens = 8;
    // Fan PWM wire connected to digital_9 port
    int fanPWM = 5;
    // Middle pin of LM35 connected to analog_A1 port
    int tempPin = 1;

    void showRPM() {
    unsigned long pulseDuration = pulseIn(fanSens, LOW);
    double frequency = 1000000/pulseDuration;
    }

    void setup()
    {
    TCCR0B = TCCR0B & B11111000 | B00000001;
    pinMode(fanSens, INPUT);
    digitalWrite(fanSens,HIGH);
    }

    void loop()
    {
    float val = analogRead(tempPin);
    float mv = val/4;
    float cel = mv/1; // this is the celcuis
    if (cel <= 27.0)
    analogWrite(fanPWM, 70); // write value 70 to the fan
    else if (27.0 < cel)
    analogWrite(fanPWM, 220); // write value 220 to the fan

    showRPM();
    delay(500);
    }
     
  6. MaXi

    MaXi Нуб

    Кто может подсказать как использовать это?
    TCCR2A = 0;//initialize timer registers
    TCCR2B = 0;

    // Set the timer to mode 7... Fast PWM to OCR2A
    // Set output on Channe2B Pin3
    // Clear on compare match
    TCCR2A |= (1 << WGM21) | (1 << WGM20); // part of mode 7 setting
    TCCR2B |= (1 << WGM22); //third bit of mode 7
    TCCR2A |= (1 << COM2B1); //Pin 3, Clear on compare match

    //Set fast pwm to 25 khz
    TCCR2B |= (1 << CS21); //Prescaler 8 .5us per tick
    OCR2A = 79; //80 ticks = 40us = 25khz
     
  7. b707

    b707 Гик

    ждите rkit я этого не знаю