Алгоритм работы двигателя

Anubis

✩✩✩✩✩✩✩
5 Авг 2020
9
2
Привет, не работал никогда в ардуино потому спрашиваю как реализовать движение 2 двигателей управляемых оптическим датчиком который считает вращающиеся зубцы на шкиве т.е допустим зубец стоит в положении то 1 если его нет там то 0, хочу сделать управление по колличеству считываемых состояний оптическим датчиком, идея для гравера в 2 мерной плоскости
 

Anubis

✩✩✩✩✩✩✩
5 Авг 2020
9
2
Должно быть 2 по видимому, не представляю как 1 датчик разделить на 2 двигателя
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,234
1,297
Москва
Это интераптор. я на таком делал тестер моторчиков, который кол-во оборотов проверяет. простейшая штука, только почему то проводов маловато. 3-4 должно быть. 2 на ИК диод, 2 на приемник. массу можно соединить.
 
  • Лойс +1
Реакции: Anubis

Arhat109

★★★★✩✩✩
9 Июн 2019
473
203
Так в чем проблема-то? Читаете датчик, пусть =1 или "многа" (есть просвет) ставите флаг "просвет" и читаете датчик до тех пор пока он не скажет =0 или "мало" (темно, зубец). Сбрасываете флаг "просвет" и ждете пока он не появится повторно.
Смысл в том, что надо ловить состояния перехода между зубцом и дыркой. Пока движется зубец или пока его нет, ваш датчик прочитает одно и тоже состояние "многа раз". Чтобы исключить это, требуется флаг, типа "ты такое уже видел, жди"..

Итого, примерный алгоритм:
Устанавливаем в сетапе:
1. флагПросвета = 0 (зубец, оно же "темно")

Повторяем в лупе:
2. Пока чтение датчика == флагПросвета { пусто, тупо ждем }
3. Упс .. светло, стало быть зубец кончился флагПросвета = 1 (просвет, оно же "светло")
4 тут .. считаем количество, управляем двиглом и т.д.

Условие 2 можно инвертировать, тогда можно состояние "тупо ждем" реализовывать проходом того же loop() делая что-то "попутно" или реализовать что-то ещё через idle() .. в общем, как основа.
Дальше Ваша фантазия.
 
  • Лойс +1
Реакции: Anubis

Anubis

✩✩✩✩✩✩✩
5 Авг 2020
9
2
Так в чем проблема-то? Читаете датчик, пусть =1 или "многа" (есть просвет) ставите флаг "просвет" и читаете датчик до тех пор пока он не скажет =0 или "мало" (темно, зубец). Сбрасываете флаг "просвет" и ждете пока он не появится повторно.
Смысл в том, что надо ловить состояния перехода между зубцом и дыркой. Пока движется зубец или пока его нет, ваш датчик прочитает одно и тоже состояние "многа раз". Чтобы исключить это, требуется флаг, типа "ты такое уже видел, жди"..

Итого, примерный алгоритм:
Устанавливаем в сетапе:
1. флагПросвета = 0 (зубец, оно же "темно")

Повторяем в лупе:
2. Пока чтение датчика == флагПросвета { пусто, тупо ждем }
3. Упс .. светло, стало быть зубец кончился флагПросвета = 1 (просвет, оно же "светло")
4 тут .. считаем количество, управляем двиглом и т.д.

Условие 2 можно инвертировать, тогда можно состояние "тупо ждем" реализовывать проходом того же loop() делая что-то "попутно" или реализовать что-то ещё через idle() .. в общем, как основа.
Дальше Ваша фантазия.
выглядит просто, может есть пример какой похожий в ардуине? Везде смотрю народ с шаговым двигателем делает
 

Arhat109

★★★★✩✩✩
9 Июн 2019
473
203
Осваивайте, если "просто выглядит" .. заодно и язык изучите. ;)
Если что-то будет "не получаться", выкладывайте сюда, тут есть удобный спойлер для кода. Кому помочь - найдется здесь - "всяко". ;)
 
  • Лойс +1
Реакции: Anubis