проблема скоммутацией реле с помощью pro mini

Тема в разделе "Arduino & Shields", создана пользователем kostrum, 15 июл 2015.

  1. kostrum

    kostrum Нуб

    Всем привет!
    Прошу прощения за ламерские вопросы, но, надеюсь, кто-нибудь поможет)
    Суть проблемы в следующем:
    имеем pro Mini, написал скетч, в котором при подаче на 13ый пин напряжения включаются 9ый и 12ый с разной задержкой. После отключения 13ого, оба отключаются с определенной задержкой.
    При подключении LED к 9 и 12 все работает верно (загораются и гаснут с нужной задержкой),
    но если вместо LED ставлю 5и-вольтовую релюшку (через транзисторный ключ), то она включается сразу после подачи питания на 13ый, а выключается сразу после снятия питания, никакими задержками даже и не пахнет.

    Подключаю как на этой схеме подключены реле к 8 и 9. (странно то, что это уже второй раз, как я использую данный метод, прошлый раз все было нормально)
     

    Вложения:

    • schema.jpg
      schema.jpg
      Размер файла:
      117,6 КБ
      Просмотров:
      917
  2. 9xA59kK

    9xA59kK Гик

    Мы наверное умеем читать мысли и видеть скетч на расстоянии.......
    А где скетч то?
     
    Последнее редактирование: 15 июл 2015
  3. kostrum

    kostrum Нуб

    упс, извиняюсь)

    Код (Text):
      //Библиотеки
    #include <Bounce.h>        //устраняет дребезг кнопок
    #include <Timer.h>          //Таймер

      //Входы
    int ACCPin = 13;            //Вход сигнала ACC

      //Выходы
    int relay = 9;              // Включение vdd_cam, отключение номера
    int easy = 12;            // Включение изикапа

      //Убираем дребезг
    Bounce ACCButton = Bounce(ACCPin,50); //Убираем дребезг сигнала ACC

      //Переменные
    int delayRelayOn = 300;          //Задержка вкл реле
    int delayRelayOff = 5000;        //Задержка выкл реле

      //Таймеры
    Timer timer;
    int powerOnTimer;
    int powerOffTimer;
    int relayTimerOn;
    int relayTimerOff;
    int easyTimerOff;


    void setup ()
      {
        pinMode (ACCPin, INPUT);
        digitalWrite (ACCPin, HIGH);
       
        pinMode (relay, OUTPUT);
        pinMode (easy, OUTPUT);
       
        Serial.begin(9600);
      }
     
     
    void loop()
      {
        ACC_Control();
        timer.update();
      }


    void ACC_Control()
      {
        if (ACCButton.update())
        {
          if (ACCButton.read() == LOW)
          {
            timer.stop(powerOffTimer);
            powerOnTimer = timer.after(100, doPowerOn);
             
          }
          if (ACCButton.read() == HIGH)
          {
            powerOffTimer = timer.after(delayRelayOff, doPowerOff);
          }
        }
      }
     
     
     
    void doPowerOn()
      {
      digitalWrite(easy, HIGH);  //вкл изик
      relayTimerOn = timer.after(delayRelayOn, doRelayOn);  //вкл реле с задержкой
      Serial.println ("easy on");
         
      }

    void doRelayOn()
      {
      digitalWrite(relay, HIGH);
      Serial.println ("relay on");
      }
     
    void doPowerOff()
      {

      digitalWrite (relay, LOW);
      Serial.println ("relay off");
      easyTimerOff = timer.after(delayRelayOn+300, doEasyOff);
      }  
     
    void doEasyOff()
      {
          digitalWrite(easy, LOW);  //выкл изик
          Serial.println ("easy off");
      }