Publicado 2026-03-27
¿Alguna vez se ha encontrado con esta situación: desea controlar manualmente la dirección de dirección delservo, ¿pero no sabes cómo utilizar los botones más simples para lograrlo? Hoy hablaremos sobre cómo STM32 controla la rotación hacia adelante y hacia atrás delservoa través de botones, para que pueda cumplir fácilmente con este requisito.
La mayor ventaja de utilizar botones para controlar el servo es que es intuitivo y conveniente. Imagina que hiciste un bote de basura inteligente. La tapa se abre cuando presionas el botón y se cierra cuando presionas el botón nuevamente. ¿Es natural esta experiencia interactiva? El control de botones no requiere una computadora ni una interfaz complicada. Responde cuando se presiona. Es especialmente adecuado para prototipos de productos o equipos de lotes pequeños. Además, el GPIO de STM32 es muy sencillo de leer el estado del botón. Se puede lograr con solo unas pocas líneas de código y el umbral de desarrollo es particularmente bajo.
Para aquellos de ustedes que necesitan aplicaciones para el mecanismo de dirección, el control con botones es simplemente "una buena noticia para los perezosos". Por ejemplo, si quieres hacer un comedero automático, presiona para entregar comida y presiona para detener; o haga un modelo de automóvil con control remoto y use botones para controlar el ángulo de dirección. Este método de control no sólo es económico, sino también muy fiable. Si el botón está roto, resulta económico reemplazarlo. La clave es que el costo de aprendizaje del usuario es casi nulo y cualquiera puede presionar el botón.
Hay varios servos en el mercado, ¿cómo elegir el adecuado? Primero, observe su escenario de uso. Si solo controlas la dirección y no necesitas mucho esfuerzo, un servo pequeño de 9 g es suficiente, es barato y común. Si necesita impulsar algo más pesado, como un brazo robótico de metal, debe utilizar este servo de alto par. Preste atención al voltaje de funcionamiento del servo. 5V es común, pero algunos son de 7,4V. Debe coincidir con la fuente de alimentación de STM32.
También está la compatibilidad de las señales de control. La mayoría de los servos están controlados por señales PWM con un período de 20 ms y un tiempo de nivel alto de 0,5 ms a 2,5 ms correspondiente a 0 a 180 grados. Por lo tanto, al elegir un servo, asegúrese de confirmar si es un control PWM estándar; de lo contrario, el código deberá cambiarse significativamente. Además, recuerda comprar un repuesto extra al comprar. El servo se quema fácilmente cuando está bloqueado, por lo que tener uno de repuesto te hace sentir cómodo.
Los botones y el servo están conectados al STM32. El cableado es el primer paso y el problema más probable. El botón generalmente está conectado a un puerto GPIO y GND, y la resistencia pull-up se enciende internamente, de modo que cuando se suelta el botón, es de nivel alto y cuando se presiona, es de nivel bajo. Tenga en cuenta que es mejor conectar un condensador de 0,1 uF en ambos extremos del botón para eliminar la interferencia de fluctuación. El servo está conectado a la fuente de alimentación de 5 V y GND, y la línea de señal está conectada a otro puerto GPIO. Las fuentes de alimentación deben estar separadas. La corriente de arranque del servo es grande y compartir la fuente de alimentación con STM32 puede provocar un reinicio fácilmente.
Aquí hay un pequeño consejo: encienda el servo por separado y el puerto de 5 V del STM32 solo se usa para botones y chips. Si se debe compartir la fuente de alimentación, el voltaje se reducirá cuando se inicie el servo, lo que provocará que el microcontrolador se reinicie. Otra cosa es conectar todos los GND entre sí para garantizar que el potencial de referencia de la señal sea consistente. Es mejor dibujar un diagrama simple antes del cableado y confirmar que sea correcto antes de encender para evitar quemar la placa.
![]()
La parte del código en realidad no es complicada. El núcleo es sondear el estado del botón y cambiar el ciclo de trabajo PWM del servo. Inicialice el temporizador para generar PWM con un período de 20 ms. Primero proporcione un valor intermedio como 1,5 ms de nivel alto para detener el servo a 90 grados. Entonces el bucle principal detecta el botón. Si se presiona el botón de avance, el ciclo de trabajo aumenta para aumentar el ángulo del servo; si se presiona el botón de marcha atrás, se reduce el ciclo de trabajo. Recuerde agregar un retraso para eliminar la fluctuación; de lo contrario, saltará varios fotogramas una vez que lo presione.
Para evitar que el servo exceda el ángulo límite, se deben establecer restricciones en el código. Por ejemplo, después de girarlo a 180 grados, no aumentará cuando se presione nuevamente; no disminuirá cuando se invierta a 0 grados. Hay otro pequeño detalle: el servo tarda un tiempo en girar. Presionarlo continua y rápidamente puede hacer que el servo no pueda mantener el ritmo. Puede actualizar el PWM en el momento en que se suelta el botón o retrasar 200 ms después de presionar cada botón para permitir la siguiente acción. Esto se sentirá mucho mejor.
Definitivamente encontrarás problemas al hacerlo por primera vez. El más común es que el servo no se mueva. No te preocupes, utiliza un multímetro para comprobar si la fuente de alimentación tiene 5 V y si hay una forma de onda en la línea de señal. Si no tiene un osciloscopio, puede escribir un programa simple para cambiar los niveles alto y bajo del pin PWM y observarlo con un LED. Si el LED puede parpadear, significa que el temporizador está configurado correctamente. Mire el servo para ver si hay un sonido "chisporroteante". Si hay un sonido significa que está recibiendo fuerza pero no se mueve, es decir, la máquina está atascada.
La fluctuación de las teclas también es un problema común: una pulsación se siente como varias pulsaciones. La solución es añadir software anti-rebote: tras detectar que el botón está pulsado, retrasar 20ms y volver a leerlo. Si aún está presionado, realice la acción nuevamente. Además, si hay una gran cantidad de claves, puede usar el método de interrupción en lugar de escanear todo el tiempo en el bucle principal, lo que ahorra recursos y es sensible. Hay códigos preparados para estos problemas en línea, que se pueden utilizar con ligeras modificaciones.
Esta solución se puede ampliar a muchas cosas interesantes. Por ejemplo, haga una cortina inteligente controlada manualmente, presione la dirección hacia adelante para abrir la cortina e invierta la dirección para cerrarla; o haga una plataforma giratoria, presione el botón para girar 30 grados para tomar fotografías. También existen accesorios de herramientas sencillos que se pueden fabricar en la industria, con botones para controlar la sujeción y el aflojamiento, que son mucho más económicos que los neumáticos. Para quienes fabrican productos, los servos controlados por botones son una de las soluciones de interacción persona-computadora de menor costo.
Si está trabajando en una casa inteligente o en un proyecto de bricolaje, esta función definitivamente le resultará útil. Piénselo, usar STM32 y agregar algunos botones y servos puede satisfacer muchas necesidades de control manual, y es estable y confiable. La clave es que el código y el hardware son simples, los parámetros se pueden cambiar para adaptarse a diferentes proyectos y la reutilización es particularmente fuerte. Muchos productos pequeños utilizan este método para verificar rápidamente sus funciones y luego optimizarlas y actualizarlas.
¿Qué nuevos trucos crees que puedes usar con el servo y los botones en tu proyecto? Bienvenido a compartir sus ideas en el área de comentarios o buscar directamente en nuestro sitio web oficial para ver más casos prácticos de STM32. ¡Me gusta y guarda este artículo para no perderte la próxima vez que lo uses!
Hora de actualización: 2026-03-27
Comuníquese con el especialista en productos de Kpower para recomendarle un motor o caja de cambios adecuado para su producto.