domingo, 17 de septiembre de 2017

FASE 1: Análisis del Problema y Propuesta de solución utilizando uControlador PIC

FASE 1: Análisis del Problema y Propuesta de solución utilizando Microcontrolador PIC.

Introducción

Materiales a usar:
  • CCS Compiler instalado.
  • Entrenador de PICS
  • Pantalla LCD
  • PIC16F877A
Los pics son una familia de micro controladores tipo RISC fabricados por Microchip Technology INC., y hoy en día los PICs vienen con periféricos incluidos tales como módulos de comunicación serie UART, núcleos de control de motores, etc.

Ahora veremos algunas características del PIC:




  • Memoria ROM: 8Kb
  • Memoria RAM: 368 x 8 bytes
  • Pines I/O: 33
  • Frecuencia: 20 Mhz con cristal externo
  • Permite programación ICSP
  • Consta de 40 pines

  • Diagrama de bloques sobre la tarjeta entrenadora con pic PIC16F877A


    Imagen del PIC a usar y diagrama interno del mismo



    Propuestas de proyecto.

    -Reloj con PIC

    -Cerradura electrónica 4x4 con el PIC 16F877A



    -Control de Tanque con pic16F877 y lcd 16x2



    -Alarma Programable PIC16F877A



    Conversor ADC.



    #include <16f877a.h>

    #device adc=10

    #fuses HS, NOPROTECT, NOWDT

    #use delay(clock=20M)

    #define lcd_data_port getenv("sfr:portd")

    //#define lcd_rs_pin pin_b0

    //#define lcd_rw_pin pin_b1

    //#define lcd_enable_pin pin_b2



    #define LCD_ENABLE_PIN        PIN_D3

    #define LCD_RS_PIN            PIN_D2

    #define LCD_RW_PIN            PIN_A0

    #define LCD_DATA4             PIN_D4

    #define LCD_DATA5             PIN_D5

    #define LCD_DATA6             PIN_D6

    #define LCD_DATA7             PIN_D7  

    #include <lcd.c>



    void main()

    {

       int16 q;

       float p;

       setup_adc_ports(ALL_ANALOG);

       setup_adc(adc_clock_internal);

       lcd_init();

       while(true)

       {

          set_adc_channel(3);

          delay_us(20);

          lcd_gotoxy(1,1);

          q=read_adc();

          p=(5.0*q)/1024.0;

          printf(lcd_putc," ADC = %4Ld",q);
          printf(lcd_putc,"\n voltaje = %1.2f",p);
       }
    }
    Video
     
     


    Programación Mediante Maquinas de Estados.


    #include <16f877a.h>

    #device adc=10

    #fuses HS, NOPROTECT, NOWDT

    #use delay(clock=20M)

    #define lcd_data_port getenv("sfr:portd")

    //#define lcd_rs_pin pin_b0

    //#define lcd_rw_pin pin_b1

    //#define lcd_enable_pin pin_b2



    #define LCD_ENABLE_PIN        PIN_D3

    #define LCD_RS_PIN            PIN_D2

    #define LCD_RW_PIN            PIN_A0

    #define LCD_DATA4             PIN_D4

    #define LCD_DATA5             PIN_D5

    #define LCD_DATA6             PIN_D6

    #define LCD_DATA7             PIN_D7  

    #include <lcd.c>





    void main()

    {

       int16 q;

       int s;

       float p;

       int ESTADO=1;

       int m=0;

       setup_adc_ports(ALL_ANALOG);

       setup_adc(adc_clock_internal);

       lcd_init();

      while(true)

       { 

              while(ESTADO==1)

              {
                         set_adc_channel(1);
                         delay_us(20);
                         lcd_gotoxy(1,1);
                         q=read_adc();
                         p=(5.0*q)/1024.0;
                         printf(lcd_putc," ADC = %4Ld",q);
                         printf(lcd_putc,"\n voltaje = %1.2f",p);
                         delay_ms(100);     
                  IF (input(PIN_b1))
                            {         
                               ESTADO=2;
                            }    
              }
       delay_ms(50);
       printf(lcd_putc," \f ");
             while(ESTADO==2)
             { 
                   IF (input(PIN_b2))
                           {
                               delay_ms(50);
                               m=m+1;
                           }   
                   IF (input(PIN_b3))
                           {
                              delay_ms(100);
                              m=m-1;
                           }                                
                   lcd_gotoxy(1,1);    
                   printf(lcd_putc,"  CONTADOR");
                   printf(lcd_putc,"\n %i",m);    
                   IF (input(PIN_b1))
                     {
                            ESTADO=1;
                     }     
              }
        printf(lcd_putc," \f ");
       }  
    }
    Vídeo



    Observaciones y Conclusiones:

    • En este laboratorio aprendimos como es que funciona un convertidor ADC y come hacer uno mediante programacion en el programa CCS compiler.
    • En este laboratorio aprendimos a realizar maquinas de estados las cuales nos ayudaron a realizar trabajos los cuales tenían funciones múltiples.
    • Realizamos una maquina de estados simples para comprobar que este efectivamente este nos ahorraba tiempo y mejoraba el funcionamiento de nuestra programación, ya que ahora no era necesario usar algunos códigos.
    • Observamos que podemos aplicar maquinas de estados en cualquier tipo de proyecto en donde este tenga mas de una función.

    FASE 2: SIMULACION EN PROTEUS.







    Observaciones y Conclusiones:

    • Observamos que fue necesario usar el circuito integrado ds1307 para poder tener una hora exacta y sin problemas de adelanto o trazo de esta.
    • El circuito integrado ds1307 contaba con una alimentación externa de 3 V la cual hacia que el reloj de 32.768 kz siga operando, y por la tanto el tiempo de este no se detendría amenos que cortemos la alimentación de 3 V.
    • Aprendimos que los pines del puerto B tienen la función principal de interrupciones, por eso es que utilizamos estos puertos como pulsadores de hora,min,clk y pause.



    FASE 3: CODIGO EN PIC CCS E IMPLEMENTACION FISICA.

    CÓDIGO:














    IMPLEMENTACIÓN FÍSICA




    Observaciones y Conclusiones:

    • Observamos que es importante revisar antes el datasheet de los componentes a utilizar, ya que mucho de estos tienen alimentación propia y funciones especificas.
    • Fue muy importante revisar foros de electrónica para buscar información del enlace entre el PIC y el ds1307.
    • Aprendimos a utilizar y conectar el ds1307.
    • Fue necesario hacer pruebas de la programacion en el simulador Proteus para poder armarlo físicamente.
    • Hicimos uso de maquinas de estados para poder hacer la configuración de la hora en nuestro reloj.

    FASE 4: FUNCIONAMIENTO FISICO.





























    No hay comentarios:

    Publicar un comentario