1 2 3 4 5 6 7 8 9 10 9/10 9,18оценок: 11

Контроллер для теплицы на Arduino

Тема в разделе "Теплицы и парники", создана пользователем Cofessor, 20.10.15.

Статус темы:
Закрыта.
  1. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471
    Адрес:
    Брянск
    Это я сразу проверил. Функции lcd. createChar(); менял местами, задержку вводил, коды всех единиц, пытался менять параметры настройки МК в Arduino IDE и в Edit Properties Proteus-а. Однако код, записанный в памяти CGRAM LCD1602 первым, выводится неправильно. Мне кажется что глиф в CGRAM записывается правильно, а ошибка происходит при считывании из-за рассинхронизации LCD и МК. Температура с датчиков тоже не отображается, хотя в версии с модулем Arduino Nano всё работало правильно. С фьюзами, правда, специально не разбирался, поскольку частоту в Arduino IDE указал через меню, а в Proteus они параметры установились по умолчанию.
     
  2. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471
    Адрес:
    Брянск
    Запустил симуляцию первой версии контроллера, отличающуюся только распайкой выводов на LCD и использованием платы Arduino Nano вместо чипа - всё работает:
    Безымянный.jpg
    Запускал в среде Arduino IDE устанавливая в меню Инструменты -> Плата и Arduino Nano и Arduino Pro or Pro Mini и AT328P - Proteus-у вообще глубоко начхать что там установлено, плата какая или чип, МК то всё равно идентичный и выводы совпадают. Устанавливать в Arduino IDE файлы под чип AT328P, как я понял, нужно только для того, чтобы залить hex-файл в чип через ISP, да и то, наверное из под Arduino Pro or Pro Mini можно.
    Вся проблема, как я понял, в том, что при замене в Proteus-е платы Arduino на голый МК ему неправильно передаётся настройка, а вот как это исправить?
     
  3. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.583
    Благодарности:
    3.398

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.583
    Благодарности:
    3.398
    Адрес:
    Ногинск
    А на макете не хочешь попробовать?
    Софт с его ошибками это одно а макет в железе это совсем другое.
     
  4. alex_k11
    Регистрация:
    19.09.07
    Сообщения:
    15.253
    Благодарности:
    7.950

    alex_k11

    Живу здесь

    alex_k11

    Живу здесь

    Регистрация:
    19.09.07
    Сообщения:
    15.253
    Благодарности:
    7.950
    Адрес:
    Москва
    Cofessor, 21.10.15

    както не быстро у вас автоматизация двигается. 2 года однако.
     
  5. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471
    Адрес:
    Брянск
    Так это ж надо все SMD элементы заменить, включая 2 процессора. Здесь уже макет - сама собранная плата. Но наверное так и придётся делать, потому что подружить МК, среду ардуино и протеус никак не удаётся. То LCD неправильно отображал 1 символ, датчики вообще не считывались и часы, хоть и работали, но протеус ругался на линию SDA. Настраивал, настраивал, теперь датчики заработали - LCD стало неправильно выводить все русские символы, хотя иногда проскакивают правильно.
    Налицо какая-то непонятная нестабильность. Уже отказался от закачки на протеус файла. hex, нашёл путь к файлу elf: ...\arduino_build_604643\total.ino.elf. В результате получил правильную настройку фьюзов в Edit Properties:
    Безымянный.jpg но и это не помогло. Получается, фьюзы тут не при чём. Может модель 32-пинного чипа кривая? В библиотеке протеуса есть 28-контактная, DIP-модель, можно ещё с ней попробовать, но у меня то чипы TQFP.
    Потому что как только солнышко начинало пригревать, забрасывал до зимы. В этом году вот сейчас только взялся.
     
  6. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.583
    Благодарности:
    3.398

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.583
    Благодарности:
    3.398
    Адрес:
    Ногинск
    Я сейчас на протеусе только какието мелочи отрабатываю. Чтобы им пользоваться полноценно его надо очень хорошо изучить. И все равно когда на макет перенес, у меня там то одно то другое повылазило как и у тебя.
    Сделай плату, на нее все напаяй и отлаживай, малой кровью сделать готовое устройство не получится. Поэтому те кто начинает делать понимают что себестоимость первого нормально работающего образца высока. Заменить все SMD не так сложно на выводные. Зато 100% отлаженный готовый проект будет.
     
  7. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471
    Адрес:
    Брянск
    Я имел в виду сразу делать целевое устройство на SMD. МК - тот же, обвязка та же. Нет только узла программирования по USB, стабилизатора, светодиода, да выводы от МК к LCD другие, но это уже проверено. Подключение остальных датчиков такое же. В программе изменены только выводы в строчке LiquidCrystal lcd (4,5,6,7,8,9);.
    Обвязку для DS3231N взял типовую, по даташиту, но можно просто скопировать со схемы модуля RTC.
    Реле подключены через SS8050 - такие же ключи, как в модулях реле, только без оптронов.
    Вроде там ничего такого и не остаётся, что могло бы не работать, остаётся код загрузить в чип, а после этого уже можно отлаживать программу на реальном устройстве, можно и без протеуса обойтись, только что физические характеристики снять будет нельзя.
     
  8. timon2006
    Регистрация:
    09.03.15
    Сообщения:
    979
    Благодарности:
    1.356

    timon2006

    Живу здесь

    timon2006

    Живу здесь

    Регистрация:
    09.03.15
    Сообщения:
    979
    Благодарности:
    1.356
    Посмотрите, как сконфигурирован порт, на котором висит SDA (вход или выход, наличие подвеса на + питания (обязателен). Возможно, на этой же линии висит еще чей-то выход.
    :super:. Вот, сразу бы так! Любые нужные характеристики снимаются тестером и осциллографом (ну, еще может в программе временно что-то подправить придется)
     
  9. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471
    Адрес:
    Брянск
    Да вроде уже всё проверил и попробовал, но LCD стабильно не работает и симулятор ругается на вход SDA. У меня, к тому же, внешние резисторы подвешены. Грешил на настройку МК и на передачу компиляции из среды Arduino IDE в Proteus, но нашёл примеры в сети, где всё так же делается, но у них всё работает. Возможно текст моего скетча некорректен, ибо проггер я ещё тот, но тогда почему этот же скетч с платой Arduino Nano Протеус симулирует правильно, а с чип at328p - глючит?
     
  10. Greeds74
    Регистрация:
    07.07.16
    Сообщения:
    113
    Благодарности:
    112

    Greeds74

    Живу здесь

    Greeds74

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    113
    Благодарности:
    112
    Адрес:
    Новороссийск
    Уважаемый Cofessor! Касательно вашего дизайна печатной платы есть несколько может не важных, но примечаний.
    Первое - вы ширину дорожек, которые идут на реле, увеличьте. Иначе ток в 1 А уже будет ощутимо нагревать ее. Или лужение дополнительное этих частей - но вам будет трудно толщину выдержать.
    Потом, желательно сделать прорези между высоковольтными выводами - всё-таки воздух будет лучше всего изолировать.
    И зазор между ножками реле, которые идут на катушку, и силовым выходом, лучше сделать побольше. Это что касается безопасности.
    И выбранные вами реле не самые надёжные, я их разбирал как-то. Поэтому сейчас применяю омроновские G5BN-1A-E-5VDC.

    .
    Если вы работаете в P-CAD, то я могу вам поправить разводку.
    А так очень даже хорошо.
     
    Последнее редактирование: 10.01.18
  11. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471
    Адрес:
    Брянск
    Спасибо, поправлю.
    Я всё в Proteus делаю - принципиальную схему, трассировку, эмуляцию, может и программу буду в нём писать. Пока же пишу в Arduino IDE и, чувствую, сталкиваюсь с глюками именно поэтому, т. к. пользуюсь "народными" библиотеками.
    Сейчас, как раз, возникло много проблем из-за замены модулей ардуино на рассыпные компоненты (описал выше).
     
  12. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471
    Адрес:
    Брянск
    Заменил в старой работающей схеме и программе модуль Arduino Uno на чип AT328P. Шрифт стал отображаться правильно:
    Безымянный.png
    Но датчики не работают и сообщение о конфликте уровней на линии SDA сохранился. Впрочем, не обратил внимание раньше, это сообщение и при эмуляции старой схемы появлялось, видимо это нестыковки какие-то системы Arduino IDE и Proteus, или же глючная библиотека #include <DS1307.h>.
     
  13. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471
    Адрес:
    Брянск
    Ну, кажется с Proteus-ом разобрался. Вся проблема полностью оказалась в настройках фьюзов, которые для AT328P должны быть такими:
    {CLKDIV8=1}
    {CKOUT=0}
    {RSTDISBL=1}
    {WDTON=1}
    {BOOTRST=1}
    {CKSEL=15}
    {BOOTSZ=0}
    {CLOCK=16MHz}
    {SUT=2}
    Программа от 1-й версии контроллера, выполненной на модулях Ардуино, начала работать и на контроллере, в котором вместо модулей использованы чипы МК AT328P и RTC DS3231. Поменял только нумерацию выводов на LCD1602. Вот симуляция в работе:
    1.jpg
    Кстати, похоже для симуляции безразлично какое устройство выбрано в меню Arduino IDE - плата Arduino Nano или AT328P, главное чтобы частота была выбрана такой же, какую выбрали в Edit Properties Proteus-а. Но при прошивке конечно нужно выбирать то устройство, в которое реально будет записываться код, иначе, как минимум, загрузчик может отобрать часть памяти камня под bootloader.
     
  14. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.294
    Благодарности:
    8.471
    Адрес:
    Брянск
    Обломался с подсветкой дисплея: оставшиеся 2 свободных вывода - ADC6 и ADC7 - не могут использоваться в качестве цифровых входов-выходов, поэтому в этой версии придётся обойтись без нею. А поскольку с Китая посылки идут иногда очень долго или вообще не приходят, успел заказать ещё 7 дисплеев LCD1602, безнадёжно устаревшие в связи с появлением дешёвых цветных TFT -экранов 128*128.
    Ещё и энергопотребление ниже и выводы МК освобождаются.
    Провёл ревизию того, что успел накупить. Начинал разработку с Arduino Uno, успел купить 3 шт. Заметил случайно что Arduino Nano - то же, по сути, только намного миниатюрнее, купил для пробы один. Затем решил и от него отказаться и перейти на чипы.
    Заодно купил модули реле:
    - на 4 канала - 2 шт.
    - на 1 канал, на 2 канала и на 8 каналов - по одному.
    Модули реле тоже решил заменить на отдельные транзисторы и реле, выбросив оптроны.
    Ну модуль реле на 8 каналов наверное ещё пригодится, потому что в этой версии контроллера всего 4 выхода и управление форточками не предусмотрено. Есть вариант вместо реле, управляющих отдалёнными приводами, использовать вот такие радио-модули.
     
  15. timon2006
    Регистрация:
    09.03.15
    Сообщения:
    979
    Благодарности:
    1.356

    timon2006

    Живу здесь

    timon2006

    Живу здесь

    Регистрация:
    09.03.15
    Сообщения:
    979
    Благодарности:
    1.356
    1. Переключить МК на работу от внутреннего генератора 8 МГц - для этой задачи скорости хватит с большим запасом. Два вывода освободится.
    2. Поставить 595 - все выходы пересадите на нее (в т. ч. управление дисплеем и подсветку). Для управления понадобятся 3 ноги. Бонусом получаете еще несколько выходов.
     
Статус темы:
Закрыта.