Попробуйте из того же шуроповерта поставить редуктор - это снизит скорость и увеличит момент, следовательно устранит самопроизвольный откат назад. :)
Можно сделать на реле с самоподхватом и нормальнозамкнутым конечником. Когда устройство нажмет на конечник, то цепь реле разрывается и питание снимается. (Понадобится реализовать одну такую схему на движение вверх и на движение вниз, а это пара конечников, пара двухканальных реле, желательно на напряжение питания двигателя сразу, пара кнопок, если надо могу дополнить схемой)
На ардуине: сделать H-мост на полевиках для управления двигателем + токоизмерительный шунт. Ардуина получает сигнал вверх или вниз и открывает мост в нужном направлении попутно измеряя напряжение на шунте. Во время вращения двигателя оно будет меньше, чем в момент, когда двигатель упрется, ток возрастет - падение напряжения на шунте увеличится - выключаем H-мост.
Хотя можно и по таймеру, это еще проще делается)))
Можно
такой переключатель взять на два канала и реле времени дешевое (можно найти в микроволновках/старых стиральных машинах выдрать) Переключателем задаем направление вращения, а крутилкой реле времени - время вращения. Если реле времени нет, то его заменят транзистор и ардуина(и вообще практически любой МК).
Если надо то могу вечером дополнить ответ картинками по наиболее интересному варианту.