Предисловие
Хочу начать цикл статей о своих разработках и обзоре аналогичных решений на мировом рынке. Основное направление - датчики угла, в частности, индукционные, способы взаимодействия с ними, а так же применении в современных электроприводах.
Я 11 лет занимаюсь разработкой датчиков угла а также систем позиционирования, основная часть изделий применяется в военной и промышленной технике, есть несколько патентов по кодированию в фотоэлектрических преобразователях, работал с самой точной в России гониометрической установкой, разрабатывал ASIC(БМК Миэт/Микрон), системы контроля погрешности порядка 0.5 угл. сек.
Дисклеймер
В данной статье речь пойдет об индукционном (называть буду именно индукционным или же индуктосины по названию патента, потому что в российской теории принято называть преобразователь по типу первичного сигнала, в таких преобразователях при вращении изменяется электромагнитная индукция, а не индуктивность, которая в общем-то постоянная. В западной теории же используется "iductive encoders" те индуктивные преобразователи) преобразователе, собранном буквально на коленке в Тбилиси. Хотя эти коленки включают довольно точный вращающийся привод с двумя датчиками Renishaw Tonic, контроллер ELMO GDCWHI, кросс плату с ПЛИС Max X, топовый анализатор Saleae PRO 16, а так же минимальный запас компонентов, фен, паяльник, программатор, тестер-пинцет и тп. Собственно это минимальный список того, чтобы разрабатывать подобные датчики и оценивать функциональные параметры и можно уместить в рюкзаке.
Сравнивать буду с современными аналогами прежде всего состоящими из двух плат ну и подобных по габаритам и функциональному назначению. Это емкостные энкодеры Netzer серии VLx(M, H, P, X), магнитные - Renishaw RLS Aksim2, индуктивные(в оригинале) - Flux IND-ROT, Heidenhain KCI/KBI, а так же Zettlex, российские Kubo и СКБИС.
Сравнение будет сделано по описанию и на доступном на моей коленке оборудовании. Кстати, если вы хотите проверить купленные энкодеры из списка выше, я готов сделать это, оставив их у себя.
В данное время я безработный и нахожусь в поиске интересных проектов, так что буду рассказывать основное устройство, способы взаимодействия и применения, оценки и контроля погрешности и динамических характеристик. Ключевые моменты разработки будут скрыты или намеренно искажены. В процессе разработки данного преобразователя на самом деле было заказано несколько (сотен) плат.
Выбор принципа действия, устройства и компонентов
Пару лет назад на Хабре была статья Открытый проект индуктивного абсолютного энкодера. На тот момент я уже разработал с десяток преобразователей для применений в военной и космической технике, а так же промышленных приводов. И хотел написать про это статью. Вот время и пришло. Разрабатывал я фотоэлектрические преобразователи (категории ВП), емкостные аналоги Netzer, аналоги Zettlex, а так же прецизионные аналого-цифровые преобразователи для вращающихся трансформаторов. Так же работал с аналоговыми индуктивными преобразователями для Automotive ASIL D Steer by Wire, потому как разрабатывал одну из таких систем.
Собственно в текущий момент хотел бы заняться собственными изделиями, поэтому сформируем основной список требований:
датчик можно полностью изготовить на контрактном производстве в Китае
на нем можно реализовать многооборотный счетчик с питанием от батарейки
его можно применять в серийных промышленных высоковольтных приводах 220/380 В
датчик должен контролировать/оценивать свою максимальную погрешность, а так же хотелось бы продолжить работу в сторону функциональной безопасности уровня SIL2 и SIL3
датчик должен легко масштабироваться в любой типоразмер
Под эти требования в целом подходят 3 современных энкодера: Netzer VLx, RLS Aksim2 и Flux IND-ROT.
Емкостные датчики не особо любят высоковольтные приводы в виду больших помех и обязательного заземления корпуса, которое в таких приводах в принципе не допускается. Магнитные - используют диски, которые могут быть необратимо повреждены внешним магнитным полем, что не очень вяжется с функциональной безопасностью.
Индукционные довольно интересны, потому что имеют простой ротор, который в принципе можно изготовить на печатной плате, керамическом диске на оксиде алюминия, напечатать SLM из нержавеющей стали или алюминия или же отфрезеровать - в зависимости от требований. К тому в последнее время появилось много микросхем для построения таких преобразователей уровня SIL2, ASIL C. Одну из таких микросхем от компании Renesas - IPS2200 и будем использовать.
Микроконтроллер возьму народный STM32G431, так как имеются версии до +125°(SIL3 required), он доступный, имеется библиотека построения SIL2/SIL3 систем и ну и лично я с ним довольно много работал. Из интерфейсов есть только широко-применяемый открытый с малым откликом двухсторонний BISS C, к тому же на нем также возможно построение систем уровня SIL2 и SIL3 (BISS Safety).
Еще несколько деталей.
Для возможности многооборотного режима нужно предусмотреть питание от батарейки, с возможностью работать в режиме счета оборотов с частотой обновления кода 50-1000 Гц с потреблением в районе 40 мкА - с расчетом 4 года от одной ER14250 батарейки. Для этого нужно предусмотреть свой датчик на рассыпухе, а так же выбрать комплектующие с суммарным потреблением в режиме ожидания 5-10 мкА. Так же нужно предусмотреть подключение батареи к внешнему разъему и измерения напряжения питания и самой батареи микроконтроллером.
Так как датчик планируется продавать на международном рынке, он не должен использовать отличительные признаки других преобразователей (не нарушать патенты), а так же иметь собственные отличительные признаки - в целом достаточно, что таких же по характеристикам, внешнему виду и типу преобразования в принципе не существует. Хоть и решил делать аналог Flux IND, но стремиться будем "заместить" Renishaw RLS Aksym2, потому что они более популярны и чаще применяются, так что размеры буду выбирать такие, чтобы с готового привода можно было снять RLS MB064, установить мой датчик и продолжить работу/тестирование, потому как это удобно. Так же у RLS самый компактный энкодер OD Stator - ID Rotor, и повторить такие же габариты это некий вызов (потому что могу). Фактически мной написан автоматический генератор обмоток статора и рисунка ротора, так что масштабировать данный преобразователь можно в абсолютно любой размер(в пределах минимального ODS - IDR = 34 мм).
Устройство индукционных преобразователей, в частности Flux, а также микросхемы для построения индукционных преобразователей
Основным производителями индукционных преобразователей являются:
Zettlex - Кембриджская фирма, производитель энкодеров с резонансным контуром в роторе, один из первых преобразователей, имеют два отсчета расположенных на разных слоях друг под другом
CambridgeIC - производитель микросхем для энкодеров с резонансным контуром в роторе
CamEncoders - еще одна фирма - производитель энкодеров на печатных платах трансформаторного типа - индуктосинов. Как можно понять, все три фирмы пошли из Кембриджского университета
Heidenhain - один из крупнейших мировых производителей энкодеров, выпускает энкодеры KCI/KBI для электроприводов. Основаны на роторах с металлическими дорожками и токах Фуко, имеют два отсчета, радиально разнесенных друг от друга
Flux - появился недавно, имеет ротор с периодическими металлическими площадками, грубый отсчет основан на модуляции зазора между этими площадками
А так же отечественные Kubo, СКБИС ИА2128А, ИДМ ИДП 115, Инелсо Ферзь - которые являются импортозамещением Zettlex, по видимому для военной техники (хотя их и нет в перечне ЕКБ). Различные Lenord+Bauer VarioCoder и Gel, Fenac FNC ASI 75, Posics и другие
Если интересна подробная статья об устройстве данных преобразователей, плюсах и минусах, голосуйте и комментируйте. Сейчас же я немного остановлюсь на устройстве выбранном преобразователя от австрийской фирмы Flux.
Устройство данного преобразователя описано в патенте EP3779369A1. Точный отсчет выполнен в виде однодорожечной периодической шкалы. Грубый отсчет может выполняться за счет аналоговой модуляции промежутков между элементами точного отсчета, а так же в виде цифрового кодирования различными промежутками.
Данный преобразователь имеет 52 элемента на роторе с тремя периодами на оборот аналоговой модуляцией промежутков (насколько я понимаю). Попробуем повторить аналогичную структуру. Так как конкретного преобразователя у меня нет, я без понятия как выполнены обмотки, так что будем придумывать по ходу.
Уже несколько лет на рынке автомобильных микросхем появились индукционные преобразователи угла для замены резолверов в основном приводе, а так же в руле/рулевой рейке. Среди них есть основные три:
Renesas IPS2550, а так же IPS2200 для промышленного применения
Microchip LX34070 - крайне перспективная и дешевая микросхема, с отпускной ценой при покупке нормоупаковки - 70 центов за штуку
AMS AS5715R - аналог IPS2550 как по функциям так и по цене
Для меня было важно, чтобы микросхема имела возможность питаться от 3.3 В - которые можно отключать. А так же возможность программирования от пинов микроконтроллера. Под эти параметры подходит только Renesas. Так как IPS2550 и IPS2200 фактически одинаковые, с одним отличием IPS2550 automotive, а IPS2200 - промышленная. Заложил на будущее IPS2200, но купил IPS2550, потому что они были доступны.
Еще один плюс для использования Renesas - большая библиотека с примерами, открытые мануалы, калькуляторы расчета обмоток, а так же описанием принципов построения этих обмоток. Недолго думая берем похожий размер, переделываем под 52 периода и в продакшен. Неиспользуемый сектор сверху при этом убираем за ненадобностью (зачем он есть у Flux я не знаю).
Изготовление и испытание энкодера
С устройством определились, с компонентами тоже. Прикидываем сигналы в знакомой программе. Три вывода для слева сверху, для питания лампочки. Вывод TIM2_ETR для таймера сброса BISS C. ADC2_12 для измерения напряжения питания. Напряжение батарейки будет измеряться через Vbat/Vref. Остальные выводы АЦП включены дифференциально. Корпус выбран исключительно из-за наличия четырех отдельных дифференциальных входов АЦП.
Рисуем схему, разводим, заказываем на известной площадке. Получаем готовые платы. Осталось напаять пару микросхем, которых нет в наличие на китайском складе.
Маленькая фишка. Пружинные JTAG можно использовать без третьего штифта, который был предусмотрительно вырван перед отладкой. На самом первом фото как раз виден процесс отладки. Разъем держится, проблем с выпаданием нет, да и в будущем он будет использоваться только для прошивки загрузчика. В верхней части платы есть контактная информация, куда можно обращаться с предложениями сотрудничества. Так же можно стучаться в личку на хабре или в телеграм.
Получаем заказ из Китая, за 5 комплектов + доставка $125.57. Так же сюда нужно купить и поставить IPS2200/IPS2550. Штучно цены на них высокие, в итоге нужно отдать примерно столько же.
Самостоятельно зенкуем отверстия на роторе, позже это можно будет делать на производстве практически бесплатно, при заказе сотен штук. Пока что цена за это в районе 30 баксов. Дело осталось за малым: рисуем фланцы для поворотного стола, печатаем на SLA/LCD принтере, устанавливаем платы, отлаживаем и тестируем. По этому вопросу есть множество уточнений, подробнее по допуска и погрешности поговорим в одной из следующих статей. Потому как делать совсем некорректно, но на самом деле в данном случае вполне достаточно, потому как погрешность мы оцениваем достоверно, датчик самокалибруется и самостоятельно умеет оценивать свою погрешность. В этом одна из фишек.
В целом сама головка по сути самая сложная и важная деталь проекта. Но у меня она уже больше шести лет. Делал её еще на своей первой работе. Главная деталь тут - поворотный столик на прецизионных подшипниках, двигатель без залипаний и кольцо Renishaw RESM20USA150 + две головки Tonic T20xx. Я купил это в давние времена на ebay баксов за 350, но такой сетап может стоить очень (безумно) дорого.
Кросс плата (назовем её так) нужна для подключения головок renishaw, датчика, компьютера, а так же контроллера двигателя Elmo. Контроллер, как можно понять, подключается гальванически изолировано. Головки подключаются через быстрые компараторы, потому что сигнал с них получается напрямую без интерполяторов. Сам же интерполятор (динамический) нужно реализовать на ПЛИС.
Эту плату я делал так же очень давно для отладки ASIC (верней различного рода БМК). Она так же необходима для отладки интерфейса, без такой платы в продакт датчики не отправить, потому как о проблемах с подключением вам будут говорить каждый первый раз, их надо отслеживать и показывать, как делать правильно. Вывод на контроллер тут может также использоваться для гальванически развязанного подключения к приводу заказчика, для это есть DC/DC на термосоплях и посадочное место под входную микросхему RS422. К компьютеру подключается через USB-UART 12 MBaud, хотя можно реализовать и 480, но необходимости нет. Сердцем кросс-платы является Terasic de10-lite - удобная плата в плане наличия индикаторного дисплея, светодиодов, кнопок, переключателей и IDC разъема.
Так же для нормальной отладки необходим хороший анализатор. Я использую Saleae Pro16. Покупал еще во времена, когда он стоил 600 баксов, и очень рад, что он у меня есть) Если отлаживать только цифровую часть, подойдет клон Saleae 16 на 100 МГц за 35-40 баксов с али.
Устанавливаем датчик и начинаем отладку. Тут можно писать сколько угодно долго, а статья и так уже длинная и начинает утомлять, так что немного расскажу о принципах работы и полученных результатах, а продолжение будет в следующих статьях. В целом я пока решил состряпать материала на Сезон DIY, а разработка еще ведется.
Как видно из фото сам датчик отличается от Flux, но если вы читали статью полностью, то поняли, что это есть одно из требований. Нельзя просто так взять, скопировать чужое устройство и начать продавать. Патентное право рано или поздно настигнет вас и в конечном счете ваша экспертиза в данной области будет хуже, чем у оригинала и по факту бесполезна. Хотя сейчас и на этом можно много заработать... но не будем об этом.
52 - откуда взялось это число? На самом деле я точно не уверен. У меня это удобное 2^n*k, где k - нечетное, которое не должно делиться на 3. Подходит да и ладно. В целом если вы занимались подобными датчиками, то обмотки статора и ротора тут играют огромную роль. Самое интересно в этом, что k - практически не ограничен, и если использовать керамический ротор, прецизионные опоры, малые зазоры, то можно получить разрешение до 25-27 разрядов! Причем это будет заметно дешевле всего похожего, что есть на рынке. Хотя есть одно но, о котором будет рассказано в статье по погрешности.
Почему у Flux (Heidenhain и др) используются прямые сектора на роторе, а у меня причудливой формы? Тут сложно ответить. Фактически у них сделано правильно, а у меня нет. Но в конкретном случае по другому сделать нельзя, такая форма убирает нелинейности сигнала для конкретно моей конфигурации обмоток статора. В любом случае датчик будет самокалиброваться, и форма рисунка ротора при этом не особо важна.
В отличие от примера Renesas, в данном датчике используется две микросхемы IPS2200 и в этом основная прелесть конструкции. Фактически сигналы на них должны быть одинаковы и смещены на 180 градусов. Зная это всегда можно оценивать(и уменьшать) погрешность каждые пол оборота датчика. К тому же можно измерять тот самый "зазор" в рисунке ротора и получать грубый отсчет = абсолютный код.
Внимательные читатели заметили, что часть схемы вырезана, а на плате в верхней части последнего фото установлены дополнительные микросхемы. Они нужны для работы от батарейки, и показать я их не могу из-за NDA, как не могу показать и сам рисунок обмоток. Но на самом деле это не суть важно. Примера от Reses в данном случае хватит всем, просто каждый дополнительный разряд достигается огромным трудом. Я лишь хотел показать, что все возможно.
Осталась одна важная деталь. Ответить на кликбейт в заголовке. Почему я считаю этот датчик самым точным в мире? Покажу в таблице.
RLS MB064 |
Netzer VLX80 |
Flux IND-080 |
SMIT64 |
|
Разрешение, бит |
20 |
21 |
20 |
23 |
Пульсации кода угла, " ± |
72 |
2.4 |
2(*1) |
0.4 |
Погрешность, " ± |
86 |
36(*2) |
65(*1) |
45(*3) |
1) Flux довольно странно заявляет характеристики, по факту значения могу отличаться
2) У Netzer погрешность определена в очень жестких установочных размерах, реальная погрешность может быть выше
3) Погрешность полученная на данный момент, впереди еще много работы, отладка самокалибровки, ресурсов, методов компенсации и тп. В планах же достичь уровня 20"(угл.сек).
*Дополнение. Одно уточнение, цифра 45" получилась путем анализа исходных данных с сенсоров на датчике в Matlab, внесение компенсации и измерения погрешности на эталоне после этого. В целом я еще в процессе, а сезон уже закрывается. Сейчас уже понятно, что спешить смысла не было. Более подробно про измерение погрешности расскажу в следующей статье.
Заключение
Надеюсь это вводная статья в цикл об угловых преобразователях. Статья написана на скорую руку для Сезона DIY. Дальнейшие статьи будут более технического характера. В конце я сделал опрос, по которому будет определяться порядок. Если вам интересно применять подобные преобразователи у себя в проектах, пишите в один из контактов напрямую. Но потребности типа пару штук для лабораторной/кусовой/поделки и тп меня совсем не интересуют. Думаю в статье написано достаточно материала, чтобы сделать (поделку) самому.
Все работы выполнены самостоятельно и за свой счет, не считая сотен заказанных плат, в течение 8 лет для различных ОКР(военных и космических), проектов и предприятий, которые так или иначе вели к конечному результату.
Источники
Flux IND-Rot https://flux.gmbh/products/inductive-rotary-encoder/
RLS Aksim2 https://www.rls.si/eng/aksim-2-off-axis-rotary-absolute-encoder
Netzer VLX-80 https://netzerprecision.com/products/vlx-80/
Renesas Resolver 4.0 https://www.renesas.com/eu/en/products/sensor-products/position-sensors/ips2x-customer-reference-board-catalog
Renesas IPS2200 https://www.renesas.com/eu/en/products/sensor-products/position-sensors/ips2200-inductive-position-sensor-high-speed-motor-commutation
Комментарии (21)
RV3EFE
16.08.2023 09:50+2Классно. Хорошая и не заезженная тема. Я бы даже сказал вообще не сильно популярная тема, но от этого не менее интересная!
Знаю одно применение, где такие точности нужны...
А на каких скоростях может работать данный датчик? Я так понимаю, на достаточно больших.
cujos Автор
16.08.2023 09:50+3минимальная расчетная снизу 17500 об/мин, скорее всего речь идет о 30000, но обязательно нужно будет контролировать валидность
nixtonixto
16.08.2023 09:50+2Как сильно изменяется погрешность при нагреве платы? FR4, на котором сделан датчик, термостабильностью не отличается. И элементы сенсора вытравлены, поэтому их края могут довольно сильно гулять из-за погрешности принтера и неравномерности травления. Поэтому гарантированная погрешность ±45" во всех 360°… Не верю.
cujos Автор
16.08.2023 09:50+145" это максимальная статическая погрешность в НКУ во всем диапазоне
как она получается, опишу в следующей статье, неравномерность травления роли не играет, потому как каждая пара ротор-статор отдельно калибруются
так же предусмотрена самокалбировка при установки датчика на целевой привод
причем эта погрешность будет гарантироваться за счет двух сенсоров расположенных на 180 градусов друг от друга - те один будет врать в + второй в -, а в сумме будет около 0
а вообще вопрос правильный, особенно для преобразователей встраиваемого типа, и основная погрешность, написанная в ТО в целом далека от погрешности в конечном приводе, об это пойдет речь в следующей статье
semennikov
16.08.2023 09:50+2Если интересно, то у нас есть DIY датчики, правда оптические и медленные, с точностью 0,5 угловых секунд, причем прошедшие проверку в институте метрологии. Делаются на коленке и не требуют ничего прецизионного. Время реакции, к сожалению, единицы секунд. Можно довести до 0,05 угл. сек, но лень. Требуется уже хорошие термостаты. Так что годятся только для калибровки
agalakhov
16.08.2023 09:50Названная точность - расчетная или фактически измеренная?
cujos Автор
16.08.2023 09:50измеренная, правда калибровка пока не совсем честная: измеряются данные сенсоров(на датчике), обрабатываются в матлабе, вносится компенсация, измеряется погрешность
с другой стороны, если калибровать к эталону, погрешность будет около 10 угл. сек., но это совсем не корректно
cujos Автор
16.08.2023 09:50и еще, я понимаю, что проводить измерения и заявлять о 45" таким образом - это совсем не корректно, а еще более не корректно заявлять о 23 битах и пульсациях 0.4", потому что в данном случае речь идет о размерах порядка 50 нм, а тут кругом пластик, да и еще не особо стабильный
и на самом деле этот датчик отчетливо улавливает поток воздуха от кондиционера и связано это скорее всего с деформацией пластика
в общем, рассказывать про недостоверность полученного результата лично я могу очень долго, подробнее про параметры измерения, процесс и результаты я расскажу в следующей статье, пока все довольно сыро для публикации
Melkserg
16.08.2023 09:50Статья хорошая, единственное я бы не стал это позиционировать как DIY. По факту процесс мало отличается от стандартной промышленной разработки устройства.
cujos Автор
16.08.2023 09:50ну так и есть, просто сам делаю)
вот конкурент кстати больше DIY, тех процесс похожий, просто оборудование немного другое
да и у меня тоже далеко до нормальной промышленной разработки, потому как механика в целом так себе, ну и все стадии мало документированы и проверяемы, так как руки только 2
Jury_78
Из любопытства, все же где нужна такая точность? Если это не секрет. Много лет назад в радиолокации использовали сельсины.
cujos Автор
сложный вопрос, если по простому такой точности там нет в принципе, чтобы её получить нужно потратить много денег на механику, сам привод и тд, а эти датчики более "ширпотребные" и в целом при их применении идет речь о погрешностях уровня единиц угловых минут
ну и основное преимущество большого разрешения в данном случае это большее разрешение скорости, применяется на прямых приводах - производственные, роборуки, делительные головки, токарные ЧПУ и тп, большее разрешение позволяет быстрее перейти к нужной позиции, задрав Kp и Кd
Sabirman
Если у робота рука длиной 0.5м, и хочешь точность в 1 мм, то энкодер уже должен быть с точностью минимум 0.1 градуса.
cujos Автор
там это все решается редукторами, в основном волновыми
а разрешение нужно только для регулирования
Sabirman
А не подскажешь, для домашних поделок типа для arm-робота какой-нть двигатель-редуктор-энкодер ? А то дешёвых сервомашинок не хватает - у них нет обратной связи и они позиционируются не точно.
cujos Автор
в голосовании есть пункт, возможно руки до него дойдут)
alexalexes
Для устройств компенсации вращения Земли в телескопах, или других механизмах, где нужно сопровождать механически движущиеся объекты с увеличением зума.
cujos Автор
опять же там сейчас применяются оптические, опять же Renishaw Resolute, Heidenhain и др. Там действительно эти погрешности можно обеспечить
ну и стоимость у них на порядок больше
da-nie
Я не о ширпотребе. :)
da-nie
В инерциальных системах ориентации и навигации.
Didimus
В рулетке?