Энкодер из переменного резистора

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

По характеру сдвига можно легко судить о направлении вращения. Различаются также количеством импульсов на оборот. Применяется много где, например для определения скорости, направления и угла вращения в контурах управления скоростью/положением двигателей. В бытовой технике его любят совать в разные музыкальные центры. Помните регуляторы громкости без конечного положения? То есть ты просто крутишь его в нужную сторону, а как дойдешь до предела значений то хоть закрутись громкость не сдвинется с места. Вот там стоит энкодер.
Все круто, но в продаже я их не видел. А те что видел стоили каких то нереальных денег. По крайней мере платить под 300 рублей за какую то крутилку мне было глубоко западло. И в то же время хотелось иметь такую беспредельную крутилку

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

Взял вот такой же резистор, красная цена которому 12рублей.

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

Вращение вала ограничивает пластиковый выступ, а графитовое кольцо сплошное и гладкое проводящий слой словно нарисован на нем. Это очень важно! Значит контакты при полном обороте будут скользить аки лебедушек по воде и не будут прыгать на неровностях графитового диска. Осталось только выдолбить острым предметом этот пластиковый зубчик и собрать всю конструкцию обратно.
Отлично, теперь вал вращается без ограничений. Можно посмотреть что получилось.

Цепляю к осциллографу, в режиме обычного потенциометра крайние выводы на +5 и на GND, а средний на осцил. И начинаю крутить:

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

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

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

5 1 голос

Оцените статью!

guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии