#1 2025-07-06 19:39:34

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 516

Визначення розпіновки енкодерів (варіант рішення)

Іноді буває потрібно визначити тип енкодера, а також який із його трьох пінів загальний, не збираючи схему з МК для експериментів. Не проблема, якщо під рукою є логічний аналізатор або двохканальний осцилограф. Але можна обійтись лише мультиметром з режимом продзвонки, і у випадку повнокрокового енкодера, двома світлодіодами.

Контактів всього три, отже пар теж три. Продзвонюємо кожну пару. Якщо одна з них продзвонюється, значить це - напівкроковий (двохквадрантний) енкодер. З таким все просто:
1. Запамʼятовуєм, яка з пар продзвонюється в поточному положенні.
2. Провертаєм енкодер на один клік у сусіднє положення.
3. Шукаєм, яка з пар продзвонюється тепер.
Спільний пін у цих двох пар і є загальний.

Якщо жодна з пар не продзвонюється, то це - повнокроковий (чотирьохквадрантний) енкодер. Ну або просто поламаний smile
Для визначення його розпіновки придумав наступний спосіб. Знадобиться два світлодіода і мультиметр в якості джерела струму. Важливо, щоб напруги в режимі продзвонки було достатньо для засвічування світлодіода. Або можна взяти будь-яке інше джерело напруги послідовно з резистором, щоб обмежити струм десь до 1-10 мА.

1. Підʼєднуєм мінус живлення (мінусовий щуп) до будь-якого одного з пінів.
2. Зʼєднуєм аноди обох світлодів та підʼєднуєм їх до плюса живлення (плюсовий щуп).
3. Катоди світлодіодів підʼєднуєм до двох інших пінів.
4. ПОВІЛЬНО повертаєм енкодер між двома фіксованими положеннями туди-сюди.
Якщо зʼявляються такі проміжні положення, коли світиться перший світлодіод, обидва одночасно, та другий світлодіод, значить загальний пін - той, куди підключений мінус живлення.
Якщо в будь-якому проміжному положенні світиться або тільки один світлодіод, або два одночасно, і немає такого положення, при якому засвітився би інший, значить загальний пін - той, до якого підключений світлодіод, що може світитись наодинці.

А може хто знає інші, простіші методи? Діліться smile

Неактивний

#2 2025-07-07 08:26:35

jokeer
Гість

Re: Визначення розпіновки енкодерів (варіант рішення)

Найпростіший і найнадійніший метод - прочитати даташіт wink але це неспортивно wink
Можна ще прошити в ардуїнку демку з енкодером і покрутити. Якщо не працює - підключити інакше wink Ну, просто якщо ви зібралися щось майструвати з енкодером і ардуїною - у вас є все що потрібно.

#3 2025-07-07 09:06:48

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 516

Re: Визначення розпіновки енкодерів (варіант рішення)

jokeer пише:

Найпростіший і найнадійніший метод - прочитати даташіт wink але це неспортивно wink

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

jokeer пише:

Можна ще прошити в ардуїнку демку з енкодером і покрутити. Якщо не працює - підключити інакше wink Ну, просто якщо ви зібралися щось майструвати з енкодером і ардуїною - у вас є все що потрібно.

Якщо збирати на колінці прототип, то можна і так. А якщо потрібно знайти в купі наявних енкодерів такий що підійде для готової плати, яку бачиш тільки на фотографії? smile

Неактивний

#4 2025-07-07 09:23:02

jokeer
Гість

Re: Визначення розпіновки енкодерів (варіант рішення)

Ну можна придумати тестер по типу Маркуса, але для енкодера. Якщо у вас цих енкодерів ціла коробка;)  Заради одного випробовування писати цілий скетч це занадто. Хоча.. 2 цикла, pinmode, digitalWrite , digitalRead, і прапорець що щось помінялось. Можна і написати.

#5 2025-07-07 09:37:39

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 516

Re: Визначення розпіновки енкодерів (варіант рішення)

jokeer пише:

Ну можна придумати тестер по типу Маркуса, але для енкодера. Якщо у вас цих енкодерів ціла коробка;)

Звісно, для сортування в промислових масштабах і стенд зібрати має сенс.
Свою конкретну задачу я вирішив швидко, а це питання мене зацікавило більше з академічної точки зору. Кілька днів крутилось в голові, не давало спокою, поки не оформилось в конкретний алгоритм roll От і поділився, може кому стане в нагоді.

Остання редакція dimich (2025-07-07 09:39:49)

Неактивний

#6 2025-07-07 10:52:17

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 130

Re: Визначення розпіновки енкодерів (варіант рішення)

Десь так. Повинно визначати, які піни замкнуті. Можна використовувати для прозвонки багатовивідних перемикачів.
Не прошивав wink

struct pin_def_s
{
  uint8_t pin;
  String caption;
};

pin_def_s pin_def[] = {
  {3, "D3"},
  {4, "D4"},
  {5, "D5"}
};

#define pins_count 3

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);

}

String out1;
String out0;

void loop() {
  out1 = "";
  for (uint8_t i = 0; i < pins_count; i++)
  {
    uint8_t pin_gnd = pin_def[i].pin;
    pinMode(pin_gnd, OUTPUT);
    digitalWrite(pin_gnd, LOW);
    for (uint8_t j = 0; j < pins_count; j++)
    {
          uint8_t pin_m = pin_def[j].pin;
          if (pin_m != pin_gnd)
          {
            pinMode(pin_gnd, INPUT_PULLUP);
          };
    };
    delay(100);
    for (uint8_t j = 0; j < pins_count; j++)
    {
          uint8_t pin_m = pin_def[j].pin;
          if (pin_m != pin_gnd && pin_gnd < pin_m)
          {
            if (! digitalRead(pin_m))
            {
               out1 = out1 + pin_def[pin_gnd].caption + "-" + pin_def[pin_m].caption + " ";
            };
          };
    };
  };
      if (out1 != out0)
    {
      Serial.println(out1);
    }; 
    out0 = out1;
}

Неактивний

#7 2025-07-07 18:19:39

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 516

Re: Визначення розпіновки енкодерів (варіант рішення)

jokeR пише:

Можна використовувати для прозвонки багатовивідних перемикачів.

Трошки допрацювати, і вийде багатоканальний логічний пробник wink
А якщо серйозно, то занадто багато писанини для такої дрібниці, як на мене. Ми все ж таки в "Апаратних питаннях", а не в "Програмуванні Arduino".

Неактивний

#8 2025-07-07 18:48:10

jokeer
Гість

Re: Визначення розпіновки енкодерів (варіант рішення)

Кабельний пробник скоріше.
З однієї сторони ардуїна, з іншої - жменя діодів. Показуватиме, які жили обірвані, які замкнені.

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму