Red de conocimiento informático - Conocimiento sistemático - Una declaración en lenguaje ensamblador [STRIN DB 'lajid451231;' COUNT EQU $-STRIN] ¿Qué función cumple $-STRIN?

Una declaración en lenguaje ensamblador [STRIN DB 'lajid451231;' COUNT EQU $-STRIN] ¿Qué función cumple $-STRIN?

Reimprimir

Motor paso a paso de control de microcomputadora de un solo chip

El motor paso a paso es un actuador de control electromecánico común. Utiliza pulsos eléctricos para convertirlo en desplazamiento angular. En términos simples: cuando un controlador paso a paso Cuando. se envía la señal de pulso, impulsa el motor paso a paso para girar un ángulo fijo (ángulo de paso) en la dirección establecida. Controlando el número de pulsos, es decir, el tamaño del desplazamiento angular, se puede lograr un posicionamiento preciso. Al mismo tiempo, controlando la frecuencia del pulso, se puede controlar la velocidad y la aceleración de la rotación del motor, logrando así el propósito. de regulación de velocidad.

Basado en el sentido común de los motores paso a paso, los motores paso a paso se dividen en tres tipos: motores paso a paso de imán permanente (PM), reactivos (VR) e híbridos (HB). el par y el volumen son pequeños, el ángulo de paso es de 7,5 grados o 15 grados, el paso a paso reactivo es generalmente trifásico, la salida de par es grande, el ángulo de paso es de 1,5 grados, pero el ruido y la vibración son grandes. Ya eliminado en países desarrollados como Europa y Estados Unidos en la década de 1980, el paso a paso híbrido se refiere a una combinación de las ventajas de los imanes permanentes y la potencia reactiva. Consta de dos fases y cinco fases: el ángulo de paso de las dos fases es generalmente de 1,8 grados y el ángulo de paso de las cinco fases es generalmente de 0,72 grados. Los motores paso a paso son los más utilizados.

Control del motor paso a paso de imán permanente

A continuación se toma como ejemplo el motor paso a paso de imán permanente utilizado por entusiastas de la electrónica amateur. /gt; La Figura 1 es la vista externa del motor paso a paso de imán permanente 35BY. La Figura 2 es el diagrama de cableado del motor. Como se puede ver en la figura, el mejor motor tiene cuatro juegos de bobinas y uno de los puntos finales. Los cuatro juegos de bobinas junto con los cables, tal *** tiene cinco cables. Cuando utilice un motor paso a paso para girar, puede energizar cada terminal por turno. Siempre que el terminal COM C esté conectado a AC, C, BC y C, se puede energizar para accionar el motor paso a paso. El método de suministro de energía puede ser varios. El terminal COM está conectado al polo positivo de la fuente de alimentación. Siempre que se determine que es un elemento de conmutación (como un triodo), A y B se alternan.

La siguiente tabla enumera algunos parámetros típicos del motor:

Tabla 1 Parámetros del motor paso a paso 35BY48S03 modelo ángulo de paso fase voltaje corriente resistencia par estático máximo posicionamiento par inercia Momento 35BY48S03 7.5 4 12 0.26 47 180 65 2.5

Usando estos parámetros, es fácil diseñar el circuito de control Dado que el voltaje de operación es de 12 V, la corriente de salida máxima en circuito abierto es de 0,26 A, utilizando un controlador Darlington (ULN2003) como controlador. , P1.4 - P1.7 controlan la conducción y el cierre de cada bobina. El circuito se muestra en la Figura 3. Al principio, P1.4 a P1.7 pasan a nivel alto, a su vez P1.4-P1.7 pasan a nivel bajo, tenga cuidado al accionar el motor paso a paso y luego cambie al pin de salida anterior para pasar a nivel alto. Si desea cambiar la velocidad de rotación del motor, solo necesita cambiar el tiempo de circuito abierto entre los dos para cambiar la dirección de rotación del motor, y solo necesita cambiar la secuencia de conducción de cada bobina.

Figura 1 Diagrama general del motor paso a paso 35BY48S03

Figura 2 Diagrama de cableado del motor paso a paso 35BY48S03

Figura 3 Diagrama del circuito de control del motor paso a paso MCU 35BY48S03

3. Método de control del motor paso a paso

1.

Ejemplo de requisitos para el controlador del motor paso a paso: El circuito de control se muestra en la Figura 3. Después de encender la alimentación, el motor No valor de la velocidad de rotación? Se requiere pantalla digital.

1. Análisis

Según el análisis anterior, siempre que P1.0 a P1.3 giren a un nivel bajo, el cambio de velocidad cumple con los requisitos de retraso y no debe ser tiempo de implementación, ya que otras funciones pueden verse afectadas. A continuación se muestra el método formal. Primero, calcule el tiempo fijo.

La velocidad mínima requerida es 25 rpm, el ángulo de paso del motor paso a paso es 7,5 y hay 48 pulsos por ciclo, es decir, cuando 1200 pulsos/minuto, la velocidad mínima equivalente es 50 ms/ legumbres. A una velocidad máxima de 100 rpm, es decir, 48.000 impulsos/minuto, lo que equivale a 12,5 ms/pulso. Como se muestra en la siguiente tabla

Tabla

La relación entre la velocidad del motor paso a paso y la constante de temporización del temporizador Velocidad tiempo de paso único (segundos) TH1 TL1 Tiempo real (segundos)

25 50000 76 0 49996.8 26 48077 82 236 4807 4.18

27 46296 89 86 46292.61

28 44643 95 73 44640.155

?... ... ......100 12500 211 0 12499.2

Esta tabla no solo calcula TH1 y TL1, sino que también calcula la constante de tiempo, es decir, el tiempo de tiempo real. El valor calculado se utiliza para estimar la velocidad real y el valor de error teórico entre velocidades.

TH1 y TL1 en la tabla se calculan en función de la sincronización. La sincronización utilizada aquí es el oscilador de cristal inicial 11.0592M. Como se muestra en la tabla anterior, la implementación de este programa no es difícil. Simplemente use el tiempo del temporizador/contador T1 para cambiar el pin de salida.

2. Implementación del programa

Defina la placa experimental DSB-1A S1 como botón de inicio, S2 como botón de parada más 1 botón y S3 y S4 como botón menos 1. El programa es el siguiente:

p>

startend bit 01H; Banderas de inicio y parada

MinSpd EQU 25; Velocidad de inicio

MaxSpd EQU 100; RPM máximas

Datos de velocidad Conteo de flujo de 23 horas

Datos de DjCount Control de valor de 24 horas Salida del motor inicialmente 11110 111

Ocultar código de desvanecimiento EQU 10H

Datos del contador 57H;

Datos DISPBUF 58H; búfer de visualización

ORG 0000H

AJMP MAIN

ORG 000BH

JMP DISP

ORG 001BH

JMP DJZD

ORG 30H

PRINCIPAL:

MOV SP, #5FH

MOV P1, #0FFH

MOV A, #oculto

MOV DispBuf, A

MOV DispBuf 1 , a

MOV DispBuf 2 , A

MOV DjCount, #11110111B

MOV Speed, #MinSpd contador de entrada de velocidad de rotación inicial

Estado de pausa inicial y final de CLR

MOV TMOD, #00010001B

MOV TH0, #Alto (65536 -3000) MOV TL0, #Bajo (65536-3000)

MOV TH1, #0FFH;

MOV TL1, #0FFH

SETB TR0

SETB EA SETB ET0 SETB ET1

BUCLE : tecla ACALL;

programa de teclado JNB F0 m_NEXT1 continúa sin llave

a través de ACALL y KEYPROC

m_NEXT1; de lo contrario, se llama al controlador de teclado:

MOV A, ¿velocidad?

MOV B, #10

DIV AB

MOV DispBuf 5, B, bit más bajo

MOV B, #10

DIV AB

MOV DispBuf 4 B

MOV DispBuf 3 A

Inicio JB, donde m_Next2

CLR TR1; apagar el motor

JMP LOOP

ORL P1, #11110000B

m_Next2's:

SETB TR1; arrancar motor

AJMP LOOP; fin del programa principal

-------------------- ------------ -------/gt;

D10ms para:

??

--------- Programa de retardo, llamada de procesamiento de teclado

KEYPROC:

MOV A, B; clave de acceso

JB's ACC.2, análisis de código clave de inicio/parada, noticias, el bit es 1

JB ACC.3 KeySty

JB ACC.4.UpSpd's

JB ACC.5.DowSpd's

AJMP lt;br KEY_RET abrir/cerrar

SETB StartEnd inicio

AJMP KEY_RET

KeySty:

CLR StartEnd; detener

AJMP KEY_RET

UpSpd:

INC.speed;

MOV A, SPEED

CJNE A#MaxSpd en K1

Número de velocidad DEC hasta cero hasta 1 al lado del compromiso permanece

Valor K1:

AJMP KEY_RET

DowSpd: DEC SPEED

MOV A, SPEED

CJNE A , #MAXSPD, rango KEY_RET (aún no máximo), retorno

Velocidad MOV #MinSpd

KEY_RET:

RET.?Acceder a elementos clave

p>

RET de

DjZd: Control de velocidad del motor, temporizador T1

PUSH ACC PUSH PSW de

MOV A, ¿velocidad?

SUBB A, #MinSpd; restar línea base

MOV DPTR, #DJH

MOVC A, _at_ A DPTR

MOV TH1, A

MOV A, velocidad de ?

SUBB A, #MinSpd

MOV DPTR, #DJL

MOVC A, @ A DPTR

MOV TL1, A MOV A, DjCount

CPLá

Magic P1,

MOV A, DjCount

JNB ACC.7, d_Next1

JMP d_Next2

d_Next1:

MOV DjCount, #11110111B

d_Next2: lt ; BR/MOV A, DjCount

RLá

MOV DjCount, A; restaurar

ANL P1, A POP PSW

POP ACC

RETI DJH: DB 76, 82, 89, 95, 100, 106, 110, 115, 119, 123, 1

2 en...

DJL: DB 0, 236, 86, 73, 212, 0, 214, 96, 163, 165

??

DISP: Programa de visualización

POP PSW

POP ACC.

??

RETI

BitTab: DB 7FH, 0BFH 0DFH 0EFH, 0F7H, 0FBH

DISPTAB: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H, 88H, 83H, 0C6H.0A1H, 86H, EH , 0FFH end

3. Análisis del programa

El programa principal de este programa consta de tres partes: programa de teclado, programa de monitoreo y controlador de motor paso a paso. El programa principal primero inicializa las variables. Muestra tres gradientes, cada pin del controlador del motor paso a paso es una salida de alto nivel, y luego llama al programa del teclado y emite un juicio. Si se presiona una tecla, se llama al controlador del teclado o pasa directamente al siguiente paso. El siguiente paso es mostrar el búfer que convierte el valor de velocidad actual en código BCD; se juzga si la variable de bit StartEnd es "1" o "0", si es "1", se activa el temporizador T1. Si es "1", el temporizador T1 se enciende; de ​​lo contrario, el temporizador T1 se apaga. Para evitar que la bobina de fase se apague durante un período prolongado, el temporizador T1 se apaga y P1.0 a P1.3. están fijados en un nivel alto. En este punto, finaliza el programa principal. En aras de la simplicidad, no hay "0" ni "010" de alto nivel con una velocidad de borrado de 10 rpm. Los lectores pueden agregar código para manejar este trabajo.

Controlador de motor paso a paso, programa de servicio de interrupción del temporizador T1, según el análisis anterior, después de que llega cada hora fija, se conecta a un DjCntr variable de P1.0 a P1.3 para realizar esta función. Hasta cierto punto, cuando se inicializa el programa principal, el valor inicial de la variable 11110111B se utiliza para mover la variable ACC enviada por la interrupción del temporizador fuera del acumulador y desplazarla hacia la izquierda en el acumulador para que su valor se convierta en 11101111, y luego "Y" con P1 P1.4 genera un nivel bajo, lo que hace que P1.0 a P1.3 emita un nivel alto. 4 genera un nivel bajo, de modo que al ingresar a la interrupción por segunda vez, primero niega el número 0001 0000 y luego niega el número "o" de P1. Por lo tanto, P1.4 genera un nivel alto y cierra el nivel correspondiente. luego cambia varias bobinas. Luego sácalo y muévelo hacia la izquierda, es decir, 1110, 1111 y 11011111 hacia la derecha. El número de "suma" de P1 es P1.5, que genera un nivel bajo. , P1.7 realiza un ciclo de P1.4 y genera un nivel bajo. Cuando los datos cambian a 01111111, debe realizar los cambios correspondientes y volver al segundo ciclo de datos. El lector puede analizar el código relevante como 11110111.

¿Cómo determinar el momento? Aquí hay un método de búsqueda de tabla. Primero calcule el valor TH y el valor TL de cada velocidad usando Excel, luego colóquelos en la tabla DJH y DJL respectivamente, ingrese el programa de servicio de interrupción T1, ingrese el valor de velocidad variable en el ACC del acumulador. y luego redúzcala a 25 (su base comienza a contar desde 0) y luego busque en la tabla TH1 y TL1 para lograr el propósito inicial de restablecer el tiempo.

Después de leer esta sección, el propio lector realizará las siguientes operaciones:

1. Cambiar el programa S1 se define como "Inicio/Parada", S2 se define como "Dirección" , presione la tecla S2 Cambie la dirección de rotación del motor.

2. Cambie el programa para requerir velocidad de 1 a 100.

3. Cambie el programa para lograr la primera limpieza no válida.