Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
EfesXZC
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
#1

Синхронизация ШИМ от разных устройств - Микроконтроллер

19.11.2016, 11:20. Просмотров 562. Ответов 16

Доброго времени суток, народ. В процессе учебной деятельности, возникла одна интересная задача. Суть в следующем: имеются 3 микроконтроллера (AVR, ведомые, с тактовой частотой 16МГц) и Raspberry в качестве ведущего. Вся система служит для реализации многофазного управления подачей питания на много дофига потребляющих нагрузок. Каждый контроллер (включая Raspberry) выдает аппаратно 5-фазную ШИМ. Необходимо, чтобы выходные ШИМ импульсы от разных контроллеров были строго синхронизированы по времени, с точностью до единиц наносекунд. Прошу помощи с указанием направления в какую сторону копать или идеями каких-нибудь алгоритмов синхронизации применимых в данном случае.

P.S.: Решение мне видится в синхронизации фазы опорных генераторов микроконтроллеров, но вмешательство в схемотехнику должно быть минимальным (иначе поставил бы ФАПЧ и не парился).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2016, 11:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Синхронизация ШИМ от разных устройств (Микроконтроллер):

Синхронизация задач FreeRTOS на разных контроллерах
Добрый день! Подскажите, как организовать синхронизацию (одинаковых) задач...

Модуль EVO II синхронизация 50гц, На какой ножке контроллера синхронизация шим двигателя?
Частый дефект для модулей EVO II с коллекторным двигателем - нет управления...

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

Подключение к Wi-Fi с разных устройств
Итак, имеется роутер Asus WL-500GP V2, проблема в подключении к нему. IPad и...

Синхронизация приложения на разных устройствах
Всем привет! Подскажите пожалуйста ( если есть возможность дайте ссылку где...

Синхронизация данных в разных СУБД
Добрый день! Прошу разъяснить вопрос, стоящий в заглавии темы. Есть...

16
ValeryS
Модератор
7131 / 5399 / 669
Регистрация: 14.02.2011
Сообщений: 18,221
19.11.2016, 12:08 #2
Цитата Сообщение от EfesXZC Посмотреть сообщение
выдает аппаратно 5-фазную ШИМ.
а может проще поменять весь этот зоопарк на одну STMку
там до проха таймеров и в каждом(практически) есть 4 канальный шим
0
pyzhman
755 / 451 / 62
Регистрация: 15.05.2012
Сообщений: 2,541
19.11.2016, 14:03 #3
Цитата Сообщение от EfesXZC Посмотреть сообщение
синхронизации фазы опорных генераторов
Ничто не мешает настроить фьюзы на тактирование от внешнего источника.
0
Ethereal
3305 / 1445 / 189
Регистрация: 17.02.2013
Сообщений: 2,332
21.11.2016, 20:59 #4
Все контроллеры, выдающие импульсы, необходимо тактировать от одного источника и сбрасывать общим сбросом. Это что думается в первую голову. А иначе синхронизовывать асинхронные процессы задача неблагодарная.
0
ValeryS
Модератор
7131 / 5399 / 669
Регистрация: 14.02.2011
Сообщений: 18,221
21.11.2016, 21:10 #5
Цитата Сообщение от Ethereal Посмотреть сообщение
необходимо тактировать от одного источника и сбрасывать общим сбросом.
и подсчитывать количество команд чтобы камни не разбежались
0
Витальич
1253 / 1164 / 172
Регистрация: 02.12.2013
Сообщений: 4,843
21.11.2016, 21:18 #6
Цитата Сообщение от ValeryS Посмотреть сообщение
чтобы камни не разбежались
ой разбегутся, ресет вещь веселая аналоговая, со всеми вытекающими
1
ValeryS
Модератор
7131 / 5399 / 669
Регистрация: 14.02.2011
Сообщений: 18,221
21.11.2016, 21:41 #7
Цитата Сообщение от Витальич Посмотреть сообщение
вещь веселая аналоговая,
и это тоже
жестко синхронизировать шим можно на жесткой логике
более- менее, мастер и куча слейвов с обратной связью
в одноранговом кто в лес кто по дрова
но вот зачем
Цитата Сообщение от EfesXZC Посмотреть сообщение
Необходимо, чтобы выходные ШИМ импульсы от разных контроллеров были строго синхронизированы по времени, с точностью до единиц наносекунд.
ума не приложу
может там совсем не шим нужен
0
Витальич
1253 / 1164 / 172
Регистрация: 02.12.2013
Сообщений: 4,843
21.11.2016, 21:50 #8
5 фазный аппаратный ШИМ, выбирайте SI-7510, SLA5073, SLA5074
0
Voland_
1475 / 985 / 93
Регистрация: 04.01.2010
Сообщений: 3,253
25.11.2016, 23:38 #9
Цитата Сообщение от Витальич Посмотреть сообщение
ресет вещь веселая аналоговая, со всеми вытекающими
В общем случае, наверное, да. Но вообще - сам по себе ресет - никакая не аналоговая функция. И запуск чипа после сигнала ресета - это никакое не волшебство, а просто работа цифровой его части.

Можем проверить на конкретных примерах - например, можно сделать отдельную программку, выполняющую инит порта в какое-то состояние, и далее - только ресет. Я предполагаю, что в 99% чипов мы увидим ровный генератор импульсов на выходе пина.

ЗЫ: другое дело - запуск RC и/или внешних генераторов... С ними действительно ресет будет "аналоговым"...

Добавлено через 1 час 7 минут
...сказал, но полез в доки. Оказалось, что, например, в AVR не так и много источников сигнала RESET. Но... Помимо чисто "аналоговых" Power-On-Reset, и Brown-Out-Detection, при сбросе которых цифра действительно может давать не детерминированный сброс, существуют относительно "цифровые" сигналы RESET от внешнего источника, и по вочдогу (который конечно можно использовать в качестве внутреннего программного сброса). И сброс по ним описан в доках на AVR с загадочной задержкой "Tout", которая нигде в документации не описана. Но я вангую, что это совершенно постоянное количество тактов процессора, которое нужно ему для инициализации всего того, что нужно для нормальной его жизни. Так что в этом случае сброс будет работать "как часы", то есть срабатывать за точно отведенное для него время.
0
Ethereal
3305 / 1445 / 189
Регистрация: 17.02.2013
Сообщений: 2,332
26.11.2016, 09:22 #10
Цитата Сообщение от Витальич Посмотреть сообщение
ой разбегутся, ресет вещь веселая аналоговая, со всеми вытекающими
а ты его резким фронтом

Добавлено через 9 минут
Вообще приходилось мне измерять время от сигнала сброса до внутренних программных событий у некоторых микроконтроллеров, правда не широкого применения. Времянки стояли как вкопанные, поскольку непосредственно с момента снятия сигнала сброса стартовала программа. Но к тому времени напряжение питания уже было устаканенным и тактовая частота тоже.
0
Витальич
1253 / 1164 / 172
Регистрация: 02.12.2013
Сообщений: 4,843
26.11.2016, 09:25 #11
да я их резко, а они
https://www.youtube.com/watch?v=pSQFMJormHc
0
Ethereal
3305 / 1445 / 189
Регистрация: 17.02.2013
Сообщений: 2,332
26.11.2016, 09:38 #12
Цитата Сообщение от ValeryS Посмотреть сообщение
жестко синхронизировать шим можно на жесткой логике
А вот тут как раз и разложены грабли невидимки. Если синхронизовать асинхронные процессы внешней логикой, то какая-то гадость время от времени вылезать начнет, интерференция редкая какая-то, причем там где не ждешь. И разумно ее объяснить не получится. Сталкивался я раз с таким. Будешь тупо пялиться на схему и не понимать почему. Вроде по схеме все должно быть в ажуре и работает-то она как надо, но периодически взбрыкивает. Нормально, нормально, брык, нормально, нормально, брык ... Поэтому я и советую затактировать все от одного источника. Сбрасывать от одного источника - это я уже на всякий случай говорю. Может это лишнее и ненужное. А вот тактировать от одного оченно желательно. Избавит от возможных совершенно необъяснимых глюков.

Добавлено через 3 минуты
Ну чтобы возможные моменты переключения логических уровней во всей схеме были едины.

Добавлено через 4 минуты
Думаю глюки у меня тогда вылезали от того, что одна микросхема иногда проверяла логический уровень как раз в тот момент когда вторая его переключала. И результат такой проверки выходил 50/50.
0
ValeryS
Модератор
7131 / 5399 / 669
Регистрация: 14.02.2011
Сообщений: 18,221
26.11.2016, 09:53 #13
Цитата Сообщение от Ethereal Посмотреть сообщение
у чтобы возможные моменты переключения логических уровней во всей схеме были едины.
Цитата Сообщение от Ethereal Посмотреть сообщение
проверяла логический уровень как раз в тот момент когда вторая его переключала.
"гонка сигналов"
тактируем с одного генератора но одна ножка подключена по ближайшему пути, вторая как то вокруг, вот тебе и сопротивление и емкость, в результате тупо смотрим что к чему
0
Papayaved
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 334
28.11.2016, 09:29 #14
EfesXZC, самое надежное это логика (ПЛИС), формирующая сразу все ШИМы (только это уберет все биения частот и соответственно низкочастотные ЭМ помехи).

Можно попробовать еще с помощью прерывания синхронизировать внутренние таймеры ШИМ, при этом все мк и одноплатный компьютер должны будут запитаться от одного генератора. В принципе вход в прерывание это фиксированное время, если пока идет синхронизация не использовать ни каких других прерываний.
0
Voland_
1475 / 985 / 93
Регистрация: 04.01.2010
Сообщений: 3,253
05.12.2016, 20:24 #15
Цитата Сообщение от EfesXZC Посмотреть сообщение
чтобы выходные ШИМ импульсы от разных контроллеров были строго синхронизированы по времени, с точностью до единиц наносекунд.
исходя из цели задачи подобной точности, вам сначала нужно добиться синхронизации в системе программ (если несколько МК), и по возможности добиться синхронизации на уровне каждого из МК, т.к. далеко не все МК общего назначения позволят вам "держать фронты" по выходам с желаемой точностью. Ну, а потом допиливать весь проект "напильником" проб и ошибок по "проводной части" - удлиняя и укорачивая проводники, чтобы получить желаемые "единицы наносекунд". Поверьте, для такой точности придется точить на каждом уровне абстракции электроники - программном, аппаратно/цифровом и аналоговом.

Добавлено через 18 минут
...отыскал - примерная задержка сигнала в проводнике - 4нс/м. То есть для того, чтобы "придержать" сигнал на n нс - мотаете катуху длиной 25см на каждую наносекунду, бифилярным способом . Не забывая про емкость приемной стороны и емкость провода + его сопротивление...
0
Лашкевич Максим
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 1
01.04.2017, 17:29 #16
Обычно задачу синхронизации ШИМ на разных контроллерах решают использованием аппаратного пина синхронизации таймеров ШИМ. Контроллер-мастер конфигурируется испускать синхросигнал при проходе его таймером ШИм нуля, а другие контроллеры принимают синхросигнал и обнуляют таймеры ШИМ по его получении. Это синхронизирует несущие ШИМа. Такая опция обычно бывает во всех motorcontrol микроконтроллерах, например, Texas Instruments Delfino, Piccolo и других. Есть ли такое на указанных, не знаю.

Что касается синхронизации уставок сравнения, то их можно уже синхронизировать через интерфейс связи, здесь таких жестких требований уже обычно нет.
0
Voland_
1475 / 985 / 93
Регистрация: 04.01.2010
Сообщений: 3,253
03.04.2017, 10:38 #17
Цитата Сообщение от Лашкевич Максим Посмотреть сообщение
Обычно задачу синхронизации ШИМ на разных контроллерах решают использованием аппаратного пина синхронизации таймеров ШИМ.
Полезный комментарий, поддержу. Все действительно так, как вы говорите, за исключением кое-чего.

Речь идет об AVR. а в AVR ШИМ построен на таймерах, тактируемых PLL, даже в случае с умножителем (как в tiny25/45/85) до 64МГц. Поэтому, чтобы получить синхронный клок таймеров, достаточно сделать синхронный внешний клок и одинаковый код программ, чтобы сопадало количество тактов обработчиков.

Просто тут еще немного другое. ТС говорил за синхронизацию с точностью до нескольких нс. Даже если предположить, что клок будет 16МГц (62,5нс) - даже один такт разницы приведет к нежелательным расхождениям. И это без учета запаздывания сигнала, разных входных уровней и завала фронтов. Вполне возможно, это вызовет некий не-большой джиттер. Но даже "небольшой джиттер" вполне может быть ощутим, если мы говорим о наносекундах.
0
03.04.2017, 10:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2017, 10:38
Привет! Вот еще темы с решениями:

Синхронизация дерева каталогов на разных ПК
Приветствую. Задача такова: Есть эталонный компьютер и 5 компьютеров в сети с...

Синхронизация приложений на разных компьютерах
Стоит задача обмена данными между двумя приложениями которые могут запускаться...

Доступ к общим данным с разных устройств
Имеется ли стандартное (для разработки под android) средство хранения...

Размеры ресурсов для разных устройств
Например у меня есть картинка header.png, это header - Navigation Drawer`а. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru