.::MATLAB - CONTROL MOTOR PAP::.

MATPIC.COM

MATLAB - CONTROL MOTOR PAP

logo matpic

Nuevo Sistema de calificación automática de exámenes de opción múltiple.

Nuevo Sistema de conteo vehicular v1.0

Nuevo Chat vía comunicación rs-232.

Nuevo Seguimiento de color con envío de datos vía rs-232.

Nuevo Medición de distancias con una cámara web y un puntero láser

Nuevo Seguir rostro usando una webcam en MATLAB.

Nuevo Reconocimiento de género por voz usando MATLAB.

Nuevo MATLAB reconoce forma y color

Nuevo Ecualizador de Audio con MATLAB - SIMULINK.

Nuevo Sistema de seguridad SPYCAM con MATLAB

Nuevo Seguimiento de color con MATLAB.

Nuevo Seguimiento de objeto con MATLAB.

Nuevo Reconocimiento de formas con MATLAB.

Nuevo Simulink - modulaciones y de modulaciones digitales.

Nuevo GUI para procesamiento de imágenes.

Nuevo Adquisición de señales ECG.

Nuevo Restauración de imágenes degradadas por ruido

Nuevo CD con videos tutoriales de MATLAB & SIMULINK.

CONTROL DE MOTOR PASO A PASO USANDO MATLAB

Resumen.- El presente artículo contiene una breve introducción sobre los motores paso a paso así como el código de un programa desarrollado en Matlab 7.1 para controlar su velocidad y dirección de giro. El programa es una función y una GUI, donde se puede controlar los pasos del motor, velocidad y dirección de giro.

INTRODUCCIÓN

Los motores paso a paso son ideales para la construcción de mecanismos en donde se requieren movimientos muy precisos. La característica de estos motores es poder moverlos un paso a la vez por cada pulso que se le aplique.

DESARROLLO DEL PROGRAMA

Matlab posee comandos sencillos para el control del puerto paralelo. Basta con crear la entrada digital del puerto y asignar que pines son de entrada y cuales de salida.

ent= digitalio('parallel','LPT1');

dato= addline(ent,0:4,'out');

putvalue(dato,2);

El código anterior crea la entrada digital del puerto paralelo, asigna los pines 2 a 5 como salidas y escribe el valor decimal 2 (Matlab realiza automáticamente la conversión a binario) en el puerto.

Las condiciones iniciales del programa colocan a cero los pines de puerto paralelo:

diego= digitalio('parallel','LPT1');

dato= addline(diego,0:3,'out');

putvalue(dato,0);

Como se puede ver en la figura 1, lo único que se debe programar en la interfaz gráfica es la captura del retardo, la dirección de giro y el encendido-apagado del motor.

guide
Fig. 1. Entorno del programa motor.

La mayor parte del código se programa en el toggle button ON-OFF, cuyo campo Tag es state. Sin embargo, es necesario un código adicional para el texto del botón-interruptor de la dirección:

f=get(handles.direction,'Value');

if f==1

    set(handles.direction,'String','DIRECTION ''L''');

else

    set(handles.direction,'String','DIRECTION ''R''');

end

La secuencia que se envía al motor es:

secuencia

La programación del botón de encendido es:

d=get(hObject,'Value');

if d==1

    set(handles.state,'String','ON');

    diego=digitalio('parallel','LPT1');

    dato=addline(diego,0:3,'out');

    g=1;

    while g

        e=get(handles.direction,'Value');

        if e==0

            mov=[3 6 12 9];

        else

            mov=[9 12 6 3];

        end

        delay=str2double(get(handles.speed,'String'))*1e-3;

        if delay<0 ||isnan(delay)

            errordlg('Time out of range','ERROR');

            delay=500;

            set(handles.speed,'String',500);

            set(handles.state,'String','OFF');

            set(handles.state,'Value',0);

            break;

        end

        if get(hObject,'Value')==0

            break

        end

        putvalue(dato,mov(1));

        pause(delay);

        if get(hObject,'Value')==0

            break

        end

        putvalue(dato,mov(2));

        pause(delay);

        if get(hObject,'Value')==0

            break

        end

        putvalue(dato,mov(3));

        pause(delay);

        if get(hObject,'Value')==0

            break

        end

        putvalue(dato,mov(4));

        pause(delay);

    end

 

else

    set(handles.state,'String','OFF');

end

Para la conexión del motor se puede usar el siguiente esquema:

circuito
Fig. 2. Esquema para conexión del motor.

La siguiente figura muestra el modelo ensayado y funcionando:

final
Fig.3. Circuito final.

Asimismo, la siguiente función controla el número de pasos del motor, velocidad y dirección de giro:

function motor(step,delay,direction)

%Controlling a stepper motor

%step must be integer.

%delay is in seconds.

%direction: 1 or 2.

%Author: Diego Orlando Barragán Guerrero

%diegokillemall@yahoo.com

warning off

if nargin==1

    delay=1;direction=1;

elseif nargin==2

    direction=1;

end

if isnan(step)||step<0

    error('Step value must be positive integer');

elseif direction~=1 && direction~=2

    error('Direction options: 1 or 2')

elseif isnan(delay)||delay<0

    error('Delay value must be positive integer')

end

step=ceil(step);

inout=digitalio('parallel','LPT1');

dato=addline(inout,0:3,'out');

if direction ==1

    sent=[3 6 12 9];

else

    sent=[9 12 6 3];

end

m=1;

for n=1:step

    putvalue(dato,sent(m));

    pause(delay);

    m=m+1;

    if m>4

        m=1;

    end

end

Para bajar el programa pulsa el botón descargar:

descargar

 

buzon

mail

©2013 MATPIC

Prohibida cualquier copia parcial o total del contenido de esta web