Tengo problemas para encontrar una solución para un proyecto. Actualmente, hay un servomotor que acciona un dedo robótico. La posición del servo determina la curvatura del dedo (dedo recto - > servo 0 grados, curvado hacia adentro - > servo 100 grados). En la punta del dedo hay un sensor de presión.
Digamos que le digo al servo que se mueva a 100 grados. El dedo se doblará hasta que las puntas de los dedos entren en contacto con un objeto. Cuando el sensor de presión detecta que el dedo presiona la cantidad de presión sobre el objeto por encima de X, el servo se detendrá en su posición actual, digamos 50 grados.
El problema es que no sé cómo hacer que el servo se detenga en su posición actual. El servo siempre va a la posición final en la que inicialmente lo puse. ¿Cómo se puede implementar esto?
He pensado en 2 soluciones, ninguna de las cuales es ideal:
- Cuando el sensor de presión alcanza un umbral, apague PWM al servo por completo. Esto debería impedir que el servo se mueva más, pero no creo que mantenga la posición. También esto crea desafíos para el siguiente comando de movimiento.
- Tenga otro sensor que mida la posición actual (grados) del servo. Cuando el sensor de presión cruza el umbral, baje la posición actual y actualice el ciclo de trabajo a la posición actual. El problema con esto es que necesito encontrar una manera de medir la posición actual.
¿Puede alguien asesorar sobre una mejor manera de implementar esto?