Página de inicio Mi Correo






   » Foro
   » Nuevo Foro
   » Mi Correo
   » Mis Actividades...


--- Novedades ---



    
  » Microcontroladores » Interrupciones y Temporizaciones (11 de 15)  

.: Analizando Entradas y Salidas
.: Entradas

En la animación anterior vimos dos pulsadores ubicados en una botonera a los cuales les llamé Abrir y Cerrar, el nombre indica la función que cumplen así que no diré nada de ellos, luego tenemos los fines de carrera, que no son otra cosa que contactos (sensores) que se activan cuando el portón termina de abrirse (Dabrir) o cerrarse (Dcerrar). La configuración para estas entradas será la siguiente...

  • Abrir
  • Cerrar
  • Dabrir
  • Dcerrar
  <--   RB0/INT (pin6)
  <--   RA0 (pin17)
  <--   RA1 (pin18)
  <--   RA2 (pin1)
  Pulsador
  Pulsador
  Sensor
  Sensor
  //   0=no_pulsado   1=pulsado
  //   0=no_pulsado   1=pulsado
  //   0=no_pulsado   1=pulsado
  //   0=no_pulsado   1=pulsado

Te preguntarás... por qué no estoy utilizando todos los pines del puerto A..???, y es que la mayor parte del tiempo ésta permanecerá con la cochera cerrada, razón por la cual usaremos la instrucción SLEEP para dormir al micro todo el tiempo que no esté en uso, y lo sacaremos de ese estado con la interrupción por el pin RB0 (lo que vimos anteriormente en este mismo tutorial), luego nos queda RA0, RA1 y RA2 que lógicamente son las típicas entradas.

.: Salidas:

Un detalle a tener en cuenta es que para cambiar el sentido de giro del motor, es preferible hacerlo siempre que éste no se encuentra en movimiento, así que agregué una salida más (Tensión) para quitar la tensión del motor, es más, haré un pequeño retardo (para evitar desastres...!!!), Suponte que el motor sube (Tensión=1 y Gmotor=0), para hacer que este baje primero deberás quitar la alimentación del motor (Tensión=0), luego invertir el sentido de giro del motor para que baje (Gmotor=1), esperar un momento y recién entonces ponerlo en marcha (Tensión=1), me explico...???

Ok. ahora sí, uno de los pines (Tensión) activará o desactivará un relé que envía tensión al motor, el segundo utilizará un relé para encender y apagar el Semáforo, el tercero hará lo mismo con el timbre, el cuarto trabajará con dos relés para cambiar el giro del motor (también podría ser un sólo relé de 8 patas), la quinta y última salida encenderá la luz de la cochera (podría ser un relé o un Triac). La configuración de estos pines será la siguiente...

* Tensión
* Semáforo
* Timbre
* Gmotor
* Luz
  <--   RB1 (pin7)
  <--   RB2 (pin8)
  <--   RB3 (pin9)
  <--   RB4 (pin10)
  <--   RB5 (pin11)
  Alimentación-Motor
  ----
  ----
  Sentido de Giro
  Luz-Cochera
  //   0=apagado   1=encendido
  //   0=apagado   1=encendido
  //   0=apagado   1=encendido
  //   0=sube        1=baja
  //   0=apagado   1=encendido

Ahora haremos un par de observaciones para el buen funcionamiento de la tarjeta de control. Si bien el funcionamiento del pic será secuencial imagínate que pasaría si hoy decido lavar mi móvil, la verdad es que no soportaría el escándalo del timbre ni al semáforo prendiendo y apagando todo el tiempo, pues para eso está el pulsador de reset, por lo tanto cuando sea activado detendré todo el proceso limpiando el puerto B, lo cual haremos justo cuando el programa arranque, es decir en el inicio del código, Entonces... buscaremos el portón, si éste está cerrado, duermo al micro pero si no lo está deberá esperar una instrucción, ya sea abrir o cerrar.

Pero para comprender mejor lo que debemos codificar lo analizaremos con un par de diagramas de flujo (como hacen los grandes programadores...)

.: Diagrama de flujo del código principal

Creo que esta forma de analizar un código simplifica demasiadas explicaciones ya que todo está a la vista. Veamos, lo que está en amarillo es el análisis de pulsadores y sensores, lo que está en rojo y con un asterisco es la activación o desactivación de los pines del puerto B, y lo que no tiene asterisco son simples instrucciones para el programa o llamadas a subrutinas, aquello que está en verde... bueno, la primera es configuración inicial de los puertos, luego una rutina de interrupciones, que una vez atendida regresa el control al flujo del programa. Finalmente la temporización de los 50 segundos, que una vez concluida apaga la luz de la cochera y regresa al inicio del programa para luego hacer dormir al micro con la instrucción SLEEP. Haz click en la siguiente imagen para ampliar el diagrama...

Ampliar Diagrama de Flujo

Lo que no se encuentra en este diagrama de flujo es la pequeña rutina de retardo que se utiliza para encender el motor luego de cambiarle el sentido de giro, Tampoco se incluyó la temporización de los 50 segundos porque sino se haría demasiado extenso el diagrama de flujo, pero no te preocupes que lo analizaremos aparte, y nos falta algo más... La rutina de servicio de interrupciones (ISR), que también la analizaremos por separado

Analiza el diagrama de flujo, creo que no requiere más explicación.

Y ahora sí... nos haremos cargo de lo que nos está faltando, que es justamente a lo que apunta esta actualización...

Comenzaré con la rutina de interrupciones, luego la temporización de los 50 segundos y finalmente el pequeño retardo, de acuerdo...???



R-Luis...

<-- Anterior   Introducción   Siguiente -->
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15
Tabla de Referencias


    
--| |--