Una declaración en lenguaje ensamblador [STRIN DB 'lajid451231;' COUNT EQU $-STRIN] ¿Qué función cumple $-STRIN?
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 p>
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 p>
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.