Arduino. Вопросы по программированию.
-
Самсусамыч
Re: Arduino вопросы по программированию
[uquote="SIM31",url="/forum/viewtopic.php?p=3140295#p3140295"]Предполагаю что это один из таймеров, но возможно, сторожевой таймер WDT. Будит примерно каждые 8.2 миллисекунды. Что это за процесс? От системного таймера ожидал бы задержку в 1 мс. Если в это время идет передача через UART то просыпается чаще чем 8.2 мс, вероятно тоже прерывание от UART будит микроконтроллер. Если перед засыпанием ожидать очищение буфере передачи Serial.flush() тогда частота пробуждений возвращается к 8.2 мс.[/uquote]
Минимальный счёт сторожевого таймера у меги328 равен 16 мс, а максимальный 8,2 сек. Так что 8,2 мс не может быть. Будить из «глубокого» сна МК можно по внешнему прерыванию… или по прерыванию от сторожевого таймера каждые 8,2 сек… после производить необходимые действия и снова уходить в сон. Ещё если аналоговый компаратор не отключен в алгоритме, то необходимо его отключить если он не используется… так как по умолчанию он всегда включен.
Минимальный счёт сторожевого таймера у меги328 равен 16 мс, а максимальный 8,2 сек. Так что 8,2 мс не может быть. Будить из «глубокого» сна МК можно по внешнему прерыванию… или по прерыванию от сторожевого таймера каждые 8,2 сек… после производить необходимые действия и снова уходить в сон. Ещё если аналоговый компаратор не отключен в алгоритме, то необходимо его отключить если он не используется… так как по умолчанию он всегда включен.
- Реклама
Re: Arduino вопросы по программированию
Не подскажите почему при подключении стандартного модуля с 4 реле с опторазвязкой, arduino начинает неистово глючить? Маломощные реле включают более мощные на 220 вольт. В холостую реле щелкают без проблем, а стоит подать питание на силовые выводы, как всё глючит. Реле запитывал от другого блока питания (минусы объединены), это ничего не дало. Предполагаю что помехи от искрящих реле как-то доходят до МК. Хотя есть же оптопары.
Схема релейного модуля:
Схема релейного модуля:
Спойлер

Не променяю медь на ржавую несгорайку!
Re: Arduino. Вопросы по программированию.
Только ежли силовые проводки "перемешаны" с сигнальными на адуринье (и то при больших токах).
Возможно всплески пролазят через блок питания самой адуриньи и/или через схемы контроля нуля фазы (или чего-то подобного).
В остальном - дуростойкость программы (и аппаратной обвязки) в части обработки входных сигналов...
Встречал и наихудший вариант при тестировании - разряды с газовой зажигалки в шину GND...
Но там уж иной подход к самой программе и под "чистым ассемблером" и спецприемы с данными в ОЗУ/РСФ.
Я надеюсь до такого садомазохизма не дойдет...

Возможно всплески пролазят через блок питания самой адуриньи и/или через схемы контроля нуля фазы (или чего-то подобного).
В остальном - дуростойкость программы (и аппаратной обвязки) в части обработки входных сигналов...
Встречал и наихудший вариант при тестировании - разряды с газовой зажигалки в шину GND...
Но там уж иной подход к самой программе и под "чистым ассемблером" и спецприемы с данными в ОЗУ/РСФ.
Я надеюсь до такого садомазохизма не дойдет...
Re: Arduino. Вопросы по программированию.
[uquote="BOB51",url="/forum/viewtopic.php?p=3693116#p3693116"]Только ежли силовые проводки "перемешаны" с сигнальными на адуринье (и то при больших токах).[/uquote]Токи совсем маленькие, но сбои происходят ровно в момент переключения реле (наверное искры источник помех). При этом ардуина не перезагружается, а тупо виснет или глючит.
Провода не перемешаны, силовые от модуля реле идут в одну сторону, сигнальные в другую.
Увидел одну рекомендацию что надо все сигнальные провода пустить в экранах - это ж надо блин... может лучше 0,1 мкф керамику повесить на все сигнальные провода.
Попробую для начала избавиться от всех необязательных проводов, отключу индикаторы и т.п., будут тестить на минимальной конфигурации. Там основная задача всего-лишь чтение с переменного резистора, обработка и вывод на аппаратный ШИМ, а так-же управление реле по заданной логике опять-же относительно АЦП входа с переменника. Вот и всё.
В крайнем случае можно реле заменить на симисторы с детектором нуля, но не охото и деталей пока нету.
[uquote="BOB51",url="/forum/viewtopic.php?p=3693116#p3693116"]Возможно всплески пролазят через блок питания самой адуриньи и/или через схемы контроля нуля фазы (или чего-то подобного).[/uquote]От схемы контроля нуля отказался сразу, поняв чем это пахнет. Ничего такого нет. Блоки питания менял, на другом сейчас фильтры (дроссели) на входе в сеть и на выходе, но ничего не меняет.
[uquote="BOB51",url="/forum/viewtopic.php?p=3693116#p3693116"]Я надеюсь до такого садомазохизма не дойдет...[/uquote]Нет, я нормальный.
Провода не перемешаны, силовые от модуля реле идут в одну сторону, сигнальные в другую.
Увидел одну рекомендацию что надо все сигнальные провода пустить в экранах - это ж надо блин... может лучше 0,1 мкф керамику повесить на все сигнальные провода.
Попробую для начала избавиться от всех необязательных проводов, отключу индикаторы и т.п., будут тестить на минимальной конфигурации. Там основная задача всего-лишь чтение с переменного резистора, обработка и вывод на аппаратный ШИМ, а так-же управление реле по заданной логике опять-же относительно АЦП входа с переменника. Вот и всё.
В крайнем случае можно реле заменить на симисторы с детектором нуля, но не охото и деталей пока нету.
[uquote="BOB51",url="/forum/viewtopic.php?p=3693116#p3693116"]Возможно всплески пролазят через блок питания самой адуриньи и/или через схемы контроля нуля фазы (или чего-то подобного).[/uquote]От схемы контроля нуля отказался сразу, поняв чем это пахнет. Ничего такого нет. Блоки питания менял, на другом сейчас фильтры (дроссели) на входе в сеть и на выходе, но ничего не меняет.
[uquote="BOB51",url="/forum/viewtopic.php?p=3693116#p3693116"]Я надеюсь до такого садомазохизма не дойдет...[/uquote]Нет, я нормальный.
Не променяю медь на ржавую несгорайку!
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: Arduino. Вопросы по программированию.
1. Печатная плата с контроллером имеет макс. площадь земли. Желательно с 2х сторон и обильно сшивается переходами.Upgrader писал(а):а стоит подать питание на силовые выводы, как всё глючит.
2. Дорожки питания, силовых частей и реле проходят отдельно от сигнальных. Грамотные пути возврата токов. Можно посмотреть в рекомендациях по дизайну плат, у многих фирм есть доки.
3. Плата по возможности помещается в экранированный корпус и он заземляется.
4. Всё что выходит за пределы платы контроллера проходит через буферы и по возможности экранируется. ВЧ фильтры будут не лишними.
Отличная идея!BOB51 писал(а):вариант при тестировании - разряды с газовой зажигалки в шину GND...
Я уже было собрался делать для проверки разрядник с ТДКСом на 10-20кВ.
- Реклама
Re: Arduino. Вопросы по программированию.
[uquote="uk8amk",url="/forum/viewtopic.php?p=3693327#p3693327"]1. Печатная плата с контроллером имеет макс. площадь земли. Желательно с 2х сторон и обильно сшивается переходами.[/uquote]Это скорее не в тему. Потому что плата ардуины - величина неизменная.
Переделывать ее я же не буду. Это миниатюрная Arduino Nano.

Печатки собственно нет.
Есть плата ардуины и есть плата с реле, которые как у настоящего ардуинщика, соединены китайскими проводами.
Может быть использовать экранированные провода это дельный совет?


Печатки собственно нет.
Есть плата ардуины и есть плата с реле, которые как у настоящего ардуинщика, соединены китайскими проводами.
Может быть использовать экранированные провода это дельный совет?

Не променяю медь на ржавую несгорайку!
Re: Arduino. Вопросы по программированию.
Ни на одной плате Arduino нет lc-фильтра на вывод AVCC, что делает нестабильным измерение АЦП, а так же применение таких контроллеров как Atmega 48/88/168/328.Upgrader писал(а):а так-же управление реле по заданной логике опять-же относительно АЦП входа с переменника.
Если в цепи питания есть наводки, пульсации и т. п. - они все ваши.
Re: Arduino. Вопросы по программированию.
Тогда можно в цепь питания поставить общий фильтр?
Не променяю медь на ржавую несгорайку!
Re: Arduino. Вопросы по программированию.
У нанки ВСЕГО ДОСТАТОЧНО.
Единственно проверять трассировку по GND в случае больших токов (сигнальный наложен на возвратный у мощного потребителя).
Поскольку выводов GND там аж 2 есть смысл повнимательнее к оному вопросу отнестись.
Насчет фильтра - совершенно БЕЗ НАДОБНОСТИ - единственно рекомендация ставить диод от +5 к VIN при питании от внешнего источника +5 (внутренний стабилизатор таки весьма чахленький по току - миллиампер 100-200 потянуть еще может и выдюжит, ежли VIN около 7 вольт, а может и в термозащиту спрыгнуть)...
Большая часть проблем касается программной части.
Даже с теми "хвостами" работа может быть вполне успешной.
Главное внимательно отследить отсутствие использования дапок, поддерживающих работу загрузчика в первые 2 секунды после подачи питания, дабы конфликта не возникло и загрузчик случайно не активировался (или не дай боже чего не того не включилось при мощной внешней обвязке).

Пы. Сы.
Работа с адуриноподобными в плане монтажа разделяется на макет-отладку простейших вариантов - тогда берется "полная" версия (arduino UNO/ mega2560/ bluePills или подобное) и платки готовой обвязки с межсоединениями "на адурино-проводках"...
И полное изготовление изделий с использованием "DIP микросборки".
К таковым относятся нанки, про-мини, голубы таблетки и подобные в "формфакторе DIP микросборок".
Для них уже делаем полноценную платку в которой микросборка "сажается" как самостоятельный DIP компонент.
Такая платка уже полностью подпадает под стандартные правтла проектирования плат.

Единственно проверять трассировку по GND в случае больших токов (сигнальный наложен на возвратный у мощного потребителя).
Поскольку выводов GND там аж 2 есть смысл повнимательнее к оному вопросу отнестись.
Насчет фильтра - совершенно БЕЗ НАДОБНОСТИ - единственно рекомендация ставить диод от +5 к VIN при питании от внешнего источника +5 (внутренний стабилизатор таки весьма чахленький по току - миллиампер 100-200 потянуть еще может и выдюжит, ежли VIN около 7 вольт, а может и в термозащиту спрыгнуть)...
Большая часть проблем касается программной части.
Даже с теми "хвостами" работа может быть вполне успешной.
Главное внимательно отследить отсутствие использования дапок, поддерживающих работу загрузчика в первые 2 секунды после подачи питания, дабы конфликта не возникло и загрузчик случайно не активировался (или не дай боже чего не того не включилось при мощной внешней обвязке).
Пы. Сы.
Работа с адуриноподобными в плане монтажа разделяется на макет-отладку простейших вариантов - тогда берется "полная" версия (arduino UNO/ mega2560/ bluePills или подобное) и платки готовой обвязки с межсоединениями "на адурино-проводках"...
И полное изготовление изделий с использованием "DIP микросборки".
К таковым относятся нанки, про-мини, голубы таблетки и подобные в "формфакторе DIP микросборок".
Для них уже делаем полноценную платку в которой микросборка "сажается" как самостоятельный DIP компонент.
Такая платка уже полностью подпадает под стандартные правтла проектирования плат.
Re: Arduino. Вопросы по программированию.
Помогите убогому, пожалуйста!
Проблема: Собрана и проверена схема сигнализации (компилируется и загружается).При введении в схему сигнализации модуля ИК с пультом дистанционного управления, не проходит компиляция. Схема ИК модуля отдельно без изменений из проекта сигнализации - компилируется и загружается (как отдельный проект ) на ура!!!
При проверки проекта сигнализации с модулем ИК Arduino IDE ВЫДАЕТ ОШИБКУ:
Arduino: 1.8.9 (Windows 10), Плата:"Arduino/Genuino Uno"
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `__vector_7'
libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
Несколько библиотек найдено для "IRremote.h"
Используется: c:\Program Files (x86)\FLProg\ideV3\portable\sketchbook\libraries\IRremote
Не используется: c:\Program Files (x86)\FLProg\ideV3\libraries\IRremote
exit status 1
Ошибка компиляции для платы Arduino/Genuino Uno.
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
============
Явно проблема с библиотеками.Не могу разобраться.Что делать?Подскажите...
Проблема: Собрана и проверена схема сигнализации (компилируется и загружается).При введении в схему сигнализации модуля ИК с пультом дистанционного управления, не проходит компиляция. Схема ИК модуля отдельно без изменений из проекта сигнализации - компилируется и загружается (как отдельный проект ) на ура!!!
При проверки проекта сигнализации с модулем ИК Arduino IDE ВЫДАЕТ ОШИБКУ:
Arduino: 1.8.9 (Windows 10), Плата:"Arduino/Genuino Uno"
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `__vector_7'
libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
Несколько библиотек найдено для "IRremote.h"
Используется: c:\Program Files (x86)\FLProg\ideV3\portable\sketchbook\libraries\IRremote
Не используется: c:\Program Files (x86)\FLProg\ideV3\libraries\IRremote
exit status 1
Ошибка компиляции для платы Arduino/Genuino Uno.
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
============
Явно проблема с библиотеками.Не могу разобраться.Что делать?Подскажите...
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: Arduino. Вопросы по программированию.
Spyro13, видимо, и модуль ИК, и модуль сигнализации регистируют обработчик прерывания 0х0007 (Timer/Counter2 Compare Match A). Скорее всего, один из модулей надо переселить на нулевой таймер. Или как-то подружить их на одном таймере, если это возможно.
-
Самсусамыч
Re: Arduino. Вопросы по программированию.
[uquote="Upgrader",url="/forum/viewtopic.php?p=3693335#p3693335"]Это миниатюрная Arduino Nano.[/uquote]
Есть ещё такой вариант платы… https://ekits.ru/catalog/modules/evalua ... 0007m_32a/ единственный недостаток - цена намного больше ардуины… но зато разведена по Феншую имея дроссель по питанию AVCC… очень удобна при использовании индикатора WH0802.
Есть ещё такой вариант платы… https://ekits.ru/catalog/modules/evalua ... 0007m_32a/ единственный недостаток - цена намного больше ардуины… но зато разведена по Феншую имея дроссель по питанию AVCC… очень удобна при использовании индикатора WH0802.
Re: Arduino. Вопросы по программированию.
СВЯТ-СВЯТ!!!
ЧУР МНЯ!!!
Ну и ЦЕНЫ...
Ужшшш лучше тогда вот эту:
http://img.radiokot.ru/files/20529/1yv365eicx.jpg
или ее подружайку без USB-COM...
Там цена всего на полторы сотни рубчиков выше...
Для Spyro13 - смотрим взаимное перекрытие ресурсов (в том числе и скрытое).
Это касается использования во "внешних библиотеках" или самостоятельно (по советам "крутых парней")
ресурсов таймеров ардуино.
Риск конфликта в случае применения вышеуказанных приемов и функций
tone();
delay();
проверить синтаксис для attachInterupt - у 1.8.9 там должно быть
attachInterupt(digitalPinToInterrupt(Pin), function, mode);
Ну и само подключение внешней библиотеки в текущий проект внимательно отследить как по правильности
так и по возможным дополнительным ресурсам, кои в основном файле могут быть указаны для объявления.
Re: Arduino. Вопросы по программированию.
Проблема,как оказалась такая:ИК и Буззер используют один таймер, и вместе не работают.Как только убрал пищалку, то пошла "массовка" все загрузилось. Это в программе FLProg.
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: Arduino. Вопросы по программированию.
Spyro13, я вообще то ровно это и написал...
Re: Arduino. Вопросы по программированию.
Да,конечно.Спасибо Вам за помощь.
Re: Arduino. Вопросы по программированию.
О "многофайловиках" в адуринье
https://radiokot.ru/forum/viewtopic.php ... 1#p3695521
и
https://radiokot.ru/forum/viewtopic.php ... 4#p3696414
с тест-проектами.

https://radiokot.ru/forum/viewtopic.php ... 1#p3695521
и
https://radiokot.ru/forum/viewtopic.php ... 4#p3696414
с тест-проектами.
Re: Arduino вопросы по программированию
[uquote="Upgrader",url="/forum/viewtopic.php?p=3693093#p3693093"]при подключении стандартного модуля с 4 реле с опторазвязкой, arduino начинает неистово глючить[/uquote]Проблема решена.
Чем конкретно не знаю, но сделано было следующее:
Другой блок питания (пятивольтовый мобильный зарядник) с дросселем на выходе. Одна эта мера не помогла, но немного улучшило ситуацию.
Питание +5v раздельно на силовую часть модуля реле с БП подано напрямую, а на ардуину через штатный стабилизатор (там будет меньше 5 вольт, но не критично).
Фильтрующий конденсатор пленочка 0,2 мкф параллельно питанию на обмотки реле модуля реле.
Электролиты 47 мкф параллельно каждому из защитных диодов шунтирующих обмотку реле.
Короткие экранированные провода между модулем реле и ардуиной. Остальная силовая часть отделена тупо незамкнутыми перегородками из фольги. + Ардуина индивидуально обернута фольгой. Фольга от шоколадок.
В высоковольтной части налепил побольше пленочных конденсаторов 0,1 мкф.
Отключены все необязательные (а теперь как выяснилось не особо и нужные) провода к датчикам и дисплею (лишний жыр).
Программа почищена от всех сомнительных условий.
Работает абсолютно без сбоев, АЦП замеряет стабильно (переменный резистор + АЦП управляет тиристорным регулятором, который в свою очередь управляется аппаратным ШИМ-ом ардуины). При том что рядом еще работает мощный тиристорный регулятор на коллекторный мотор, это не является помехой.
Чем конкретно не знаю, но сделано было следующее:
Другой блок питания (пятивольтовый мобильный зарядник) с дросселем на выходе. Одна эта мера не помогла, но немного улучшило ситуацию.
Питание +5v раздельно на силовую часть модуля реле с БП подано напрямую, а на ардуину через штатный стабилизатор (там будет меньше 5 вольт, но не критично).
Фильтрующий конденсатор пленочка 0,2 мкф параллельно питанию на обмотки реле модуля реле.
Электролиты 47 мкф параллельно каждому из защитных диодов шунтирующих обмотку реле.
Короткие экранированные провода между модулем реле и ардуиной. Остальная силовая часть отделена тупо незамкнутыми перегородками из фольги. + Ардуина индивидуально обернута фольгой. Фольга от шоколадок.
В высоковольтной части налепил побольше пленочных конденсаторов 0,1 мкф.
Отключены все необязательные (а теперь как выяснилось не особо и нужные) провода к датчикам и дисплею (лишний жыр).
Программа почищена от всех сомнительных условий.
Работает абсолютно без сбоев, АЦП замеряет стабильно (переменный резистор + АЦП управляет тиристорным регулятором, который в свою очередь управляется аппаратным ШИМ-ом ардуины). При том что рядом еще работает мощный тиристорный регулятор на коллекторный мотор, это не является помехой.
Не променяю медь на ржавую несгорайку!
Re: Arduino. Вопросы по программированию.
Я для "модульных" чаще применяю ленту с прокладкой gnd/сигнальный с последующим выводом на разъеме всех gnd
в общую шинку.
Вот такое получается
http://img.radiokot.ru/files/20529/1zkc523h4e.jpg
http://img.radiokot.ru/files/20529/1q5ktsllm8.jpg
http://img.radiokot.ru/files/20529/1o57u8vz9j.jpg

в общую шинку.
Вот такое получается
http://img.radiokot.ru/files/20529/1zkc523h4e.jpg
http://img.radiokot.ru/files/20529/1q5ktsllm8.jpg
http://img.radiokot.ru/files/20529/1o57u8vz9j.jpg
-
Самсусамыч
Re: Arduino вопросы по программированию
[uquote="Upgrader",url="/forum/viewtopic.php?p=3696494#p3696494"]Проблема решена.
Чем конкретно не знаю, но сделано было следующее:[/uquote]
Отлично, но теперь необходимо всё же выяснить причину, дабы не наступать в будущем на данные грабли и не городить лишнего. Теперь начинай потихоньку убирать то что сделано, начиная с конденсаторов на диодах обмоток реле… понятно, что данный процесс растянется по времени, но оно того стоит.
Чем конкретно не знаю, но сделано было следующее:[/uquote]
Отлично, но теперь необходимо всё же выяснить причину, дабы не наступать в будущем на данные грабли и не городить лишнего. Теперь начинай потихоньку убирать то что сделано, начиная с конденсаторов на диодах обмоток реле… понятно, что данный процесс растянется по времени, но оно того стоит.


