Без энкодеров не обходится ни один промышленный робот, принтер, лифт,  гимбал и проч. Но и в более простых вещах энкодеры тоже нужны. При этом индустриальный энкодер на 1024 точки может обойтись дороже самого мотора. Здесь представлен проект индуктивного энкодера способного упростить жизнь создателям мехатроники.

Энкодер называется абсолютным потому что после подачи питания он сразу сообщит угол на который повернут.  

Промышленные энкодеры обычно бывают оптические и магнитные. Оптические требуют создания стеклянного, зеркального или иного высококонтрастного диска с очень точным рисунком дорожек. Но оптические диски критически боятся загрязнений. Магнитные энкодеры критически боятся сильных внешних магнитных полей, а такие поля рядом с электрическими моторами всегда бывают. Поэтому индуктивный энкодер остаётся одним из самых технологичных решений. 

Когда говорят про индуктивный энкодер, то обычно представляют cебе такую конструкцию:

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

Наш энкодер сделан на иной технологии.  Он выполнен на базе микросхем преобразователей индуктивность-код LDC1101 . Постобработку, коррекцию и обмен с внешним миром осуществляет микроконтроллер.

Микросхема LDC1101 содержит внутри осциллятор работающий на частоте в районе  0.5…10  МГц  с подключённым внешним LC контуром. Когда рядом с LC контуром появляется проводящий ток объект, частота контура меняется за счёт вносимой дополнительной индуктивности. Отклонение частоты контура измеряется микросхемой и записывается во внутренние регистры c 24-битным представлением. Оттуда это значение можно прочитать через интерфейс SPI.  Частота семплирования результатов измерений может достигать  150 тыс. отсчётов в секунду. Однако чем выше частота семплирования тем ниже точность измерения. Максимальное разрешение в 24 бита удаётся получить при частоте семплирования 15 тыс. семплов в секунду. При таком разрешении можно засечь микронные поперечные перемещения находящихся на сантиметровых дистанциях проводящих объектов. Но в нашем случае речь идёт о вращающемся объекте, и тут много неизвестных. Целью проекта было установить с какой угловой точностью и скоростью при ограничениях на размеры мы могли бы определять поворот.  

Схема энкодера

Непосредственно источником вдохновения для проекта является вот этот апноут. Апноут демонстрирует идею как разработать мишень для сенсора и нивелировать её неидеальную геометрию и позиционирование. Но в нем применено мультиплексирование каналов измерения. Чтобы избежать задержек при мультиплексировании и повысить быстродействие было применено 4 независимых чипа вместо одного.

Схема платы энкодера
Схема платы энкодера

Модуль управляется микроконтроллером MKS22FN256VFT12 (120MHz, 256 КБ Flash, 64 КБ RAM ) Питание модуль получает от интерфейса USB(v 2.0 full speed) – 5 В  или от разъёма X1 - 3.3 В. Коммуникация с модулем осуществляется по интерфейсам:

  • CAN, разъем X2

  • SPI, разъем X1

  • I2C, разъем X1

  • USB, разъем X4

  • Отладочный интерфейс SWD, разъем X3

Перепрограммируется модуль через интерфейс SWD (X3) с помощью JTAG/SWD адаптера.

Плата энкодера

Вид верхнего слоя платы энкодера
Вид верхнего слоя платы энкодера

Интересной технологической вещью платы энкодера являются катушки индуктивности для LC контура сенсоров индуктивности. Эти катушки не должны быть слишком маленькими, иначе частота резонанса выйдет за допустимый диапазон сенсоров, но требования дизайна частот требует минимизации размеров энкодера. И тут был найден некий компромисс. Платы выполнена 4-слойной, чтобы обеспечить больше обмоток у катушек, а диаметр катушек снижен практически до минимального с учётом допустимого минимального зазора между дорожками в 0.1 мм. Однако есть ещё резерв для дальнейшего снижения размера.

Сам расчёт индуктивности катушек производится с помощью таблиц Excel предоставляемых фирмой TI. В проекте это файл LDC_Tools-ext22.xlsx

Вот вид таблицы для расчётов:

Катушки индуктивности имеют следующие параметры

  • Количество витков в одном слое - 8

  • Количество слоёв - 4

  • Диаметр катушки - 5.2 мм

  • Ширина проводника в катушке - 0.102 мм

  • Расчётная индуктивность катушки - 2.729 мкГн

  • Ёмкость конденсаторов параллельных катушке - 200 пФ

  • Частота резонанса катушек без поднесённой цели - 6.75…6.77 МГц

А вот так выглядит катушка на 4-слойной плате:

Другой технологической особенностью является изготовление мишени для сенсора

В оригинальном апноуте представлена металлизация на плате в виде ромба по кругу.  

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

Наша мишень получилась такая:

Разрабатывалась мишень в среде Altium Designer и для получения нужного контура металлизации использовался скрипт. Проект построителя мишени со скриптом находится в директории Target_builder. А выглядит процесс так:

Макет и испытания энкодера

Был изготовлен макет с мотором для испытаний энкодера. К большой точности не стремились, поскольку цель была испытать энкодер без тщательного позиционирования.

Для измерения угла поворота мишени используется способ измерения индуктивности 4 катушек в магнитном поле которых вращается мишень. Металлизация мишени изменяет индуктивность катушек в зависимости от площади металлизации находящейся над катушками. Поскольку мишень  имеет криволинейную фигуру из медного покрытия, то во время её вращения над модулем изменяется площадь медного слоя над каждой катушкой. Катушки реагируют на изменяющуюся площадь изменением своей частоты резонанса, которая измеряется и конвертируется в угол поворота.

Осциллограмма на катушке во время измерения индуктивности
Осциллограмма на катушке во время измерения индуктивности

Инициализация LDC1101 

В данном проекте используется режим измерения LHR – измерение индуктивности с высоким разрешением (24 бита) Время измерения в режиме LHR  задаётся уравнением:

Measurement Time (tCONV)= (RCOUNT[15:0] ˣ 16 + 55)/fCLKIN
RCOUNT = RCOUNT [15:8]×256 + RCOUNT [7:0]
Допустимый диапазон: 2 ≤ RCOUNT[15:0] ≤ 65535

Значение RCOUNT устанавливается через регистры: LHR_RCOUNT_LSB и LHR_RCOUNT_MSB. Для частоты измерений 2 кГц устанавливаем RCOUNT = 496 (0x1F0). Для оптимальной разрешающей способности сенсора в режиме LHR должно соблюдаться условие ƒCLKIN > 4*ƒsensor_max. Где ƒCLKIN частота тактирования LDC1101 (16 МГц в данном случае) , ƒsensor_max частота сенсора подаваема на измеритель. Для соблюдения этого условия назначаем коэффициент деления для  ƒsensor_max в регистре  LHR_CONFIG равный 2.

Типичная форма сигналов измерения индуктивности 4-я сенсорами при равномерном вращении мишени
Типичная форма сигналов измерения индуктивности 4-я сенсорами при равномерном вращении мишени

Как видно сигналы немного не синусоидальны, тем не менее после их сложения получается довольно равномерная пила

Способы калибровки и расчёт угла поворота

Калибровка заключается в снятии графиков индуктивности с 4-х катушек и вычислении на их основе констант нормирования, которые потом применяются для вычисления угла по текущим данным с датчиков.

Записывается сигнал в течении полного оборота мишени. Из 4-х сигналов находят два сигнала представляющие разность сигналов с противоположных катушек. Эти сигналы именуются X и Y, они смещены на 90 град относительно друг друга. У сигналов X и  Y находят амплитуды и смещения относительно нуля, которые служат для последующего нормирования этих сигналов. Предполагается при этом, что сигналы имеют синусоидальную форму или очень близкую к ней.  Угол рассчитывается как функция арктангенса от отношения нормированных X и Y.

Здесь показан скрипт для среды MATLAB демонстрирующий такой способ калибровки

% В рабочем пространстве должен быть загружен массив recdata с записью сигналов от
% 4-х датчиков во время как минимум одного полного поворота мишени и переменная st означающая период выборки сигналов

% Результатом работы скрипта является получение констант AX OX AY OY
% необходимых для вычисления угла и вывод графика угла поворота мишени 
% 

% Находим разностные значения с парных датчиков
X = recdata(1,:) - recdata(3,:); % Вычисляем сигнал X
Y = recdata(2,:) - recdata(4,:); % Вычисляем сигнал Y сдвинутый относительно X на 90 град

% Находим верхние пики  сигнала X
[pX_h] = findpeaks(X,'MinPeakDistance',100,'MinPeakProminence',10000);
% Находим нижние пики  сигнала X
[pX_l] = findpeaks(-X,'MinPeakDistance',100,'MinPeakProminence',10000);
pX_l = -pX_l; % Восстанавливаем знак 
AX = (pX_h(1)- pX_l(1))/2; % Амплитуда X
OX = (pX_h(1)+ pX_l(1))/2; % Смещение  X

% Находим верхние пики  сигнала Y
[pY_h] = findpeaks(Y,'MinPeakDistance',100,'MinPeakProminence',10000); % Указываем чтобы пики не были слишком близко друг от друга и слишком маленькими
% Находим нижние пики  сигнала B
[pY_l] = findpeaks(-Y,'MinPeakDistance',100,'MinPeakProminence',10000);
pY_l = -pY_l; % Восстанавливаем знак 
AY = (pY_h(1)- pY_l(1))/2; % Амплитуда Y
OY = (pY_h(1)+ pY_l(1))/2; % Смещение   Y

X = (X-OX)/AX; % Корректируем сигналы масштабированием и сдвигом
Y = (Y-OY)/AY;

% Готовим окно для вывода графиков
x_axis = linspace(0, st*(length(recdata)-1),length(recdata) ); 
scrsz = get(groot,'ScreenSize');
figure('OuterPosition',[1 50 scrsz(3) scrsz(4)-50]); % 

sbpl = subplot(2,1,1); %  divides the current figure into an m-by-n grid and creates an axes for a subplot in the position specified by p
plot(sbpl, x_axis, X, x_axis, Y); 
grid on;

A = atan(X./Y)*180/pi+90;
A = A + (Y>0).*180;
sbpl = subplot(2,1,2);
plot(sbpl, x_axis, A); 
grid on;

% Дополнительно проверим в каких границах находится полученный угол
[pA_h] = findpeaks(A,'MinPeakDistance',10,'MinPeakProminence',10);
[pA_l] = findpeaks(-A,'MinPeakDistance',10,'MinPeakProminence',10);
pA_l = -pA_l; % Восстанавливаем знак
% Вычищаем рабочее пространство от лишних переменных 
clear x_axis scrsz sbpl pX_h pX_l pY_h pY_l  
Результат выполнения скрипта в MATLAB
Результат выполнения скрипта в MATLAB

Шумы и другие факторы

График статического шума при измерении угла устройством при частоте семплирования 2 Кгц
График статического шума при измерении угла устройством при частоте семплирования 2 Кгц

Измерения статического шума показали, что при  измерение угла при частоте семплирования 2 кГц отсутствует шум  в показаниях до 11 бит,  а  при частоте семплирования 1 кГц до 12 бит.

Влияние температуры

В таблице ниже приводятся данные измерения в одной произвольно выбранной точке при изменении температуры:

Температура

Угол

-15

114

30

113

50

112.5

Измерения показали, что в диапазоне изменения температуры от -20 до +50 град. С измеренное значение угла меняется на 2 град. На плате модуля для компенсации влияния температуры установлен термистор. Сенсоры сохраняли работоспособность при температуре -30 град. С.

Влияние изменения зазора между мишенью и сенсорами на точность измерения угла

График влияния изменения дистанции от сенсоров до цели. Дистанция менялась на 0.1 мм и меньше. Минимум меди цели был над сенсором 4
График влияния изменения дистанции от сенсоров до цели. Дистанция менялась на 0.1 мм и меньше. Минимум меди цели был над сенсором 4

График показывает, что изменение уровня сигналов на сенсорах на 2% приводит к изменению значения угла на 0.1% , т.е. схема измерения компенсирует влияние изменения зазора на точность измерений. Более точную характеристику влияния зазора получить не удалось поскольку механическая конструкция для тестирования не была оснащена инструментами для измерения малых приращений дистанции. Общий вывод таков: сенсор очень чувствителен к неравномерному изменению зазора между мишенью и 4-ми катушками сенсора. Лучшая компенсация достигается, когда зазор одинаково меняется от мишени до всех катушек.

Влияние внешнего магнитного поля.

При поднесении магнита на близкое расстояние к катушкам их показания не менялись. Вывод: магнитное поле не влияет на сенсоры.

Программное обеспечение

Программное обеспечение (ПО) модуля написано с использованием операционной системы реального времени uCOS-III. Компилируется проект ПО в среде IAR embedded workbench for ARM. Файл рабочего пространства проекта называется AngleSens.eww и находится в директории IAR_proj .

Одной из задач ПО модуля является вывод информации о сигналах с сенсоров и других данных на компьютер. Вывод осуществляется через интерфейс USB. При подключении модуля к компьютеру в системе появляется два виртуальных COM порта. Через младший порт устанавливается связь с внутренним терминалом VT100 модуля, через старший порт устанавливается связь с сервисом FreeMaster модуля. 

Подключение к терминалу VT100 модуля служит для наблюдения и управления в реальном времени содержимым всех регистров 4-х микросхем сенсоров LDC1101. Параметры связи при подключении к порту (скорость, чётность и т.д.) могут быть произвольными. Если компьютер с более ранними версиями Windows (8, 7, XP ...) не находит драйвера виртуальных портов автоматически, то можно использовать файл fsl_ucwxp.inf из директории проекта для ручной установки драйверов.

Сервис FreeMaster в микроконтроллере даёт возможность подключиться к нему через специализированную программу FreeMaster выполняющуюся на  компьютере. Эта программа позволяет в удобной форме выводить графики сигналов и значения переменных из микроконтроллера в реальном времени, выдавать команды в микроконтроллер и экспортировать данные в Matlab для последующего анализа. Связь осуществляется через USB посредством виртуального COM порта.   В программе FreeMaster все выполненные в ней настройки графиков и панелей с наблюдаемыми переменными сохраняются в файлы проектов c расширением .pmp. Для данного проекта был разработан демонстрационный проект с сохранен в файле FreeMaster_ANSIN.pmp   

Перечень сигналов и переменных доступных для наблюдения через FreeMaster можно увидеть в исходных текстах ПО модуля в файле FreeMaster_vars.c. При необходимости этот список можно свободно дополнить или сократить. После этого перекомпилировать проект и перепрограммировать микроконтроллер.

Из окна программы FreeMaster (Application Commands) также можно отправить команды модулю. Реализованы следующие:

  • Update_registers - записывает в регистры всех 4-х микросхем сенсоров данные из массива LDC1101_regs[0..3]. Ячейки этого массива доступны для прямого редактирования во FreeMаster. И данная команда переносит их значения непосредственно в регистры микросхем.

  • Save_settings -   сохраняет калибровочные константы из структуры cdata во внутреннюю Flash память микроконтроллера модуля. Поля структуры cdata доступны для редактирования во FreeMaster но, чтобы отредактированные данные сохранить надо выполнить эту команду.   

  • Reset - программный сброс модуля.

Процесс калибровки модуля

В микроконтроллере калибровочные константы хранятся в структуре cdata.

Чтобы установить в микроконтроллере правильные калибровочные константы следует выполнить следующие шаги.

Открыть программу FreeMaster, и выполнить действия как указано ниже. Через меню Tools -> Connection Wizard вызвать диалог опций подключения. Выбрать опцию как на скриншоте.


Поставить галочку у портов, на которых возможно работает сервис FreeMaster модуля, если точный номер порта неизвестен. Нажать далее. Если модуль подключён, то появится сообщение о подключении.


В левой панели программы с названием Project Tree выбрать пункт Calibrating_parameters. В нижней панели отобразятся текущие параметры калибровки:

  • cdata.ax - амплитуда сигнала X cdata.ox - смещение сигнала X

  • cdata.ay - амплитуда сигнала Y

  • cdata.oy - смещение сигнала Y

  • cdata.offset - смещение измерительного тракта, служит для настройки максимального размаха сигналов в регистрах LHR

  • cdata.rcount - задает внутреннюю частоту выборки сенсоров LDC1101

На этом этапе регулируем cdata.offset и cdata.rcount чтобы добиться установить нужную частоту выборки и размах сигналов. Мишень при этом должна равномерно вращаться.


Переходим на пункт LHR Samples в панели Project Tree. Мишень вращается. Нажимаем кнопку Run. Спустя десяток секунд Stop. Появляется запись сигналов как на скриншоте.


Включаем Matlab и запускаем в нем скрипт Import_from_FreeMaster_Util.m (находится в директории проекта Matlab). Окно FreeMaster должно при этом оставаться открытым и без изменений. В результате выполнения скрипта появится график с данными перенесёнными из окна FreeMaster.


Запустить в Matlab скрипт Calculation of calibration constants.m  (находится в директории проекта Matlab). В результате выполнения скрипта появится график с преобразованными сигналами и графиком угла поворота. Одновременно с этим в рабочем пространстве Matlab появится калибровочные константы: AX, OX, AY, OY. Их надо перенести в переменные cdata.ax ,cdata.ox,cdata.ay,cdata.oy соответственно и выполнить команду Save_settings в нижней левой панели окна FreeMaster с названием Application Commands. Это приведет к сохранению констант во Flash памяти модуля.

Протокол обмена с хост контроллером по шине SPI

Кроме связи с компьютером ПО модуля способно выдавать данные через интерфейс SPI на внешний управляющий контроллер - хост. Ниже дано описание протокола.  При подключении хоста к модулю следует установит режим SPI как показано на рисунке ниже

SPI интерфейс модуля работает в режиме слэйва. Хост микроконтроллер работает в режиме мастера. Частота тактирования SPI не более 10МГц. Модуль отдаёт хосту измеренную величину угла в формате float point состоящим из 4-х байт младшим байтом вперёд. Внутренняя частота обновления значения угла в модуле чуть выше 2 КГц.

Протокол обмена по SPI
Протокол обмена по SPI

Обмен начинается с установки модулем сигнала лог.1 на лини READY.
Хост читает блок данных фиксированной длины равной 6-и байтам. Блок данных содержит текущее значение угла, измеренного модулем.   Поле ID = 0.
После того как 6-ть байт будут прочитаны хостом модуль готовится к приёму 6-и байт от хоста и снимает сигнал READY. После снятия сигнала READY хост может в течении 500 мкс (чтобы выдержать частоту семплирования 2 КГц) выдать пакет из 6-и байт модулю, который модуль прочитает и выполнит с данными какие-либо действия. Пакет, например, может содержать команду модулю для начала обмена служебной информацией (это требует реализации). Если хост не выдал пакета команды, то модуль продолжает каждые 500 мкс (или другое предварительно согласованное время) выдавать сигнал READY. Сигнал READY не снимается пока хост не прочитает 6-ть байт из модуля.  

Итог

Впечатление от технологии индуктивных сенсоров LDC1101 осталось очень положительным. Невосприимчивость к магнитным полям и достаточно высокое быстродействие делают сенсоры такого типа пригодными для использования в стабилизаторах положения и векторном управлении.
Однако если не обращать достаточно внимания на механическую точность, то расплачиваться придется усложнением калибровки.
Но в целом на малых скоростях данный энкодер способен заменить оптический энкодер на 2048 точек.

Весь проект находится здесь

Комментарии (100)


  1. Javian
    13.12.2021 10:48
    +7

    Был изготовлен макет с мотором

    офф Честно говоря я восхищен. Это не заводское? Коническая зубчатая пара, металлический корпус...


  1. FGV
    13.12.2021 10:56
    +3

    Хм, мишень из текстолита? не покоробит от влаги? что с балансировкой?


    1. Indemsys Автор
      13.12.2021 11:24
      +13

      Мишени разные испытывали.
      Вот сбалансированная из нержавейки:


  1. forthuser
    13.12.2021 11:14
    +2

    Но в целом на малых скоростях данный энкодер способен заменить оптический энкодер

    Спасибо за статью.

    Насколько малых скоростях? Сотни оборотов в минуту, больше?
    Хотелось бы видеть какие то таблицы измерений.

    P.S. И, насколько изменяющаяся металлическая полоса в её ширине позволяет получить предполагаемую точность измерений полагаю соотносящююся с используемыми катушками индуктивности выполненных печатным способом.


    1. Indemsys Автор
      13.12.2021 11:31
      +2

      В статье показан график шума на частоте 2 КГц.
      Вы сами решаете подходит или нет.
      Т.е. зная заданные обороты выбираете сколько точек на оборот хотите получить. Прикидываете какой там будет шум и соответственно точность. Если точность устраивает, то значит все получится.
      Для 1500 оборотов в минуту, как у обычного асинхронного двигателя думаю 128 точек с 9-и битной точностью можно получить.

      А проект потому и открытый чтобы заинтересованные сами его развивали.


  1. lab412
    13.12.2021 11:23
    +2

    я верно понимаю что это абсолютный однооборотный энкодлер вышел? как быть если оборотов больше чем 1? ну тоесть у вас там куда то батарейка прицепляется как у подобных девайсов и считается количество оборотов которые можно узнать потом?

    может я конечно пропустил по тексту, но сразу не вижу какая максимальная скорость вращения? и максимальная скорость получения данных с энкодера тоже интересует. например у меня в руке робота двигатели по 4000об/мин вращаются и в них 17ти битные энкодеры позволяют отдавать данные до 2,5 миллионов точек в секунду (данные из мануала). скажем вы получаете 10 точек в секунду с энкодера, точное положение гарантировано, но если двигатель будет вращаться 10об/сек то каждая точка что вы будете получать будет одной и той же так как угол поворота вала будет одним и тем же при замерах данных. так что вопрос предельной скорости вращения важен. плюс на больших скоростях и малых скоростях сэмплирования точность упадёт. если у вас 15к точек в секунду, но на скорости 1об/сек вы получите 15к точек точность, а при 60об/сек (4000rpm) вы уже получаете 250 точек на оборот что довольно таки мало для точных девайсов (не для лифта, а для станка с чпу или руки робота)


    1. Indemsys Автор
      13.12.2021 11:51
      +4

      Да все точно написали.
      Для скоростных дивайсов с прецизионным позиционированием такой энкодер не подойдёт.
      Однако в своей практике я не встречал мощных частотных приводов с ШИМ-ом больше 24 КГц.
      Т.е. такому приводу даже на 4000об/мин не пригодятся отсчёты чаще чем 24 килосемпла в сек.
      Данный энкодер способен давать до 150 килосемплов в сек. Насчет точности при этом не скажу. Не пробовал.


    1. cujos
      14.12.2021 19:37

      А каким интерфейсом можно считать "2,5 миллиона точек в секунду"? Инкрементник что ли? В двигателях постоянные времени в районе 500 - 2000 Гц, 2.5 МГц им не нужно. А большое разрешение нужно скорей для хорошей обратной связи по скорости особенно на низких скоростях вращения. И частота опроса больше частоты PWM двигателя не нужна в принципе.


  1. engine9
    13.12.2021 12:27
    +2

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



    1. Indemsys Автор
      13.12.2021 17:16
      +2

      Пыли может быть очень много. Энкодер на неё не реагирует.
      А как будет работать механика в пыли вопрос к механике.


      1. VT100
        14.12.2021 00:03

        Немагнитной пыли?


  1. Gryphon88
    13.12.2021 13:38
    +1

    Спасибо большое. Насколько я понял, этот энкодер позиционируется как "дешево и сердито". Не поделитесь, сколько у Вас BOM получился?


    1. Indemsys Автор
      13.12.2021 17:18
      +2

      Это исследовательский проект и я не считал BOM поскольку реально не пытался минимизировать цену. Здесь и размер платы завышен и интерфейсы избыточные.
      Но думаю 40-60 евро будет стоить при заказе 100 шт.


  1. Spym
    13.12.2021 14:21

    Коммуникация с модулем осуществляется по интерфейсам:

    CAN, разъем X2

    Какой протокол верхнего уровня используется?


    1. Indemsys Автор
      13.12.2021 17:24

      По CAN именно в этом примере фирмваре ничего не передаётся.
      Но у меня есть другой открытый проект на микроконтроллере этого семейства где протокол по CAN реализован. Там просто запрос-ответ с жёстко заданными идентификаторами и форматами пакетов для каждого сообщения индивидуально.


  1. jaiprakash
    13.12.2021 15:31
    +1

    А что с влиянием мощных электромагнитных полей, которые должны присутствовать при работе двигателей?


    1. FGV
      13.12.2021 15:40

      Вроде по принципу измерения влиять не должны, и в статье написали что проверили - не влияют.


    1. Indemsys Автор
      13.12.2021 17:30

      Мощные электромагнитные поля конечно могут вывести из строя все что угодно.
      Я проверял в полях обычных BLDC двигателей и неодимовых магнитов. Они не влияют.

      Если речь о сильных помехах от коммутации силовых элементов, то полагаю что они могут исказить один или два отсчёта, но не более. Скорее такие помехи приведут к сбою на шине коммуникации с хостом или сбою самого хоста.


  1. johnfound
    13.12.2021 20:27
    +1

    Ну-у-у, как сказать. Это по сути аналоговый датчик положения. Конечно если точность устраивает, почему бы и нет. А с другой стороны, есть же конструкции и чисто цифровые: Абсолютный поворотный энкодер с однодорожечным кодом Грея


  1. lonelymyp
    13.12.2021 20:39
    +1

    Но есть же магнитные энкодеры, стоимость копеечная, габариты и обвязка минимальные. Тот же AS5600 из самых простых, за 150 рублей отдают: https://aliexpress.ru/item/1005001785138053.html


    1. pvvv
      13.12.2021 20:42

      магнитные энкодеры постоянных полей боятся, в отличии от индуктивных датчиков.


      1. FGV
        13.12.2021 20:53

        Есть еще емкостные. К слову в поисках чего бы прикрутить подешевле на второй вал торчащий из движка наткнулся на amt102/amt103, выглядят аппетитно и относительно дешевые, как в работе - хз, как приедут буду мучать.


        1. pvvv
          13.12.2021 23:19

          у механичеких и потенциометров живучесть под вопросом.


          емкостные вроде обычно по размерам получаются больше индуктивных, то есть как у автора в квадратный сантиметр на плате можно более менее приличную индуктивность спокойно упихать + в глубь на несколько слоёв уйти можно, а с ёмкостью 1х1см да на 1мм расстояния до "мишени" будет 1пФ, что вполне сравнимо с паразитыми ёмкостями и работать будет так себе.


          из подешевле ещё есть оптика tcut1300, из печатной платы можно диск сделать практически за бесплатно, только не с отверстиями как в мышке, а наоборот с медными дорожками, тонкий текстолит на 900нм достаточно прозрачный, ну и удавалось на 20мм диаметре нарисовать дорожек с расстоянием 0.8*3/4 под расстояние между оптопарами, так что sin/cos сигнал не прямоугольный, а плавный sin/cos с 5 градусов периодом, который ещё раз в 100 интерполировать можно.
          если откалиброваться до 0.1 градуса повторяемости вполне получалось, но от температуры/влажности может и уплыть куда-нибудь.


          1. Indemsys Автор
            13.12.2021 23:27

            Энкодер на потенциометре тоже применяем, когда надо предельно дешево.
            Но оказалось что у них сильный как бы это назвать - "гистерезис"

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


            1. belav
              14.12.2021 00:17

              Это больше на люфт в механике похоже.


      1. PKav
        13.12.2021 22:09

        Довольно странно, учитывая то, что их ставят непосредственно на мотор и никаких проблем не наблюдают. У них явно есть АРУ, которое подстраивает усиление под силу магнитного поля, и для того, чтобы исказить показания нужно пересилить поле магнита, который удален от микросхемы на десятые доли миллиметра. В теории реально, на практике только если кто-то специально принесет огромный магнит и прислонит к корпусу энкодера.


        1. pvvv
          13.12.2021 23:05

          вопрос в абсолютной точности.
          у этого датчика диапазон измеряемых полей — 50мТ, магнитное поле Земли 50-100мкТл, то есть если повезёт, то уже 0.2/50 = 0.4% уход нуля просто от того, что мотор в пространстве, например, перевернули на 180 градусов.
          плюс около железяк (корпус мотора) поле Земли в него ещё засосёт магнитной проницаемостью железа из окружающего пространства и может ещё раза в 2-3 тем самым усилить в районе датчика, хотя может и заэкранировать точно также.
          а так конечно 12бит.


          1. PKav
            14.12.2021 10:39

            На сколько я понимаю, AS5600 устаревшая модель, сейчас есть AS5047P, у него 14 бит и 28 тыс. оборотов в минуту. Что до магнитного поля, не очень в этом разбираюсь, но специально сейчас проверил. Установил вместо штатного маленького крупный неодимовый магнит. Это не вызвало у AS5047P никаких затруднений, шум остался в пределах двух младших разрядов, двигатель успешно откалибровался и вошел в Closed Loop.


            1. pvvv
              14.12.2021 12:03

              повторюсь про абсолютную точность.

              Откуда вы знаете что у него абсолютное значение нуля при этом не ушло на градус? В большинстве случаев это никак не помешает, особенно если есть отдельный референс. 14 бит разрешения это конечно здорово, но если ноль может сам по себе на градус гулять, то толку от такого разрешения.


    1. Indemsys Автор
      13.12.2021 23:14

      Есть у меня проект и с магнитным энкодером на TLI5012. Позже выложу.
      Результат там был такой что размещение такого круглого магнитика как на фото выше в 10 см от энкодера который оснащался своим магнитом мог вызвать ошибку в один градус у энкодера.
      А это уже неприемлемо было в моем случае. Плюс магниты еще сложней ставить и калибровать для задач точного позиционирования.

      Да и на перекос механики одиночные магнитные энкодеры хуже реагируют. А как из них сделать взимо-компенсирующие группы как в случае с индуктивными слабо представляю.


    1. jumpercc
      15.12.2021 16:35

      Использую именно такие в своём проекте.

      Рядом сервы и пара двигателей.

      Полёт нормальный.

      Отклонения, если и есть, - незаметные.


  1. Ndochp
    13.12.2021 23:32
    +4

    А не встречали статьи, где бы для чайников пояснялось, почему мышь с шариком это 150 постсоветских рублей за пару, а энкодер это дорого и точно. Вроде курсор тоже достаточно точный приборчик.


    1. srg27y
      14.12.2021 09:48
      +2

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


    1. PKav
      14.12.2021 10:49
      +1

      Там разрешение на оборот где-то на два порядка ниже, чем в промышленных энкодерах.


      1. srg27y
        15.12.2021 08:36

        дело даже не в разрешении, а в точности и повторяемости

        если при перемещении мыши на 15 см, выдаёца условно 205-255 отсчетов, то никакой дачтик перемещения из этого не сделать


        1. Ndochp
          15.12.2021 13:32

          Ну то есть вся точность позиционирования курсора не в точности датчиков а в обратной связи через оператора?
          Хотя вроде неплохо можно было пострелять в браузерной игрушке, где плавно увеличивали прозрачность курсора и нужно было поражать появляющиеся мишени. Через 5 секунд уже стрельба шла по всему экрану без курсора. Но (вроде) с демонстрацией точки попадания.


  1. Lexicon
    14.12.2021 01:58
    +1

    Вау, как здорово, напомнило канал PCB-поделок и проект PCB мотора

    У вас еще нет своего Youtube аккаунта?


  1. Dark_Purple
    14.12.2021 01:59

    Пользуем эти, неплохо себя показали.


    1. Indemsys Автор
      14.12.2021 10:22

      Спасибо, интересный вариант.
      Но первое что настораживает в даташите это такая фраза -
      Some stepper motors may leak a magnetic field causing the AMT index pulse to not function properly (non-magnetic version available with 8 pulses per revolution)

      А в технической презентации вот такая -
      As the encoder rotates, an integral ASIC counts these line changes and also interpolates to find the position of the shaft and direction of rotation to create the standard quadrature outputs

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


      1. FGV
        14.12.2021 10:55

        Some stepper motors may leak a magnetic field causing the AMT index pulse to not function properly (non-magnetic version available with 8 pulses per revolution)

        а что насторожило то? то что сигнал метки начала у них магнитный?

        Т.е. используется не прямое измерение, а интерполяция.

        и что?

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

        это почему?


        1. Indemsys Автор
          14.12.2021 11:08

          Да, странно что для более точных меток ёмкостная технология, а для более грубого измерения вдруг магнитный. Что помешало применить ту же ёмкостную технологию?

          Я честно плохо понял их технологию. Если они выдают импульсы уже после того как было проведено последнее измерение и до того как случилось следующее, то это не интерполяция, а экстраполяция. Т.е. предугадывание.


      1. Dark_Purple
        14.12.2021 18:35

        Да, есть косяк с этими энкодерами. Косяк в том что при определении абсолютного положения (один импульс на оборот) может быть не один импульс, а 8 импульсов. Связано это с тем что абсолютное положение определяется в том числе по датчику холла который стоит внутри энкодера. Этот датчик в самом деле может реагировать на магнитное поле ротора мотора. Эта проблема проявляется если устанавливать энкодер непосредственно на мотор. Проблема полностью решается установкой металлической пламтины 1мм между мотором и энкодером, в этом случае будет 1 импульс, а не 8 как и положено.

        Определение относительного положения работает всегда идеально.


  1. Gudd-Head
    14.12.2021 07:20
    +2

    Единицы измерения поправьте: "мкг", "КГц"...

    "24-е бита" буквенные окончания числительных используются только для порядковых значений, напр. "24-й бит".



  1. cujos
    14.12.2021 19:06
    +2

    Кстати делаем в Питере серийно индуктивные (для меня правильнее индукционные) энкодеры для приводов, по 17-19 бит (можем и 20-23 делать), многоборотные с работой от батарейки, с периодом обновления 10-14 мкс (можно и 600 нс сделать). Погрешность в районе пары угловых минут. А вариантов "открытых" довольно много. Кроме LDC1101 у TI, есть у Microchip - LX34050 и LX330x, у Renesas - ZMID520x и другие. А также уже лет 8 есть Кембриджские CAM204, CAM312 и др. Все с мануалами и примерами.


    1. Altair55
      15.12.2021 09:56

      А вы кто? Где можно на вас подробнее посмотреть?


      1. cujos
        15.12.2021 10:11
        +2

        Не знаю насколько корректно рекламировать себя в чужих постах, и потребительский сектор (тем более в России) нам cовсем не интересен. Зовёмся Lenz Encoders. В общем имею десятилетний опыт в разработке угловых преобразователей и приводной техники с обратной связью. Могу ответить на любые вопросы. Из того что было выше: максимальная частота вращения у них такая, что вряд ли возможно её проверить. Могу сказать, что готов сделать 18 разрядный датчик на 40 000 об/сек (именно в сек). Способов уменьшения и контроля погрешности очень много. Мы делаем ~ 1-2 угл. минуты, потому что это можно получить дешево для нас и для заказчиков. Погрешность меньше минуты это прежде всего точная механика. Пока для нас это скорее хобби, но датчики успешно стоят (в небольших количествах) на производствах в Европе.


        1. Altair55
          15.12.2021 10:25

          Спасибо! Очень интересно! Может и рекламироваться нельзя, но мне вот интересно - я раньше не встречал. 18 бит 40-1 это абсолютные? Вот то что на картинке он на каком принципе работает?


          1. cujos
            15.12.2021 10:33

            Делаем только абсолютные, можем делать многооборотные с запоминанием при выключении питания или со счетом оборотов от батарейки (50 мкА потребление). Принцип примерно такой что и у всех, только у нас датчики двухотсчетные, как у зеттлекса, но без всяких резонансов. Трансформаторы и электроника свои. Сердце всего G030. Если хотите больше разрядов или скорости то H730. Цена всего BOM сопоставима с LD1101. Интерфейс только BISS C, хотя можем сделать и другие если будет большая потребность. В следующем году будет BISS Line. К датчику можно подключить термистор, установить нулевое положение и направление вращения через BISS. Ну выполняем любые пожелания.


            1. Altair55
              15.12.2021 12:19

              Как контролируют погрешность? Опять же Зеттлекс делает точность 2 секунды. Не разрешайку, а именно точность. Как такое вообще контролируется / калибруется?


              1. cujos
                15.12.2021 12:38

                Не делают они точность(верней погрешность) 2 секунды, там все очень близко к нам. 2 секунды мы тоже можем получить при желании, проблема только в механике, там будет каленка и 6 квалитет у деталей + допуски меньше 1 сотки на посадку. Мы каждый датчик калибруем и проверяем в автоматическом режиме. Эталон Renishaw Tonic с двумя головками + свои фильтры, эктраполяторы и компенсация. Теоретическая погрешность эталона 0,6-0,8 угл сек. Но нам и 5 достаточно, так что даже поверять не планируем, там явно меньше 2 угл сек.


                1. Altair55
                  15.12.2021 12:51

                  Тот же Z..x говорит что несоосность им пофиг.

                  Я похоже уже экспертом по их продукции стал пока все прочитал :-)


                  1. cujos
                    15.12.2021 12:55

                    Могу сказать что в даташите они заявляют 22 разряда с повторяемостью +-1, на деле там только 18 причем довольно медленных. А еще там есть дисклеймер, что за точность даташита Zettlex не несет ответственности. Несоосность влияет только на погрешность, монотонность при этом сохраняется.


                    1. Altair55
                      15.12.2021 13:01

                      Я вообще то радист и мне даже 18 бит с 96 дБ ДД выглядят не очень просто достижимыми, а 22 бита совсем за гранью реальности. Только в математике :-). Дисклеймер вот не видел.

                      Хочу сделать стенд с длинным рычагом, который двигать с помощью винта микрометра. Таким образом сделаю малые приращения. Думаю что при малых нагрузках жесткости рычага хватит что бы быть абсолютно твердым телом.


                      1. cujos
                        15.12.2021 13:04

                        посмотрите в сторону Netzer, они в 2-3 раза точнее, и вот, например, на ибее продается за дешево https://www.ebay.com/itm/184311997124


                      1. Altair55
                        15.12.2021 13:14

                        Точнее чего?


                      1. cujos
                        15.12.2021 13:16

                        аналогов Zettlex


                      1. cujos
                        15.12.2021 13:29
                        +1

                        к слову


                      1. Altair55
                        15.12.2021 13:33

                        О, суперррр. А нижние это кто?


                      1. cujos
                        15.12.2021 13:49
                        +3

                        нижние (слева) Netzer, в плане повторения кстати самый простой вариант, диск распечатать можно, платы довольно простые, даже на JLC можно сделать. Единственное схемотехника там не тривиальная в плане понимания, если не знать как работают схемы на переключающихся конденсаторах. Планирую (уже пол года как) выложить одноотсчетный пример с ротором на печатной плате. Пока никому не интересно было, да и сам занят


                      1. Altair55
                        15.12.2021 13:53

                        Хвала Хабру! Свел. Мне интересно :-) Я ЦОС знаю, и схемы на переключающихся конденсаторах видел - это аналог КИХ фильтра.


                      1. cujos
                        15.12.2021 13:59

                        Ну тогда вот. С2 и С3 - дифференциально переменные. Остальное можно и додумать. https://drive.google.com/file/d/1C3x1iZGMigjGjz5jd7V9YxNsbp_UPaGt/view?usp=sharing

                        /


                      1. Altair55
                        15.12.2021 14:15

                        Тогда где то источник тактирования должен быть. Это ротор?


                      1. cujos
                        15.12.2021 14:20

                        источник тактирования с пластиковым ротором - это нижняя плата(которая по середине), с ротором - платой тактирование через постоянную емкость (внешние и внутренние обкладки) происходит


                      1. Altair55
                        15.12.2021 14:35

                        Да, влет понимание не приходит. Надо проводить мысленные эксперименты :-) Хотя в целом понятно, что источник V1 раскидываем через перезаряд С2 и С3.


                      1. cujos
                        15.12.2021 14:39

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

                        По сути схема перекачки заряда с токовым усилением на операционнике


                      1. Altair55
                        15.12.2021 14:53

                        Я в сенсорах угла начинающий, поэтому сразу сделал макет Зеттлекса. Для понимания, что я верно разгадал буржуинскую тайну. И мне не понравилось что фаза гуляет. Точнее, что изменяется все - и фаза и амплитуда, хотя в этом включении должна меняться только амплитуда.


                      1. cujos
                        15.12.2021 14:59

                        У Зеттлекса фаза очень стабильная, потому как ротор работает в резонансе и фаза там 90+-2° от фронтов (прямоугольных) возбуждения и в целом обрабатывать довольно просто, если знать, что делать. Основная проблема у Зеттлекса, что нужны экраны и проводящий корпус с достаточным отступом от обмоток. У них недавно вышел IncOder Core, и там как раз написано где металл нужен, а где нет. Да и под патентами он, повторить то можно, а продавать нет. Так что это больше для саморазвития.


                      1. Altair55
                        15.12.2021 15:04

                        Как тогда объяснить такое поведение сигналов с обмоток?

                        https://youtu.be/FSlEQSjqzU8


                      1. cujos
                        15.12.2021 15:07

                        просто присутствует постоянная составляющая от возбуждения, которой быть не должно

                        кстати если знать что она постоянная, от неё всегда можно избавиться с помощью операции вычитания)


                      1. Altair55
                        15.12.2021 15:18

                        Я решил бороться с этим калибровкой. Принимать как есть, но учитывать это обстоятельство в самом конце. Да и принимать в квадратурах и синус и косинус сразу. Что бы знать их фазовый сдвиг. Потому что избавиться от наводок возбуждения скорее всего не получится.


                      1. cujos
                        15.12.2021 15:24

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


                      1. Indemsys Автор
                        15.12.2021 13:49

                        Результаты реверса?
                        Микросхема в золоте интересная. Что это?


                      1. cujos
                        15.12.2021 13:50

                        ага, Микроновский БМК))


  1. MaxEkb77
    14.12.2021 22:51

    Может все таки лучше в сторону резольверов посмотреть, там потенциал побольше будет :)


  1. zombie47
    15.12.2021 09:53

    Мдауж вот это уровень. Уровень тот к которому я наверно хочу придти) Ну знание всего и вся, разводка плат, досканально электронику, программирование под винду, программирование мк) Да еще и такой уровень инженерии. Новаторство по сути.
    Тоже планировал написать на хабре статью первую, там конечно детский лепет по сравнению с этим.


  1. Altair55
    15.12.2021 09:53

    Вот такие ещё бывают энкодеры

    https://www.celeramotion.com

    Интересно, как они работают?


    1. Indemsys Автор
      15.12.2021 10:10

      Спасибо хороший источник для сравнения разных технологий

      В частности видно что ребята тоже пришли к выводу о превосходстве индуктивных сенсоров над другими, выбрали индуктивную технологию на Renesas ZMID520x и построили целый бизнес.


      1. Altair55
        15.12.2021 10:21

        Ого. Интересная микросхемка. Но у Zettlex не она. У них мишень тоже в виде платы, а Ренессанс железяку предлагает использовать


        1. Indemsys Автор
          15.12.2021 10:40

          Если присмотреться у Zettlex не на всех платах мишеней некий хитрый рисунок, там и простая решетка используется. И не сплошное покрытие медью скорее всего только для того чтобы платы не коробились при изменение температуры.
          Технологию то они срисовали один в один из даташита Renesas. А склонировать микросхему конечно можно.

          Тут надо заметить что LDC1101 кроме того может замерить и сопротивление материала. Эт тоже можно использовать для уточнения результатов.


          1. cujos
            15.12.2021 10:59

            склонировать то склонировали, только Renesas делает датчики года 3, а Zettlex уже почти 20)))


            1. Indemsys Автор
              15.12.2021 11:43

              Статья Zettlex про сравнение их технологии с другими вышла в 2019 году.
              Так что я не знаю что они делали предыдущие годы. )))
              Хотя не буду отрицать что Renesas стал выпускать такие чипы по их просьбе.


              1. cujos
                15.12.2021 11:54

                1. Altair55
                  15.12.2021 12:08
                  +1

                  Я пытаюсь понять как оно работает. Вот делал такие опыты:

                  https://photos.app.goo.gl/UufmuEKKc3pKFKya8

                  https://photos.app.goo.gl/uhknqq7eqvewTsev7

                  Пока как то все сложненько


                  1. pvvv
                    15.12.2021 12:43

                    у спецмикросхем для lvdt какой-то неприлично конский ценник, хотя там и обычный МК вполне справляется своей периферией.

                    статор с тремя обмотками, снаружи - первичная, внутри sin/cos,
ротор - полукруг из меди на плате, по ВЧ такой "сердечник" наоборот экранирует.
                    статор с тремя обмотками, снаружи - первичная, внутри sin/cos, ротор - полукруг из меди на плате, по ВЧ такой "сердечник" наоборот экранирует.

                    из-за расположения приёмных катушек на разных слоях всё получается несколько криво и угол надо дополнительно потом л.инеаризировать, да и сигналы миливольтовые, но как-то работает


                    1. cujos
                      15.12.2021 12:46

                      У нас кстати сигналы ~150 мВ, при том что имеет полное экранирование: на высоте 2 мм сплошной полигон меди и у ротора и у статора. И нелинейность она только в голове, в плане её всегда можно вычесть. Куда важнее повторяемость.


                      1. pvvv
                        15.12.2021 13:03

                        тут размер < 20mm


                      1. cujos
                        15.12.2021 14:17

                        но на таких размерах речи о погрешности менее 0.3 градуса не идет, хотя 16 разрядов с повторяемостью +-2 кванта получится, амплитуда сигналов ~ 100 мВ


                    1. Altair55
                      15.12.2021 12:48

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

                      https://photos.app.goo.gl/TZXv31hXDA7vNH4z7


                1. Indemsys Автор
                  15.12.2021 12:19

                  Там ничего нет про чипы.
                  Думаю вопрос остался открытым кто раньше стал делать чипы.

                  Но да, признаю что первенство самой технологии за Zettlex


                  1. cujos
                    15.12.2021 12:33

                    да в чипах нет ничего сложного, возбуждение два транзистора, усилитель на входе, амплитудный детектор двух каналов, либо синхронный УВХ, дальше АЦП и SinCos (читай арктангенс) преобразователь, вот и все. Они друг с другом не конкурируют, потому как Zettlex точнее, а остальные разработаны для автомобильной техники. Хотя пару патентов Zettlex они нарушают: первый на "круглый" индуктивный датчик угла)))))), второй на индуктивный преобразователь с металлическими "мишенями". Но думаю пока нет конкурентных аналогов (либо есть договор с Zettlex), проблем нет.


                    1. Altair55
                      15.12.2021 12:52

                      Прямоугольниками что ли возбуждают?


                      1. pvvv
                        15.12.2021 13:18

                        если АЦП от него же и тактировать, то почему бы и нет.


                      1. Altair55
                        15.12.2021 13:21

                        В букварях про СКВТ пишут что там гармоники точность понижают. А если мы сигналом с гармошками сразу накачиваем, то они ж и сложиться могут там где не нужно.


                      1. pvvv
                        15.12.2021 13:32

                        сэмплировать надо там где нужно, а если и сложатся, то эту "нелинейность" по углу потом полечить можно постобработкой.


                      1. Altair55
                        15.12.2021 13:47

                        Постобработка поможет только если есть движение. А если угол неверный сразу при включении питания? Я конечно попробую и прямоугольниками питать, тем более, что ротор резонансный и он немного фильтрует своей добротностью.


                      1. pvvv
                        15.12.2021 13:56

                        если несколько периодов/оборот, то в любом случае по включении дополнительный референс сначала искать надо для получения абсолютного угла.

                        на картинке выше энкодер абсолютный, 1 период/оборот.


                      1. Altair55
                        15.12.2021 13:58

                        Не обязательно. Если на одной оси два нечетных период/оборота, например 3 и 8, то по соотношению сигналов можно определить абсолютный угол.


                      1. pvvv
                        15.12.2021 14:06

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


                    1. Altair55
                      15.12.2021 13:51

                      А. Я вот еще что делал с целью погружения в тему.

                      https://photos.app.goo.gl/6gJU1sNU3P16eDpi8

                      Это контроллер СКВТ в амплитудном включении. (в фазовом тож делал). Так вот, Zettlex работает не так. В классическом СКВТ фаза синуса и косинуса стоит на месте, а там она прилично шевелится. Градусов на 10-15 на глаз. А это значит, что обычным фазочувствительным выпрямителем не обойтись.