Зависание Arduino UNO

Зависание при использовании HTU21 и дисплея 16*2

На этом форуме Вы можете задать вопросы знатокам программы и автору.
slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21.11.2016{, 11:05}
Репутация: 2

Зависание Arduino UNO

#1

Сообщение slon-genia » 24.03.2018{, 10:01}

Здравствуйте уважаемые форумчане. Проблема такова: построил блок управления инкубатором на UNO, датчик температуры и влажности HTU21, датчик температуры DS18B20, дисплей 16*8 (HD44780), переворот лотков через каждые три часа на двух реле (реверс) двигатель от стеклоочистителя жигулей. Терморегулятор- принимает сигнал от HTU21, далее сам терморегулятор реализован на блоке PID от Boroda и работает в импульсном режиме ( управление нагревателем через твердотельное реле). Работает нормально, но через время виснет наглухо сама UNO и не на что не реагирует. Помогает только сброс или вкл- выкл питания. Питается контроллер от отдельного блока питания 1А, 9В. В программе защита от зависания установлена 10с, но не срабатывает. В чом может быть проблема?

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Зависание Arduino UNO

#2

Сообщение Sancho » 24.03.2018{, 10:05}

slon-genia писал(а):
24.03.2018{, 10:01}
В программе защита от зависания установлена 10с
Не, не вижу.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21.11.2016{, 11:05}
Репутация: 2

Зависание Arduino UNO

#3

Сообщение slon-genia » 24.03.2018{, 10:15}

Sancho писал(а):
24.03.2018{, 10:05}
slon-genia писал(а):
24.03.2018{, 10:01}
В программе защита от зависания установлена 10с
Не, не вижу.
Вылаживаю фото:
Вложения
Снимок экрана_2018-03-24_09-14-24.png

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

Зависание Arduino UNO

#4

Сообщение kulibinsvv » 24.03.2018{, 10:22}

Как минимум нужно было воспользоваться поиском по форуму. Аналогичную проблему здесь разбирали неоднократно.
Для примера:
Виснет ардкинка
Сторожевой таймер ( WDT )
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21.11.2016{, 11:05}
Репутация: 2

Зависание Arduino UNO

#5

Сообщение slon-genia » 24.03.2018{, 10:44}

kulibinsvv писал(а):
24.03.2018{, 10:22}
Как минимум нужно было воспользоваться поиском по форуму. Аналогичную проблему здесь разбирали неоднократно.
Для примера:
Виснет ардкинка
Сторожевой таймер ( WDT )
Темы эти я читал. Спасибо за ответ.
Зачем в программе реализовывать защиту от зависания если она толком не работает.
Сделать защиту на таймере 555 планирую уже когда закажу платы, то там её реализую обязательно. На данном этапе хочу разобраться с причиной, а их, как я понял может быть несколько. Буду признателен если поможете, бо яица в инкубаторе сварятся)))
Проэкт вылаживаю:
Вложения
Термостат.flp
(914.13 КБ) 107 скачиваний

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

Зависание Arduino UNO

#6

Сообщение kulibinsvv » 24.03.2018{, 13:26}

Многие радиолюбители, начинающие работать с микроконтроллерами, неправильно понимают принципы защиты от зависания.
Начинать надо с того, что зависания могут быть вызваны двумя причинами.
1. Программное зависание - это когда в программе ошибочно создаётся ситуация не позволяющая завершить выполнение фрагмента кода.
Пример: Цикл с выходом по условию, которое никогда не возникнет; ввод значения переменной, который невозможно выполнить и т.д., и т.п.
2. Аппаратное зависание - когда из-за неверной схемотехники возникают ситуации нарушающие нормальное функционирование процессора и периферии.
Пример: Наиболее распространённой ошибкой являются нарушение электромагнитной совместимости компонентов и неверный выбор источника питания. Для первого случая - это подключение мощной нагрузки практически напрямую (без гальванической развязки) к микроконтроллеру или подключение длинных линий связи напрямую к контроллеру. Что, при определённых обстоятельствах, приводит к остановке тактового генератора или разрушению информации хранящейся в памяти контроллера. Для второго случая - подключение нагрузки к блоку питания, который не может обеспечить необходимой мощности или подключение БП к нагрузке длинными проводами недостаточного сечения. В результате происходит "проседание" напряжения питания микроконтроллера, и он "останавливается".
slon-genia писал(а):
24.03.2018{, 10:44}
Зачем в программе реализовывать защиту от зависания
Данная защита предназначена для защиты от программных зависаний.

У вас, налицо - аппаратное.

Отправлено спустя 10 минут 8 секунд:
Перечислить все возможные проблемы связанные с зависанием просто невозможно. Для того чтобы бороться/устранять эти проблемы необходимо учиться всё время.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21.11.2016{, 11:05}
Репутация: 2

Зависание Arduino UNO

#7

Сообщение slon-genia » 24.03.2018{, 14:31}

Я живу в селе. У нас проблемы с электричеством. Мигает свет часто, ВЛ-0,4кв линия слабая. Может ли быть из за этого? БП- импульсный, 1А.

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

Зависание Arduino UNO

#8

Сообщение kulibinsvv » 24.03.2018{, 15:07}

БП питает всё устройство или только плату Ардуино?
А ещё лучше если вы выложите полную схему устройства.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21.11.2016{, 11:05}
Репутация: 2

Зависание Arduino UNO

#9

Сообщение slon-genia » 24.03.2018{, 16:03}

kulibinsvv писал(а):
24.03.2018{, 15:07}
БП питает всё устройство или только плату Ардуино?
А ещё лучше если вы выложите полную схему устройства.
Только плату ардуино, HTU-21, дисплей 16*8, ds18B20, два электромагнитных реле через ключи и твердотельное реле на нагрев все от одного БП. Силовая цепь мотор- редуктора переворота лотков запитанна от компьютерного БП. Схему нарисую и выложу позже.

Аватара пользователя
kipiaxxx
Рядовой
Сообщения: 76
Зарегистрирован: 06.09.2015{, 14:15}
Репутация: 16
Откуда: Омск
Имя: Сергей

Зависание Arduino UNO

#10

Сообщение kipiaxxx » 24.03.2018{, 16:14}

slon-genia писал(а):
24.03.2018{, 14:31}
Я живу в селе. У нас проблемы с электричеством. Мигает свет часто, ВЛ-0,4кв линия слабая. Может ли быть из за этого?
КОНЕЧНО! От таких "миганий" нередко даже промышленные ПЛК виснут.
"Семь бед - один ресет", аппаратный сторожевой таймер - наше всё.

slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21.11.2016{, 11:05}
Репутация: 2

Зависание Arduino UNO

#11

Сообщение slon-genia » 24.03.2018{, 16:29}

kipiaxxx писал(а):
24.03.2018{, 16:14}
slon-genia писал(а):
24.03.2018{, 14:31}
Я живу в селе. У нас проблемы с электричеством. Мигает свет часто, ВЛ-0,4кв линия слабая. Может ли быть из за этого?
КОНЕЧНО! От таких "миганий" нередко даже промышленные ПЛК виснут.
"Семь бед - один ресет", аппаратный сторожевой таймер - наше всё.
Запитал от АКБ. Посмотрю что будет)))

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

Зависание Arduino UNO

#12

Сообщение kulibinsvv » 26.03.2018{, 05:31}

slon-genia, результаты, какие-нибудь, сообщите!
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21.11.2016{, 11:05}
Репутация: 2

Зависание Arduino UNO

#13

Сообщение slon-genia » 26.03.2018{, 07:52}

kulibinsvv писал(а):
26.03.2018{, 05:31}
slon-genia, результаты, какие-нибудь, сообщите!
Извиняюсь, что не отписывался. Выбросил свой БП, и подключил всю электронику к автомобильному акамулятору. Глюков стало в разы меньше, (был только один с 24.03.2018. Дисплей не светился, ардуина не подавала признаков жизни, далее RESET и заработало.). Теперь копаю в сторону i2c шины. У меня на ней сидит дисплей, часы, датчик температуры. Датчик температуры в экране, к нему нету притензий, а вот часы и дисплей соеденены проводками длинной по 10 см примерно. Думаю, что с этим чтото связанно. Что посоветуете? Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c.

Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Зависание Arduino UNO

#14

Сообщение Rishelie » 26.03.2018{, 09:31}

slon-genia писал(а):
26.03.2018{, 07:52}
Что посоветуете? Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c.
По уму шина i2c должна идти либо плоским шлейфом, где сигналы идут разделенные землей. Либо витой парой, где каждый сигнал свит с землей. Во втором случае, на обеих концах шлейфа, на шину питания нужно вешать небольшой кондер-электролит.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Зависание Arduino UNO

#15

Сообщение pan » 26.03.2018{, 10:04}

если на шину 10 см действительно наводки (хотя сомневаюсь) то можно уменьшить номинал подтягивающих резисторов.

Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18.12.2017{, 03:16}
Репутация: 6
Откуда: Питер

Зависание Arduino UNO

#16

Сообщение Rishelie » 26.03.2018{, 11:52}

slon-genia писал(а):
26.03.2018{, 07:52}
Выбросил свой БП, и подключил всю электронику к автомобильному акамулятору. Глюков стало в разы меньше
Если запитываете от авто, то нужно по питанию сначала диод, со стороны сети авто, потом кондер. А лучше кондер-дроссель-кондер. Сеть авто не сглаженная, там просадки по напряжению шикарные. Поэтому в момент просадки, любое авто оборудование будет пытаться отсосать от вашей ардуины тока. :) Вот потому и нуна диёд! :)

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

Зависание Arduino UNO

#17

Сообщение kulibinsvv » 26.03.2018{, 12:33}

Rishelie писал(а):
26.03.2018{, 11:52}
Если запитываете от авто,
Имеется в виду аккумулятор, а не бортовая сеть автомобиля. Читайте внимательней.
Rishelie писал(а):
26.03.2018{, 09:31}
Что посоветуете? Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c.
Вам всё верно сказали Rishelie и pan.
Проверьте дополнительно ещё все соединения проводами на предмет плохого контакта.
Но скорее всего не в этом дело.
Раз после замены источника питания сбои резко сократились, то необходимо в этом направлении и работать.
Если со схемой не получается, то выложите хотя бы фото своего детища, чтобы можно было более предметно говорить.
В первую очередь хотелось бы увидеть ключи реле и как всё это соединено.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

Зависание Arduino UNO

#18

Сообщение Labu559 » 26.03.2018{, 14:03}

slon-genia писал(а):
26.03.2018{, 07:52}
Теперь копаю в сторону i2c шины
Прежде чем выбрать направления копания обращайте внимание на предупреждения компилятора
или явные косякиПоказать
Termostat.png
если это не делают создатели библиотек.
Дальше, копаете возможно в правильном направлении, а вот выводы делаете,
slon-genia писал(а):
26.03.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 с модулей и разберитесь с
подтяжками сигнальных линийПоказать
I2C_modules.jpg
Суммарное Rподт.= 660ohm
Удачи!
Rishelie писал(а):
26.03.2018{, 09:31}
где сигналы идут разделенные землей
Посмотрите пожалуйста подробности.
Последний раз редактировалось Labu559 26.03.2018{, 16:52}, всего редактировалось 1 раз.

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

Зависание Arduino UNO

#19

Сообщение kulibinsvv » 26.03.2018{, 15:29}

Labu559, зачем вы человека вводите в заблуждение? Он уже писал, что заменил источник питания и у него произошли заметные улучшения.
Прочтите сначала о чём речь.
У него абсолютно рабочая программа. И нет проблем и I2C.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

Зависание Arduino UNO

#20

Сообщение Labu559 » 26.03.2018{, 15:46}

kulibinsvv писал(а):
26.03.2018{, 12:33}
чтобы можно было более предметно говорить
Что-то я не заметил "предмета" после Вашего сообщения и похоже арбитраж Ваш преждевременный. Есть возражения,- опровергайте, давайте вместе искать истину, а не демонстрировать экстрасенсорные способности в плане кто и что читал. Я искренне рад за Вас, я же учусь и буду Вам признателен за указание по какой из моих ссылок или рисунке присутствует ложь.
kulibinsvv писал(а):
26.03.2018{, 15:29}
И нет проблем и I2C.
Смею предложить Вам дочитать 13-е сообщение до конца.

Ответить

Вернуться в «Спросить у знатоков»