Перейти к содержимому

 

Фотография

Самодельный датчик влажности почвы. Часть 1 (до сентября 2014)

приборы

  • Закрытая тема Тема закрыта
Сообщений в теме: 743

#501 nikr

nikr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 529 сообщений
  • Меня зовут:Николай
  • Пол:
  • Город:Москва

Отправлено 18 January 2014 - 13:06

Николай, скоро закончу прошивку для контроллера и потом займусь управляющей программой. Там надо еще обмен по RS485 настроить под все случаи драйверов.

Если функционал менять не будете, то статью уже можно написать. Файл с программой можно потом и заменить.

Кстати, вы не пробовали на одном контроллере эмулировать несколько разных?

Не совсем понял несколько разных чего? Если слейв модбас устройств, то конечно можно попробовать - только зачем? Если конкретно контроллеров, то атмега для РТОС слабовата - тут как минимум 32ой кортекс нужен.

#502 UL7AAjr

UL7AAjr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 512 сообщений
  • Меня зовут:Игорь
  • Пол:
  • Город:Алма-Ата

Отправлено 18 January 2014 - 14:03

Николай, да, несколько модбас устройств. Один канал - одно устройство. Так для совместимости удобно будет.

 

Управляющую программу на неделе закончу. Потом проверим еще раз, а я пока описание сделаю.



#503 nikr

nikr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 529 сообщений
  • Меня зовут:Николай
  • Пол:
  • Город:Москва

Отправлено 20 January 2014 - 15:07

Николай, да, несколько модбас устройств. Один канал - одно устройство. Так для совместимости удобно будет.   Управляющую программу на неделе закончу. Потом проверим еще раз, а я пока описание сделаю.

Игорь, у меня последний датчик поддерживает 8 каналов измерения, и тут возникает такая проблема, что на исполнительные устройства ножек у атмеги не хватает. Даже если бы ножек хватало, то разводка платы явно бы усложнилась и в домашних условиях изготовить было бы затруднительно. Сейчас обхожусь 1-сторонеей с 6 небольшими перемычками. Думаю, сделать отдельный исполнительный модуль на 8 каналов. Если делать разделение 1 сенсор=1 адрес, то датчик с модулем будут по 8-ми одинаковым адресам толкаться. Наверное лучше на 1 адресе оставить по 8 регистров. Погонял на новом датчике управляющую программу - за час работы ошибок не наблюдается. Отображение для окончательной версии, я бы поменял. В строке отображения датчика число в регистре совсем не нужно - достаточно значение влажности по каналу. При этом можно увеличить количество каналов. Или развернуть датчик на несколько строчек... В принципе у вас все это уже написано - на этом снимке видно http://yadi.sk/d/ax0hGce0GPiWV



#504 UL7AAjr

UL7AAjr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 512 сообщений
  • Меня зовут:Игорь
  • Пол:
  • Город:Алма-Ата

Отправлено 20 January 2014 - 16:56

... Если делать разделение 1 сенсор=1 адрес, то датчик с модулем будут по 8-ми одинаковым адресам толкаться. Наверное лучше на 1 адресе оставить по 8 регистров. ...

Почему по 8-ми одинаковым? Как раз и мысль в том, что контроллер отвечает на восемь разных адресов и, в зависимости от адреса, передает значение соответствующего канала или включает соответствующее реле. Я именно так сейчас и делаю. У меня на борту два канала реле. Контроллер может изображать из себя два разных устройства или одно с усреднением значений сенсоров. Дело в том, что намного более сложно переделать управляющее приложение для обслуживания многоканального датчика. Появится огромная куча настроек каждого регистра и действий для реакции на значения разных регистров. А эмуляция нескольких устройств на контроллере - простое и логичное решение. Я, кстати, проверил несколько датчиков на одном канале АЦП. Нормально все работает, друг другу не мешают. Алгоритм такой: - переключить сенсор (переключить питание на следующий сенсор) - подождать 250мс..500мс - читать АЦП На самом деле это все на прерывании через 250мс крутится. Четный такт - выбор сенсора, нечетный такт - чтение АЦП. Я вот только умудрился вход АЦП оставить "в воздухе" без всяких подтяжек, и при подключении разъема сенсоров как-то убил два МК подряд, пока сообразил в чем дело. А может еще и не в этом дело... В общем матчасть починю, и приложением займусь.

#505 nikr

nikr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 529 сообщений
  • Меня зовут:Николай
  • Пол:
  • Город:Москва

Отправлено 20 January 2014 - 17:46

Почему по 8-ми одинаковым? Как раз и мысль в том, что контроллер отвечает на восемь разных адресов и, в зависимости от адреса, передает значение соответствующего канала или включает соответствующее реле.

Так у меня получается сенсоры на одном контроллере, а реле на другом. Вот и получается 8 пар одинаковых адресов.

#506 UL7AAjr

UL7AAjr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 512 сообщений
  • Меня зовут:Игорь
  • Пол:
  • Город:Алма-Ата

Отправлено 20 January 2014 - 20:21

Так у меня получается сенсоры на одном контроллере, а реле на другом. Вот и получается 8 пар одинаковых адресов.

О! Такого подвоха я не ожидал :) Ладно, надо подумать как с этим бороться. Николай, а истоковый повторитель на BSS138 точно повторяет входной сигнал, или как эмиттерный повторитель отъедает немного без смещения? У меня похоже не в статике проблема, STM8L защищен диодами от этого. Есть подозрение, что когда разъем втыкаю, если сначала соединяется "+" питания, а не земля, то +12В через схему идет на вход АЦП. Вот думаю на входе повторитель поставить, АЦП защитить, пусть лучше транзистор выгорит, чем МК.

#507 nikr

nikr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 529 сообщений
  • Меня зовут:Николай
  • Пол:
  • Город:Москва

Отправлено 20 January 2014 - 20:46

О! Такого подвоха я не ожидал :) Ладно, надо подумать как с этим бороться.

А бороться особо не нужно. Сечас у вас фиксированный регистр реле на том же адресе. Если ввести в параметры сенсора адрес и номер регистра для реле, то логику менять не придется.

Николай, а истоковый повторитель на BSS138 точно повторяет входной сигнал, или как эмиттерный повторитель отъедает немного без смещения?

Истоковый повторитель должен более точно повторять напряжение на затворе, так как полевик управляется напряжением. У биполярника управление током и поэтому эмитер явно отстает от базы.

#508 UL7AAjr

UL7AAjr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 512 сообщений
  • Меня зовут:Игорь
  • Пол:
  • Город:Алма-Ата

Отправлено 23 January 2014 - 20:55

Ну вот, и думать даже не пришлось :) Все верно.

Истоковый повторитель должен более точно повторять напряжение на затворе, так как полевик управляется напряжением. У биполярника управление током и поэтому эмитер явно отстает от базы.

Не, не получилось. Истоковый повторитель отъедает больше полу-вольта от входного сигнала. Пришлось убрать и поставить резистор для ограничения тока (защитные диоды и так в МК есть). Третий раз переделал, только вот сейчас нормально заработало. Теперь можно и программой заняться. Еще заметил, что вход управления стабилизатора 2981 боится статики. Касанием пальца управляющего вывода можно включать стабилизатор, а можно и убить :) Николай, есть мысль по поводу контроллера с блоком управления реле. Как показала практика, выходы всех датчиков можно смело цеплять на один вход АЦП (сопротивление нагрузки в выходном истоковом повторителе сенсоров увеличить до 47К или вообще убрать, оставив только на входе АЦП). Для управления датчиками использовать 8 шин, их использовать для управления питанием стабилизаторов сенсоров. На контроллере реле установить простую схему с триггерами без всяких МК. Те-же самые шины управления сенсорами использовать как сигнал разрешения записи в триггеры управления реле. Еще одна шина понадобится для передачи сигнала триггеру реле. Итого нужно 10 ног наружу вывести. 1-АЦП, 8-выбор канала, 1-вкл/выкл реле. Ну дальше понятно, выбрали сенсор (подали питание) - одновременно активируется один из каналов сенсора и подается разрешение записи на один из каналов реле, а на выходе управления реле в этот момент выставляется сигнал включения/выключения. Вроде как все просто. Как вам такая идея? PS: можно вместо триггеров то-же МК использовать. Зато с модбасом заморочек не будет.

#509 nikr

nikr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 529 сообщений
  • Меня зовут:Николай
  • Пол:
  • Город:Москва

Отправлено 23 January 2014 - 23:42

Не, не получилось. Истоковый повторитель отъедает больше полу-вольта от входного сигнала. Пришлось убрать и поставить резистор для ограничения тока (защитные диоды и так в МК есть). Третий раз переделал, только вот сейчас нормально заработало. Теперь можно и программой заняться. Еще заметил, что вход управления стабилизатора 2981 боится статики. Касанием пальца управляющего вывода можно включать стабилизатор, а можно и убить :)

Игорь, померить смещение у себя на истоковых пока не могу все залито термоклеем. для защиты от статики у меня входы АЦП и ЕН стабилизатора подтянуты к нулю через резисторы 100-200к.  

Николай, есть мысль по поводу контроллера с блоком управления реле. Как показала практика, выходы всех датчиков можно смело цеплять на один вход АЦП (сопротивление нагрузки в выходном истоковом повторителе сенсоров увеличить до 47К или вообще убрать, оставив только на входе АЦП). Для управления датчиками использовать 8 шин, их использовать для управления питанием стабилизаторов сенсоров. На контроллере реле установить простую схему с триггерами без всяких МК. Те-же самые шины управления сенсорами использовать как сигнал разрешения записи в триггеры управления реле. Еще одна шина понадобится для передачи сигнала триггеру реле. Итого нужно 10 ног наружу вывести. 1-АЦП, 8-выбор канала, 1-вкл/выкл реле. Ну дальше понятно, выбрали сенсор (подали питание) - одновременно активируется один из каналов сенсора и подается разрешение записи на один из каналов реле, а на выходе управления реле в этот момент выставляется сигнал включения/выключения. Вроде как все просто. Как вам такая идея? PS: можно вместо триггеров то-же МК использовать. Зато с модбасом заморочек не будет.

На крайний случай можно и так сделать - пара разрядов у меня датчике еще есть в запасе, но проводов будет очень много и привязано к месту установки датчика. Автономные реле намного мобильнее - можно ставить в любом месте шины RS485. Тут появилась идейка... Валяется у меня блок С2000-ПКУ. На борту RS232,RS485,24LC512, Lcd 16x1 и клава 4х4. Все это крутится под PIC18F252. Можно прошивку под управляющий контроллер написать, причем по RS232 или USB-RS232 можно к компу подключиться. Главное паять вообще ничего не надо, только экранчик убогий....

#510 UL7AAjr

UL7AAjr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 512 сообщений
  • Меня зовут:Игорь
  • Пол:
  • Город:Алма-Ата

Отправлено 24 January 2014 - 10:22

Тут появилась идейка... Валяется у меня блок С2000-ПКУ. На борту RS232,RS485,24LC512, Lcd 16x1 и клава 4х4. Все это крутится под PIC18F252. Можно прошивку под управляющий контроллер написать, причем по RS232 или USB-RS232 можно к компу подключиться. Главное паять вообще ничего не надо, только экранчик убогий....

 

 

Мне кажется это как-то сложно будет и достаточно примитивно. Я бы не связывался. Как альтернатива подойдет конечно.

 

По поводу управляющего приложения и отдельного блока реле. Надумал как сделать просто и логично. Добавлю новый тип датчика "дублирующее реле" у которого будет указан номер устройства модбас для которого оно является дублирующим. Регистры температуры и влажности этого датчика даже опрашивать не буду. Логика работы и обработка стандартного датчика влажности при этом не изменится. Дополнительной операцией будет включить реле на дублирующем датчике при включении реле на основном (если для датчика влажности  задано одно или более дублирующих реле). 

 

Только немного подождать еще придется. Мне надо для отладки еще один контроллер спаять.

 

PS: истоковый повторитель проверил несколько раз с разными транзисторами. Всегда отъедает. Запустил в симуляторе multisim, срезает даже больше. Так что не выход это если нет смещения на входе. 



#511 nikr

nikr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 529 сообщений
  • Меня зовут:Николай
  • Пол:
  • Город:Москва

Отправлено 24 January 2014 - 15:02

Мне кажется это как-то сложно будет и достаточно примитивно. Я бы не связывался. Как альтернатива подойдет конечно.

От этого контроллера многого и не требуется. Опрашивать датчики в соответствии с запрограммированной базой, включать исполнительные устройства и транслировать события на комп и обратно. Управляющая программа на компе упрощается так как логика управления перенесена в контроллер. И есть несомненный плюс комп можно выключать, а система будет работать.

По поводу управляющего приложения и отдельного блока реле. Надумал как сделать просто и логично. Добавлю новый тип датчика "дублирующее реле" у которого будет указан номер устройства модбас для которого оно является дублирующим. Регистры температуры и влажности этого датчика даже опрашивать не буду. Логика работы и обработка стандартного датчика влажности при этом не изменится. Дополнительной операцией будет включить реле на дублирующем датчике при включении реле на основном (если для датчика влажности  задано одно или более дублирующих реле).

  Игорь, все это хорошо, но не забывайте об ограничении адресного пространства modbus. У нас всего 247 разрешенных адресов. Делим пополам и получаем при такой схеме 123 сенсора, 123 реле и 1 в запасе.

PS: истоковый повторитель проверил несколько раз с разными транзисторами. Всегда отъедает. Запустил в симуляторе multisim, срезает даже больше. Так что не выход это если нет смещения на входе.

Ага, тоже померил. У меня где то 1,2в съедается. Правда для моих датчиков это не критично, от них требуется диапазон от 0 до 1.1в.

#512 UL7AAjr

UL7AAjr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 512 сообщений
  • Меня зовут:Игорь
  • Пол:
  • Город:Алма-Ата

Отправлено 24 January 2014 - 15:34

От этого контроллера многого и не требуется. Опрашивать датчики в соответствии с запрограммированной базой, включать исполнительные устройства и транслировать события на комп и обратно. Управляющая программа на компе упрощается так как логика управления перенесена в контроллер. И есть несомненный плюс комп можно выключать, а система будет работать.

Тоже верно. Я вот тоже раздумываю как предусмотреть автономный режим. Вот только датчики должны уметь общаться с датчиком управления насосом. Потихоньку буду пробовать. Дисплей и кнопки на датчике не зря ведь установил :)  

Игорь, все это хорошо, но не забывайте об ограничении адресного пространства modbus. У нас всего 247 разрешенных адресов. Делим пополам и получаем при такой схеме 123 сенсора, 123 реле и 1 в запасе.

123 канала - выше крыши. Все равно на одну шину столько устройств не навесить (а если еще и с подтяжкой...). При больших количества все равно придется несколько COM портов использовать.  

Ага, тоже померил. У меня где то 1,2в съедается. Правда для моих датчиков это не критично, от них требуется диапазон от 0 до 1.1в.

Да, в сенсоре это нормально, там даже в воде какой-то сигнал как смещение имеется. А вот на вход АЦП такой "повторитель" никак не пойдет. Загрузил новую прошивку в датчик, часто пропуски без ответа (~10%). Из-за того, что он теперь еще и дисплеем занят. Может сделать в случае таймаута датчика повторный опрос или даже пару, чтоб наверняка?

#513 nikr

nikr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 529 сообщений
  • Меня зовут:Николай
  • Пол:
  • Город:Москва

Отправлено 24 January 2014 - 18:18

123 канала - выше крыши. Все равно на одну шину столько устройств не навесить (а если еще и с подтяжкой...). При больших количества все равно придется несколько COM портов использовать.

Ну да, если max485 то всего 32 адреса на все про все. а современный max3362 держит 256 устройств.

Загрузил новую прошивку в датчик, часто пропуски без ответа (~10%). Из-за того, что он теперь еще и дисплеем занят. Может сделать в случае таймаута датчика повторный опрос или даже пару, чтоб наверняка?

Игорь, может реже опрашивать и таймаут на опрос датчика в 1с поставить. У qModMaster самый мелкий таймаут 1с дальше идут 1.5,2,.... И у драйвера тогда можно время ожидания по умолчанию вернуть.

#514 UL7AAjr

UL7AAjr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 512 сообщений
  • Меня зовут:Игорь
  • Пол:
  • Город:Алма-Ата

Отправлено 26 January 2014 - 07:35

Ну да, если max485 то всего 32 адреса на все про все. а современный max3362 держит 256 устройств.

Что-то я забыл про симуляцию, физических устройств то меньше будет. Так что все 123+123 адреса спокойно на одну шину сядут. 

 

 

 

Игорь, может реже опрашивать и таймаут на опрос датчика в 1с поставить. У qModMaster самый мелкий таймаут 1с дальше идут 1.5,2,.... И у драйвера тогда можно время ожидания по умолчанию вернуть.

Можно то можно, но дело не в этом. Когда датчик занят своими делами, он не замечает запрос от компьютера. Поэтому и хочу запрос несколько раз отправить. И никакого смысла нет ждать 1 сек ответ. Если уж датчик запрос увидел, то он всегда сразу отвечает. Если тайминг  драйвера вернуть в 16мс, то таймаут больше 50 мс делать смысла тоже нету. А вот период опроса датчиков надо увеличить с учетом количества адресов и времени обмена. 



#515 UL7AAjr

UL7AAjr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 512 сообщений
  • Меня зовут:Игорь
  • Пол:
  • Город:Алма-Ата

Отправлено 28 January 2014 - 12:43

Обновление управляющего приложения.
https://drive.google...dit?usp=sharing
  • Добавлен тип датчика "Реле дублирующее". В настройках этого датчика в поле "Дублируемый датчик" присваивается номер устройства, реле которого дублируется. Можно задать несколько дублирующих реле для одного датчика.

Например имеется датчик "Влажность/температура" с кодом "7" и "Реле дублирующее" с кодом "105" и полем "Дублируемый датчик" = "7". При включения полива для датчика "7", одновременно с реле датчика "7" будет включено реле датчика "105".

  • При опросе датчиков делается три попытки. Неудачные попытки опроса попадают в список ошибок, но если из трех попыток есть одна удачная, то в статистике ошибок поле "Нет ответа" не увеличивается. Панель "Ошибки" оставлена для отладки, позже будет скрыта.

Игорь, поздравляю с обновлением. Теперь система по управлению гибче стала.



#516 Edonis

Edonis

    Новичок

  • Пользователи
  • Pip
  • 6 сообщений
  • Меня зовут:Aleks

Отправлено 28 January 2014 - 15:56

Я сейчас занят сайтом, решил поместить туда всю историю начиная с 1 версии и даже недорожденную 1-Wire версию.

Я как раз использую 1-Wire АЦП и на нем установлены контактные датчики.

 

 

Алекс, на 1-Wire АЦП можно сенсоры 7400 или 555 подключить.


#517 nikr

nikr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 529 сообщений
  • Меня зовут:Николай
  • Пол:
  • Город:Москва

Отправлено 30 January 2014 - 00:31

Николай, спасибо :) У вас сейчас уже все подключено? Оставили один электрод или добавили минусовой? Есть какие-нибудь результаты?

Игорь, сейчас подключен 1 датчик к нему 6 сенсоров. Электродов 2 длинной 6см. Смотрю статистику просыхания, правда сейчас растения малоактивны - зима. Надо будет на ваши разветвленные короткие перепаять. Модуль с реле пока не делал, да и разбивку датчика на 8 адресов тоже. Ковыряюсь с прошивкой 18f252 на которой с2000 собрана. Но результатов 0, компиляторы пока сопротивляются.



#518 UL7AAjr

UL7AAjr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 512 сообщений
  • Меня зовут:Игорь
  • Пол:
  • Город:Алма-Ата

Отправлено 30 January 2014 - 17:09

Николай, я тут изучал литературу на тему просыхания почвы. Есть два разных варианта просыхания: 1. Равномерное по глубине (вид связующих частиц - каолин) 2. С фронтом высыхания (вид связующих частиц - бентонит) Датчик с длинным генераторным электродом будет плохо работать во втором случае, нижняя часть электрода будет шунтировать верхнюю часть. Датчик с коротким генераторным электродом будет нормально работать в обоих случаях. Еще я обнаружил, что покупная земля для горшков ближе к первому типу просыхания, в то время как земля набранная в огороде - это скорее второй тип. Интересно было бы расположить несколько сенсоров горизонтально друг над другом и посмотреть как это все реально выглядит. А скорее всего это и есть самый правильный способ определения влажности почвы. Как раз многоканальные датчики пригодятся. По этому поводу серьезно обдумываю конструкцию цветочного горшка со встроенными сенсорами, расположенными на разных уровнях. PS: Николай, а может на коробку от сигнализации просто плюнуть? Все равно какая-то вещь сама в себе получится.

#519 nikr

nikr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 529 сообщений
  • Меня зовут:Николай
  • Пол:
  • Город:Москва

Отправлено 30 January 2014 - 17:50

Игорь, каолин и бентонит, как я понимаю, глина. Покупная "земля" в основном торф с незначительными добавками. Думаю. просыхать все это будет по разному. Я в последнее время мешаю покупную с садовой землей. Промежуточный контроллер вообще то не помешает, не хочется постоянно большой комп гонять. Может действительно с пиком не заморачиваться, а на той же атмеге с большим количеством Uart-ов сделать. Канал связи с большим компом можно через блютуз или вай фай организовать. А приложения для просмотра состояния и настройки системы можно установить хоть на большом под виндой хоть на смартфоне под андроидом.

#520 UL7AAjr

UL7AAjr

    Активный участник

  • Пользователи
  • PipPipPipPipPip
  • 512 сообщений
  • Меня зовут:Игорь
  • Пол:
  • Город:Алма-Ата

Отправлено 30 January 2014 - 18:25

Игорь, каолин и бентонит, как я понимаю, глина. Покупная "земля" в основном торф с незначительными добавками. Думаю. просыхать все это будет по разному. Я в последнее время мешаю покупную с садовой землей.

Еще как по разному. Я датчики на разной земле проверял, очень ощутимая разница. Поэтому и не смог длинный электрод откалибровать. Нижний слой влажной почвы шунтирует очень сильно, особенно в плотной земле. Поэтому и остановился на коротком, там все понятно <300мВ - полито, >700мВ - сухо, и от почвы особо не зависит.  

Промежуточный контроллер вообще то не помешает, не хочется постоянно большой комп гонять. Может действительно с пиком не заморачиваться, а на той же атмеге с большим количеством Uart-ов сделать. Канал связи с большим компом можно через блютуз или вай фай организовать. А приложения для просмотра состояния и настройки системы можно установить хоть на большом под виндой хоть на смартфоне под андроидом.

Николай, можно приспособить старенький ноутбук (на которых еще вентиляторы постоянно не шумят), у них еще и как-бы бесперебойник сразу есть :) И все прелести беспроводной связи и удаленного доступа.



Темы с аналогичным тегами приборы

Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей

Copyright © 2024 homecitrus.ru
 

Яндекс цитирования