Страница 1 из 2
Зависание Arduino UNO
Добавлено: 24 мар 2018, 10:01
slon-genia
Здравствуйте уважаемые форумчане. Проблема такова: построил блок управления инкубатором на UNO, датчик температуры и влажности HTU21, датчик температуры DS18B20, дисплей 16*8 (HD44780), переворот лотков через каждые три часа на двух реле (реверс) двигатель от стеклоочистителя жигулей. Терморегулятор- принимает сигнал от HTU21, далее сам терморегулятор реализован на блоке PID от Boroda и работает в импульсном режиме ( управление нагревателем через твердотельное реле). Работает нормально, но через время виснет наглухо сама UNO и не на что не реагирует. Помогает только сброс или вкл- выкл питания. Питается контроллер от отдельного блока питания 1А, 9В. В программе защита от зависания установлена 10с, но не срабатывает. В чом может быть проблема?
Зависание Arduino UNO
Добавлено: 24 мар 2018, 10:05
Sancho
slon-genia писал(а): 24 мар 2018, 10:01В программе защита от зависания установлена 10с
Не, не вижу.
Зависание Arduino UNO
Добавлено: 24 мар 2018, 10:15
slon-genia
Sancho писал(а): 24 мар 2018, 10:05slon-genia писал(а): 24 мар 2018, 10:01В программе защита от зависания установлена 10с
Не, не вижу.
Вылаживаю фото:
Зависание Arduino UNO
Добавлено: 24 мар 2018, 10:22
kulibinsvv
Как минимум нужно было воспользоваться поиском по форуму. Аналогичную проблему здесь разбирали неоднократно.
Для примера:
Виснет ардкинка
Сторожевой таймер ( WDT )
Зависание Arduino UNO
Добавлено: 24 мар 2018, 10:44
slon-genia
Темы эти я читал. Спасибо за ответ.
Зачем в программе реализовывать защиту от зависания если она толком не работает.
Сделать защиту на таймере 555 планирую уже когда закажу платы, то там её реализую обязательно. На данном этапе хочу разобраться с причиной, а их, как я понял может быть несколько. Буду признателен если поможете, бо яица в инкубаторе сварятся)))
Проэкт вылаживаю:
Зависание Arduino UNO
Добавлено: 24 мар 2018, 13:36
kulibinsvv
Многие радиолюбители, начинающие работать с микроконтроллерами, неправильно понимают принципы защиты от зависания.
Начинать надо с того, что зависания могут быть вызваны двумя причинами.
1. Программное зависание - это когда в программе ошибочно создаётся ситуация не позволяющая завершить выполнение фрагмента кода.
Пример: Цикл с выходом по условию, которое никогда не возникнет; ввод значения переменной, который невозможно выполнить и т.д., и т.п.
2. Аппаратное зависание - когда из-за неверной схемотехники возникают ситуации нарушающие нормальное функционирование процессора и периферии.
Пример: Наиболее распространённой ошибкой являются нарушение электромагнитной совместимости компонентов и неверный выбор источника питания. Для первого случая - это подключение мощной нагрузки практически напрямую (без гальванической развязки) к микроконтроллеру или подключение длинных линий связи напрямую к контроллеру. Что, при определённых обстоятельствах, приводит к остановке тактового генератора или разрушению информации хранящейся в памяти контроллера. Для второго случая - подключение нагрузки к блоку питания, который не может обеспечить необходимой мощности или подключение БП к нагрузке длинными проводами недостаточного сечения. В результате происходит "проседание" напряжения питания микроконтроллера, и он "останавливается".
slon-genia писал(а): 24 мар 2018, 10:44Зачем в программе реализовывать защиту от зависания
Данная защита предназначена для защиты от программных зависаний.
У вас, налицо - аппаратное.
Отправлено спустя 10 минут 8 секунд:
Перечислить все возможные проблемы связанные с зависанием просто невозможно. Для того чтобы бороться/устранять эти проблемы необходимо учиться всё время.
Зависание Arduino UNO
Добавлено: 24 мар 2018, 14:31
slon-genia
Я живу в селе. У нас проблемы с электричеством. Мигает свет часто, ВЛ-0,4кв линия слабая. Может ли быть из за этого? БП- импульсный, 1А.
Зависание Arduino UNO
Добавлено: 24 мар 2018, 15:07
kulibinsvv
БП питает всё устройство или только плату Ардуино?
А ещё лучше если вы выложите полную схему устройства.
Зависание Arduino UNO
Добавлено: 24 мар 2018, 16:03
slon-genia
kulibinsvv писал(а): 24 мар 2018, 15:07БП питает всё устройство или только плату Ардуино?
А ещё лучше если вы выложите полную схему устройства.
Только плату ардуино, HTU-21, дисплей 16*8, ds18B20, два электромагнитных реле через ключи и твердотельное реле на нагрев все от одного БП. Силовая цепь мотор- редуктора переворота лотков запитанна от компьютерного БП. Схему нарисую и выложу позже.
Зависание Arduino UNO
Добавлено: 24 мар 2018, 16:14
kipiaxxx
slon-genia писал(а): 24 мар 2018, 14:31Я живу в селе. У нас проблемы с электричеством. Мигает свет часто, ВЛ-0,4кв линия слабая. Может ли быть из за этого?
КОНЕЧНО! От таких "миганий" нередко даже промышленные ПЛК виснут.
"Семь бед - один ресет", аппаратный сторожевой таймер - наше всё.
Зависание Arduino UNO
Добавлено: 24 мар 2018, 16:29
slon-genia
kipiaxxx писал(а): 24 мар 2018, 16:14slon-genia писал(а): 24 мар 2018, 14:31Я живу в селе. У нас проблемы с электричеством. Мигает свет часто, ВЛ-0,4кв линия слабая. Может ли быть из за этого?
КОНЕЧНО! От таких "миганий" нередко даже промышленные ПЛК виснут.
"Семь бед - один ресет", аппаратный сторожевой таймер - наше всё.
Запитал от АКБ. Посмотрю что будет)))
Зависание Arduino UNO
Добавлено: 26 мар 2018, 05:31
kulibinsvv
[ref]slon-genia[/ref], результаты, какие-нибудь, сообщите!
Зависание Arduino UNO
Добавлено: 26 мар 2018, 07:52
slon-genia
kulibinsvv писал(а): 26 мар 2018, 05:31[ref]slon-genia[/ref], результаты, какие-нибудь, сообщите!
Извиняюсь, что не отписывался. Выбросил свой БП, и подключил всю электронику к автомобильному акамулятору. Глюков стало в разы меньше, (был только один с 24.03.2018. Дисплей не светился, ардуина не подавала признаков жизни, далее RESET и заработало.). Теперь копаю в сторону i2c шины. У меня на ней сидит дисплей, часы, датчик температуры. Датчик температуры в экране, к нему нету притензий, а вот часы и дисплей соеденены проводками длинной по 10 см примерно. Думаю, что с этим чтото связанно. Что посоветуете? Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c.
Зависание Arduino UNO
Добавлено: 26 мар 2018, 09:31
Rishelie
slon-genia писал(а): 26 мар 2018, 07:52Что посоветуете? Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c.
По уму шина i2c должна идти либо плоским шлейфом, где сигналы идут разделенные землей. Либо витой парой, где каждый сигнал свит с землей. Во втором случае, на обеих концах шлейфа, на шину питания нужно вешать небольшой кондер-электролит.
Зависание Arduino UNO
Добавлено: 26 мар 2018, 10:04
pan
если на шину 10 см действительно наводки (хотя сомневаюсь) то можно уменьшить номинал подтягивающих резисторов.
Зависание Arduino UNO
Добавлено: 26 мар 2018, 11:52
Rishelie
slon-genia писал(а): 26 мар 2018, 07:52Выбросил свой БП, и подключил всю электронику к автомобильному акамулятору. Глюков стало в разы меньше
Если запитываете от авто, то нужно по питанию сначала диод, со стороны сети авто, потом кондер. А лучше кондер-дроссель-кондер. Сеть авто не сглаженная, там просадки по напряжению шикарные. Поэтому в момент просадки, любое авто оборудование будет пытаться отсосать от вашей ардуины тока.

Вот потому и нуна диёд!

Зависание Arduino UNO
Добавлено: 26 мар 2018, 12:33
kulibinsvv
Rishelie писал(а): 26 мар 2018, 11:52Если запитываете от авто,
Имеется в виду аккумулятор, а не бортовая сеть автомобиля. Читайте внимательней.
Rishelie писал(а): 26 мар 2018, 09:31Что посоветуете? Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c.
Вам всё верно сказали [ref]Rishelie[/ref] и [ref=#ff8000]pan[/ref].
Проверьте дополнительно ещё все соединения проводами на предмет плохого контакта.
Но скорее всего не в этом дело.
Раз после замены источника питания сбои резко сократились, то необходимо в этом направлении и работать.
Если со схемой не получается, то выложите хотя бы фото своего детища, чтобы можно было более предметно говорить.
В первую очередь хотелось бы увидеть ключи реле и как всё это соединено.
Зависание Arduino UNO
Добавлено: 26 мар 2018, 14:03
Labu559
slon-genia писал(а): 26 мар 2018, 07:52Теперь копаю в сторону i2c шины
Прежде чем выбрать направления копания обращайте внимание на предупреждения компилятора [spoiler= или явные косяки]
Termostat.png
[/spoiler] если это не делают создатели библиотек.
Дальше, копаете возможно в правильном направлении, а вот выводы делаете,
slon-genia писал(а): 26 мар 2018, 07:52Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c
на мой взгляд, не совсем. О каких наводках может идти речь на шине I2C, если по стандарту сигнальные линии подтянуты резисторами к + питания, которые и формируют высокий уровень при отпускании линии МКонтроллером(clk, data -> INPUT) ? Низкий уровень формируется переключением выводов МК (clk, data ->OUTPUT с состояниями регистров в LOW). Это какой должна быть "наводка", что-бы на 10-ти сантиметровом соединении вызвать сбой на короткозамкнутых на землю линиях? Скорее всего причину следует искать в нарушении протокола i2c- пропуске ответа АСК ведомого устройства (если он вообще был сформирован) и ожидании мастера (МК) этого ответа. Или другими словами зависание- это ожидание ответа в безконечном цикле while. Подавляющее большинство "ардуинологов" игнорируют вообще сигналы контроля ошибок(судя по библиотекам), заменяя биты ACK и NACK дополнительным 9-м битом (ногодрыганьем) или не предусматривают выход из цикла при отсутствии ответа, или ещё хуже регистрами порта переводят сигнальные линии CLK(SCL), SDA(DIO) в состояние HIGH - проверяйте библиотеки, если нету I2C логгера.
Дальше, у Вас разные логические уровни 3,3V и 5.0V с модулей и
разберитесь с [spoiler= подтяжками сигнальных линий]
I2C_modules.jpg
[/spoiler] Удачи!
Rishelie писал(а): 26 мар 2018, 09:31где сигналы идут разделенные землей
Посмотрите пожалуйста подробности.
Зависание Arduino UNO
Добавлено: 26 мар 2018, 15:29
kulibinsvv
[ref]Labu559[/ref], зачем вы человека вводите в заблуждение? Он уже писал, что заменил источник питания и у него произошли заметные улучшения.
Прочтите сначала о чём речь.
У него абсолютно рабочая программа. И нет проблем и I2C.
Зависание Arduino UNO
Добавлено: 26 мар 2018, 15:46
Labu559
kulibinsvv писал(а): 26 мар 2018, 12:33чтобы можно было более предметно говорить
Что-то я не заметил "предмета" после Вашего сообщения и похоже арбитраж Ваш преждевременный. Есть возражения,- опровергайте, давайте вместе искать истину, а не демонстрировать экстрасенсорные способности в плане кто и что читал. Я искренне рад за Вас, я же учусь и буду Вам признателен за указание по какой из моих ссылок или рисунке присутствует ложь.
kulibinsvv писал(а): 26 мар 2018, 15:29 И нет проблем и I2C.
Смею предложить Вам дочитать 13-е сообщение до конца.