Автополивщик растений на Arduino (Iskra Neo) не работает

Тема в разделе "Arduino & Shields", создана пользователем Gvozd, 12 авг 2015.

  1. Gvozd

    Gvozd Нуб

    Добрый день. Собрал по инструкции поливалку на Искра нео http://wiki.amperka.ru/projects:irrigator, изменения вместо транзисторного ключа, реле включаемое от оптопары (схема рабочая на 100%! схема отсюда http://zelectro.cc/Relay1ch). Проблема в следующем: с выхода 4 Искры нео при сухой земле подаётся напряжение 1.47 В, а реле не срабатывает - не включается оптопара. Оптопара (проверено опытным путём) срабатывает при минимальном напряжении питания 1.42 В.
    Что я не так подключил или ошибка в коде?
    Спасибо.
     
  2. MDV

    MDV Гик

    Код (Text):
      pinMode(2, OUTPUT);
      pinMode(3, OUTPUT);
      pinMode(5, OUTPUT);
    Что то в примере нет назначения 4 го пина
     
  3. DrProg

    DrProg Вечный нерд

    В примере датчик влажности висит на A0, 4 выход не участвует в первом примере никак. Он участвует во втором в качестве сигнала на включение реле. Если и у вас 4 пин приспособлен для этого, то вопрос: почему подается 1,47В, а не 5В как положено при HIGH на цифровом пине? При 1,47 разве что светодиод индикатора на этой релюшке будет светить, само же реле не сработает. Скетч покажите полностью.
     
  4. MDV

    MDV Гик

    не увидел второй пример.
     
  5. Gvozd

    Gvozd Нуб

    Спасибо за ответы. Немного пояснений: скетч с Амперки один в один - ВАРИАНТ там один или ткните носом во второй вариант. На фотках видно подключение сигнального провода, идущего на транзисторный ключ в моём случае на первую лапу 0птопары, пин 4 (номер указан на плате).
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(5, OUTPUT);
    и в таком варианте кода на 4 пине 1,47 Вольта, на 2 и 5 напряжения нет - 0. Почему подаётся 1,47 В не знаю, этого напряжения достаточно чтобы сработала оптопара, светик указывающий включение реле мне не нужен - реле слышно.
    Силовой ключ на фото подключен именно к пин 4 (видно что 7, 6, 5 свободны), а в тексте указан 5.

    Может быть вот так:

    #include "QuadDisplay.h"
    #define RELAY_PIN 4
    const int HUMIDY_MIN = 200;
    const int HUMIDY_MAX = 700;

    void setup(void)
    {
    pinMode(RELAY_PIN, OUTPUT);
    pinMode(3, OUTPUT);

    displayInt(3, 0);
    }

    char intDigit(unsigned int val, char pos)
    {
    char buf[6];
    sprintf(buf, "%04u", val);
    return buf[3-pos]-'0';
    }

    unsigned int intDigitSet(unsigned int val, char pos, char d)
    {
    char buf[6];
    sprintf(buf, "%04u", val);
    buf[3-pos] = '0'+d;
    return atoi(buf);
    }

    unsigned int readHumidy(void)
    {
    static unsigned int oldval = 0;
    static unsigned int res = 0;
    static unsigned int stability[4] = { 0, 0, 0, 0 };
    char i;
    unsigned int val = analogRead(A0);
    for(i = 0; i < 4; i++) {
    if(intDigit(oldval, i) != intDigit(val, i)) {
    oldval = intDigitSet(oldval, i, intDigit(val, i));
    stability = 0;
    }
    else {
    if(stability < 10) stability++;
    else res = intDigitSet(res, i, intDigit(val, i));
    }
    }
    return res;
    }

    void loop(void)
    {
    static unsigned long wait = millis() + 60000;
    static unsigned int oldhumidy = 0;
    static unsigned long stability = 0;
    unsigned int humidy = readHumidy();
    if(humidy != oldhumidy) {
    oldhumidy = humidy;

    displayInt(3, humidy);
    }
    if(wait != 0 && wait-millis() > 5000) {
    return;
    } else wait = 0;
    if(humidy < HUMIDY_MIN) {
    digitalWrite(RELAY_PIN, HIGH);
    delay(50000);

    wait = millis() + 3*60000;
    }
    }

    ПРОВЕРЬТЕ ПЛИЗ.
    Спасибо.
     
  6. DrProg

    DrProg Вечный нерд

    1. Для начала правильно оформите скетч, в редакторе сообщений есть волшебная кнопка рядом с кавычками.
    2. Упомянутых фоток не видно.
    3. Схему сборки в студию, если она отличается от той что на ссылке.
    4. Фото реле в студию.

    Я писал не про варианты а про примеры из ваших ссылок.
    Если слышно как срабатывает реле, почему вы пишете что оно не срабатывает?
     
    Последнее редактирование: 13 авг 2015
  7. DrProg

    DrProg Вечный нерд

    Да и еще, ломая глаза я немного посмотрел на скетч и увидел строки:
    Код (Text):
    void loop(void)
    {
    static unsigned long wait = millis() + 60000;
    то есть таймер обновляется каждую интерацию лупа? Нафига? Это же не будет работать.
     
  8. Gvozd

    Gvozd Нуб

    Спасибо.
    Обо всём по порядку.
    Схема релешилда - собрана на макетке, подключено напряжение (для оптопары 1,42 В источника постоянного тока, реле от батарейки крона, в будущем будет 12 В), в качестве нагрузки включаемой НР контактом реле подключен светодиод. Всё работает, а от Искры нео нет.
    Реле TR20.
    На фото подключение силового ключа с Амперки.
    Скетч брал с Амперки - программирование - дремучий лес.
     

    Вложения:

    • схема 001.jpg
      схема 001.jpg
      Размер файла:
      154,2 КБ
      Просмотров:
      830
    • реле.jpg
      реле.jpg
      Размер файла:
      14,8 КБ
      Просмотров:
      653
    • сил кл.jpg
      сил кл.jpg
      Размер файла:
      61,8 КБ
      Просмотров:
      755
  9. DrProg

    DrProg Вечный нерд

    Вникать надо. Опять же противоречия в показаниях, вначале было про реле на оптопаре, а в конце про обычное э/м реле. Первое требует отдельного питания и земли, причем питание строго по номиналу - будет больше спалишь, будем меньше не сработает. Простое же щелкает от HIGH пина в виде 5В. Оно как бы в скетче одинаково, но схема подключения и философия разная.
     
  10. MDV

    MDV Гик

    Вернемся к началу.
    1. где измеряешь напряжение непосредственно на оптопаре или на МК?
    2. сопротивление резистора точно 1кОм?
    3 для проверки схемы реле подключи провод не к 4 пину а к +5V естественно должно включиться.
     
  11. Gvozd

    Gvozd Нуб

    Привет.
    Схема реле шилда полностью работоспособна.
    Скетч который я привёл в посте - это компановка из двух скетчей с Амперки: автополивщик (выкинул от туда пин 2 и 5) + скетч реле шилд (выкинул от туда временные промежутки включения выключения).
    Реле шилд подключил к 4 пину. Работа выглядит так: при замкнутом датчике влажность почвы (щупы соединены проводом) влажность нормальная - 845 - реле не включено. Убираю перемычку - влажность ноль, срабатывает реле, но при повторном замыкании шупов датчика влажность реле не отключается.
    Как уже писал - программирование для меня дебри - помогите хотябы коменты к строкам кода в посте #6.
    Спасибо.
     
  12. MDV

    MDV Гик

    Доброго дня.
    Ну вот почти добрались до больного зуба.
    В твоем коде есть условие проверки на минимальное значение влажности при котором реле должно переключиться, но нет ни условия проверки при котором оно должно вернуться в исходное состояния ни других действий которые его вернут обратно.
    попробуй так.
    Код (Text):
      if (humidy < HUMIDY_MIN)
      {
        digitalWrite(RELAY_PIN, HIGH);
        delay(50000);
      }
      else if (humidy > HUMIDY_MAX)
      {
        digitalWrite(RELAY_PIN, LOW);
      }
      wait = millis() + 3 * 60000;
     
    ATishchenko нравится это.
  13. Gvozd

    Gvozd Нуб

    Привет.
    Спасибо за скетч - всё заработало как надо!
     
  14. MDV

    MDV Гик

    Это хорошо. :)
     
  15. mag

    mag Нуб

    Почему то не могу закачать скетч. Выдает вот такую штуку:
    Arduino: 1.6.3 (Windows 7), Плата"Arduino Nano, ATmega328"

    Изменена опция сборки, пересобираем все

    irrigator.ino:8:1: error: expected initializer before 'char'

    irrigator.ino: In function 'void loop()':

    irrigator.ino:75:3: error: expected '}' at end of input

    Ошибка компиляции.

    Это сообщение будет содержать больше информации чем
    "Отображать вывод во время компиляции"
    включено в Файл > Настройки

    Что делать?
     
  16. ostrov

    ostrov Гуру

    Поставить закрывающую фигурную скобку в loop(), написано же.
     
  17. mag

    mag Нуб

  18. mag

    mag Нуб

    стоит же http://prntscr.com/c2hoad
     
  19. ostrov

    ostrov Гуру

    Кто скриншоты постит? Текст сюда в соответствующем тэге и тогда ткну пальцем.
     
  20. mag

    mag Нуб

    сорри... так вот жешь... все взято отсюда http://wiki.amperka.ru/projects:irr...7ILpfYvDNc&utm_medium=youtube#как_это_собрать ссылка на скетч http://wiki.amperka.ru/_export/code/projects:irrigator?codeblock=0