Publicado 2026-03-19
Debes haber pensado en esto: el microcontrolador 51 es tan clásico y barato, ¿se puede usar para controlar elservo? La respuesta es sí, y en más de un sentido. Hoy hablaremos sobre cómo usar el microcontrolador 51 para jugar elservoy haz que tu pequeña embarcación se mueva.
El mecanismo de dirección es en realidad un "vago". Siempre que le digas dónde girar, utilizará sus circuitos y motores internos para llegar a esa posición. La forma de saberlo es una onda PWM, que es una señal de onda cuadrada con ancho ajustable. Un estándarservoRequiere un ciclo de pulso de 20 milisegundos, donde el ancho del nivel alto determina el ángulo del servo.
Aunque el microcontrolador 51 no tiene un módulo PWM de hardware dedicado (el modelo antiguo no lo tiene y hablaremos de la versión mejorada por separado), podemos usar un temporizador para simularlo. Es como usar un cronómetro para medir el tiempo, dejar que un pin genere un nivel alto primero, luego bajarlo cuando el temporizador expira y esperar hasta que finalice el período de 20 milisegundos antes de repetir. Siempre que la sincronización sea lo suficientemente precisa, el microcontrolador 51 es totalmente capaz de realizar esta tarea.
Para hacer girar el servo, un microcontrolador por sí solo no es suficiente. En primer lugar, es necesario tener un servo, como el SG90 de bajo consumo, que sea fácil de usar. Luego está el suministro de energía, que es particularmente importante. La corriente de trabajo del servo no es pequeña, especialmente en el momento del arranque. Tomar energía directamente de la placa de desarrollo del microcontrolador puede hacer que el microcontrolador se reinicie fácilmente. Por lo tanto, es necesario preparar una fuente de alimentación de 5 V separada para el servo, como una batería o un módulo estabilizador de voltaje.
Otros componentes pequeños también son indispensables: para la conexión se utiliza una placa de pruebas o un cable DuPont. Lo mejor es preparar un condensador de unos 100 microfaradios y filtrarlo en ambos extremos de la fuente de alimentación del servo. El condensador puede actuar como un pequeño depósito, amortiguando las fluctuaciones de corriente, haciendo que el mecanismo de dirección funcione más estable y evitando que el microcontrolador se vea "implicado" en el reinicio.
La idea central de escribir un programa es utilizar un temporizador para generar un período de 20 milisegundos y controlar el pin para generar pulsos de diferentes anchos durante el período. Por ejemplo, configuramos el temporizador para que interrumpa cada 0,1 milisegundos y luego cuente. Si desea generar un pulso de 1,5 milisegundos, baje el pin cuando el conteo llegue a 15 en la interrupción, y luego tire del pin hacia arriba cuando el conteo llegue a 200 (lleguen 20 milisegundos), y así sucesivamente.
El código tampoco es complicado de escribir. En la función de servicio de interrupción del temporizador, use la instrucción if para determinar si el valor de conteo actual alcanza el valor de ancho de pulso establecido y luego borre el pin del servo a cero. En el programa principal, solo necesita modificar la variable correspondiente al valor del ancho del pulso para cambiar fácilmente el ángulo del mecanismo de dirección. Por supuesto, no olvide inicializar el temporizador y la interrupción, que son la base para que se ejecute el programa.
El ángulo de rotación del mecanismo de dirección está determinado directamente por el ancho del pulso de alto nivel y la relación entre los dos es básicamente lineal. En términos generales, un pulso de 0,5 milisegundos corresponde a 0 grados, 1,5 milisegundos corresponde a 90 grados y 2,5 milisegundos corresponden a 180 grados. Las distintas marcas de servos pueden tener ligeras diferencias, pero esta es la gama general.
Entonces, ¿cómo se configura el ángulo en el programa? Podemos definir una variable de ángulo y luego usar una fórmula simple para calcular el ancho de pulso requerido: ancho de pulso = 0,5 + (ángulo/180)*2,0, la unidad es milisegundos. Luego convierta este tiempo en un valor de conteo del temporizador. Por ejemplo, si hay una interrupción en 0,1 milisegundos como se mencionó anteriormente, entonces 1,5 milisegundos son 15 interrupciones. Finalmente, simplemente asigne este valor de conteo a la variable de comparación en la interrupción. Sencillo, ¿verdad?
A menudo hay más de un mecanismo de dirección en un proyecto. Por ejemplo, para fabricar un robot de seis patas se necesitan muchas cosas. Un método común para utilizar un microcontrolador 51 para controlar múltiples servos es la "multiplexación en tiempo compartido". Dado que cada servo requiere un pulso de período de 20 milisegundos, podemos dividir 20 milisegundos en varios segmentos y cada segmento genera un pulso de servo. Por ejemplo, primero envíe un pulso de 0,5 a 2,5 milisegundos al servo número 1, y luego envíe inmediatamente un pulso al servo número 2, y así sucesivamente, siempre que los pulsos de todos los servos se envíen dentro de los 20 milisegundos.
Este método requiere múltiples puertos IO y el programa de interrupción debe organizarse en orden. Si su microcontrolador es un microcontrolador mejorado con un módulo PWM de hardware, estará más libre de preocupaciones. Puede configurar directamente múltiples salidas PWM, la CPU apenas necesita preocuparse y la precisión es mayor. Para los principiantes, practique primero el uso de la multiplexación de tiempo compartido y luego considere actualizar los métodos después de comprender los principios.
Lo más común que se encuentra al jugar con servos es la inquietud. Suele ser un problema de suministro de energía. Cuando el servo se mueve, el voltaje disminuye y el microcontrolador no funciona correctamente, lo que provoca un desorden en la señal. La solución es fortalecer la fuente de alimentación, utilizar una fuente de alimentación independiente y hacer que los cables de alimentación y de tierra sean lo más gruesos y cortos posible, y el condensador debe instalarse cerca del servo.
A veces el ángulo del servo es incorrecto o la respuesta es lenta. Esto puede deberse a interferencias en la línea de señal o a que la sincronización del programa no es lo suficientemente precisa. Puede conectar una resistencia desplegable de 10k a la línea de señal a tierra para mejorar la capacidad antiinterferencia. En términos de programa, verifique si el oscilador de cristal es preciso y si el valor inicial del temporizador se calcula incorrectamente. Asegúrese de que estos cimientos estén bien y su servo podrá llegar a donde desee.
En el proceso de utilizar el microcontrolador 51 para jugar con el servo, ¿ha encontrado alguna falla particularmente interesante o se le ha ocurrido alguna aplicación interesante? Bienvenido a dejar un mensaje y compartirlo en el área de comentarios, y no olvides darle me gusta y guardarlo para que más amigos puedan ver estos consejos prácticos.
Hora de actualización: 2026-03-19
Comuníquese con el especialista en productos de Kpower para recomendarle un motor o caja de cambios adecuado para su producto.