Rovez писал(а):Есть несколько вариантов: использование редуктора/энкодера для подсчета определенного количества оборотов и остановки (факт открытия штор например), но способ не очень подходит, т.к. результат необходимо будет сохранять в ПЗУ и возможен недостоверный подсчет оборотов из-за прокрутки вала под внешней помехой (нагрузкой) штор.
Второй вариант - иметь на "веревочке", на двух концах небольшие узлы которые будут нажимать на 2 кнопки с фиксацией (факта открытия и закрытия штор) но вариант тоже не очень надежный, может Вы что то предложите?
Самый надёжный вариант - соединить вал стеклоподъёмника с дополнительным редуктором, на выходной вал которого поставить кулачок, который будет нажимать на микропереключатели.
Передаточное отношение дополнительного редуктора должно быть такое, чтобы при перемещении штор из открытого состояния в закрытое кулачок совершал половину оборота. Соответственно, микропереключатели ставятся под углом 180°.
Скажем, если для полного открытия штор вал стеклоподъёмника делает 5 оборотов, то дополнительный редуктор должен быть с передаточным отношением 10:1. При этом кулачок повернётся на 180°, разомкнув один микровыключатель и замкнув другой. Не понадобится никакой энкодер и не нужно задействовать ресурсы МК.
Но точность тоже зависит от пробуксовки вала.
Rovez писал(а):возможен недостоверный подсчет оборотов из-за прокрутки вала под внешней помехой (нагрузкой) штор.
Выход такой - соединить редуктор с микропереключателями не с валом стеклоподъёмника, а с блоком на другой стороне карниза.
Примерно так:

Поскольку нагрузка от редуктора и микропереключателей на этот блок невелика, то он пробуксовывать не будет и точность будет достаточна.
На этот же блок можно поставить и энкодер, но это лишний расход ресурсов МК и лишний гемор с программой.