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


- kulibinsvv
- Лейтенант
- Сообщения: 487
- Зарегистрирован: 18 сен 2015, 10:04
- Откуда: Омск
- Благодарил (а): 3 раза
- Поблагодарили: 5 раз
Зависание Arduino UNO
Имеется в виду аккумулятор, а не бортовая сеть автомобиля. Читайте внимательней.
Вам всё верно сказали [ref]Rishelie[/ref] и [ref=#ff8000]pan[/ref].
Проверьте дополнительно ещё все соединения проводами на предмет плохого контакта.
Но скорее всего не в этом дело.
Раз после замены источника питания сбои резко сократились, то необходимо в этом направлении и работать.
Если со схемой не получается, то выложите хотя бы фото своего детища, чтобы можно было более предметно говорить.
В первую очередь хотелось бы увидеть ключи реле и как всё это соединено.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
Зависание Arduino UNO
Прежде чем выбрать направления копания обращайте внимание на предупреждения компилятора [spoiler= или явные косяки] [/spoiler] если это не делают создатели библиотек.
Дальше, копаете возможно в правильном направлении, а вот выводы делаете,
на мой взгляд, не совсем. О каких наводках может идти речь на шине I2C, если по стандарту сигнальные линии подтянуты резисторами к + питания, которые и формируют высокий уровень при отпускании линии МКонтроллером(clk, data -> INPUT) ? Низкий уровень формируется переключением выводов МК (clk, data ->OUTPUT с состояниями регистров в LOW). Это какой должна быть "наводка", что-бы на 10-ти сантиметровом соединении вызвать сбой на короткозамкнутых на землю линиях? Скорее всего причину следует искать в нарушении протокола i2c- пропуске ответа АСК ведомого устройства (если он вообще был сформирован) и ожидании мастера (МК) этого ответа. Или другими словами зависание- это ожидание ответа в безконечном цикле while. Подавляющее большинство "ардуинологов" игнорируют вообще сигналы контроля ошибок(судя по библиотекам), заменяя биты ACK и NACK дополнительным 9-м битом (ногодрыганьем) или не предусматривают выход из цикла при отсутствии ответа, или ещё хуже регистрами порта переводят сигнальные линии CLK(SCL), SDA(DIO) в состояние HIGH - проверяйте библиотеки, если нету I2C логгера.slon-genia писал(а): 26 мар 2018, 07:52Как правильно соеденить модули с ардуино воизбежании наводок на шину i2c
Дальше, у Вас разные логические уровни 3,3V и 5.0V с модулей и разберитесь с [spoiler= подтяжками сигнальных линий] [/spoiler] Удачи!
Посмотрите пожалуйста подробности.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 26 мар 2018, 16:52, всего редактировалось 1 раз.
- kulibinsvv
- Лейтенант
- Сообщения: 487
- Зарегистрирован: 18 сен 2015, 10:04
- Откуда: Омск
- Благодарил (а): 3 раза
- Поблагодарили: 5 раз
Зависание Arduino UNO
[ref]Labu559[/ref], зачем вы человека вводите в заблуждение? Он уже писал, что заменил источник питания и у него произошли заметные улучшения.
Прочтите сначала о чём речь.
У него абсолютно рабочая программа. И нет проблем и I2C.
Прочтите сначала о чём речь.
У него абсолютно рабочая программа. И нет проблем и I2C.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
Зависание Arduino UNO
Что-то я не заметил "предмета" после Вашего сообщения и похоже арбитраж Ваш преждевременный. Есть возражения,- опровергайте, давайте вместе искать истину, а не демонстрировать экстрасенсорные способности в плане кто и что читал. Я искренне рад за Вас, я же учусь и буду Вам признателен за указание по какой из моих ссылок или рисунке присутствует ложь.
Смею предложить Вам дочитать 13-е сообщение до конца.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей