Зависание Arduino UNO

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

Зависание Arduino UNO

Сообщение slon-genia »

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

Зависание Arduino UNO

Сообщение Sancho »

slon-genia писал(а): 24 мар 2018, 10:01В программе защита от зависания установлена 10с
Не, не вижу.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21 ноя 2016, 11:05

Зависание Arduino UNO

Сообщение slon-genia »

Sancho писал(а): 24 мар 2018, 10:05
slon-genia писал(а): 24 мар 2018, 10:01В программе защита от зависания установлена 10с
Не, не вижу.
Вылаживаю фото:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 487
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 3 раза
Поблагодарили: 5 раз

Зависание Arduino UNO

Сообщение kulibinsvv »

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

Зависание Arduino UNO

Сообщение slon-genia »

kulibinsvv писал(а): 24 мар 2018, 10:22Как минимум нужно было воспользоваться поиском по форуму. Аналогичную проблему здесь разбирали неоднократно.
Для примера:
Виснет ардкинка
Сторожевой таймер ( WDT )
Темы эти я читал. Спасибо за ответ.
Зачем в программе реализовывать защиту от зависания если она толком не работает.
Сделать защиту на таймере 555 планирую уже когда закажу платы, то там её реализую обязательно. На данном этапе хочу разобраться с причиной, а их, как я понял может быть несколько. Буду признателен если поможете, бо яица в инкубаторе сварятся)))
Проэкт вылаживаю:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 487
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 3 раза
Поблагодарили: 5 раз

Зависание Arduino UNO

Сообщение kulibinsvv »

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

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

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

Зависание Arduino UNO

Сообщение slon-genia »

Я живу в селе. У нас проблемы с электричеством. Мигает свет часто, ВЛ-0,4кв линия слабая. Может ли быть из за этого? БП- импульсный, 1А.
Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 487
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 3 раза
Поблагодарили: 5 раз

Зависание Arduino UNO

Сообщение kulibinsvv »

БП питает всё устройство или только плату Ардуино?
А ещё лучше если вы выложите полную схему устройства.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21 ноя 2016, 11:05

Зависание Arduino UNO

Сообщение slon-genia »

kulibinsvv писал(а): 24 мар 2018, 15:07БП питает всё устройство или только плату Ардуино?
А ещё лучше если вы выложите полную схему устройства.
Только плату ардуино, HTU-21, дисплей 16*8, ds18B20, два электромагнитных реле через ключи и твердотельное реле на нагрев все от одного БП. Силовая цепь мотор- редуктора переворота лотков запитанна от компьютерного БП. Схему нарисую и выложу позже.
Аватара пользователя
kipiaxxx
Рядовой
Сообщения: 79
Зарегистрирован: 06 сен 2015, 14:15
Откуда: Омск
Имя: Сергей
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Зависание Arduino UNO

Сообщение kipiaxxx »

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

Зависание Arduino UNO

Сообщение slon-genia »

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

Зависание Arduino UNO

Сообщение kulibinsvv »

[ref]slon-genia[/ref], результаты, какие-нибудь, сообщите!
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
slon-genia
Сержант
Сообщения: 102
Зарегистрирован: 21 ноя 2016, 11:05

Зависание Arduino UNO

Сообщение slon-genia »

kulibinsvv писал(а): 26 мар 2018, 05:31[ref]slon-genia[/ref], результаты, какие-нибудь, сообщите!
Извиняюсь, что не отписывался. Выбросил свой БП, и подключил всю электронику к автомобильному акамулятору. Глюков стало в разы меньше, (был только один с 24.03.2018. Дисплей не светился, ардуина не подавала признаков жизни, далее RESET и заработало.). Теперь копаю в сторону i2c шины. У меня на ней сидит дисплей, часы, датчик температуры. Датчик температуры в экране, к нему нету притензий, а вот часы и дисплей соеденены проводками длинной по 10 см примерно. Думаю, что с этим чтото связанно. Что посоветуете? Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c.
Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18 дек 2017, 03:16
Откуда: Питер

Зависание Arduino UNO

Сообщение Rishelie »

slon-genia писал(а): 26 мар 2018, 07:52Что посоветуете? Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c.
По уму шина i2c должна идти либо плоским шлейфом, где сигналы идут разделенные землей. Либо витой парой, где каждый сигнал свит с землей. Во втором случае, на обеих концах шлейфа, на шину питания нужно вешать небольшой кондер-электролит.
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

Зависание Arduino UNO

Сообщение pan »

если на шину 10 см действительно наводки (хотя сомневаюсь) то можно уменьшить номинал подтягивающих резисторов.
Rishelie
Сержант
Сообщения: 150
Зарегистрирован: 18 дек 2017, 03:16
Откуда: Питер

Зависание Arduino UNO

Сообщение Rishelie »

slon-genia писал(а): 26 мар 2018, 07:52Выбросил свой БП, и подключил всю электронику к автомобильному акамулятору. Глюков стало в разы меньше
Если запитываете от авто, то нужно по питанию сначала диод, со стороны сети авто, потом кондер. А лучше кондер-дроссель-кондер. Сеть авто не сглаженная, там просадки по напряжению шикарные. Поэтому в момент просадки, любое авто оборудование будет пытаться отсосать от вашей ардуины тока. :) Вот потому и нуна диёд! :)
Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 487
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 3 раза
Поблагодарили: 5 раз

Зависание Arduino UNO

Сообщение kulibinsvv »

Rishelie писал(а): 26 мар 2018, 11:52Если запитываете от авто,
Имеется в виду аккумулятор, а не бортовая сеть автомобиля. Читайте внимательней.
Rishelie писал(а): 26 мар 2018, 09:31Что посоветуете? Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c.
Вам всё верно сказали [ref]Rishelie[/ref] и [ref=#ff8000]pan[/ref].
Проверьте дополнительно ещё все соединения проводами на предмет плохого контакта.
Но скорее всего не в этом дело.
Раз после замены источника питания сбои резко сократились, то необходимо в этом направлении и работать.
Если со схемой не получается, то выложите хотя бы фото своего детища, чтобы можно было более предметно говорить.
В первую очередь хотелось бы увидеть ключи реле и как всё это соединено.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

Зависание Arduino UNO

Сообщение 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где сигналы идут разделенные землей
Посмотрите пожалуйста подробности.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 26 мар 2018, 16:52, всего редактировалось 1 раз.
Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 487
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 3 раза
Поблагодарили: 5 раз

Зависание Arduino UNO

Сообщение kulibinsvv »

[ref]Labu559[/ref], зачем вы человека вводите в заблуждение? Он уже писал, что заменил источник питания и у него произошли заметные улучшения.
Прочтите сначала о чём речь.
У него абсолютно рабочая программа. И нет проблем и I2C.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

Зависание Arduino UNO

Сообщение Labu559 »

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей