Сквт
Частоту ШИМ нужно выбрать максимально высокой — не только для упрощения задачи последующей фильтрации несущей, но и для ускорения обновления угловой координаты СКВТ. По результатам экспериментов, оказалось что частоту ШИМ можно поднять аж до 320кГц — период таймера на частоте ядра 80МГц составляет всего 250 тактов. И в эти 250 тактов надо обязательно всеми правдами и неправдами уместиться — процессорное время будем решительно экономить. Для формирования синусного сигнала с номинальной для СКВТ ФВ67-12-008 частотой возбуждения в 2кГц достаточно массива на 160 отсчётов. Но для формирования двух фаз проще будет сделать увеличенную синусную таблицу на 360 + 90 градусов — в 200 отсчётов с выборкой фазных коэффициентов со смещением на 40 отсчётов. Как дополнительные вычисления при массиве в 160 отсчётов, так и задание двух массивов по 160 отсчётов, только увеличивают затраты процессорного времени, которого у нас и без того немного. Код настройки таймера 1 представлен ниже:
В связи с изменением статуса Университета журнал несколько раз менял свое название: «Научно-технический вестник Санкт-Петербургского государственного института точной механики и оптики (технического университета)» – до 11 выпуска 2003 года; «Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики» – с 12 выпуска 2004 года по 76 выпуск 2011 года.
В соответствии с п. 5 «Правил формирования перечня рецензируемых научных изданий,в которых должны быть опубликованы основные научныерезультаты диссертаций на соискание ученой степеникандидата наук, на соискание ученой степени доктора наук» (в редакции Приказа Минобрнауки России от 12.02.2018 N 99) журнал «Научно-технический вестник информационных технологий, механики и оптики» считается включенным в Перечень ВАК как представленный в международной реферативной базе данных Scopus. по отраслям науки, соответствующим его профилю. (научные направления журнала)
Журнал является одним из старейших научных периодических изданий страны, выходящих на базе технического вуза. Первый его выпуск (т.1) датируется 1936 годом. Журнал выходил в течение многих лет под названием «Труды Ленинградского института точной механики и оптики» (отв. редактор Л.Н. Гассовский, Л.-М., Главная редакция литературы по машиностроению и металлообработке. НКТП СССР. Главное управление учебными заведениями). Выпуск издания возобновлен в 2001 году как периодическое научное и научно-образовательное издание.
Журнал включен в каталог периодических изданий Ulrich’s Periodicals Directory.
Помехи эти преимущественно синфазные и хорошо подавляются самим компаратором. А вот без фильтрации у меня была существенная нестабильность показаний ЖК индикатора! Наконец, сигнал с выхода компаратора представляет собой прямоугольные импульсы, фазовый сдвиг которых относительно фазы напряжения возбуждения СКВТ напрямую зависит от угла поворота ротора:
Журнал включен в базу журналов открытого доступа Directory of Open Access Journals (DOAJ).
Приказом Министерства образования и науки Российской Федерации № 368 от 8 октября 2009 года утвержден перечень университетов, в отношении которых установлена категория «национальный исследовательский университет». В числе победителей конкурса стал и наш университет, а журнал был зарегистрирован в Федеральной службе по надзору в сфере связи, информационных технологий и массовых коммуникаций (свидетельство ПИ ФС77-67990 от 6 декабря 2016 года) под нынешним названием «Научно-технический вестник информационных технологий, механики и оптики».
Все материалы журнала размещены на платформе Научной электронной библиотеки http://elibrary.ru/, а журнал входит в ядро Российского индекса научного цитирования РИНЦ.
Языки: русский, английский
Адрес для переписки: Университет ИТМО, Кронверкский пр., д.49, литера А, Санкт-Петербург, Российская Федерация, 197101
Несмотря на навесной монтаж, импульсный блок питания и отсутствие заземления, дрожание показаний на ЖКИ составило около одной дискреты — 1/10000 оборота или чуть больше двух угловых минут! Впечатляющий результат! Разность показаний между каналами X и Z в 7 дискрет (это около 15 угловых минут) объясняется неодинаковостью характеристик компараторов на одном кристалле в составе микросхемы LM393. Это довольно медленный компаратор и для практического измерителя угла положения СКВТ следует применить более быстродействующий компаратор. Если же подать на оба входа захвата сигнал с одного выхода компаратора, то значения X и Z на ЖК индикаторе будут полностью совпадать.
Адрес редакции: оф. 2136, Университет ИТМО, ул. Ломоносова, д. 9, Санкт-Петербург, Российская Федерация
«Scientific and Technical Journal of Information Technologies, Mechanics and Optics».
Периодичность издания 6 выпусков в год.
Сокращенное англоязычное название:
Информация 2001-2024 ©
Научно-технический вестник информационных технологий, механики и оптики.
Все права защищены.
Ширина импульса — 1412,5 нс или 113 тактов. За вычетом 10 тактов на операцию вывода на контакт порта получаем 103 такта! Почти половину периода таймера требует формирование двухфазной синусной ШИМ! Восстановим исходную прошивку:
Плата за публикации и редактирование не взимается.
«Sci.Tech. J. Inf. Technol. Mech. Opt.».
E-mail: [email protected]
Журнал «Научно-технический вестник информационных технологий, механики и оптики» издается федеральным государственным автономным образовательным учреждением высшего образования «Национальный исследовательский университет ИТМО» (Университет ИТМО).
Ротор, помимо подвижной обмотки несёт первичную обмотку вращающегося трансформатора для бесконтактной передачи сигнала на статор:
Ширина импульса становится максимальной — 3125нс или 250 тактов! Выходит, что затраты на обработку событий захвата двух каналов составляет 100 тактов, по 50 тактов на каждое. Кстати, процессор-то явно не успевает за цикл обработать прерывание — к моменту возврата из прерывания уже ждёт очереди новое прерывание от таймера! После выхода из прерывания микроконтроллер сразу же приступает к обработке нового прерывания, даже не приступая к прерванной программе!
Конструктивно СКВТ является дальнейшим развитием конструкции сельсинов — специализированных микромашин переменного тока. СКВТ, как и сельсин, состоит из статора с двумя неподвижными фазными обмотоками, расположенных под 90 градусов и ротора с одной подвижной обмоткой. Чтобы уйти от потенциально ненадёжного контактно-щёточного узла, в СКВТ передача сигнала с роторной обмотки происходит с помощью дополнительного вращающегося трансформатора. Рассмотрим СКВТ ФВ67-12-008 подробнее. Статор, кроме двух фазных обмоток, сдвинутых на 90 градусов содержит ещё вторичную обмотку вращающегося трансформатора:
Если сравнивать STM32F10x и К1986ВЕ92QI, то миландровкий микроконтроллер имеет два основных преимущества — русскоязычную документацию и выявившуюся повышенную устойчивость тактового генератора. В остальном — самый обыкновенный микроконтроллер с ядром ARM Cortex-M3.
Далее, идёт расчёт значений синусной ШИМ по заранее рассчитанной таблице в массиве sinus [200], причём первая фаза идёт с опережением в четверть периода и соответственно она идёт со смещением:
Потом проверяются флаги захвата. Если произошло событие захвата, то рассчитывается текущие координаты угла по соответствующему каналу:
Для фильтрации сигнала с выхода формирователя ШИМ нужно максимально очистить его от несущей 320кГц, не внося при этом фазовых искажений. Первым звеном стал полосовой фильтр Вина, настроенный на частоту модуляции в 2кГц. Вторым звеном стал неинвертирующий усилитель на операционном усилителе. Постоянные времени цепей отрицательной обратной связи также были рассчитаны на частоты среза по высоким и по низким частотам в 2кГц. Коэффициент усиления подобран таким образом, чтобы получить наибольший размах неискажённого выходного напряжения при питании от источника постоянного тока напряжением в 9В. Да, величина амплитуды напряжения возбуждения у меня вчетверо меньше (3В) против паспортного значения (12В) для СКВТ ФВ67-12-008, но для нашего эксперимента этого вполне достаточно.
Наконец, нужно учитывать время реакции на прерывания, которое для ARM Cortex-M3 составляет 12 тактов. Ядру нужно запомнить адрес возврата и сохранить часть регистров R0-R3 и R12 в стеке. Значит и при возврате из прерывания тоже потребуется время для возврата ядра в исходное состояние в момент прерывания. Плюс задержки флеш-памяти при ветвлении. Итого — затраты только на само прерывание без учёта полезного кода функции могут оказаться заметными.
Первая задача — формирование двухфазного синусоидального напряжения возбуждения. В микросхеме К1986ВЕ92QI на контакты выведен выход только одного ЦАП — для формирования двух аналоговых сигналов придётся использовать ШИМ. Для упрощения расчётов будем пользоваться заранее рассчитанной синусной таблицей. Перебор табличных значений будем осуществлять по прерыванию таймера 1. Для улучшения формы сигналов и последующей фильтрации несущей ШИМ повысим частоту дискретизации, насколько позволят вычислительные возможности К1986ВЕ92QI. Вторая задача — это фиксация текущего фазового сдвига выходного сигнала СКВТ. Сперва будем выделять переход сигнала через ноль аналоговым компаратором, а уже далее, результирующий фазовый сдвиг будем фиксировать с помощью функции захвата таймера. Наконец, будем выводить результаты измерения на двухстрочный символьный ЖКИ MT16S2D.
Итак, длительность между спадом импульса обработки прерывания с захватом и фронтом следующего импульса обработки без захвата равно 550нс или 44 такта. За вычетом 10 тактов затрат на вывод контрольного сигнала в порт, получаем суммарные затраты на прерывание — реакцию с возвратом — в 34 такта процессорного времени!
Для оценки затрат процессорного времени выполнения функции обработки прерывания таймера 1 я добавил в функцию вывод контрольного сигнала на контакт PF6. В начале функции выводим единицу в порт, а в конце функции выводим ноль. Импульсы с контрольного выхода можно наблюдать с помощью осциллографа, а по ширине импульса можно определить время выполнения. В первую очередь, важно измерить время вывода в порт. Для этого оставляем в главном цикле только четыре команды вывода единиц и нулей на контакты портов PC2 и PF6:
Программируемые логические контроллеры существуют уже 50 лет, но без них и сегодня невозможно представить автоматизированное производство. ПЛК широко распространены в сфере промышленной автоматизации разнообразных технологических процессов на больших и малых предприятиях. Их применение значительно упрощает создание и эксплуатацию как сложных автоматизированных систем, так и отдельных устройств, в том числе бытового назначения. ПЛК позволяет сократить этап разработки, упрощает процесс монтажа и отладки за счет стандартизации отдельных аппаратных и программных компонентов, а также обеспечивает .
В конце функции идёт обновление значения указателя синусной таблицы, декремент указателя времени для программных задержек и сброс контрольного сигнала:
Напомню, что команда сброса флага прерывания НЕ должна быть последней в функции обработки прерывания! Из-за особенностей работы конвейера ARM Cortex-M3 при возврате из прерывания эта команда не успервает дойти до исполнения и несброшенный флаг снова вызовет прерывание! Обязательно нужно оставлять минимум одну операцию после сброса флага прерывания в конце функции.
Кстати, если для настройки тактового генератора писать отдельную функцию, например, с помощью программы сообщества MilandrPLL, то есть смысл закомментировать вызов встроенной функции SystemInit() в файле startup_Cortex_M3.c, входящем в набор функций CMSIS. Отдельная функция настройки тактового генератора по сути дублирует стандартную функцию SystemInit() которую в этом случае можно без сожаления исключить. Подробно разбирать настройку портов и вывод информации на символьный ЖКИ не вижу смысла — эти вопросы неоднократно и подробно рассмотрены в различных руководствах по программированию К1986ВЕ92QI. Основные вопросы настройки периферии К1986ВЕ92QI, в особенности таймеров для выдачи ШИМ и захвату сигналов, расписаны, теперь пора рассмотреть вопросы построения аналогового тракта.
В-третьих, различные типы переменных — байт, 16-битное полуслово и 32-битное слово требуют неодинакового времени при обработке. Хоть ядро 32-х битное, но система команд Thumb и её расширение Thumb-2 при загрузке и сохранении оперируют преимущественно 16-битными полусловами! Байты и целые слова при обращении к памяти требуют дополнительных процессорных затрат! Соответственно, для наибольшего быстродействия целесообразно использовать 16-битные переменные, если это не идёт вразрез с целевой задачей, например, если диапазон чисел укладывается в рамки 0. 65535 или -32768. +32767. Люди, двадцать первый век на дворе! Ну не стоит уже буквально каждый байт оперативной памяти экономить! Кроме шуток — объявив массив unsigned short <> вместо unsigned char <> я выиграл около 200 нс или 16 тактов!
Третий способ — следящий, СКВТ включается в цепь замкнутой обратной связи системы измерения. На сегодняшний момент этот способ лучший из всех трёх перечисленных, хотя и наиболее сложный. Применяется в специализированных микросхемах, например 1310НМ025 от Миландра и AD2S1210 от Analog Devices.
Подсчитаем средние затраты процессорного времени, относительно цикла счёта таймера в 250 тактов. Поскольку событие захвата происходит раз в 500мкс, то его усреднённые затраты будут в 160 раз меньше.
Во-вторых, из-за невысокой скорости флэш-памяти константы лучше хранить в оперативной памяти, объявив массив табличных значений как переменные unsigned short <>, а не как константы const unsigned short <>. Таким образом я выиграл порядка 125нс или 10 тактов!
Второй способ — фазовый, как раз применённый в электроприводе «Размер-2М». Напряжение возбуждения — два синусоидальных напряжения возбуждения с фазовым сдвигом в 90 градусов — подаётся на фазные обмотки, также сдвинутые на 90 градусов. В статоре СКВТ образуется вращающееся магнитное поле, а на подвижной обмотке наводится синусоидальная ЭДС. Фазовый сдвиг относительно фазных напряжений возбуждения напрямую зависит от угла положения ротора. То есть, измерив фазовый сдвиг выходного напряжения относительно фаз возбуждения, получим фактический угол поворота ротора. Достоинство — относительная простота расчётов и малая чувствительность к помехам, недостаток — разрешающая способность ограничена дискретностью измерения времени и фазовой/амплитудной точностью системы напряжений возбуждения.
Наиболее известны три способа опредения положения ротора СКВТ.
На основе экспериментальных результатов можно составить несколько рекомендаций по повышению быстродействия критичных участков программного кода для ARM Cortex-M3. Если нужно выжать максимальную скорость из К1986ВЕ92QI, то настройки тактового генератора на максимальную частоту в 80МГц недостаточно — нужно ещё предпринять ряд дополнительных мер. Во-первых, очередь нужно выбрать оптимизацию — лучшие результаты показала оптимизация объёму -Os. Во-вторых, переменные по возможности должны быть 16-битными. В-третьих, лучше снизить количество обращений к периферии. В четвёртых, критичные константы стоит хранить в оперативной памяти. В пятых, по возможности надо сократить количество прерываний. Наконец, снизить количество избыточных ветвлений в коде.
Опыт конечно интересный, но где практическая целесообразность проведённого эксперимента? Да, микроконтроллеру вполне по силам определить положение угла СКВТ и без специализированных микросхем. Но для каких задач это применимо? На мой взгляд, при построении промышленного контроллера возможность подключения датчиков положения угла вполне оправдана. Ряд промконтроллеров изначально имеет специальные быстрые входы для подключения энкодеров. Но если не требуется высокая точность (хватает 10 угловых минут), большая дискретность (хватает ~2000 дискрет на оборот) то энкодеры теряют свои преимущества перед СКВТ по точности. Зато в полный рост вылазят их недостатки — во-первых, банальная хрупкость, во-вторых, загрязняемость (на производстве бывало приходилось продувать сжатым воздухом (!) энкодеры от пыли) и в третьих — относительная сложность стыковки с контролируемым механизмом. СКВТ, по сравнению с энкодером, почти неубиваем, малочувствителен к загрязнению, и главное — статор и ротор электрически и механически не связаны друг с другом и вопросов при стыковке с механизмами гораздо меньше. В эксперименте оставалось больше половины свободных контактов К1986ВЕ92QI, которые помимо двухканального измерителя положения ротора СКВТ можно использовать для организации дискретных и аналоговых входов-выходов, а также различных интерфейсов. Так что я могу сказать, что вопрос применения микроконтроллера K1986BE92QI фирмы Миландр определяется его возможностями, документацией, доступностью и поставленной задачей.
Насколько критична нехватка времени цикла на обработку прерывания с захватом импульсов? Давайте посчитаем. В функции обработки прерывания таймера сначала идёт загрузка регистров CCR и CCR1, но их обновление происходит при переходе через ноль — в момент следующего прерывания. Итак, будем считать с «запасом». 34 такта на само прерывание, 103 такта на обновление регистров ШИМ, а также 10 тактов на первоначальную операцию вывода контрольного сигнала — итого 147 тактов, что меньше периода в 250 тактов. Но чтобы уложиться в период таймера, время обработки функции должно быть 250 — 34 = 226 тактов! То есть, задержка в обработке второго прерывания составляет 250 — 226 = 34 такта, значит к затратам нужно прибавить эту задержку. Итого — 34 + 103 + 20 + 37 = 191 такт времени, что меньше максимальных 226 тактов! И ещё остаётся резерв в 35 тактов. Благодаря обдуманной настройке таймеров можно выиграть при определённых условиях немного процессорного времени!
Первый способ — амплитудный, исторически применявшийся ещё на сельсинах. На подвижную обмотку подаётся синусоидальное напряжение возбуждения, на фазных обмотках появляются напряжения, соотношения которых зависят от тангенса угла поворота ротора. Для определения положения угла нужно точно измерить напряжения фазных обмоток и вычислить арктангенс их отношения — в итоге получим точный угол положения ротора. Несомненное достоинство такого метода — высокая точность определения угловой координаты, недостаток — относительная сложность расчётов и заметная чувствительность к помехам.
И вот эти экспериментальные микрошаговые драйверы моей конструкции на данный момент уже три месяца крутят вот такими мощными (20кг!) шаговыми двигателями приводов осей в составе теперь ЧПУ фрезерного станка:
Тактовая частота равна 80МГц, соответственно, период следования тактовых импульсов составляет 12,5нс. Период следования двух фаз импульсов составляет 550нс или 44 такта, а время вывода трёх бит составляет 375нс или 30 тактов. Значит, время вывода бита в порт составляет 125нс или 10 тактов. Разница между периодом и временем вывода четырёх бит равно затратам времени на ветвление, которое в нашем случае равно четырём тактам!
Фазовый способ определения угла СКВТ сам по себе очень прост и обладает хорошей помехоустойчивостью — его и будем осуществлять в лабораторных условиях. Основа измерителя — микроконтроллер К1986ВЕ92QI в составе когда-то самой дешёвой отладочной платы «русская синяя таблетка» LDM-BB-K1986BE92QI. В качестве датчика угла будет применён валявшийся без дела СКВТ ФВ67-12-008.
Недавно мне на глаза попалось техническое описание советского комплектного электропривода «Размер-2М». Конструктивно это был самый настоящий сервопривод! В качестве датчиков обратной связи на двигателях шпинделя и подач были установлены синус-косинусные вращающиеся трансформаторы (СКВТ), или по-другому, резольверы. С помощью СКВТ помимо фактической скорости вращения определялся фактический угол поворота ротора и эмулировались сигналы инкрементальных энкодеров — двухфазные импульсы для передачи информации о перемещения в УЧПУ станка. Разрешающая способность была равна 10000 дискрет на один оборот ротора. При шаге винта в 10мм это означало что одна дискрета равна одному микрону — и всё это уже было в начале 1980-х! А у меня как нельзя кстати завалялся трофейный советский СКВТ ФВ67-12-008 от «Размера», доставшийся мне на опыты. И мне стало интересно, а как же в «Размере» определялось положение ротора СКВТ? Оказывается, конструкторы «Размера» применили довольно простой фазовый метод. Недолго думая, я решил воспроизвести «Размеровский» измеритель положения СКВТ в лабораторных условиях. Изначально вся затея с СКВТ была чистым экспериментом, который неожиданно дал хорошие результаты и вылился в небольшое исследование по повышению производительности программного кода для микроконтроллеров с ядром ARM Cortex-M3.
Пора подвести итоги нашему эксперименту. Результаты получились довольно неоднозначные. Неожиданно заметными оказались затраты на само прерывание — целых 34 такта. Удивили затраты времени на обращение к периферии — ядро ARM Cortex-M3 и контроллер ПДП работает с ОЗУ и флеш к шине AMBA через арбитр AHB («северный мост»), а периферия доступна через промежуточный мост APB («южный мост»), подключённый к основному арбитру AHB. Обращение к периферии из-за промежуточного моста APB происходит с дополнительными двумя тактами ожидания. Казалось бы, странное повышение быстродействия при большем расходе памяти при переходе от байтового формата переменных к 16-битным полусловам.
Напоследок, расскажу о реальном применении К1986ВЕ92QI на производстве. Столкнувшись как с невысоким качеством, так и неремонтопригодностью китайских мощных микрошаговых драйверов, я задумался о создании альтернативы. Год назад, когда на производстве была поставлена задача модернизировать советский фрезерный станок под ЧПУ, я стал экспериментировать с различными вариантами блока управления для мощного микрошагового драйвера, рассчитанного на питание от однофазной сети переменного тока ~220В 50Гц. С силовой платой не возникло проблем, а вот создать блок управления оказалось далеко не так просто. С блоком управления на ПЛИС устройство работало чисто условно — явно не хватало диапазона регулирования ШИМ. После неудачных экспериментов с ПЛИС я решил строить систему управления на микроконтроллере с ядром ARM Cortex-M3. Выбор между STM32F10x и К1986ВЕ92QI однозначно определил опыт Серёги (Декстроплат) Тарасова — миландровкий микроконтроллер показал лучшую надёжность работы тактового генератора. Кроме того, К1986ВЕ92QI показал хорошую помехоустойчивость и в моих экспериментах. При диком монтаже моего экспериментального макета частотного преобразователя, от уровня помех которого через пятнадцать минут зависал даже дубовый мэлтовский ЖКИ, микроконтроллер работал как ни в чём ни бывало. Асинхронный двигатель спокойно продолжал работать и реагировать на команды с пульта управления! Первоначально блоком управления моего микрошагового драйвера была та же самая отладочная плата «русская синяя таблетка» LDM-BB-K1986BE92QI, установленная в беспаечную макетку, благо «восьмикрутовская» триггерная защита на силовой плате безнаказанно позволяла и не такое:
Теперь оценим затраты процессорного времени. Опорным сигналом будет выход первого канала компаратора, а измеряемым сигналом будет состояние контрольного выхода PF6. Для начала закомментируем часть функции, обрабатывающую события захвата, соберём и загрузим в микроконтроллер прошивку.
По сути, СКВТ является конструктивным объединением двухфазного сельсина и однофазного вращающегося трансформатора. Такая конструкция позволяет изготовить СКВТ полностью разборным, его статор и ротор являются электрически и механически не связанными друг с другом! В итоге, СКВТ весьма неприхотлив к условиям эксплуатации и очень надёжен — случаи выхода СКВТ из строя на производстве крайне редки. Как и сельсины, СКВТ используются как датчики углового положения.
Для наибольшей скорости работы микроконтроллера К1986ВЕ92QI тактовую частоту ядра выберем равной максимальной паспортной — 80МГц. Для формирования ШИМ будем использовать каналы 1 и 2 таймера 1, выведенных на контакты РА1 — РА5 порта РА. В эксперименте не будем использовать инверсные выходы и ограничимся только прямыми сигналами ШИМ с контактов РА1 и РА3. Для захвата перепадов входящих импульсов будем использовать каналы 1 и 3 таймера 2, выведенных на контакты РЕ0 и РЕ2 порта РЕ. Третий таймер использовать НЕ будем! Для вывода информации на символьный ЖКИ используем контакты PF0 — PF5 порта РF, а выводить контрольный сигнал будем через контакт PF6. По контрольному сигналу с помощью осциллографа можно будет оценивать время выполнения контролируемых участков кода.
Здравствуйте, уважаемые читатели! Сегодня я расскажу вам об интересном эксперименте — измерении угла положения синус-косинусного вращающегося трансформатора с помощью микроконтроллера K1986BE92QI фирмы Миландр без применения каких-либо специализированных микросхем-контроллеров СКВТ!
Итого, почти 70% (69,85%) процеccорного времени тратится на функцию обработки прерывания и только 30% остаются свободны для прочих задач — перевод чисел в двоично-десятичую форму и выдачу на символьный ЖКИ. Это много, и лучше понизить частоту ШИМ, а соответственно и прерываний от таймера, хотя бы до 250кГц.
После отладки первоначальной прошивки, были разработаны блоки управления. В Резоните были заказаны платы и смонтированные блоки управления были впаяны в уже готовые силовые платы:
Теперь переключим второй канал на вход компаратора после фильтра — казалось бы, странное повышение уровня помех объясняется простым отсутствием заземления осциллографа:
Поскольку метод измерения угла положения СКВТ фазовый, то нужно максимально снизить фазовые искажения, как при формировании фазных напряжений возбуждения СКВТ, так и в тракте измерения фазового сдвига выходного сигнала. Поэтому формировать лучше центрированную ШИМ, чтобы выровнять времянки между фронтами и спадами выдаваемых микроконтроллером импульсов ШИМ. Центрированную ШИМ можно получить, задав автореверс направления счёта — сперва таймер считает прямо, потом дойдя до основания счёта, считает обратно, а дойдя до ноля снова начинает считать прямо. Заполнение импулься задаётся точно также, как и с обычной ШИМ, указанием в регистре CCR, но при этом период ШИМ удваивается. В нашем эксперименте сформируем ШИМ несколько по-другому. Счёт будет только прямой, а для заполнения выходных импульсов будем использовать два регистра — CCR и CCR1. CCR будет задавать начало импульса, а CCR1 — конец импульса. Получается, это уже не центрированная, а оконная ШИМ, но период выходных ипульсов останется прежним. Если задать опорный уровень, равный половине основания счёта, CCR задавать как опорный уровень за вычетом задания, а CCR1 как сумма опорного уровня и задания, то оконная ШИМ сведётся к центрированной. Период сохранится как и на обычной ШИМ, но разрешение по времени сократится вдвое. Кроме того, важно задать обновление регистров CCR и CCR1 только при переходе через ноль основного счётчика таймера, чтобы перезапись этих регистров в цикле прерывания таймера не влияла на ШИМ, это важно!
Источники:
https://uk.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BA%D0%B5%D1%80%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F_%D0%B2%D0%BE%D0%B3%D0%BD%D0%B5%D0%BC&rut=0454d7acd598d3bf833d06f21a3fe6639fc828c873c5e951fdc89d75329a775a
https://m.youtube.com/watch?v=nMueqUjs9I8&rut=f4903a80ebaae1fc8c8a37832d895175db42b86dcfb6d920ff8dc8a429c4a0d9
https://cyberleninka.ru/article/n/teoriya-i-praktika-primeneniya-datchikov-ugla-povorota-na-osnove-skvt&rut=7fbc0d226a27870251ca897c63656042e08a9d5b14a98d1a323851b4449d6cfa
https://ntv.ifmo.ru/en/article/1872/matematicheskoe_opisanie_mikroprocessornoy_sistemy_obrabotki_signalov_skvt_kak_datchika_polozheniya_vala_dvigatelya.htm&rut=f3df2a04809cc16c35ca4d4456c04327b55f50ed8eb8fc8318ef1749a4977467
https://habr.com/ru/articles/590557/&rut=55a1a89007aafea92730193238504c1160514b42194415b7872d2b88dcea7d69
https://kit-e.ru/datchikov-ugla-povorota/&rut=a9d97fa1260d0ade5b8eba1049b1b08991300e0bb4e05cc19ed4571358c4ff4c
https://studref.com/499006/tehnika/sinusno_kosinusnye_vraschayuschiesya_transformatory_skvt&rut=e64cee1c3beb746c8ff1e3d6e22c274916c84e3f475aff2da1bd00f7da78445a
https://kit-e.ru/wp-content/uploads/15358.pdf&rut=90931410f2a6a069c5c581afa2c6f3fa8de9a1c6bd0c77520ceacc0069a98bec
https://studwood.net/2145388/tovarovedenie/vraschayuschiesya_povorotnye_transformatory&rut=db719aa9ab4d06e4977b786a7b305da705116a51bfd585fd1fba1de78595a976