Реле не хочет работать с IskraJS

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Spark, 6 дек 2017.

  1. Spark

    Spark Нерд

    Доброго времени суток. Решив поэкспериментировать с релюшками, наткнулся на весьма странную проблему: подключив реле к искре ("vcc" к "5v" ; "gnd" к "gnd" ; "in" к "P2"), а искру к компьютеру, и залив на нее код
    Код (Javascript):
    pinMode(P2, 'opendrain');
    , вижу, что зеленый светодиод после загрузки кода загорелся, красный - тоже(горел и до этого(значит, питание есть. Уже хорошо.)), релюшка разок щелкнула. Далее в терминале ввожу
    Код (Javascript):
    digitalWrite(P2, 0);
    иии... Ничего не происходит! Ну, точнее, реле не "щелкает", но зеленый светодиод уменьшает свою яркость. Именно уменьшает, а не полностью выключается(об этом пойдет речь немного позже).

    Что же будет если загрузить пустой код а потом так же подать высокий на пин?
    После загрузки пустоты, зеленый светодиод выключен, после ввода
    Код (Javascript):
    digitalWrite(P2, 0)
    всё срабатывает! Ура! Зеленый светодиод загорелся, реле щелкнула. Однако, если попробовать всё это дело включить
    Код (C++):
    digitalWrite(P2, 1)
    , то релюшка не щелкнет, а зеленый светодиод даже яркости не уменьшит, как это было в прошлом случае.

    Эксперимент номер три! Попробуем загрузить
    Код (Javascript):
    pinMode(P2, 'output');
    . После загрузки зеленый загорается, реле щелкает. Ввожу
    Код (Javascript):
    digitalWrite(P2, 0)
    //ну или же
    digitalWrite(P2, 1)
    //не важно в данном случае
    результат один и тот же: реле не реагирует.

    С библиотекой амперки ничего интересного, тоже не работает.

    А теперь самое вкусное. При подключении всего этого дела не к JS, а к Neo, и загрузке
    Код (C++):
    //это код с вики амперки. Не менялся вообще

    //Troyka-Реле подключён к пину номер 2
    #define RELAY_PIN 2
    void setup() {
      // Конфигурируем нужный пин на выход
      pinMode(RELAY_PIN, OUTPUT);
    }
    void loop() {
      // Включаем реле
      digitalWrite(RELAY_PIN, HIGH);
      // Ждём 5 секунд
      delay(2000);
      // Отключаем реле
      digitalWrite(RELAY_PIN, LOW);
      // Ждём 5 секунд
      delay(2000);
      // Далее всё повторяется
    }
    всё чудом начинает работать!!! Использовались абсолютно те же провода, что и до этого... Реле делает "щелк-щелк", зеленый светодиод нормально включается и выключается. Полностью.

    Внимание вопрос! Что происходит?
    P.s. Проверял на 2-х JS. Результат один и тот же. Пины, кстати, тоже менять пробовал...
    P.p.s Подключена нагрузка в виде лампы. Подключено всё как положено: один из проводов в разрыв и с вилки идет в "com", а выход нормально замкнутый. Следовательно про нормальной работе Зеленый светодиод горит - лампа нет.
     
    Последнее редактирование: 6 дек 2017
  2. ИгорьК

    ИгорьК Гуру

    Внимание, ответ: сообразите сами в чем существенное различие между этими платами.
     
  3. Spark

    Spark Нерд

    Пины. Верно? Только вот проблема в том, чтоина js я подключался к P2,5,7,9. Результаты одни.
     
  4. rkit

    rkit Гуру

    Электрические характеристики пинов
     
  5. Spark

    Spark Нерд

    Ну да. Только не могу что-то сообразить решение. Не кидайте помидоры...
     
  6. acos

    acos Официальный гик Администратор

    Iskra JS - 3.3 В на пинах, вместо 5 В на NEO.
    По идее должно работать, но раз не работает... Там на входе реле стоит, кажется, опторазвязка. Но после неё, по идее, должен стоять транзистор, управляющий реле.
    Могу предположить, что сопротивление в цепи светодиода опторазвязки стоит какой-то не маленький резистор. И почему-то получается так, что при 3,3 В питании тока через светодиод не хватает для нормального срабатывания опторазвязки. Возможно, замена резистора в цепи опторазвязки, или подключение всего этого дела через делитель напряжения от 5 В должно помочь.
    Попробуйте взять резистор на 220 ом. С одной стороны подключить его на 5 В, с другой стороны подключить к P9. К P9 же подключить и ваше реле. Включать реле будем через
    Код (Javascript):
    pinMode(P9, 'opendrain');
    а выключать через
    Код (Javascript):
    digitalWrite(P9, 0);
    Хотя... что-то я туплю... Оно же и так должно было работать.. Там включение нулём или единицей?
    Может наоборот, разности напряжений между 5 В и 3.3 В хватает для того, чтобы включить реле. А чтобы отключить.. Эмм. Пойду кофе выпью - не врубаюсь)
     
    Толик Иванов нравится это.
  7. Spark

    Spark Нерд

    Примерная схема модуля

    Окей, у меня где-то должна реле лежать на 3в сигнальных, попробую ещё её подключить...
     

    Вложения:

  8. acos

    acos Официальный гик Администратор

    Не, что-то не сходится у меня картинка
     
  9. Unixon

    Unixon Оракул Модератор

    Эта схема должна включать реле "0" и выключать "1"=5V.
     
  10. Dobryy

    Dobryy Нуб

    Доброго времени! Тоже проблема с мини-реле, все подключено по аналогии с "автополивщиком на даче". Питание подключено к COM, нагрузка к NO. При подаче единицы на пин светодиод реле загорается, но ничего не происходит, настольная лампа не включается, при подаче нуля реле щелкает. Ок. Попробовал наоборот, перекинул на NC, связь есть, лампа загорелась, подаю снова единицу и ничего не меняется. В чем проблема и где я не прав? Подключено все как в библиотеках или примерах.