Práctica 5 – ADC

 

INTRODUCCIÓN

 

En esta práctica se implementa la lectura de un puerto ADC a través de una variación de voltaje con un potenciómetro y se despliega el valor analógico a través de LEDs.

 

Selecciona la plataforma y entorno de programación.

 

 

PIC
AVR
PIC
PIC C Compiler
PIC C Compiler
Bootloader X-TRAINER
Bootloader X-TRAINER

Descripción

En esta práctica se implementa una lectura analógica, utilizando un potenciómetro, el cual se conecta con los módulos X-TRAINER P8 o X-TRAINER P8 DIP40 o X-TRAINER P8 DIP28, con el PIC18F45K50 o el PIC18F25K50. El potenciómetro se conecta en el pin A0, el cual se configura como entrada y señal analógica. Para visualizar dicha lectura se utilizan 8 LEDs, conectados al puerto B, de tal manera que pueda observarse el incremento o decremento de voltaje del potenciómetro.

 

Materiales:

1 x Módulo X-TRAINER P8 o X-TRAINER P8 DIP40 o X-TRAINER P8 DIP28. Comprar

8 x Resistencias 220 ohms. Comprar

8 x LEDs. Comprar

1 x Potenciómetro 10 Kohms. Comprar

1 x Protoboard de 830 puntos. Comprar

1 x Juego de cables Dupont. Comprar

1 x Cable micro USB.

 

Software:

Windows 7 o posterior.

PIC C Compiler v5.069 o posterior Descarga

XIDE v1.0 Descarga

 

Procedimiento

1. En el apartado de "Diagrama Esquemático", que se encuentra a continuación, selecciona tu módulo, realiza las conexiones que se muestran en la imagen y conéctalo a la computadora.

2. Al final de esta práctica, en el apartado de "Descargas", puedes encontrar los archivos del código fuente, o bien copiarlo del apartado de "Código" que se encuentra más abajo.

3. Si descargaste el archivo del paso 2, omite este paso. Si copiaste el código, abre el compilador, pega el código en un nuevo proyecto y realiza la compilación. En el siguiente link encontrarás un manual para compilar en PIC C Compiler.

4. Abre el Software XIDE v1.0 y programa el código que descargaste o compilaste en el módulo. En el siguiente link encontrarás el manual de usuario para el Software XIDE v1.0. 

5. Al terminar de programar, el módulo se reiniciará y el programa de esta práctica se ejecutará.

 

Diagrama esquemático

 

X-TRAINER P8 LITE
X-TRAINER P8
X-TRAINER P8 DIP 40
X-TRAINER P8 DIP 28
X-TRAINER P8 LITE

X-TRAINER P8

X-TRAINER P8 DIP 40

X-TRAINER P8 DIP 28

 

Código

Código

/*

AUTOR: MICROSIDE TECHNOLOGY S.A. DE C.V.

FECHA: JUNIO 2019

*/

/**************************************************************************

Implementar una lectura analógica de un potenciómetro y desplegar el valor

en 8 LEDs

**************************************************************************/

#include <18F45K50.h>                                    //Incluye la librería para el PIC ( para X-TRAINERp8DIP28: #include <18F25K50.h> )

#DEVICE ADC=8                                            //Configura el ADC a 8 bits

#use delay(internal=48MHz)                           //Configura frecuencia del oscilador interno

#build(reset=0x02000,interrupt=0x02008)      //Asigna los vectores de reset e interrupción para la versión con bootloader

#org 0x0000,0x1FFF {}                                     //Reserva espacio en memoria para el bootloader

 

int ValorPot;                                                      //Variable para almacenar el valor leído del ADC

void SisInit(void)

{

set_tris_b (0X00);                                             //Configura todo el puerto B como salidas digitales

setup_adc_ports (sAN0);                                  //Configura solo el puerto A0 como entrada analógica

setup_adc (ADC_CLOCK_INTERNAL);     //Configura oscilador interno para la conversión

}

 

void main()

{

              SisInit () ;

 

              while (1)

                    {

                          set_adc_channel (0);                        //Selecciona el canal 0 para la conversión

                         ValorPot = read_adc ();                     //Lee el valor del ADC y lo guarda en la variable

                          if (ValorPot <= 28)                          //Compara el valor de el ADC con 28

                                {

                                    output_b (0b00000000);          // Leds activos
                                }

                           else if (ValorPot <= 56)                    //Compara el valor de el ADC con 56

                                {

                                    output_b (0b00000001);          // Leds activos
                                }

                            else if (ValorPot <= 84)                 //Compara el valor de el ADC con 84

                                {

                                    output_b (0b00000011);       // Leds activos

                                }

                           else if (ValorPot <= 112)                //Compara el valor de el ADC con 112

                                {

                                      output_b (0b00000111);      // Leds activos

                                }

                           else if (ValorPot <= 140)                //Compara el valor de el ADC con 140

                                {

                                      output_b (0b00001111);       // Leds activos

                                }

                            else if (ValorPot <= 168)               //Compara el valor de el ADC con 168

                                 {

                                        output_b (0b00011111);    // Leds activos

                                 }

                             else if (ValorPot <= 196)               //Compara el valor de el ADC con 196

                                 {

                                         output_b (0b00111111);    // Leds activos

                                 }

                             else if (ValorPot <= 252)               //Compara el valor de el ADC con 252

                                 {

                                       output_b (0b01111111);      // Leds activos

                                 }

                             else if (ValorPot <= 255)               //Compara el valor de el ADC con 255

                                   {

                                        output_b (0b11111111);    // Leds activos

                                    }

               }

}

 

Descargas

 

Software XIDE v1.0

Descarga el software XIDE v1.0 

 

Práctica 5 – PIC – Bootloader-PIC C Compiler

Descargar código en PIC C Compiler de la práctica 5.

AVR
Atmel Studio 7
Atmel Studio 7
Programador XCU
Programador XCU

Descripción

En esta práctica se implementa una lectura analógica, utilizando un potenciómetro, el cual se conecta con los módulos X-UNO o X-NANO. El potenciómetro se conecta en el pin C0, el cual se configura como entrada y señal analógica. Para visualizar dicha lectura se utilizan 8 LEDs, conectados al puerto D, de tal manera que pueda observarse el incremento o decremento de voltaje del potenciómetro.

 

Materiales:

1 x Módulo X-UNOX-NANO. Comprar

1 x Módulo programador XCU. Comprar

1 x Módulo X-AVR. Comprar

8 x Resistencias 220 ohms.Comprar

8 x LEDs. Comprar

1 x Potenciómetro 10 Kohms. Comprar

1 x Juego de cables Dupont. Comprar

1 x Protoboard de 830 puntos. Comprar

1 x Cable micro USB.

 

Software:

Windows 7 o posterior.

Atmel Studio 7. Descarga

 

Procedimiento

1. En el apartado de "Diagrama esquemático", que se encuentra a continuación, selecciona tu módulo, realiza las conexiones que se muestran en la imagen y conéctalo a la computadora.

2. Al final de esta práctica, en el apartado de "Descargas", puedes encontrar los archivos del código fuente, o bien copiarlo del apartado de "Código" que se encuentra más abajo.

3. Si descargaste el archivo del paso 2, omite este paso. Si copiaste el código, ejecuta Atmel Studio 7, pega el código en un nuevo proyecto y realiza la compilación.

4. Programa el código que descargaste o compilaste en el módulo. En el siguiente link encontrarás un manual para compilar tu proyecto en Atmel Studio 7. En el siguiente link encontrarás un manual de Atmel Studio para programador XCU.

5. Al terminar de programar, el programa de esta práctica se ejecutará.

 

Diagrama esquemático

 

X-UNO
X-NANO
X-UNO

X-NANO

 

Código 

Código

/**

AUTOR: MICROSIDE TECHNOLOGY S.A. DE C.V.

FECHA: JUNIO 2019

*/

/**************************************************************************

Esta practica consiste en hacer una lectura de un puerto analogico y desplegar el valor en 8 LEDs

**************************************************************************/

#include <stdio.h>

#include <avr/io.h> 

#define F_CPU 16000000

#include <util/delay.h> 

int ValorPOT;

void SistIni()

{

     ADMUX| = (1<<REFS0);                                                                                       // Selecciona Vref

    ADCSRA| = (1<<ADPS2)| (1<<ADPS1)| (1<<ADPS0)| (1<<ADEN);       //Habilita ADC.

     DDRD = 0xFF;                                                                                                       //Inicializa el puerto D como salida.

}

uint16_t ReadADC(uint8_t ADCchannel)

{

     ADMUX = (ADMUX&0xF0)| (ADCchannel&0x0F);                                      //Selecciona el canal del ADC.

     ADCSRA| = (1<<ADSC);                                                                                // Modo de coversión unica.

     while (ADCSRA& (1<<ADSC));                                                                        //Espera hasta que se complete la conversion de ADC.

     return ADC;

}

int main()

{

     SistIni ();                                                                                                          //Inicializa ADC

      while (1)

    {

      ValorPOT = ReadADC (0);                                                                         //Lectura del valor del potenciometro.

       if (ValorPOT <= 114)                                                                                 // Comparacion del valor ADC con el Set Poin

        {

               PORTD = 0b00000000;

         }

         else if (ValorPOT <= 228)                                                                          // Comparacion del valor ADC con el Set Poin

         {

              PORTD = 0b00000001;

         }

         else if (ValorPOT <= 342)                                                                         // Comparacion del valor ADC con el Set Poin

         {

             PORTD = 0b00000011;

         }

         else if (ValorPOT <= 456)                                                                         // Comparacion del valor ADC con el Set Poin

         {

             PORTD = 0b00000111;

         }

         else if (ValorPOT <= 570)                                                                         // Comparacion del valor ADC con el Set Poin

         {

             PORTD = 0b00001111;

         }

         else if (ValorPOT <= 684)                                                                         // Comparacion del valor ADC con el Set Poin

         {

              PORTD = 0b00011111;

         }

         else if (ValorPOT <= 798)                                                                         // Comparacion del valor ADC con el Set Poin

         {

            PORTD = 0b00111111;

         }

         else if (ValorPOT <= 912)                                                                         // Comparacion del valor ADC con el Set Poin

         {

             PORTD = 0b01111111;

         }

         else if (ValorPOT <= 1023)                                                                       // Comparacion del valor ADC con el Set Poin

         {

             PORTD = 0b11111111;

         }

     }

}

 

 

 

Descargas

Prácatica 5-AVR-XCU

Descargar código en Atmel Studio 7 de la práctica 5.

 

Fecha

julio 13, 2019

Categoría

Prácticas CCS-AS7