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

 

Фотография

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

приборы

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

#321 UL7AAjr

UL7AAjr

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

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

Отправлено 18 September 2013 - 08:56

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

Последняя сборка:
https://docs.google....dit?usp=sharing

Тем не менее, универсальный датчик в приложении служит только для отображения содержимого регистров. В нашем случае лучше использовать датчик "влажность/температура", у него все регистры уже настроены и приложение может включать реле датчика при необходимости полива. Датчик "насос", при его наличии, также обрабатывается в приложении и включает его реле перед включением полива.

По поводу генератора ВЧ. В МК STM8L можно вывести тактовую частоту с заданным предделителем на одну из ножек. Если такая штука есть на вашем МК, то это можно использовать вместо DAC.

#322 vovka.sv19

vovka.sv19

    Участник

  • Пользователи
  • PipPipPip
  • 43 сообщений
  • Меня зовут:Владимир
  • Пол:

Отправлено 18 September 2013 - 09:11

Можно еще датчик освещенности сделать....

Может чем-то поможет: http://www.microchip...ead.php?t=13760

#323 nikr

nikr

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

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

Отправлено 19 September 2013 - 00:53

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


Попробовал, в последней сборке этих ошибок нет :good:

Тем не менее, универсальный датчик в приложении служит только для отображения содержимого регистров. В нашем случае лучше использовать датчик "влажность/температура", у него все регистры уже настроены и приложение может включать реле датчика при необходимости полива. Датчик "насос", при его наличии, также обрабатывается в приложении и включает его реле перед включением полива.

В универсальном датчике реле управлять можно, записывая значение в регистр 2. Ну это вручную. Попробовал тип датчика "влажность/температура" дополнить своими регистрами - показывает все нормально и релюшкой штатно дрыгать можно.

По поводу генератора ВЧ. В МК STM8L можно вывести тактовую частоту с заданным предделителем на одну из ножек. Если такая штука есть на вашем МК, то это можно использовать вместо DAC.


Нет, так на ATmega328 не получится. Там можно только с привязанной ножки к таймеру сигнал забрать да и DAC там тоже нету.

#324 UL7AAjr

UL7AAjr

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

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

Отправлено 19 September 2013 - 10:19

Нет, так на ATmega328 не получится. Там можно только с привязанной ножки к таймеру сигнал забрать да и DAC там тоже нету.


Посмотрел спецификацию на 328, и правда, как-то бедненько. DMA похоже тоже отсутствует, всю перифирию "вручную" обрабатывать надо. Ну да ладно, главное, что работает.

Наверное все-же займусь посерьезнее экспериментами с ВЧ сенсорами. Не дает мне покоя эта тема. Тем более по "железу" мне уже делать почти нечего.

#325 nikr

nikr

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

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

Отправлено 21 September 2013 - 01:46

Игорь, повозился с настройками датчика в вашем приложении. Не получается изменить пересчет. То есть в режиме "по двум точкам" регистр сохраняется, а значение нет. В режиме "смещение- множитель" та же петрушка с множителем. В режиме "делитель напряжения" то же самое с R1 и R2.

#326 UL7AAjr

UL7AAjr

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

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

Отправлено 21 September 2013 - 08:42

Понятно, где-то накосячил, в понедельник исправлю.

Странно, все перепроверил, как работало, так и работает.

Николай, а не может быть, что у вас разделитель целой и дробной части "запятая", а программа понимает, что должна быть "точкка"? Попробуйте в панели управления Windows включить "точку" как разделитель целой и дробной части.

 

Я пробовал не полностью набирать число, а менять то что в окне. Пробовал менять и целую часть и дробную. В окошке меняется, а после нажатия enter возвращается к исходной.

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



#327 nikr

nikr

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

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

Отправлено 23 September 2013 - 03:18

Вроде проверку своего датчика закончил. Добавил в датчик фильтрацию сенсоров по формуле S=(1-a)*S+a*Snew; где 0<=а<=1. Коэфициент поставил 0.2. Серву, при подключению к датчику, приходится питать от внешнего источника. Кренка на датчике(100mw) слабовата для внешней нагрузки. При питании сервы от датчика эффект был такой. Пишу в 40002 угол поворота - серва дергается. и встает обратно на ноль. читаю 40002 - в нулях. Оказалось происходит рестарт процессора по просадке напряжения. Когда перевел серву на внешнее питание - заработала. Начал паять еще 6 штук - для цитрусов на балконе должно хватить. Игорь, ваши датчики какой процент ошибок показывают в управляющем приложении? Мой датчик где то 3,5% - то есть в минуту примерно 4 опроса в пролете. Попробовал погонять в цикле чтение (30001,30002,30003) командой 0x04 в qModMaster из 1000 пакетов ни одной ошибки

#328 UL7AAjr

UL7AAjr

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

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

Отправлено 23 September 2013 - 09:32

Из окошка забирает с запятой, а ждет с точкой.


Да, так оно и есть, ждет с точкой. Компонент подправлю, у меня тут везде принято точку использовать в качестве разделителя, вот и наступил на грабли.

Начал паять еще 6 штук - для цитрусов на балконе должно хватить.

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

...Пишу в 40002 угол поворота...


Николай, мне кажется, что лучше хранить два угла поворота (вкл, выкл), а запускать серву по команде включения реле. Дело в том, что приложение обрабатывает датчик влажности/температуры автоматически и включает реле, когда влажность падает ниже заданной и выключает при влажности выше верхней границы. Чтобы заставить приложение прописывать регистры датчика при определенных условиях, надо писать скрипты, которые я все никак не доведу до ума (слишком сложно получается).

По поводу ошибок "нет ответа". Со старой прошивкой датчиков было примерно 3-4%.С новой прошивкой 0%. А процент ошибок = 0% в qModMaster можно объяснить, скорее всего он делает несколько попыток прочитать датчик.

У меня алгоритм измерений реализован следующим образом. Один таймер настроен на прерывание четыре раза в секунду. Процедура обработки прерывания, в самом начале, увеличивает счетчик cnt_int и, если значение счетчика равно 2, то вызывает процедуру измерения. В то же время, в основном цикле, датчик слушает UART и, при наличии сигнала, сбрасывает cnt_int в 0. Получается, что измерение запускается через пол-секунды после прекращения обмена.
Прикрепленный файл  sg_errors.jpg   50.27К   13 Количество загрузок:
Первый датчик работает со старой прошивкой, остальные - с новой.

#329 nikr

nikr

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

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

Отправлено 23 September 2013 - 13:57

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


Ага, конструкция сенсора пока старая. Но он на разъеме и можно будет при желании поэкспериментировать. Графиков просыхания пока нет. До конца все не отлажено, да и с конструкцией клапана на серве надо еще повозиться.
Игорь, а у вас постоянно под управление комп работает? Не лучше сделать управляющий контроллер с трансляцией сообщений на комп для визуализации и настройки?

Николай, мне кажется, что лучше хранить два угла поворота (вкл, выкл), а запускать серву по команде включения реле. Дело в том, что приложение обрабатывает датчик влажности/температуры автоматически и включает реле, когда влажность падает ниже заданной и выключает при влажности выше верхней границы. Чтобы заставить приложение прописывать регистры датчика при определенных условиях, надо писать скрипты, которые я все никак не доведу до ума (слишком сложно получается).

Запаралелить управление управление сервой с реле мысль хорошая. Заведу еще пару регистров для сервы.

У меня алгоритм измерений реализован следующим образом. Один таймер настроен на прерывание четыре раза в секунду. Процедура обработки прерывания, в самом начале, увеличивает счетчик cnt_int и, если значение счетчика равно 2, то вызывает процедуру измерения. В то же время, в основном цикле, датчик слушает UART и, при наличии сигнала, сбрасывает cnt_int в 0. Получается, что измерение запускается через пол-секунды после прекращения обмена.


Игорь, у вас же максимальная частота опроса в управляющем 2гц, не лучше тогда измерение при cnt_int=1 производить?

Надо будет тоже подумать о привязке внутренних операций датчика к молчанию modbus. Правда у меня уже все таймеры трудятся кто на генератор, кто на индикацию, кто на серву. Хотя 3-4% ошибок погоды не делают.

#330 UL7AAjr

UL7AAjr

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

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

Отправлено 23 September 2013 - 16:14

Ага, конструкция сенсора пока старая. Но он на разъеме и можно будет при желании поэкспериментировать. Графиков просыхания пока нет. До конца все не отлажено, да и с конструкцией клапана на серве надо еще повозиться.
Игорь, а у вас постоянно под управление комп работает? Не лучше сделать управляющий контроллер с трансляцией сообщений на комп для визуализации и настройки?


Не, не проще. По крайней мере пока еще не все отлажено. Сейчас у меня есть пара старых ноутбуков для экспериментов :) Лучше потратить время на добавление доступа через WEB, Проще конечно открыть удаленный доступ к рабочему столу и настроить модем, но хотелось бы еще и с мобильника смотреть. А так, почти без остановки уже где-то месяц обкатывается с переменным успехом.

Игорь, у вас же максимальная частота опроса в управляющем 2гц, не лучше тогда измерение при cnt_int=1 производить?


cnt_int = 1 - можно нарваться на процесс обмена если он еще не закончился. Опрос UART в цикле, в основной процедуре, и не синхронизирован с таймером прерываний, может получиться так, что пакет пришел, cnt_int сбросился в "0", а прерывание сразу следом inc(cnt_int) и вот конфликт. Поэтому cnt_int = 2 реально дает задержку от 250ms до 500ms после пропадания сигнала.

Надо будет тоже подумать о привязке внутренних операций датчика к молчанию modbus. Правда у меня уже все таймеры трудятся кто на генератор, кто на индикацию, кто на серву. Хотя 3-4% ошибок погоды не делают.


Да можно в любое используемое прерывание инкремент счетчика добавить, только значение рассчитать.

В приложении поправил баг с запятой. Сейчас еще кое-что проверю и выложу.

#331 UL7AAjr

UL7AAjr

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

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

Отправлено 25 September 2013 - 07:54

Новая сборка
https://docs.google....dit?usp=sharing

Добавил принудительную постановку в очередь на полив, перенес настройки термокомпенсации из настроек RC пересчета в настройки аналогового регистра, кое-какие ошибки убрал (и какие-то добавил :)).

Николай, тут вот есть непроверенная мысль, что в конструкции сенсора (в том числе и высокочастотного) можно использовать только один электрод если надежно заземлить минус питания.

#332 nikr

nikr

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

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

Отправлено 25 September 2013 - 12:32

Добавил принудительную постановку в очередь на полив, перенес настройки термокомпенсации из настроек RC пересчета в настройки аналогового регистра, кое-какие ошибки убрал (и какие-то добавил :)).

Игорь, а как у вас алгоритм полива организован? Льет определенное время, а потом проверяет датчик? Я пробовал при включеном поливе догонять датчик до > 80% - продолжает поливать. Наверное лучше сразу по датчику отключать.

Николай, тут вот есть непроверенная мысль, что в конструкции сенсора (в том числе и высокочастотного) можно использовать только один электрод если надежно заземлить минус питания.

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

#333 UL7AAjr

UL7AAjr

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

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

Отправлено 25 September 2013 - 13:09

Игорь, а как у вас алгоритм полива организован? Льет определенное время, а потом проверяет датчик? Я пробовал при включеном поливе догонять датчик до > 80% - продолжает поливать. Наверное лучше сразу по датчику отключать.


Да, после постановки в очередь, льет заданное время не смотря на показания влажности. Надо что-то придумать. А вообще перелить сложно, впитывание происходит от 3-х часов и больше. Поэтому есть смысл поливать 30 мин, а потом пару часов ждать. Для горшков, конечно, все гораздо быстрее происходит. Попробую научить датчик изменять время в очереди заданий если уже полито как надо.

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

По науке работать должно, а на практике... Да, пробовать надо.

#334 nikr

nikr

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

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

Отправлено 28 September 2013 - 02:03

Выкладываю текущую версию датчика влажности:

схема - http://yadi.sk/d/UxZpGChVA2L8h
плата - http://yadi.sk/d/m5BVOBoZA2LHY - регулятор напряжения для сервы на плате не разведен. Я брал 7805 в корпусе Dpak, подпаивал на проводочках и размещал под платой в термоусадке
плата сенсора - http://yadi.sk/d/mPwrBaA9A2LXJ - на двустороннем стеклотекстолите, LM35 обтачивается до толщины 1,5-2 мм на наждачном бруске помещается в ямку на плате и припаивается, плата ламинируется и после этого устанавливается разъем.
прошивка - http://yadi.sk/d/fhT8O0uMA2Law - работает нормально, правда на управляющей программе Игоря есть некоторый процент ошибок связи.
небольшой коментарий - http://yadi.sk/d/N0SBoKg1A2Lma

#335 UL7AAjr

UL7AAjr

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

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

Отправлено 30 September 2013 - 18:52

Николай, поздравляю с релизом! Схему посмотрел, несколько наворочено, как мне кажется, но главное, что работает. Еще как-то не хватает пояснений ко всему этому делу. Я хоть и внимательно следил за темой, но не сразу понял что там есть и как реализовано. Меня пока не теряйте. Текущую версию управляющего приложения временно заморозил. Занялся проработкой скриптов и двигаюсь в направлении создания универсальной среды разработки и визуализации для устройств с интерфейсом ModBus. Глаза боятся - руки делают :)

#336 nikr

nikr

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

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

Отправлено 30 September 2013 - 19:55

Т.е. если загрузить прошивку в Адуино уно то данный датчик должен работать?

Здравствуйте Валерий, давненько вас в теме не видно.
Если подключить к ардуино max485, измерительную цепь, датчики температуры и опорное напряжение с вывода 3v3 через несколько килоом подать на REF - то работать будет, правда диапазон датчика влажности немного сузится (у меня на REF 1v8 подается). Прошивка пока не финальная, но работать будет. Смотрите схему и коментарий.
При заливке прошивки через USB надо отключать от ардуины max485, а то прошиваться не будет.



#337 nikr

nikr

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

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

Отправлено 30 September 2013 - 20:19

Схему посмотрел, несколько наворочено, как мне кажется, но главное, что работает. Еще как-то не хватает пояснений ко всему этому делу. Я хоть и внимательно следил за темой, но не сразу понял что там есть и как реализовано.

Игорь, я в файл Readme_GygroV3 вроде все основные моменты прокоментировал. Если еще чего надо добавить напишите.

Диммер все таки уместил в такой же корпус - теперь надо прошивкой заняться - правда под него и другие устройства надо новую тему начинать....



#338 UL7AAjr

UL7AAjr

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

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

Отправлено 30 September 2013 - 21:47

Игорь, я в файл Readme_GygroV3 вроде все основные моменты прокоментировал. Если еще чего надо добавить напишите.


Николай, я немного другое имел в виду. Как-бы короткое вступления с описанием общего функционала. Я-то разобрался, а кто начнет с последних сообщений читать не поймет. Тема-то популярная, google по запросу "датчик влажности почвы" где-то в начале ссылку сюда показывает. Хотя... кому надо - спросит. А вообще не плохо было бы законченный вариант где-нибудь в виде статьи опубликовать. Датчик - то хороший получился.


Диммер все таки уместил в такой же корпус - теперь надо прошивкой заняться - правда под него и другие устройства надо новую тему начинать....


Пожалуй надо, вам, как старожилу, и карты в руки.

Я вот сейчас прорабатываю блок питания для всей своей кучи датчиков и клапанов. Хочу сделать с аварийным питанием от аккумулятора и автоматической подзарядкой (от солнечных батарей в перспективе). Вот там как раз дисплей от Nokia и пригодится. Можно конечно просто бесперебойник + БП ATX использовать, но хотелось бы еще иметь и зарядное устройство АКБ. Я свою зарядку китайскую разобрал и ужаснулся, хорошо хоть пожара не было (собственно это и подтолкнуло к изготовлению БП + зарядка). А корпус этот как раз для БП пригодится.

Так что есть о чем поразмышлять.


PS: на самом деле я плохо понял как серва с МК взаимодействует , но, это похоже пробелы моего образования :)

#339 nikr

nikr

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

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

Отправлено 01 October 2013 - 01:00

Николай, я немного другое имел в виду. Как-бы короткое вступления с описанием общего функционала. Я-то разобрался, а кто начнет с последних сообщений читать не поймет. Тема-то популярная, google по запросу "датчик влажности почвы" где-то в начале ссылку сюда показывает. Хотя... кому надо - спросит. А вообще не плохо было бы законченный вариант где-нибудь в виде статьи опубликовать. Датчик - то хороший получился.

Понятно, из чего состоит и как работает. Добавлю. Насчет статьи тоже можно написать со временем.



Я вот сейчас прорабатываю блок питания для всей своей кучи датчиков и клапанов. Хочу сделать с аварийным питанием от аккумулятора и автоматической подзарядкой (от солнечных батарей в перспективе). Вот там как раз дисплей от Nokia и пригодится. Можно конечно просто бесперебойник + БП ATX использовать, но хотелось бы еще иметь и зарядное устройство АКБ. Я свою зарядку китайскую разобрал и ужаснулся, хорошо хоть пожара не было (собственно это и подтолкнуло к изготовлению БП + зарядка). А корпус этот как раз для БП пригодится.

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

PS: на самом деле я плохо понял как серва с МК взаимодействует , но, это похоже пробелы моего образования :)

Принимает длительность импульса от 1 до 2мс и в зависимости от нее поворачивается. 1мс - 0 град, 1,5мс - 90град, 2мс - 180град. Вот и все взаимодействие.

#340 Vell65

Vell65

    Участник

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Меня зовут:Валерий
  • Пол:
  • Город:Биробиджан

Отправлено 01 October 2013 - 07:28

Здравствуйте Валерий, давненько вас в теме не видно.

Здравствуйте, Николай!
Не участвую, но за темой с интересом наблюдаю. :) Ваш датчик на PICe отработал этим летом в теплицах без нареканий. Уезжал на месяц в отпуск на море никакого присмотра за теплицами небыло, весь отпуск маялся как там зелёные животины поживают, а это огурцы, перцы, баклажаны, помидоры. Как только вернулся в город в этот же день на дачу, радости небыло предела, хорошо, что всё подвязывается на шпалеры, а то завалилось бы всё от урожая. Так, что всё прекрасно работает. Теперь озадачился проветриванием и поддержанием заданных температурных условий. Т.к. открывашки форточек на гидроцилиндрах для помидор и баклажан не обеспечивают необходимых условий, т.е. в зависимости от температуры требуется функция принудительного перемешивания воздуха и функция дополнительного проветривания. Крышные вентиляторы уже заказал.



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

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

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

Copyright © 2024 homecitrus.ru
 

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