Управление нагрузкой 16-20А 12В

Тема в разделе "Посоветуйте детальки", создана пользователем sharp, 27 фев 2015.

  1. sharp

    sharp Нерд

    Посоветуйте детальки для реализации проекта.
    Смысл проекта ограничить нагрузку на генератор автомобиля, для начала переключение двух нагревательных элементов 16-20А 12В в противофазе с частотой 0,5-1,5с.
    Может уже обсуждалось, тогда где.
    Пока нарыл твердотельные реле 12В реализованные на мосфет-транзисторах , непонятно только как их подключить к нано и выдержат ли они такие циклы.
    Заранее благодарен.
     
  2. ANV

    ANV Гуру

    Реле хоть покажите, там видно будет
     
  3. sharp

    sharp Нерд

    Да собственно вопрос то был, не конкретно по этой модели реле, может есть готовые решения поэтому и спрашиваю....... Извините если неправильно вопрос задал
    а так вообще вот: http://www.12v.ru/site.xp/052055055124049057051056124.html
    то что там написано про момент включения не говорит о его работе в течении скажем 15 минут правильно, реле может сгореть, но это мое ИМХО.
     
  4. ANV

    ANV Гуру

    А что, неплохое реле даже автомобильное.
    Я бы подключал по схеме 1б, поставив вместо ключа S транзистор, а им уже с ардуины управлять. Единственное чем оно плохо подходит - это схема плавного включения. Она дает включение за 0,1сек, а это близко к вашим 0,5
     
  5. sharp

    sharp Нерд

    Хотелось бы включение по графику квадратная пила.
    т.е. управлении ардуиной, получится грубоватое, от 1 сек на канал думается. Поправьте если ошибаюсь.
     
    Последнее редактирование: 28 фев 2015
  6. sharp

    sharp Нерд

    Не ругайте за тупость...
    Почитал это:http://wiki.amperka.ru/конспект-arduino:полевой-транзистор
    вот это:http://wiki.amperka.ru/конспект-arduino:бегущий-огонек
    и вот это:http://wiki.amperka.ru/конспект-arduino:кнопочный-переключатель
    как я вижу, взамен диодов вставить транзисторы, которые будут управлять силовыми реле, и будет счастье, вопрос как соединить два этих скетча - кнопки и цикла.

    Код (Text):
    #define BUTTON_PIN  3
    #define LED_PIN    13
    boolean buttonWasUp = true;  
    boolean ledEnabled = false;
    void setup()
    {
      pinMode(LED_PIN, OUTPUT);
      pinMode(BUTTON_PIN, INPUT_PULLUP);
    }
    void loop()
    {
      boolean buttonIsUp = digitalRead(BUTTON_PIN);
        if (buttonWasUp && !buttonIsUp) {
        delay(10);
          buttonIsUp = digitalRead(BUTTON_PIN);
        if (!buttonIsUp) {  
          ledEnabled = !ledEnabled;
          digitalWrite(LED_PIN, ledEnabled);
        }
      }
        buttonWasUp = buttonIsUp;
    }
    Код (Text):

    #define FIRST_LED_PIN  2
    #define LAST_LED_PIN  3
    void setup()
    {
      for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; ++pin)
        pinMode(pin, OUTPUT);
    }
    void loop()
    {
      digitalWrite(pin, HIGH);
      delay(10);
      digitalWrite(pin, LOW);
    }
    Новичок я в этом...:rolleyes:
     
  7. vvr

    vvr Инженерище

    нажал кнопку - первый загорелся, второй погас.
    ещё нажал - первый погас, второй загорелся.

    Код (Text):
    #define BUTTON_PIN    2
    #define LED_1          3
    #define LED_2          4
    boolean buttonWasUp = true;
    boolean LED_1state = false;
    boolean LED_2state = true;

    void setup()
    {
      pinMode(LED_1, OUTPUT);
      pinMode(LED_2, OUTPUT);
      pinMode(BUTTON_PIN, INPUT_PULLUP);
    }

    void loop()
    {
      boolean buttonIsUp = digitalRead(BUTTON_PIN);
      if (buttonWasUp && !buttonIsUp)
      {
        delay(10);
        buttonIsUp = digitalRead(BUTTON_PIN);
        if (!buttonIsUp)
        {
          LED_1state = !LED_1state;
          LED_2state = !LED_2state;
          digitalWrite(LED_1, LED_1state);
          digitalWrite(LED_2, LED_2state);
        }
      }
      buttonWasUp = buttonIsUp;
    }

     
     
  8. sharp

    sharp Нерд

    нее... надо не так... нажал кнопку заработал цикл....нажал на кнопку отключился цикл.... цикл - это переключение между каналами (светодиоды, реле, транзисторы и пр...) со скоростью 0,5сек
     
  9. vvr

    vvr Инженерище

    при отключённом цикле ничего не горит?
     
  10. vvr

    vvr Инженерище

    вот попробуй, только нет в коде антидребезга

    Код (Text):

    #define BUTTON        2  // кнопка сподтяжкой к земле через 10 ком резистор
    #define LED_1          3
    #define LED_2          4
    int val = 0;
    int old_val = 0;
    int state = 0;
    long previousMillis = 0;
    int LED_1state = LOW;
    int LED_2state = HIGH;

    void setup()
    {
      pinMode(LED_1, OUTPUT);
      pinMode(LED_2, OUTPUT);
      pinMode(BUTTON, INPUT);
    }

    void loop()
    {
      val = digitalRead(BUTTON);
      if (val == HIGH && old_val == LOW)
      {
        state = 1 - state;
      }
      old_val = val;

      if (state == 0)
      {
        digitalWrite(LED_1, LOW);
        digitalWrite(LED_2, LOW);
      }

      if (state == 1)
      {
        unsigned long currentMillis = millis();  
        if(currentMillis - previousMillis > 500)
        {
          previousMillis = currentMillis;
          LED_1state = !LED_1state;
          LED_2state = !LED_2state;
          digitalWrite(LED_1, LED_1state);
          digitalWrite(LED_2, LED_2state);
        }
      }
    }



     
     
    Последнее редактирование: 28 фев 2015
  11. sharp

    sharp Нерд

    если антидребезг тиснуть с другого скетча, куда его вставить....или это в скетчах не принципиально по структуре. А скетч с циклом который я указал, он не подходит в принципе?
     
  12. vvr

    vvr Инженерище

    не, я понимаю что ты не особо кумекаешь, но потрудись хоть что то почитать...:), хотя бы про дребезг контактов кнопки, форумы и гугль в помощь.
     
  13. sharp

    sharp Нерд

    Все понял, проникся замечанием, вернемся к названию ветки "посоветуйте детальки". первый пост
     
  14. Tomasina

    Tomasina Сушитель лампочек Модератор

    А какой смысл включать нагревательный элемент на 0,5 сек? Он даже нагреться не успеет.
     
  15. sharp

    sharp Нерд

    Смысл такой, мы включаем нагревательный элемент на 0,5 сек в течении 10 минут через каждые 0,5 сек, учитывая свойство обогреваемого устройства (его инерционность) оно прогревается, так как в устройстве два нагревательных элемента, то каждый обогреватель включаясь на 0,5 сек делая свое дело....
    Согласитесь 40А или 20А есть разница.
     
  16. Tomasina

    Tomasina Сушитель лампочек Модератор

    Попробуй включать чайник раз в секунду. Он нагреет воду хотя бы до тёплого состояния?
     
  17. sharp

    sharp Нерд

    Ну попробуй по включай чайник на 0,5 сек в течении 10 минут,...............закипитт, но вы видимо не понимаете смысл, ДВА нагревателя включаются в противофазе 0,5 сек т.е. за 5мин.........
    Что тут спорить, это решение уже давно используется.... главное ограничить нагрузку на генератор.... смотрим пример:
    1. двухзонный обогрев стекла
    2. обогрев рулевой рейки
    3. обогрев амортизаторов
    4. обогрев КП
    5. обогрев РК
    6. обогрев аккумулятора
    это не включая основных нагрузок автомобиля, инжектор и т.п.
    как по вашему эту нагрузку накинуть скажем на генератор 100 А...
    надо ограничиваться по времени
     
  18. ANV

    ANV Гуру

    Учитывая тепловую инерционность можно смело греть по 5-10 секунд
     
  19. sharp

    sharp Нерд

    ну это если амотизаторы или коробка, там где масло... сейчас речь о лобовом стекле, толщина 4мм плюс свойство материала и желание его по быстрее отогреть..
     
  20. Tomasina

    Tomasina Сушитель лампочек Модератор

    я о том и толкую. За 0.5 сек НЭ не успеет нагреться и на 20% своих возможностей, и неважно сколько их - 2 или 8, работает-то только один, второй в это время остывает. Итоговое время прогрева увеличится пропорционально количеству НЭ, потому как количество энергии ты подаешь меньше.