Monografias.com > Computación > Hardware
Descargar Imprimir Comentar Ver trabajos relacionados

PIC 16F873. Conversión a/d y transmisión por puerto serie




Enviado por Pablo Turmero



    Monografias.com

    OBJETIVOS
    Utilizar PIC para la adquisición de datos analógicos y conversión a digital

    Transmisión por puerto serie de los datos

    Posterior análisis de datos en el PC

    Monografias.com

    MEDIOS A UTILIZAR
    Microchip 16F873
    convertidor A/D
    controlador Puerto Serie
    PCB diseñado para alojar el 16F873 y módulos requeridos
    código diseñado para conseguir los objetivos, PC y conexiones

    Monografias.com

    PIC 16F873
    CPU RISC
    juego de 35 instrucciones
    28 pins
    FLASH: 8K x 14 words
    RAM: 368 x 8 bytes
    EEPROM: 256 x 8 bytes
    Conversor A/D de 10 bits multicanal
    Puerto Serie multifuncional

    Monografias.com

    PIC 16F873 – Conversor A/D
    Hasta 5 canales de entrada
    Conversión por método de aproximaciones sucesivas
    10 bits de resolución
    Voltaje alto y bajo de referencia seleccionable por software
    Posibilidad de ejecución en modo SLEEP

    Monografias.com

    PIC 16F873 – Conversor A/D
    4 registros básicos:
    2 registros configuración:
    ADCON0

    ADCON1

    2 registros datos: ADRESH y ADRESL

    Monografias.com

    ADQUISICION DE DATOS:
    1) Programación del conversor A/D:
    Programar Frecuencia de Adquisición (ADCON0 – bits ADCS0 y ADCS1): Fosc/2 (00) Fosc/8 (01) Fosc/32 (10) FRC (11)
    Seleccionar canal de entrada (ADCON0 – bits CHS0, CHS1, CHS2)
    Canal 0 (000) … Canal 7 (111)

    PIC 16F873 – Conversor A/D

    Monografias.com

    Configurar Pines, voltaje referencia, … (ADCON1 – bits PCFG0, PCFG1, PCFG2, PCFG3):

    Configurar bit de Resultado (ADCON1 – bit ADFM )

    Habilitar el modulo conversor (ADCON0 – bit ADON )
    PIC 16F873 – Conversor A/D

    Monografias.com

    PIC 16F873 – Conversor A/D
    2) Para cada dato a adquirir:

    Empezar la conversion (ADCON0 – bit GO-DONE)

    Comprobar la conversion:
    por polling (comprobar ADCON0 – bit GO-DONE)

    Monografias.com

    PIC 16F873 – Interfaz Serie
    Posibilidad de configuración para comunicación:
    full-duplex asíncrona.
    Sincrona como Master
    Síncrona como Slave

    Utilizaremos el modo asíncrono

    Monografias.com

    PIC 16F873 – Interfaz Serie
    MODO ASINCRONO:
    codificación standard NRZ
    formato standard de 8 bits ( configurable )
    se transmite primero el bit LSB
    paridad no soportada por HW pero puede calcularse por SW y almacenarse en bit 9

    Monografias.com

    PIC 16F873 – Interfaz Serie
    DIAGRAMA DEL BLOQUE DE TRANSMISION

    Monografias.com

    PROGRAMACION:
    1) Inicializar registro del Generador de baudios (SPBRG) y el bit de alta velocidad si necesario (BRGH)
    PIC 16F873 – Interfaz Serie

    Monografias.com

    PIC 16F873 – Interfaz Serie
    2) Modo Asíncrono
    Clear bit SYNC
    3) Habilitar puerto serie
    Set bit SPEN
    4) Interrupciones habilitadas
    Set bit TXIE
    5) Si se quiere 9º bit de datos
    Set bit TX9

    Monografias.com

    PIC 16F873 – Interfaz Serie
    6 ) Habilitar transmision
    Set bit TXEN (habilita el bit TXIF)
    7) Si se ha seleccionado 9º bit
    Cargar bit en TX9D
    8) Cargar el registro TXREG con los datos:
    empieza automáticamente la transmisión

    Monografias.com

    CODIGO PIC – MAIN
    // Programa principal
    main(){

    // Configurar modulo AD
    initialice_ad();
    // Configurar comunicacion serie
    serial_port_configure();

    while(1){
    //Empezar conversion
    begin_conversion();
    //mandar datos
    send_data();
    }

    PROGRAMA PRINCIPAL

    Monografias.com

    CODIGO PIC – INITIALICE_AD
    initialice_ad(){

    // Configuracion del modulo AD

    //ADCON0 (bank 0)

    //set_bit( ADCS0,1); // Frecuencia de adquisicion
    //set_bit( ADCS1,0);
    asm bsf ADCON0,ADCS0
    asm bcf ADCON0,ADCS1

    //set_bit( ADFM,0); // Canal de entrada
    //set_bit( ADFM,0);
    //set_bit( ADFM,0);
    asm bcf ADCON0,CHS2
    asm bcf ADCON0,CHS1
    asm bcf ADCON0,CHS0

    //ADCON1
    //Pasamos al banco 1 (01)
    asm bcf STATUS, RP1
    asm bsf STATUS, RP0

    //TRISA
    asm bsf TRISA,7

    // Configuracion de los pines
    //set_bit( PCFG3,0);
    //set_bit( PCFG2,0);
    //set_bit( PCFG1,0);
    //set_bit( PCFG0,1);

    //Utilizar 0000 (V+ = Vdd; V- = Vss)
    asm bcf ADCON1,PCFG3
    asm bcf ADCON1,PCFG2
    asm bcf ADCON1,PCFG1
    asm bcf ADCON1,PCFG0

    //set_bit( ADFM,1); // datos en los 10 bits de menos peso
    asm bsf ADCON1,ADFM

    // Finalmente Habilitamos modulo AD
    //Pasamos al banco 0 (00)
    asm bcf STATUS, RP0
    asm bcf STATUS, RP1
    //Habilitamos
    asm bsf ADCON0, ADON }

    Monografias.com

    CODIGO PIC – SERIAL_PORT
    void serial_port_configure(){

    //Pasamos al banco 1 (01)
    asm bcf STATUS, RP1
    asm bsf STATUS, RP0

    //configure pins 6,7
    asm bsf TRISC,6
    asm bsf TRISC,7

    // Baud generator (9600) on
    //I suppose fosc=4Mhz
    // fosc=4Mhz –> SPBRG=25
    // fosc=20Mhz –> SPBRG=129
    // y BRGH=1
    asm movlw D'25'
    asm movwf SPBRG
    asm bsf TXSTA,BRGH
    //asyncronous mode
    asm bcf TXSTA,SYNC

    //Serial port enable
    //Pasamos al banco 0 (00)
    asm bcf STATUS, RP1
    asm bcf STATUS, RP0
    asm bsf RCSTA,SPEN

    //enable trasnmit
    //Pasamos al banco 1 (01)
    asm bcf STATUS, RP1
    asm bsf STATUS, RP0
    asm bsf TXSTA,TXEN

    }

    Monografias.com

    CODIGO PIC – BEGIN_CONVERSION

    begin_conversion(){

    //Pasamos al banco 0 (00)
    asm bcf STATUS, RP0
    asm bcf STATUS, RP1

    //empezamos la conversion
    asm bsf ADCON0, GO_DONE

    //tenemos que esperar a que se haya acabado la conversion
    //while (ADCON0 & 0x04) bit GO/DONE
    //b=0x04;
    asm movf ADCON0, W
    asm movwf _b
    while ((b & 0x04) == 0x04 ){
    asm movf ADCON0, W
    asm movwf _b
    }
    }

    Monografias.com

    CODIGO PIC – SEND_DATA

    void send_data(){

    // load register with data
    //Pasamos al banco 0 (00)
    asm bcf STATUS, RP1
    asm bcf STATUS, RP0

    // Inicio de los datos
    // transmitimos una "v" ( decimal ->118)
    asm movlw D'118'
    asm movwf TXREG
    delay_ms(10);

    //transmitimos primero el byte alto y después el bajo
    //Pasamos al banco 0 (00)
    asm bcf STATUS, RP1
    asm bcf STATUS, RP0
    asm movf ADRESH, W
    asm movwf TXREG

    //wait until transmitted
    delay_ms(10);

    //Pasamos al banco 1 (01)
    asm bcf STATUS, RP1
    asm bsf STATUS, RP0
    asm movf ADRESL, W

    //Pasamos al banco 0 (00)
    asm bcf STATUS, RP1
    asm bcf STATUS, RP0
    asm movwf TXREG

    //wait until transmitted
    delay_ms(10);

    }

    Monografias.com

    CODIGO PC – PROGRAMA PRINCIPAL
    void main(){
    int i,j;
    char recibido;
    unsigned char alta,baja;
    int dato;
    int v_low, v_high;

    Inicializa_Comunicaciones(1,9600);

    printf("Introduce Referencia V- :");
    scanf("%d",&v_low);
    printf("Introduce Referencia V+ :");
    scanf("%d",&v_high);
    printf("introducida V- = %dn",v_low);
    printf("introducida V+ = %dn",v_high);

    if (v_low>v_high){
    printf("ERROR: Valores incorrectosn");
    return;
    }

    printf("Preparado para recibir datos…n");

    while(1){

    recibido = Recibe_un_caracter();

    if (recibido == 'v'){
    //Recibimos parte alta
    alta = Recibe_un_caracter();
    baja = Recibe_un_caracter();

    dato = ((alta)

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter