Обсуждаем контроллеры компании Atmel.
Ответить

Re: Arduino вопросы по программированию

Ср авг 28, 2019 14:47:01

Предполагаю что это один из таймеров, но возможно, сторожевой таймер WDT. Будит примерно каждые 8.2 миллисекунды. Что это за процесс? От системного таймера ожидал бы задержку в 1 мс. Если в это время идет передача через UART то просыпается чаще чем 8.2 мс, вероятно тоже прерывание от UART будит микроконтроллер. Если перед засыпанием ожидать очищение буфере передачи Serial.flush() тогда частота пробуждений возвращается к 8.2 мс.

Минимальный счёт сторожевого таймера у меги328 равен 16 мс, а максимальный 8,2 сек. Так что 8,2 мс не может быть. Будить из «глубокого» сна МК можно по внешнему прерыванию… или по прерыванию от сторожевого таймера каждые 8,2 сек… после производить необходимые действия и снова уходить в сон. Ещё если аналоговый компаратор не отключен в алгоритме, то необходимо его отключить если он не используется… так как по умолчанию он всегда включен.

Re: Arduino вопросы по программированию

Пн сен 02, 2019 11:22:25

Не подскажите почему при подключении стандартного модуля с 4 реле с опторазвязкой, arduino начинает неистово глючить? Маломощные реле включают более мощные на 220 вольт. В холостую реле щелкают без проблем, а стоит подать питание на силовые выводы, как всё глючит. Реле запитывал от другого блока питания (минусы объединены), это ничего не дало. Предполагаю что помехи от искрящих реле как-то доходят до МК. Хотя есть же оптопары.
Схема релейного модуля:
СпойлерИзображение

Re: Arduino. Вопросы по программированию.

Пн сен 02, 2019 12:09:33

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

Re: Arduino. Вопросы по программированию.

Пн сен 02, 2019 12:16:04

Только ежли силовые проводки "перемешаны" с сигнальными на адуринье (и то при больших токах).
Токи совсем маленькие, но сбои происходят ровно в момент переключения реле (наверное искры источник помех). При этом ардуина не перезагружается, а тупо виснет или глючит.
Провода не перемешаны, силовые от модуля реле идут в одну сторону, сигнальные в другую.
Увидел одну рекомендацию что надо все сигнальные провода пустить в экранах - это ж надо блин... может лучше 0,1 мкф керамику повесить на все сигнальные провода.
Попробую для начала избавиться от всех необязательных проводов, отключу индикаторы и т.п., будут тестить на минимальной конфигурации. Там основная задача всего-лишь чтение с переменного резистора, обработка и вывод на аппаратный ШИМ, а так-же управление реле по заданной логике опять-же относительно АЦП входа с переменника. Вот и всё.

В крайнем случае можно реле заменить на симисторы с детектором нуля, но не охото и деталей пока нету.

Возможно всплески пролазят через блок питания самой адуриньи и/или через схемы контроля нуля фазы (или чего-то подобного).
От схемы контроля нуля отказался сразу, поняв чем это пахнет. Ничего такого нет. Блоки питания менял, на другом сейчас фильтры (дроссели) на входе в сеть и на выходе, но ничего не меняет.

Я надеюсь до такого садомазохизма не дойдет...
Нет, я нормальный. :)

Re: Arduino. Вопросы по программированию.

Пн сен 02, 2019 17:44:21

Upgrader писал(а):а стоит подать питание на силовые выводы, как всё глючит.

1. Печатная плата с контроллером имеет макс. площадь земли. Желательно с 2х сторон и обильно сшивается переходами.
2. Дорожки питания, силовых частей и реле проходят отдельно от сигнальных. Грамотные пути возврата токов. Можно посмотреть в рекомендациях по дизайну плат, у многих фирм есть доки.
3. Плата по возможности помещается в экранированный корпус и он заземляется.
4. Всё что выходит за пределы платы контроллера проходит через буферы и по возможности экранируется. ВЧ фильтры будут не лишними.

BOB51 писал(а):вариант при тестировании - разряды с газовой зажигалки в шину GND...

Отличная идея!
Я уже было собрался делать для проверки разрядник с ТДКСом на 10-20кВ.

Re: Arduino. Вопросы по программированию.

Пн сен 02, 2019 17:59:00

1. Печатная плата с контроллером имеет макс. площадь земли. Желательно с 2х сторон и обильно сшивается переходами.
Это скорее не в тему. Потому что плата ардуины - величина неизменная. :))) Переделывать ее я же не буду. Это миниатюрная Arduino Nano.
Изображение

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

Re: Arduino. Вопросы по программированию.

Пн сен 02, 2019 18:17:36

Upgrader писал(а):а так-же управление реле по заданной логике опять-же относительно АЦП входа с переменника.
Ни на одной плате Arduino нет lc-фильтра на вывод AVCC, что делает нестабильным измерение АЦП, а так же применение таких контроллеров как Atmega 48/88/168/328.
Если в цепи питания есть наводки, пульсации и т. п. - они все ваши.

Re: Arduino. Вопросы по программированию.

Пн сен 02, 2019 19:01:01

Тогда можно в цепь питания поставить общий фильтр?

Re: Arduino. Вопросы по программированию.

Пн сен 02, 2019 19:49:40

У нанки ВСЕГО ДОСТАТОЧНО.
Единственно проверять трассировку по GND в случае больших токов (сигнальный наложен на возвратный у мощного потребителя).
Поскольку выводов GND там аж 2 есть смысл повнимательнее к оному вопросу отнестись.
Насчет фильтра - совершенно БЕЗ НАДОБНОСТИ - единственно рекомендация ставить диод от +5 к VIN при питании от внешнего источника +5 (внутренний стабилизатор таки весьма чахленький по току - миллиампер 100-200 потянуть еще может и выдюжит, ежли VIN около 7 вольт, а может и в термозащиту спрыгнуть)...
:roll:
Большая часть проблем касается программной части.
Даже с теми "хвостами" работа может быть вполне успешной.
Главное внимательно отследить отсутствие использования дапок, поддерживающих работу загрузчика в первые 2 секунды после подачи питания, дабы конфликта не возникло и загрузчик случайно не активировался (или не дай боже чего не того не включилось при мощной внешней обвязке).
8)

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

Re: Arduino. Вопросы по программированию.

Чт сен 05, 2019 14:18:01

Помогите убогому, пожалуйста!
Проблема: Собрана и проверена схема сигнализации (компилируется и загружается).При введении в схему сигнализации модуля ИК с пультом дистанционного управления, не проходит компиляция. Схема ИК модуля отдельно без изменений из проекта сигнализации - компилируется и загружается (как отдельный проект ) на ура!!!
При проверки проекта сигнализации с модулем ИК 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.

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
============
Явно проблема с библиотеками.Не могу разобраться.Что делать?Подскажите...

Re: Arduino. Вопросы по программированию.

Чт сен 05, 2019 16:47:04

Spyro13, видимо, и модуль ИК, и модуль сигнализации регистируют обработчик прерывания 0х0007 (Timer/Counter2 Compare Match A). Скорее всего, один из модулей надо переселить на нулевой таймер. Или как-то подружить их на одном таймере, если это возможно.

Re: Arduino. Вопросы по программированию.

Пт сен 06, 2019 07:26:26

Это миниатюрная Arduino Nano.

Есть ещё такой вариант платы… https://ekits.ru/catalog/modules/evalua ... 0007m_32a/ единственный недостаток - цена намного больше ардуины… но зато разведена по Феншую имея дроссель по питанию AVCC… очень удобна при использовании индикатора WH0802.

Re: Arduino. Вопросы по программированию.

Пт сен 06, 2019 08:19:20

:shock:
СВЯТ-СВЯТ!!!
ЧУР МНЯ!!!
:facepalm:
Ну и ЦЕНЫ...
:o
Ужшшш лучше тогда вот эту:
http://img.radiokot.ru/files/20529/1yv365eicx.jpg
или ее подружайку без USB-COM...
Там цена всего на полторы сотни рубчиков выше...
:roll:

Для Spyro13 - смотрим взаимное перекрытие ресурсов (в том числе и скрытое).
Это касается использования во "внешних библиотеках" или самостоятельно (по советам "крутых парней")
ресурсов таймеров ардуино.
Риск конфликта в случае применения вышеуказанных приемов и функций
tone();
delay();
проверить синтаксис для attachInterupt - у 1.8.9 там должно быть
attachInterupt(digitalPinToInterrupt(Pin), function, mode);
Ну и само подключение внешней библиотеки в текущий проект внимательно отследить как по правильности
так и по возможным дополнительным ресурсам, кои в основном файле могут быть указаны для объявления.
:roll:

Re: Arduino. Вопросы по программированию.

Пт сен 06, 2019 11:22:46

Проблема,как оказалась такая:ИК и Буззер используют один таймер, и вместе не работают.Как только убрал пищалку, то пошла "массовка" все загрузилось. Это в программе FLProg.

Re: Arduino. Вопросы по программированию.

Пт сен 06, 2019 11:33:39

Spyro13, я вообще то ровно это и написал...

Re: Arduino. Вопросы по программированию.

Пт сен 06, 2019 17:53:27

Да,конечно.Спасибо Вам за помощь.

Re: Arduino. Вопросы по программированию.

Сб сен 07, 2019 20:04:27

О "многофайловиках" в адуринье
https://radiokot.ru/forum/viewtopic.php ... 1#p3695521
и
https://radiokot.ru/forum/viewtopic.php ... 4#p3696414
с тест-проектами.
8)

Re: Arduino вопросы по программированию

Сб сен 07, 2019 22:06:46

при подключении стандартного модуля с 4 реле с опторазвязкой, arduino начинает неистово глючить
Проблема решена.
Чем конкретно не знаю, но сделано было следующее:
Другой блок питания (пятивольтовый мобильный зарядник) с дросселем на выходе. Одна эта мера не помогла, но немного улучшило ситуацию.
Питание +5v раздельно на силовую часть модуля реле с БП подано напрямую, а на ардуину через штатный стабилизатор (там будет меньше 5 вольт, но не критично).
Фильтрующий конденсатор пленочка 0,2 мкф параллельно питанию на обмотки реле модуля реле.
Электролиты 47 мкф параллельно каждому из защитных диодов шунтирующих обмотку реле.
Короткие экранированные провода между модулем реле и ардуиной. Остальная силовая часть отделена тупо незамкнутыми перегородками из фольги. + Ардуина индивидуально обернута фольгой. Фольга от шоколадок. :hunger:
В высоковольтной части налепил побольше пленочных конденсаторов 0,1 мкф.
Отключены все необязательные (а теперь как выяснилось не особо и нужные) провода к датчикам и дисплею (лишний жыр).

Программа почищена от всех сомнительных условий.

Работает абсолютно без сбоев, АЦП замеряет стабильно (переменный резистор + АЦП управляет тиристорным регулятором, который в свою очередь управляется аппаратным ШИМ-ом ардуины). При том что рядом еще работает мощный тиристорный регулятор на коллекторный мотор, это не является помехой.

Re: Arduino. Вопросы по программированию.

Вс сен 08, 2019 06:35:56

Я для "модульных" чаще применяю ленту с прокладкой 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
:hunger:

Re: Arduino вопросы по программированию

Вс сен 08, 2019 06:55:17

Проблема решена.
Чем конкретно не знаю, но сделано было следующее:

Отлично, но теперь необходимо всё же выяснить причину, дабы не наступать в будущем на данные грабли и не городить лишнего. Теперь начинай потихоньку убирать то что сделано, начиная с конденсаторов на диодах обмоток реле… понятно, что данный процесс растянется по времени, но оно того стоит.
Ответить