Відповісти

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

Назад

Огляд теми (нові повідомленні вгорі)

jokeR
Сьогодні 10:52:17

Десь так. Повинно визначати, які піни замкнуті. Можна використовувати для прозвонки багатовивідних перемикачів.
Не прошивав 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;
}
dimich
Сьогодні 09:37:39
jokeer пише:

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

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

jokeer
Сьогодні 09:23:02

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

dimich
Сьогодні 09:06:48
jokeer пише:

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

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

jokeer пише:

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

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

jokeer
Сьогодні 08:26:35

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

dimich
Вчора 19:39:34

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

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

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

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

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

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