informe n°3-microcontroladores

8
INFORME N°3: Control de velocidad de un motor DC con encoder UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA E. P. INGENIERÍA ELECTRÓNICA ASIGNATURA: MICROCONTROLADORES GRUPO/TURNO: 90G/ 17:00-19:30 PROFESOR: ASTOCONDOR VILLAR, JACOB INTEGRANTES: DIBURGA VALDIVIA, LUZ CLAUDIA 1123220635 PEÑA LANDEO, VICTOR DANIEL 1113220333 RUIZ RODRIGUEZ, OMAR ARTEMIO 1113220574 YSLACHE GALVÁN, MIGUEL ANGEL 1113220101

Upload: omar-ruiz

Post on 24-Jul-2015

506 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Informe N°3-Microcontroladores

INFORME N°3: Control de velocidad de un motor DC con encoder

UNIVERSIDAD NACIONAL DEL

CALLAO

FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

E. P. INGENIERÍA ELECTRÓNICA

ASIGNATURA: MICROCONTROLADORES

GRUPO/TURNO: 90G/ 17:00-19:30

PROFESOR: ASTOCONDOR VILLAR, JACOB

INTEGRANTES: DIBURGA VALDIVIA, LUZ CLAUDIA 1123220635

PEÑA LANDEO, VICTOR DANIEL 1113220333

RUIZ RODRIGUEZ, OMAR ARTEMIO 1113220574

YSLACHE GALVÁN, MIGUEL ANGEL 1113220101

Page 2: Informe N°3-Microcontroladores

LABORATORIO – 91G MICROCONTROLADORES

2

Control de velocidad de un motor DC con encoder

1. OBJETIVOS

Controlar en un motor DC con encoder el sentido de giro y velocidad.

Programar los puertos del atmega 8.

Estructurar rutinas de trabajo

2. MARCO TEORICO

Usando el ATMEGA8 y un tacómetro, se desea controlar el sentido de giro de un motor de corriente directa. Para cambiar el sentido de giro dependerá del número de vueltas realizadas y / o las interrupciones activas. MOTOR DC CON ENCODER

El encoder es un transductor rotativo que transforma un movimiento angular en una serie de

impulsos digitales. Estos impulsos generados pueden ser utilizados para controlar los

desplazamientos de tipo angular o de tipo lineal, si se asocian a cremalleras o a husillos. Las

señales eléctricas de rotación pueden ser elaboradas mediante controles numéricos (CNC),

contadores lógicos programables (PLC), sistemas de control etc.

El motor usado para nuestro laboratorio tiene 6 terminales 2 de los cuales son para la

alimentación del motor como DC simple y los 4 restantes son para el encoder que es del tipo

óptico (un terminal para alimentación, otro terminal para tierra y los 2 restantes para las

señales de dirección y velocidad de giro).

Fig. Motor DC con encoder

Page 3: Informe N°3-Microcontroladores

LABORATORIO – 91G MICROCONTROLADORES

3

El encoder es un sensor basado en la utilización de un haz infrarrojo para detectar posición y

velocidad. Consiste en un emisor y un receptor del haz infrarrojo, y en medio, una rueda

agujereada que al girar determinara interrumpirá este haz. Si se cuentan las interrupciones del

haz, sabiendo cuantos agujeros tiene el disco, se sabrá cuantas vueltas dio el motor, y cuál es

la posición actual del eje.

Fig. Encoder optico

3. DESCRIPCIÓN:

Se desea diseñar un circuito y un programa que realicen lo siguiente: I. Que al energizar el micro, no suceda nada

II. Cuando se oprima la tecla conectada a las entrada de Interrupción externa INT1 (tecla

RUN_CAMBIO), del AVR, el motor de CD arranca y comienza a

Girar en el sentido elegido.

III. El Timer/Contador 0 empezará a contar el número de vueltas que dé el motor, usando

como reloj los pulsos que le enviará el encoder conectado a la entrada T0 del AVR.

IV. Cuando el Contador 0cuente 1,000 vueltas, el AVR detendrá automáticamente el giro del

motor e invertirá el sentido de giro, girará en este sentido otras 1,000 vueltas, (solo si no se

oprime ni la tecla STOP ni la RUN_CAMBIO)

V. Si se oprime otra vez la tecla RUN_CAMBIO, el motor invertirá su sentido de giro.

VI. Cuando se oprima la tecla STOP se detiene el motor.

Page 4: Informe N°3-Microcontroladores

LABORATORIO – 91G MICROCONTROLADORES

4

4. MATERIALES

1 Micro controladorATMEGA8

1 L293D, puente “H” doble, con diodos integrados de protección

Fotodiodo

Led

Motor de cd (corriente max 500mA)

2 push buttons NA

Fuente de alimentación 5V, 1ª

Resistencias (2)330W, (2)10Kw

5. PROCEDIMIENTO :

1) Realizar el circuito que se indica:

Fig. Simulación en Proteus

Page 5: Informe N°3-Microcontroladores

LABORATORIO – 91G MICROCONTROLADORES

5

2) DIAGRAMA DE FLUJO

Motor_DC_encoder

Configuracion de puertos

Leer interrupciones

Int1=1Int0=1

Motor_apagadoNO

Wait:Definicion de numero de giros

Int1=1 o int0=1

Giro_horario

Giro_antihorario

NO

SI

Page 6: Informe N°3-Microcontroladores

LABORATORIO – 91G MICROCONTROLADORES

6

3) Represente del programa para la simulación con comentarios.

.include "m8def.inc" ; estableciendo que la programación va a ser en un atmega8 .def temp=r16 ; volviendo equivalente la etiqueta temp al registro r16 .def stack=r17 ; volviendo equivalente la etiqueta stack al registro r17 .def secondtemporal=r20 ; volviendo equivalente la etiqueta secondtemporal al registro r20 .def cont1=r18 .org $00 ; estableciendo la dirección de inicio del programa sin interrupciones rjmp preset .org $01 ; estableciendo la dirección de la interrupción int0 rjmp ext_int0 .org $02 ; estableciendo la dirección de la interrupción int rjmp ext_int1 .org $09 rjmp tim0_ovf preset: ldi stack,low(ramend) ;separando espacio en la pila out spl,stack ldi stack,high(ramend) out sph,stack ldi temp,0x00 ;configurando el puerto D como entrada out DDRD,temp ldi temp,0xFF out PORTD,temp out DDRC,temp ldi cont1,0 sei ;activando todas las interrupciones timer:

ldi temp,0b00001010 ;configurando int0 e int1 para que se active la interrupción con un flanco de subida out MCUCR,temp ldi temp,0b11000000 ;habilitando las interrupciones deseadas out GICR,temp ldi temp,0b00000001 ;activando el timer en 1 out TIMSK,temp mov r19,temp wait: nop cpi cont1,4 ; definimos el N° de vueltas para nuestro ejemplo seran 10 vueltas breq timer_01 rjmp salida timer_01: ldi secondtemporal,0x00 out TCCR0,secondtemporal ;ponemos el valor del timer0 out TCNT0,secondtemporal ; out PORTC,secondtemporal ;puerto C inicialmente en 0 sbi PORTC,2 rcall delay ; llama al retardo

Page 7: Informe N°3-Microcontroladores

LABORATORIO – 91G MICROCONTROLADORES

7

cbi PORTC,2 ldi secondtemporal,0x07 out TCCR0,secondtemporal com temp

andi temp,0x03 out PORTC,temp ldi cont1,0 salida : rjmp wait

delay: ; retardo de 0.37 seg aprox - 3 lazos

ldi r21,$09 WGLOOP0: ldi r22,$BC WGLOOP1: ldi r23,$C4 WGLOOP2: dec r23 brne WGLOOP2 dec r22 brne WGLOOP1 dec r21 brne WGLOOP0 ret ;regreso de la subrutina delay ext_int0: ; se llama a la interrupción int0 con la se hace los cambios de giro del motor ldi r20,0x00 out PORTC,r20 reti ext_int1: ldi secondtemporal,0x00 out TCCR0,secondtemporal ;definimos como contador en flanco ascendente out TCNT0,secondtemporal ldi secondtemporal,0x07 out TCCR0,secondtemporal ;definimos como contador en flanco ascendente com temp andi temp,0x03 ; realiza la operación lógica and out PORTC,temp ; el resultado anterior lo guarda en el puerto C reti tim0_ovf: inc cont1 reti ; regreso a la subrutina reti

3. Describa el encoder del motor que está realizando las pruebas y diga sus

Características.

- Motor DC hasta 24V

- Pulsos por revolución: 100

- 1 A.

- Salidas 6 en total : 2 motor DC ( Vcc y Gnd) y 4 encoder

Page 8: Informe N°3-Microcontroladores

LABORATORIO – 91G MICROCONTROLADORES

8

4. EXPLICAR LAS INTERRUPCIONES EXTERNAS:

Interrupción externa into: STOP

Esta interrupción detendrá al motor en cualquier momento de giro de este

Interrupción externa int1: RUN_ CAMBIO

Esta interrupción dará inicio al giro del motor que una vez haya cumplido el número de

vueltas programado invertirá el giro y dará el mismo número de vueltas.

Si fuese activada esta interrupción en pleno giro del motor, inmediatamente hará cambiar

este giro al contrario y comenzara otra vez la cuenta hasta llegar al número programado

5. CONCLUSIONES Y RECOMENDACIONES.

Observaciones

Por lo general en el motor dc con encoder no se muestra el número de pulsos por

revolución, entonces la forma de medirla fue alimentando solo el encoder (5v en nuestro

caso) y conectando un led en cualquiera de las 2 señales de salida.

Después procederemos a girar lentamente el motor manualmente una vuelta completa

y contaremos el número de veces que parpadea el led, en nuestro caso fueron 100

pulsos por revolución

Conclusiones

En este laboratorio hemos podido experimentar el uso de este tipo de motor que nos

ofrece precisión tanto de giro como de velocidad y asimismo el uso de los registros de

los temporizadores para determinados tramos de tiempo en concreto, dándole así un

determinado número de vueltas que podemos definir a nuestra conveniencia;

Si bien es cierto el uso de temporizadores ofrece mayor precisión en la práctica los giros

son muy aproximados mas no perfectos al 100% ya que al momento de hacer los

cálculos no obtenemos números enteros de allí esta imprecisión.

También podemos mencionar que el tiempo de cambio de dirección del motor se puede

definir en la programación dándole mayor precisión a cualquier proyecto en el que

usemos estos motores.