Red de conocimientos turísticos - Información de alquiler - Programa servo de control MCU para obtener ayuda. . . .

Programa servo de control MCU para obtener ayuda. . . .

1. Descripción general

El mecanismo de dirección apareció por primera vez en los aeromodelos deportivos. En el modelo de aviación, la actitud de vuelo de la aeronave se logra ajustando el motor y varias superficies de control. Por ejemplo, para un avión simple de cuatro direcciones, existen los siguientes lugares en el avión que deben controlarse:

1. La entrada de aire del motor se utiliza para controlar la fuerza de tracción (o empuje) del motor.

2. Superficie del timón de alerón (instalada en el borde de salida del ala del avión), utilizada para controlar el movimiento de balanceo del avión;

3. para controlar el ángulo de cabeceo de la aeronave;

p>

4. La superficie vertical del timón de cola se utiliza para controlar el ángulo de guiñada de la aeronave;

El control remoto tiene cuatro canales, correspondientes a cuatro servos, y los servos están conectados a través de bielas, etc. El elemento de transmisión impulsa la rotación de la superficie del timón, cambiando así el estado de movimiento de la aeronave. De ahí el nombre del mecanismo de dirección: el servomotor que controla la superficie de dirección.

Su aplicación se puede ver no sólo en aeromodelos, sino también en otros movimientos de modelos: se utiliza para controlar el timón de cola en modelos de barcos, se utiliza para dirigir en modelos de automóviles, etc. Se puede observar que siempre que se requieran acciones operativas, se puede utilizar el mecanismo de gobierno para lograrlo.

2. Estructura y control

En términos generales, el mecanismo de dirección se compone principalmente de las siguientes partes: volante, conjunto de engranajes reductores, potenciómetro de retroalimentación de posición 5k, motor de CC, placas de circuito de control. , etc.

Principio de funcionamiento: la placa de circuito de control recibe la señal de control de la línea de señal (la señal específica se discutirá más adelante), controla la rotación del motor y el motor acciona una serie de juegos de engranajes, que se desaceleran y luego se transmiten al volante de salida. El eje de salida del mecanismo de dirección está conectado al potenciómetro de retroalimentación de posición. Cuando el volante gira, acciona el potenciómetro de retroalimentación de posición. El potenciómetro enviará una señal de voltaje a la placa de circuito de control para obtener retroalimentación, y luego la placa de circuito de control determina. el motor en función de la posición y la velocidad de rotación para lograr la parada objetivo.

La estructura básica del mecanismo de dirección es esta, pero hay muchas formas de implementarla. Por ejemplo, hay motores con y sin escobillas, engranajes de plástico y metal, ejes de salida deslizantes y rodantes, carcasas de plástico y aluminio, velocidades rápidas y lentas y volumen. Hay tres tipos: grande, mediano, pequeño, etc., con diferentes. combinaciones y diferentes precios. Por ejemplo, los servos pequeños generalmente se denominan microtimones. Son más del doble de largos que los servos de tamaño mediano que utilizan el mismo material, y los engranajes de metal son más del doble de largos que los de plástico. Es necesario seleccionar diferentes tipos según las necesidades.

Hay tres cables de entrada al servo. El rojo en el medio es el cable de alimentación y el negro en un lado es el cable de tierra. Este cable proporciona la garantía de energía más básica para el servo. , principalmente el consumo de rotación del motor. La fuente de alimentación tiene dos especificaciones, una es de 4.8V y la otra de 6.0V, que corresponden a diferentes estándares de torque, es decir, el torque de salida es diferente y el correspondiente a 6.0V es mayor, dependiendo de las condiciones de aplicación; la otra línea es la línea de señal de control, las de Futaba son generalmente blancas y las de JR son generalmente naranjas. Otra cosa a tener en cuenta es que algunos modelos de SANWA tienen cables de servo y de alimentación en los laterales en lugar de en el medio, por lo que es necesario identificarlos. Pero recuerda que el rojo es el cable de alimentación y el negro es el cable de tierra. Generalmente no hay ningún error.

La señal de control del mecanismo de dirección es una señal de modulación de ancho de pulso (PWM) con un período de 20 ms. El ancho del pulso varía de 0,5 ms a 2,5 ms, correspondiente a la posición del volante desde 0. a 180 grados, que cambia linealmente. Es decir, si se le proporciona un cierto ancho de pulso, su eje de salida permanecerá en un ángulo correspondiente No importa cómo cambie el par externo, no cambiará la salida hasta que se le proporcione una señal de pulso de otro ancho. . ángulo a la nueva posición correspondiente. Hay un circuito de referencia dentro del mecanismo de dirección que genera una señal de referencia con un período de 20 ms y un ancho de 1,5 ms. Hay un comparador que compara la señal externa con la señal de referencia para determinar la dirección y el tamaño, generando así la rotación. señal del motor. Se puede ver que el mecanismo de dirección es un servocontrolador de posición. El rango de rotación no puede exceder los 180 grados. Es adecuado para transmisiones que requieren que el ángulo cambie y se mantenga continuamente. Por ejemplo, las articulaciones de los robots, las superficies de control de los aviones, etc.

Los fabricantes comunes de aparatos de dirección incluyen: Futaba, JR, SANWA, etc. de Japón, y los nacionales incluyen New Fantasy de Beijing, Zhenhua de Jilin, etc. Ahora tomemos Futaba S3003 para presentar los parámetros relevantes para que todos puedan elegir al diseñar. La razón por la que se utiliza el 3003 es porque este modelo es el más común en el mercado y también es el relativamente más económico (los siguientes datos están tomados del manual del producto Futaba).

Dimensiones: 40,4×19,8×36,0 mm

Peso: 37,2 g

Velocidad de funcionamiento: 0,23 seg/60°(4,8V)

0,19 seg/60°(6,0 V)

Par de salida: 3,2 kg.cm (4,8 V)

4,1 kg.cm (6,0 V)

Se puede ver que el mecanismo de dirección tiene las siguientes características:

>Tamaño compacto, fácil de instalar;

>Par de salida grande, buena estabilidad;

>Control simple, fácil de interconectar con sistemas digitales;

Precisamente porque el mecanismo de dirección tiene muchas ventajas, ahora no sólo se utiliza en los movimientos de los modelos de aviones, sino que se ha extendido a diversos productos mecánicos y eléctricos. y su aplicación en el control de robots está cada vez más extendida.

3. Utilice un microcontrolador para controlar

La señal de control del mecanismo de dirección es una señal de modulación de ancho de pulso, por lo que es muy conveniente interactuar con el sistema digital. Para controlar el mecanismo de dirección se puede utilizar cualquier dispositivo digital que pueda generar señales de control estándar, como PLC, microcontrolador, etc. Aquí presentamos el método de utilizar el microcontrolador de la serie 51 para generar la señal de control del mecanismo de dirección para el control. El lenguaje de programación es C51. La razón por la que presento este método es simplemente porque el autor lo implementó con 2051. Con una actitud responsable, me atrevo a escribirlo aquí. El programa utiliza mi robot andante de cuatro patas, con algunas modificaciones. La microcomputadora de un solo chip no es la mejor manera de controlar el mecanismo de dirección. Espero que esto pueda servir como punto de partida.

2051 tiene dos contadores internos de 16 bits. Los usamos para generar señales de pulso con un período de 20 ms y cambiar el ancho del pulso de salida según sea necesario. La idea básica es la siguiente (consulte el programa a continuación):

La frecuencia del oscilador de cristal que uso es 12 M. Un ciclo de reloj de 2051 son 12 ciclos de oscilador de cristal, que es exactamente 1/1000 ms. El contador cuenta cada 1/1000 ms. Cuente una vez. Tomando el contador 1 como ejemplo, primero configure el valor inicial del ancho del pulso. El valor inicial en el programa es 1,5 ms. Puede cambiarse en cualquier momento cambiando el valor de a en el bucle for. del contador a a, y configure la salida p12 en la posición Alta. Cuando finalice el conteo, active la función de interrupción de desbordamiento del contador, que es la interrupción 1 del temporizador void0 (void) usando 1. En la subfunción, cambie la salida p12 para invertir (saltar a bajo en este momento) y restarla de 20000 (. representa el período de 20 ms) El tiempo a utilizado para el bit alto es el tiempo para el bit bajo en este ciclo, c=20000-a, y el valor inicial del contador en este momento se establece en c hasta que el temporizador genera un desbordamiento. Se vuelve a interrumpir y se repite el proceso anterior.

# include

#define uchar unsigned char

#define uint unsigned int

uint a,b, c,d;

/*a es el ancho de pulso del servo 1, b es el ancho de pulso del servo 2, unidad 1/1000 ms */

/*c, d Para la variable intermedia*/

/*defina el pin de salida a continuación*/

sbit p12=P1^2;

sbit p13=p1^3;

sbit p37=P3^7;

/*Las dos funciones siguientes son funciones de interrupción del temporizador*/

/*Temporizador 1, controla el servo 1, el El pin de salida es P12, que se puede personalizar*/

void timer0(void) interrupción 1 usando 1

{p12=!p12 /*Inversión de salida*/

c=20000-c; /*20000 representa 20 ms, que es el tiempo de un ciclo*/

TH0=-(c/256); *Redefinir el valor de conteo inicial*/

if(c>=500&&c<=2500)c=a;

else c="20000-a" /*Juzgar el pulso ancho ¿Está dentro del rango normal? p>void timer1(void) interrupción 3usando 1

{p13=!p13;

d=20000-d;

TH1=-(d/256 ); TL1=-(d%256);

if(d>=500&&d<=2500)d=b;

si no d= "20000-b";

p>

}

/*Programa principal*/

void main(void)

{TMOD =0x11; /*Establecer valor inicial*/

p12=1;

p13=1;

a=1500;

b=1500; /*El valor 1500 corresponde a 1,5 ms, que es la posición media de 90 grados del servo*/

c=a;d=b;

TH0 =-(a/256); TL0=-(a %256);

TH1=-(b/256); TL1=-(b%256); el temporizador*/

EA=1 ;

ET0=1;EX0=1;EX1=1;

ET1=1; =1;

PX0=0; PX1=0;PT1=1;PT0=1;/*Establecer prioridad de interrupción*/

for(;;)

{

/* En este bucle for, puede cambiar los valores a y b en cualquier momento según las necesidades del programa

para cambiar el tiempo de salida del ancho de pulso

para controlar el mecanismo de dirección*/

}

}

Debido a que la salida de la señal de pulso es procesada por la función de interrupción de desbordamiento de El tiempo del temporizador es muy corto, por lo que se puede utilizar en situaciones donde los requisitos de precisión no son altos. Por lo tanto, si ignora el tiempo de interrupción, desde otra perspectiva, el programa principal y la salida de pulso son paralelos. Por lo tanto, solo necesita cambiar el valor de a en el programa principal según sus requisitos, por ejemplo, deje un cambio de. 500 a 2500, puedes hacer que el servo cambie de 0 grados a 180 grados. Otra cosa para recordar es que la rotación del servo lleva tiempo. Por lo tanto, el valor de a en el programa no puede cambiar demasiado rápido, de lo contrario el servo no podrá seguir el ritmo del programa. Según las necesidades, elija el retardo adecuado y utilice un bucle incremental para hacer que el servo gire suavemente sin pulsar como un motor paso a paso.

Estos todavía deben experimentarse concretamente en la práctica.

La velocidad del servo está determinada por la velocidad cambiante del ancho de pulso de la señal que le proporcionas. Por ejemplo, cuando t = 0, el ancho del pulso es 0,5 ms. Cuando t = 1 s, el ancho del pulso es 1,0 ms. Luego, el servo se moverá desde la posición correspondiente a 0,5 ms a la posición correspondiente a 1,0 ms. ¿La velocidad de rotación? En términos generales, la velocidad máxima de rotación del 3003 es de 0,23 s/60 grados a 4,8 V. Es decir, si requieres una velocidad más rápida que esta, el servo no podrá responder si requieres una velocidad más lenta que esta. , puede linealizar el valor de cambio de ancho de pulso al tiempo que requiera, hacer un bucle y aumentar el valor de ancho de pulso poco a poco, puede controlar la velocidad del servo. Por supuesto, es necesario probar el número exacto de este punto. De lo contrario, si no es adecuado, el servo saltará y girará como un motor paso a paso. Intente cambiar este "punto" para que el movimiento del servo sea más suave. Otro punto importante es que cada vez que cambia el valor del ancho de pulso del servo, siempre habrá un