Sistemas Digitales - DOC - DOC by 5i32VE

VIEWS: 0 PAGES: 22

									  Sistemas Digitales

                      Móvil autónomo
                        por fototaxis




       Alumno:          Delmas Guillermo
       Profesor:             José Juárez


UNIVERSIDAD NACIONAL DE QUILMES
DEPARTAMENTO DE CIENCIA Y
TECNOLOGIA
Ingeniería en Automatización y Control Industrial
                             PROYECTO GIRASOL


     OBJETIVO

Construcción de un móvil autónomo con control de locomoción por
fototaxis, mediante el sensado de la variable intensidad de luz y la
orientación del móvil con respecto al foco.



     PROCESO

El fototaxismo es la propiedad de los sistemas a responder u orientar su
sistema locomotor en dirección a un estímulo luminoso, logrando
reconocer su ubicación con respecto a su propia posición.
La Programación se efectúa bajo lenguaje C, utilizando un
microcontrolador MC68HC11F1 para el control de la velocidad de los
actuadores diferenciales (bimotor) por realimentación de intensidad
lumínica. Se implementa un control de tipo P (proporcional)

     MÓVIL AUTÓNOMO O GIRASOL

El sistema fotosensible o girasol, tiene como objetivo primordial la
orientación hacia el foco de luz y el alcance del mismo, dentro de un
margen reducido de visión, con una dinámica controlada por
realimentación.
El sensado de la intensidad de luz se genera a partir de un par de
fotorresistencias de resistividad negativa (baja intensidad de luz -> alta
resistividad – alta intensidad -> baja resistividad). Las que son
implementadas en un circuito simple, divisor resistivo, para luego adquirir
los datos en tensión a través del conversor analógico digital y posterior
análisis de la señal. Esta señal es conformada dentro del microcontrolador,
por ser un medio mucho más versátil a la hora de elegir un rango de
funcionamiento según los estímulos.
Para una mejor estimación de la distancia al foco y proporcionalidad lineal
del control de velocidad, se linealiza a partir de un punto la curva
característica de la fotorresistencia, obteniendo dos ganancias
proporcionales.
La señal analizada se relaciona proporcionalmente con el control de la
velocidad de avance de cada rueda, por medio del ciclo de trabajo de los
PWMs (modulación por ancho de pulso), implementados dentro del micro-
controlador. Los PWMs son generados a través de las interrupciones del
timer, salida por comparación de tiempo (TOC2 y TOC3).
La tracción es diferencial, cada rueda tiene su control de velocidad, con el
cual se da la dirección al móvil según la señal de las fotorresistencias.




                         SISTEMAS DIGITALES                                2
                               PROYECTO GIRASOL


    DIAGRAMA EN BLOQUE DE SISTEMA FOTOTÁXICO




     fotorresistencia                                    fotorresistencia




        MICROCONTROLADOR                          MC68HC11F1

                REFERENCIA        CONTROL         REFERENCIA
                OBJETIVO        PROPORCIONAL      OBJETIVO
                ALCANZADO                         PERDIDO




            MOTOR 1                               MOTOR 2




                        TABLA DE DIRECCIONES

    ENTRADAS                 PUERTO DEL MICRO                  PINES
FOTORRESISTENCIA 1                  A                            5
FOTORRESISTENCIA 2                  A                            6
     SALIDAS
     MOTOR 1                          E                          0
     MOTOR 2                          E                          3




                         SISTEMAS DIGITALES                                 3
                              PROYECTO GIRASOL


    DIAGRAMA EN BLOQUE DE SISTEMA DE MUESTREO




                       MICROCONTROLADOR




                                                               MATLAB
                              PULSADOR




       MICROCONTROLADOR MC68HC11F1

Del Microcontrolador se utilizan los siguientes recursos:

      Conversor analógico digital A/D (ADR1, ADR2)
      Salidas de comparación de tiempo (TOC1, TOC2, TOC3)
      Comunicación serie SR-232

       CONVERSOR ANALÓGICO DIGITAL

El conversor A/D es utilizado en modo canal múltiple, para poder
muestrear las señales de las fotorresistencias, cada una sobre un registro
diferente y en modo de scan discontinuo.
Los conversores del microcontrolador son 8 y están como función
secundaria en el puerto E, de los cuales se utilizan dos, el pin 0 y el pin 3,
correspondientes a los registros ADR1 y ADR2 (figura 1).




                          SISTEMAS DIGITALES                                4
                                      PROYECTO GIRASOL


  Figura 1.




Cabe de informar que los pines 0, 3, 5, 7 sobre el puerto del Kid de Motorola corresponden a los
canales AN0, AN1, AN2, AN3 y estos a los registros ADR1, ADR2, ADR3, ADR4 respectivamente.


La configuración del conversor se realiza por medio del registro OPTION,
se escribe únicamente en el bit 7 para habilitar el conversor




Registro de estado




Los bits del registro de estado son:

CCF:      El Flag indica la conversión terminada y el dato disponible.
          Hasta que no se escriba un set en este bit no se realizará
          una nueva conversión (útil solamente en modo discontinuo).
SCAN:     un cero habilita el scan discontinuo, de este modo se obtiene
          sólo una vez la conversión y luego se espera el borrado del
          flag para una nueva conversión.
MULT:     configura la forma de cómo se van a guardar los datos,
          con un set se muestrean los primeros cuatro canales y se
          alojan los datos convertidos cada uno en un registro diferente.
CA-CB-CC-CD: configuran el grupo de canales y registros que serán
          utilizados.



                                 SISTEMAS DIGITALES                                                5
                             PROYECTO GIRASOL




Del registro ADCTL solamente se setea el bit 4, correspondiente a la
opción multicanal, el resto permanecerá en reset (nivel bajo). Salvo el bit
6 que no se utiliza y el bit 8 correspondiente al flag.

      TIMER

Se utilizan 3 de los cinco comparadores de salida, toc1, toc2 y toc3; de los
cuales dos generan pwm y el toc1 para fijar una frecuencia de muestro
sobre el conversor A\D. Esto genera tres hilos de trabajo que interrumpen
a diferentes frecuencias el proceso dentro del bucle infinito propio del
micro, o el “for infinito” en lenguaje C. Los comparadores de salida
destinados a los pwm (toc2 y toc3) trabajan a una frecuencia mucho
mayor que la de muestreo, para evitar vibraciones en los motores, los
cuales poseen propiedad inductiva casi inexistente, lo que se traduce en
poca inercia y por lo tanto escaso comportamiento como filtro pasa bajos.
Los comparadores son usados en modo “alternador” o TOGGLE.
El comparador TOC1 genera la frecuencia de muestreo y paralelamente
levanta los datos de las variables a analizar y setea un flag para iniciar la
actualización del sistema. No genera ningún tipo de acción sobre el puerto
A, que es el que tiene asignado.
Para configurar los comparadores y la atención a interrupción
correspondiente, se procede de la siguiente manera:

      OC1M (máscara del comparador 1)
El comparador 1 tiene la capacidad de actuar sobre cualquiera de las 5
salidas de los comparadores, por lo tanto se debe configurar este registro
de manera que la atención a interrupción no genere ninguna acción sobre
los pines del puerto A, en particular sobre los pines 6 y 5, lugar en donde
los toc 2 y 3 generan los pwms.
Entonces se borra el registro colocando ceros en el byte.




      TMSK1 (registro de la máscara de interrupción del timer)
Esta máscara permite habilitar y deshabilitar la atención a interrupción por
comparación exitosa o entrada de captura. Este registro será utilizado
para habilita y deshabilitar los pwms cuando sea necesario.




                         SISTEMAS DIGITALES                               6
                             PROYECTO GIRASOL


Esto se logra Seteando permanentemente el bit 7, correspondiente al toc1
y alternando set y reset sobre los pines 6 y 5, relacionados con los
comparadores toc2 y toc3 respectivamente.

      TFLG1 (registro de banderas de interrupción del timer)
Los bits de este registro indican cuando sucede el sistema de atención a
interrupción.
Este registro funciona conjuntamente con el registro anterior (TMSK1).




Una vez ocurrida la interrupción se debe borrar el flag escribiendo un uno
en el bit según corresponda. De otro modo quedará bloqueado ese
comparador del timer (no sirve para deshabilitar las atención a
interrupción, sólo se logra eficientemente desde la máscara de
interrupciones).


      COMUNICACIÓN RS-232

La comunicación serie se utiliza para la generación de una curva
característica de la fotorresistencia, debido a su inexistencia en la
divulgación común de hojas de datos de componentes electrónicos.
Los datos obtenidos desde el conversor son reflejados a través de la
comunicación serie por el Hiperterminal y genera una base de datos con
los diferentes valores de sensado, para luego armar una curva
característica.

La configuración es:

       SCCR1 (registro de control de comunicación serie)
Permite configurar el largo de la palabra a transmitir y las caracteristicas
de Wakeup. Sólo se necesita una transmisión común de una palabra de 8
bit, que se traduce en un reset completo del registro.


       SCCR2 (registro de control de SCI)
Permite controlar la habilitación y deshabilitación individual de las
funciones de SCI.
En este caso sólo interesa transmitir información desde el
microcontrolador a la PC, entonces se setea el byte con un uno en el bit 7
y el resto en cero (reset).




                         SISTEMAS DIGITALES                                7
                              PROYECTO GIRASOL




       SCSR (registro de estado)
Indica el estado actual en que se encuentra el sistema de comunicación,
por medio de flags. Para este caso sólo interesa el bit 7, relacionado con
la disponibilidad de canal de transmisión, un uno en el registro significa
canal vacío y disponible para cargar el SCDR (registro de dato).




     BAUD
Se configura la velocidad de transmisión a 9600 baudios.




       HARDWARE

Composición estructural:

      Dos ruedas con tracción independiente, que dan el avance y giro
      una rueda omnidireccional como tercer punto de apoyo, dando
       estabilidad y maniobrabilidad simple al sistema.
      Un chasis de aluminio, para dar fortaleza y rigidez a la estructura.
      Una plataforma circular de cartón prensado, como apoyo para el
       microcontrolador




                          SISTEMAS DIGITALES                                  8
                                   PROYECTO GIRASOL




 VISTA AËREA                                                    DIFERENTES NIVELES



                     1


                                              3
                 2                                                         5
                                              4
         1.   SENSOR DE INTENSIDAD LUMINICA       4.   RUEDA TRACTORA
         2.   RUEDA OMNIDIRECCIONAL               5.   BASE SUPERIOR
         3.   CHASIS DE ALUMINIO                  6.   PLACA ELECTRONICA

                                   VISTA LATERAL


     Placa de electrónica:
          Etapa de potencia: recibe la señal de los PWM, generada por
            los comparadores de salida, y a través de los opto acopladores
            (4N35) satura los mosfets (IRF510A) que alimentan los
            motores.
          Sensores de intensidad de luz: a través del divisor resistivo
            se obtiene una señal proporcional a la intensidad de luz, que
            se traduce en distancia al foco. La variable lumínica es
            traducida a tensión por medio de dos fotorresistencias. La
            tensión de salida es convertida a digital por los conversores
            A/D.

      La alimentación de todo el sistema se realiza a partir una fuente
de 5 voltios. EL microcontrolador se alimenta con una batería de 9 V.


                             SISTEMAS DIGITALES                                      9
                         PROYECTO GIRASOL




                    Placa de electrónica




       COMPONENTES                              VALORES
          R1,R3                                   10 KΩ
          R2,R4                                   2.2 KΩ
          R6,R7                                  1.33 KΩ
          Q1,Q2                           MOSFET canal N IRF 510A
            M                                MOTOR DE CC 5 V
     OPTOACOPLADORES                               4N35


   Circuito esquemático del pulsador para muestreoº




        COMPONENTES                               VALORES
             R5                                    10 KΩ
          PULSADOR                            Micro Switch N/A




                     SISTEMAS DIGITALES                             10
                              PROYECTO GIRASOL


      SOFTWARE

       El programa utilizado para la programación del microcontrolador es
el Cosmic, incluye el compilador, un Linkeador y un ensamblador. El
conjunto concluye en el archivo “.S19”, aparte tiene la ventaja de tener
incluido un debbuger llamado ZAP. El lenguaje de programación es “C”.
       El archivo compilado de motorota “.S19” se carga a través del
programa “programador HC11F1” por del puerto serie al microcontrolador.
 A continuación se presenta un diagrama en bloques de programa:




                                A/D
                                          PWM


                                 PWM.c




             ANALISIS.c               LINEAL.c




    DIFERENCIAL.c



PWM.c : este archivo incluye dentro, el “main” donde se genera el bucle
infinito (propio del micro), las funciones de atención a interrupción de los
timer, toc1, toc2 , toc3, llamadas conversor A/D, pwm_1 y pwm_2
respectivamente.
            main: en el bucle infinito las funciones se denominan de
              “linealización” y “análisis” cada vez que es levantado un flag
              correspondiente.
            “conversor A/D”: se utiliza para generar un muestreo de la
              señal de sensor a 31.25Hz, se copian a dos variables los
              valores de la conversión anterior y se levanta el flag.
            “pwm_1” y “pwm_2”: generador del PWM de una de las
              ruedas. El pwm tiene un periodo de 1khz y administra el ciclo
              de trabajo.

LINEAL.c: cumple la función de linealizar la curva característica del sensor,
decidiendo que estado tomará el sistema según los limites de lejanía y



                          SISTEMAS DIGITALES                              11
                             PROYECTO GIRASOL


proximidad al foco de luz, para luego reflejarlos en la recta de velocidad,
que en realidad es un reflejo directo al ancho de pulso de pwm. Recibe el
valor a linealizar y el índice del vector donde serán guardados los valores
correspondientes a la curva de velocidad.
ANALISIS.c: Administra la activación y desactivación de los “timer”
correspondientes al pwm_1 y pwm_2, según el estado del móvil, aparte
de asignar la acción de velocidad, o como dijimos antes el ancho de pulso
de los pwm sobre cada rueda según las condiciones en que se encuentra
el móvil con respecto al foco, llamando a la función “DIFERENCIAL.c”.
DIFERENCIAL.c: decide a que rueda se asignará el diferencial de velocidad
para corregir la trayectoria y de este modo lograr posicionarse de frente al
foco. Por otro lado es generado para ahorrar memoria, ya que el código es
igual excepto en la decisión en la asignación del diferencial. Recibe el
valor del diferencial de velocidad y los índices correspondientes a cada
rueda

           Curva característica

      La curva característica se construye por medio de un pulsador
generador de muestras, que al presionarlo, cuando un foco luminoso
excita al sistema en diferentes posiciones, toma una muestra de puerto E
(conversor A/D) y la comunica instantáneamente a la PC por medio el
puerto serie, visualizando el valor en el “HiperTerminal” de windows, y
agregando caracteres de separación. Luego estas muestras se grafican
punto a punto con MATLAB.

              Diagrama en bloques del sistema de muestreo



                                   A/D



                               FRECUENCIA.c




                                 PULSADOR



                                    PC
                               HiperTerminal




                        SISTEMAS DIGITALES                               12
                             PROYECTO GIRASOL


Modelado del móvil

      El diseño de móvil es elegido teniendo en cuenta la complejidad del
control a la hora de dar dirección y avance locomotor en búsqueda del
foco luminoso. Por medio de un sistema motriz diferencial, una forma
simple y eficiente, se logra direccionalidad al mismo tiempo que avance
con sólo variar la velocidad diferencial. La rueda omnidireccional, tercer
punto de apoyo y de estabilidad, da libertad de acción al sistema y no
necesita de un servomecanismo para seguir la dirección deseada.
La base superior se utiliza como apoyo para el microcontrolador HC11F1,
por el simple motivo de no poder desmontar el micro controlador e
integrar todo el circuito a la placa de electrónica, reduciendo el tamaño y
peso.


Modelado del sensor de intensidad lumínica

       En principio, la fotorresistencia es un transductor de intensidad de
luz a resistividad; a medida que se incrementa la intensidad de luz, la
resistividad disminuye cuasi-lineal o logarítmicamente según la potencia
del foco luminoso.
       A continuación se muestra una gráfica de intensidad de luz, rango
digital de 0-255, en función de la distancia (0 – 120 cm). Los datos se
lograron por medio del sensor ya encapsulado, limitando adecuadamente
los haces de luz.




      En base a la curva característica azul se puede estimar la distancia
al foco linealizando a partir de un punto dentro del rango. Se toma como
punto de partida el valor digital 210. Luego se pueden traducir estos



                        SISTEMAS DIGITALES                               13
                               PROYECTO GIRASOL


valores aproximados de distancia directamente a un rango digital de
velocidad por medio del ciclo de trabajo en el PWM (ancho de pulso 0 –
255):




Como se dijo anteriormente la curva roja representa el rango de
velocidades en el que trabaja el PWM para lograr una velocidad máxima o
mínima en el móvil.
La expresión de las rectas verdes de linealización es:

                               rango (95 – 210)

      mpendiente = 11.5               Y1 = 11.5 xdistancia + 80

                              rango (210 - 230)

      mpendiente = 4                  Y2 = 4 xdistancia + 80

Por lo tanto las distancias a las que se encontraría el móvil si se
desplazara con la proporción lineal a estas rectas son:


      X95-210 = Y – 80                X210-230 = Y2 -170
                  11.5                             4

La expresión de la recta de rango de velocidad es:

                          Yvelocidad = 13 Xdistancia + 80




                          SISTEMAS DIGITALES                             14
                             PROYECTO GIRASOL


Los límites que impone el encapsulado son prescindibles para una buena
estabilidad en la señal del sensor. La fotorresistencia es muy sensible
tanto a los haces que inciden directamente como a los que inciden de
lados oblicuos, por esto se limita sólo a los rayos que provienen desde un
rectángulo de 90cm de ancho por 120cm de altura a 2m de distancia,
formando un triángulo.



                                     ANCHO:           3cm
                                     ALTO:            2.5cm
                                     PROFUNDIDAD:     5cm




Las dimensiones se deducen por la ley de Thales, con respecto al triángulo
nombrado anteriormente.




                        SISTEMAS DIGITALES                              15
                         PROYECTO GIRASOL


             DIAGRAMAS DE FLUJO


                           “MAIN”


                           FOR( ; ; )


                                                        no
                         Refresh == 0x01


                                         si
                     Linealizacion(SENSOR_1,0);
                     Linealizacion(SENSOR_2,1);
                     analisis();



                           refresh=0;




linealizacion()



                                   si
  Sensor   > 230                                  AUTOSENSOR[x] ==
                                                  condición de parada

                   no

                              si
  sensor < 95                                     AUTOSENSOR[x] ==
                                                  condición de parada


                no

                                             si
230 >sensor > 200                                   AUTOSENSOR[x] ==
                                                    valor estimado de la velocidad


                no

                                        si
200 >sensor > 95                                    AUTOSENSOR[x] == valor
                                                    estimado de la velocidad


                no

      END



                SISTEMAS DIGITALES                                                   16
                        PROYECTO GIRASOL




     Analisis()



                              si        TMSK1=0xE0;
AUXSENSOR[0] == 0x08 &&                 TCTL1=0x50;
AUXSENSOR[1] != 0x08                    CICLO_T[0]=0x40;
                                        CICLO_T[1]=0X08;
                   no

                                   si   TMSK1=0xE0;
 AUXSENSOR[0] != 0x08 &&                TCTL1=0x50;
 AUXSENSOR[1] == 0x08                   CICLO_T[0]=0x08;
                                        CICLO_T[1]=0X40;
                  no

                                   si   TMSK1=0x80;
 AUXSENSOR[0] == 0x08 &&                TCTL1=0xA0;
 AUXSENSOR[1] == 0x08                   CICLO_T[0]=0x08;
                                        CICLO_T[1]=0X08;
                  no

                                   si
     AUXSENSOR[0] >
     AUXSENSOR[1]                       dif = AUXSENSOR[0] - AUXSENSOR[1];
                                        diferencial(dif,0,1);
                  no

                                   si
     AUXSENSOR[1] >
     AUXSENSOR[0]                       dif = AUXSENSOR[1] - AUXSENSOR[0];
                                        diferencial(dif,1,0);
                  no

         END




                  SISTEMAS DIGITALES                                         17
                           PROYECTO GIRASOL




     diferencial()



                           si
         dif >10                     CICLO_T[i]=AUXSENSOR[j]+dif;
                                     CICLO_T[j]=AUXSENSOR[j];


                     no

CICLO_T[i]=AUXSENSOR[j];
CICLO_T[j]=AUXSENSOR[j]+dif;




         END

 ATENCIÓN DE INTERRUPCIÓN TOC1 , TOC2 Y TOC3

     @interrupt pwm_1()



                                si
         OUT_PWM_1=0x01                 TOC2 = TCNT + (int)CICLO_T[0]*0x08;
                                        OUT_PWM_1=0x00 ;


                          no

   TOC2 = TCNT + PERIOD - (int)CICLO_T[0] * 0x08;
   OUT_PWM_2=0x01;




           TFLG1=0x40




             END




                   SISTEMAS DIGITALES                                         18
                              PROYECTO GIRASOL




          @interrupt pwm_2()



                                   si
                OUT_PWM_2=0x01             TOC2 = TCNT + (int)CICLO_T[1]*0x08;
                                           OUT_PWM_2=0x00 ;


                             no

        TOC2 = TCNT + PERIOD - (int)CICLO_T[1] * 0x08;
        OUT_PWM_2=0x01;




                TFLG1=0x40




                  END



@interrupt conversor A/D()                                frecuencia()




    TOC1=TCNT + 0xFFF0;                                  TOC1=TCNT + 0xFFF0;




    SENSOR_1=ADR1;                                       SENSOR_1=ADR1;
    SENSOR_2=ADR2;                                       SENSOR_2=ADR2;




    refresh = 1;                                         refresh = 1;
     ADCTL=ADCTL | 0x80;                                  ADCTL=ADCTL | 0x80;




        TFLG1=0x80                                          TFLG1=0x80




           END                                                  END




                        SISTEMAS DIGITALES                                       19
                    PROYECTO GIRASOL



 Frecuencia()

 FOR( ; ; )


                    si
                                               si
PORTA== 0x01              Aux == 0x00                   ADCTL= 0x80;



                                        no
         no
                                               while (!(ADCTL & 0x80))




                                                    senal_1 = ad%0x0A+'0';
                          aux = 0x00;               senal_2 = ad/0x0A;
                                                    senal_3 = senal_2/0x0A + '0';
                                                    senal_2 = senal_2%0x0A + '0';




                                             while (!(SCSR & 0x80)){}




                                                      SCDR = senal_3;


                                             while (!(SCSR & 0x80)){}




                                                      SCDR = senal_2;


                                             while (!(SCSR & 0x80)){}




                                                      SCDR = senal_1;


                                             while (!(SCSR & 0x80)){}




                                                      SCDR = ‘-‘;



 FOR( ; ; )                                           aux = 0xFF;




END

                SISTEMAS DIGITALES                                             20
                            PROYECTO GIRASOL




     ARCHIVOS DEL PROYECTO

   A continuación se detallan todos los archivos que forman parte del
software de este proyecto.




  El código fuente se encuentra como archivo anexo.




                        SISTEMAS DIGITALES                              21
                             PROYECTO GIRASOL




     CONCLUSIONES

      EL móvil respondió adecuadamente al estimulo de luz, orientándose
con respecto al foco.
      Para cada fotorresistencia particular que se utilice se debe realizar
una curva característica.
      Se observó que cuando la alimentación es de tipo externa el sistema
se desempeña correctamente, no así cuando la alimentación se realiza por
medio de baterías.




     POSIBLES MEJORAS

      Implementación de una fuente de Switching como alimentación, ya
que proporcionaría una mayor estabilidad y rendimiento como fuente de
alimentación.
      Controlar las velocidades independientes de las ruedas por medio de
un control por realimentación.
      Incorporar el microcontrolador a la placa de electrónica para reducir
el tamaño y peso del sistema.
      Incorporar más sensores de intensidad lumínica para ampliar el
rango de visión y discriminar la luz del ambiente.
      Desarrollar un control integral para suavizar la reacción en la
búsqueda de la fuente de luz.




                        SISTEMAS DIGITALES                              22

								
To top