Работа ШИМа в момент включения

SergAG
Offline
Зарегистрирован: 22.12.2012

Это кусок кода, который при включенной кнопке pinButtonOn дает предразогрев нагрузки до определенной температуры setPreTemp определенной скважностью ШИМа setPWM, затем нагрузка включается полностью до установленной температуры setTempS. Текущая температура TempS. Делается это для того, чтобы блок питания не уходил в защиту на холодной нагрузке.

Это первый мой код, но он почему-то заработал. Единственная проблема - даже при выключенной pinButtonOn, когда нагрузка должна быть безусловно отключена, блок сразу уходит в защиту. Если включить девайс при отключенной нагрузке, и затем ее воткнуть, все работает. Т.е. каким-то образом при включении прибора на выходе ШИМа появляется открывающий полностью ключ сигнал. Может, есть какая-то специфика прописывания пинов для ШИМа, потому что когда выход работал как digitalRight, при включении все было нормально.

  if (setTempS >= TempS && TempS < setPreTemp && digitalRead(pinButtonOn) == HIGH) 
  { 
    analogWrite(pinTempOut, setPWM); //устанавливает ШИМ предразогрева
   }
  
  else{
    if (setTempS >= TempS && TempS >= setPreTemp && digitalRead(pinButtonOn) == HIGH)  
    {
      analogWrite(pinTempOut, 255); //устанавливает ШИМ в полностью открытое состояние
     }
  else {
    if (setTempS < TempS || digitalRead(pinButtonOn) == LOW)
    {
    analogWrite(pinTempOut, 0); //устанавливает ШИМ в полностью закрытое состояние
    if (checkTimer(&timer_msg_3)) {logS("pinTempOut --> 0;"); timer_msg_3.start = millis();}
  }
  }
  }

 

SergAG
Offline
Зарегистрирован: 22.12.2012

Снимаю вопрос, в коде ошибка