Страница 1 из 1

3-х фазный двигатель в качестве энкодера.

Добавлено: 05.07.2016{, 22:19}
DWD
Не знаю, может уже и поднимался этот вопрос, но сходу не нашёл...

В общем, все знают, что шаговый двигатель или двигатель от HDD могут работать как энкодеры. Но я, например, считал, что подключение будет несколько сложнее обычного энкодера.
Эксперимент показал, что это не так.

Двигатель взял от какого-то убитого HDD. У него оказалось всего 3 вывода. Средний я подключил на "землю", а крайние - прямо на аналоговые входы Ардуино (UNO).
Схема программной обработки такая:
Изображение

Так как движок вырабатывает синусоиду, то для её преобразования в импульсы поставлены компараторы. При вращении движка больше 1,5В амплитуды я получить не смог, как ни старался. Это при резкой раскрутке.
А при медленном вращении он вырарабатывает единицы - десятки милливольт.
Выставил порог на компараторах около 100мВ.Этого оказалось достаточно, что бы при спокойном вращении получать импульсы.
Если выставить меньше, то реакция на вращение ещё лучше, но появляются "помехи" - чуть коснулся ручки и схема сработала, посчитав импульс и ещё парочку сразу. Вал-то не имеет фиксации, как у энкодера или шаговика...
В общем, подбирая порог срабатывания компаратора, можно выставить требуемую чувствительность: от "чуть коснулся" до "умаешься крутить", пока импульс выдашь.

Работает отлично - ни пропусков, ни сбоев...
Как ни старался крутить резко и быстро, сбоев не увидел. В такой же схеме настоящий энкодер даёт ложные импульсы и для него требуется фильтрация дребега. А если превысить скорость, то и тормоза начинаются.
С двигателем этого нет. Для него, ведь, такое понятие, как дребезг контактов - не существует. И помех он не ловит, так как в любом состоянии имеет омическое сопротивление, шунтируя входы при любых наводках. Хоть метровыми проводами подключайся...

Приставил к валу патрон шуруповёрта через кусок резины и включил - импульсы наращиваются плавно, быстро и без сбоев. За 4 секунды вырабатывает почти полторы сотни импульсов как с куста. :)

Конструкция удобная, так как вал может служить готовой ручкой энкодера - большой и удобной. Крутится легко и долго вращается по инерции - резко крутанув вал и дав ему крутиться по инерции сразу получаем прирост (или откат) на 20-25 импульсов. Это сам вал, без ручки. А если одеть большую и(или) тяжёлую ручку, то инерция будет ещё больше. Вал у этих движков на хороших подшипниках, по этому с массивной ручкой получить сотню импульсов за один толчёт, думаю, будет легко.
Работа чем-то напоминает работу с "трекболом" и "шатлом" одновременно.

Единственный недостаток, к которму, впрочем, легко привыкаешь - "трудность" получения одного импульса. Если медленно крутить, то вообще не будет считать, а быстро - сразу несколько импульсов проскочит...
По этому для получения единичнго импульса нужно, вявшись за вал двумя пальцами, резко его провернуть на некоторый угол и сразу остановить. Главное - резкость проворота. У меня стало получаться практически сразу.
В общем, подобрав индивидуально порог срабатывания компараторов, можно получить комфортную работу как при малом числе импульсов, так и при большом.

Ещё один вариант устранения этого "недостатка" - усилить импульсы перед подачей на МК. То есть, какой нибудь усилитель ограничитель с большим КУ на ОУ (LM358) или компараторе (LM393) решит проблему, так как после этого на выходе будут импульсы большой амплитуды даже при очень медленном и плавном вращении. Думаю, можно и программными средствами реализовать какой нибудь алгоритм усиления-фильтрации-фиксации. Нужно пробовать.
Но пока меня и такая работа более чем устраивает.

Жаль кнопки нет... Хотя... Есть идея!
Корпус двигателя использовать как сенсорный контакт. Сам движок прикрутить изолировано, что бы с корпусом устройства или его схемой небыло гальванического контакта, а на вал одеть пластмассовую ручку с дыркой в центре или металлическим пятчком в центре. Пятачёк соединить с корпусом движка. Корпус движка подключить на вход Ардуино и компаратор выставить на минимальное напряжение срабатывания (максимальную чувствительность).
Получится следующее...
Взявшись за пластиковую ручку, вращаем её и получаем импульсы, а коснувшись металлического пятачка на ней (или корпуса через дырку в ручке), получаем нажатие кнопки.
Ща попроообуем... :)

Ещё из особенностей - малое число импульсов на оборот. У меня получается 4. То есть, получая только по одному импульсу, на полный оборот ручки на 360 градусов насчитывается только 4 импульса.
Это естественно, так как движок 3-х фазный и у него идёт разбивка по 360*3=120 градусов на фазу.
Тем не менее, работь с ним куда приятнее и легче, чем с настоящим энкодером.
Мне понравилось... :)

Это фото макета, что бы покаать, какой именно был двигатель:
Изображение

А на этом фото показано подключение двигателя (без преобразователей):
Изображение

Добавлено (05.07.2016, 22:19)
---------------------------------------------
Придумал я способ реализации сенсора. Выглядит так:
Изображение

Сенсорный датчик подключаем к любому аналоговому входу через резистор на 1МОм.
Резистор вместе с диодами на входах МК защищает его от статики и большого напряжения. Если максимальный ток через защитные диоды на входах принять 10мА, то получится, что напряжение на сенсоре должно превышать 10мА*1МОм=10КВ. Реальный ток диодов больше, так что пробойное напряжение будет с запасом...

При касании сенсора рукой, на входе наводится большое переменное напряжение, которое сравнивается компаратором с пороговым значением 4,88В при питании МК 5В, и так как оно превышает этот порог, то на выходе компаратора имеем импульсы частотой 50Гц. Первым же прилетевшим импульсом устанавливается RS триггер.
Он же, поступая на вход несимметричного мультивибратора с инверсией, останавливает его. На входе сброса триггера импульсы пропадают.
При отпускании сенсора импульсы на входе установки триггера пропадают, запускается генератор и на вход сброса триггера постоянно идут импульсы, сбрасывающие его.
Длительность импульсов короткая - 1мкс, а пауза междк ними довольно длинная - 50мс.
В реультате, при касании сенсора на выходе триггера устанавливается единица и стоит, пока есть касание к сенсору.

Фотку выкладывать?.. :)
Двигатель лежит на столе, как на ранее приведенных фотках. К нему прикручен провод, подключенный ко входу Ардуино через резистор. Всё.

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

В общем, чувствительность очень большая, по этому можно наверно делитель поставить на входе, чтобы уменьшить её.

3-х фазный двигатель в качестве энкодера.

Добавлено: 07.07.2016{, 07:09}
Alex54
DWD

Это что-то из разрядов: Занимательная электроника. Знаете лет 40 назад продавалась такая интересная
книжка. Все гораздо проще чем вы тут про пальцы пишите.

Где вы увидели синус. Импульсы в синус-заполнении. Это другое.

Да и вообще. В станках ЧПУ стоят такие датчики. Да и в продаже они есть, не дорогие. Так вот там
все четко. Подаешь 5 вольт и землю на такой датчик. На нем прописано,cколько имп ттл он выдает
за оборот. Бывают с различными соотношениями. У меня кстати есть такой. Все таки работал эл.
механиком станков ЧПУ. Который у меня это устарелый вариант,но не дешевый по сравнению с современными датчиками. Тут применяется внутри оптическая система. Диск с нанесенными делениями, cтоят ик излучатели и ик приемники. Установлена плата с 155 серией и усилитель.
При малейшем прокруте ротора и скорости его выделяется несколько комбинаций импульсов.
По длительности , частоте и направлению вращения. Интересная штука. Колл. имп. за оборот бывает
64. 128. 512. 1024 и т.д

http://meandr.org/archives/5887?lang=zh-tw

http://vedmak3.ru/watch/NMqAqaM2smU

3-х фазный двигатель в качестве энкодера.

Добавлено: 07.07.2016{, 13:16}
DWD
Alex54 писал(а):Это что-то из разрядов: Занимательная электроника.
Да, есть такое... Это, действительно, занимательно. :)

А вот на счёт того, что всё проще, чем я пишу - не согласен.
В инете много конструкций превращения того же шаговика в энкодер (а вот простого 3-х фазного движка - нет), но они сложнее - всегда используется усилитель-формирователь на микросхемах, с подводом внешнего питания и т.д.
Я же предложил простое подключение движка ко входу МК тремя проводами. Как обычный энкодер, только без подтягивающих резисторв.
Что может быть проще?

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

А эксперименты показали, что 3-х фазный движок на высоких оборотах работает стабильнее, чем классический энкодер. Как уже говорил, даже при раскрутке вала движка шуруповёртом на скорости 550 оборотов в минуту (или 9 оборотов секунду!), который выдаёт мой шуруповёрт, считает без проблем и сбоев.
Энкодер же не выдерживает даже быстрое вращение пальцами - начинает сбиваться со счёта.
К тому же у обычного механического энкодера контакты истираются - срок службы, согласно даташитам, 20...30 тысяч циклов и дребезг, пргрессирующий со временем.

Движок же лишён этих недостатоков и берётся с любого убитого харда, которых у каждого, думаю, есть в закромах... Даже если их покупать, как убитые харды, то всё равно будет дешевле, чем тот же механический энкодер.
Правда, если взять движок от харда на 2,5 от ноутов, то его придётся выпиливать, так как корпусом движка служит сорпус харда.
Alex54 писал(а):Где вы увидели синус. Импульсы в синус-заполнении. Это другое.
Не знаю, что Вы подразумеваете под синус-заполнением, но 3-х фазные движки вырабатывают чистый синус амплитудой и частотой, пропорциональной скорости вращения вала.
У шаговых движков, да, не чистый синус, а импульсы со скруглённой вершиной и назвать их синусоидальными можно с очень большой натяжкой.
Но я показал именно 3-х фазный движок от HDD, а он вырабатывает, как уже говорил, чистый синус.

Остальной Ваш "наезд" получается, как бы, не по теме...

3-х фазный двигатель в качестве энкодера.

Добавлено: 07.07.2016{, 15:22}
Alex54
DWD

Я вот только одного не пойму. Зачем изобретать давно сделанное. Да еще впаривать. Энкодеров
множество всяких. Или начнем старые жесткие диски разбирать.

3-х фазный двигатель в качестве энкодера.

Добавлено: 07.07.2016{, 16:32}
DWD
Затем, что ни кто не предложил, а вариант интересный.

А по сравнению с энкодером имеет преимущества:
1) доступность и дешевизна,
2) проще подключение,
3) работает лучше.

3-х фазный двигатель в качестве энкодера.

Добавлено: 11.07.2016{, 19:59}
krom23
Можно использовать как тахогенератор для измерения скорости вращения и на больших оборотах. Спасибо DWD что подняли тему, тем более что этих моторчиков как грязи.

3-х фазный двигатель в качестве энкодера.

Добавлено: 13.07.2016{, 20:00}
Oleg1345140
DWD писал(а):Двигатель взял от какого-то убитого HDD. У него оказалось всего 3 вывода. Средний я подключил на "землю", а крайние - прямо на аналоговые входы Ардуино (UNO).Схема программной обработки такая:
Если не сложно можно схему электрическую принципиальную?

3-х фазный двигатель в качестве энкодера.

Добавлено: 13.07.2016{, 20:53}
DWD
Схему чего?

3-х фазный двигатель в качестве энкодера.

Добавлено: 14.07.2016{, 03:18}
Oleg1345140
схему подключения двигателя к ардуино

3-х фазный двигатель в качестве энкодера.

Добавлено: 14.07.2016{, 08:08}
DWD
Нет там ни какой схемы.

У двигателя 3 вывода. Один из них (любой) садится на корпус (минус питания), а два других подключаются к Ардуино.Если считать будет не в ту сорону, то эти два вывода поменять местами.

У двигателя на 4 вывода точно так же. Только общий оставить в воздухе. Его лучше не использовать, так как он подключен в среднюю точку 3-х обмоток и выдаёт в 2 раза меньшую амплитуду напряжения.

3-х фазный двигатель в качестве энкодера.

Добавлено: 14.07.2016{, 11:40}
Alex54
DWD

У вас также получается. Когда-то собирал и моделировал в Протэусе. Если в Протэусе не работаете
посмотрите скрины. А так полный комплект. Модель энкондера. Только у меня на вход ардуинки
идет ттл уровень с энкондера а у вас через компаратор который из уровня синуса внутри ардуинки
выделяет ттл.

3-х фазный двигатель в качестве энкодера.

Добавлено: 14.07.2016{, 15:37}
DWD
Alex54, только у Вас просто счётчиком включено. А у меня - полноценным энкодером.

3-х фазный двигатель в качестве энкодера.

Добавлено: 14.07.2016{, 15:55}
Alex54
DWD

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

Вообщем в железе подобного не собирал. А программу эту делал изучая сам FLProg и сцепку моделей
ардуинок с Протэусом.

3-х фазный двигатель в качестве энкодера.

Добавлено: 14.07.2016{, 16:10}
DWD
Кстати, обнаружился интересный глюк.
Пока экспериментировал с "пустым" МК, в котором была зашита только программа отработки энкодера, всё было нормально. Потом нарисовал систему менюшек и всё повисло - не хотело работать. Контрольные выходы, подключенные к внутренним цепям показали, что импульсы проходят, но с тормозами.

Я решил, что не хватает скорости отработки АЦП Ардуинки и собрал отдельный усилитель на компараторе LM393. Схема работала, но возбуждалась. Что я только не делал с коррекцией, номиналами и вариантами включения - ни как не получалось избавиться от возбуда. Последним шагом отчаяния было заземление корпуса движка (соединение его с минусом питания). И о чудо - схема начала работать чётко и без возбуда в любых вариантах!

Подключил снова движок к Ардуино напрямую, но с заземлённым корпусом и увидел, что всё работает.
Так что, кто будет повторять, имейте в виду - корпус 3-х фазного двигателя, используемого в качестве энкодера, нужно обязательно соединять с минусом питания.

А то я уже испугался, и собирался писать о неудачном применении 3-х фазного движка... :)

Зато эксперименты с отдельным усилителем на LM393 показали очень интересный результат.
Схема простая - на прямой вход ОУ подключается вывод движка через резистор на 1КОм. Выход через резистор на 1МОм соединяется с этим же входом для получения гистерезиса. Предварительное моделирование показало, что с гистерезисом отработка будет чётче.
Ну и инверсный вход ОУ соединён либо с общим проводом, либо на него поступает небольшое опорное  напряжение.

Так вот, если опорное напряжение превышало 2...3мВ, то на выходе усилителя в покое всегда ноль. Если вращать вал, то идут импульсы. Останавливаешь вал - снова ноль.
А вот если опорное напряжение равно нулю (инверсный вход просто на корпусе), то на выходе может быть как ноль, так и напряжение питания. Состояние целиком зависит от положеня ротора двигателя.
То есть,  если медленно вращать вал, то на выходе поочерёдно появляется напряжение и пропадает. Если остановить вал в момент появления напряжения, то оно так и остаётся на выходе. А если остановить вал при нуле, то этот ноль тоже стоит.
Получается очень хорошая особенность - энкодер из 3-х фазного движка с дополнительным усилителем вырабатывает импульсы даже при оооочень медленном вращении вала.

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

3-х фазный двигатель в качестве энкодера.

Добавлено: 28.11.2016{, 12:43}
robocraft
годнота