viernes, 1 de julio de 2016

Practica 6 - Lectura de voltaje mediante ADC y multiplexor de 2 canales


Introducción.

El siguiente post corresponde a un proyecto realizado con el micro-controlador "Psoc 5LP". El cual consiste en la lectura de dos voltajes variables e independientes y su despliegue en una pantalla LCD. Para ello se hará uso de un "Convertidor Analógico-Digital".
A continuación se presenta una guía paso a paso para la realización de la practica. 

Equipo 3: Cab Cauich, Hernández Guerrero. 

Materiales:

  1. Pantalla LCD 12x6.
  2. Protoboard.
  3. Cables.
  4. Potenciometros de 10 kΩ (Qty: 3).

 Desarrollo:

A continuación se presenta la guía detallada, tanto en la parte del uso del software, la parte esquemática y el código para su funcionamiento.
  • Abrir el Psoc Creator 
  • Crear un nuevo proyecto (File-> New-> Project...)   
  • Seleccionar Desing->PSoC 5LP. En la misma ventana Asignar el nombre del proyecto en la línea, Name... Nota: Verificar que el modelo con el que se cuenta sea el correcto en la línea Device. De no ser el correcto, seleccionar <Launch Device selector...>. Y elegir el siguiente:
Figura 1
Figura 1
  • Se deberá tener acceso a una pantalla como la que se muestra a continuación; los componentes se seleccionarán en el punto señala en la imagen. 
Figura 2
  • Para el uso del LCD, el programa tiene una librería interna, sin embargo para la asignación de los pines, se hace mucho mas fácil el uso de una librería externa, la cual se puede descargar en este LINK
  • Para registrarlo en el proyecto ir a: Project->Dependencies...->User Dependencies (Click en la carpeta)-> Seleccionar el Archivo "CharLCDmpLib.cyprj"->Ok.
  • Los componentes a utilizar son:
          -Delta Sigma ADC [v3.20] 
          -Character LCD (multi-Port)[v1.1]
          -Analog Pin [v2.10] (1)                  
          -Digital Output Pin [v2.10] (6)
          -Analog Mux Sequencer [v1.80]
Estos componentes son fáciles de localizar tecleando el nombre del componente en el recuadro señalado en la "Figura 2". Ya seleccionado se debe arrastrar cada componente al lienzo.
  • Para el funcionamiento de la practica  debemos configurar cada componente de acuerdo a los parámetros que necesitamos. Esto lo haremos dando doble clic izquierdo sobre el componente deseado, a continuación se muestran los parámetros para cada componente. 

Delta Sigma ADC [v3.20]

Figura 3. Configuraciones Básicas. 
Figura 4. Configuraciones Comunes.


Character LCD (multi-Port)[v1.1]

A este componente no es necesario realizarle ninguna configuración, simplemente conectarle a cada salida del LCD un pin digital (Figura 5). 
Figura 5. Modulo LCD.
La configuracion externa del LCD es la siguiente:
Figura 6. Conexiones externas LCD.

Analog Pin [v2.10] y Analog Mux Sequencer [v1.80]

Estos dos componentes van de la mano, por ello su implementacion se explica en un solo apartado. Para empezar, el multiplexor analógico (Amux) es un componente con varias entradas y una única salida de datos, su funcionamiento  es como el de una sucesiones de switches a la entrada que son capaces de seleccionar una y solo una, de las entradas para permitir su salida. Por ello nosotros utilizaremos un Amux con dos canales, a cada canal ira un  pin analogico que  representa cada una de las dos entradas análogas de nuestro sistema, que en el medio físico estará habilitada como dos potenciómetros a los cuales se les hará incidir una diferencia de potencial. Los pines laterales de los potenciómetros estarán conectados a tierra y +5V, por lo que los pines centrales fungirán como nuestras entradas analógicas, conectada a  dos pines del PSoC 5LP a asignar más adelante. 
Figura 7. Esquematico de las entradas y el multiplexor

  • Ahora corresponde llevar a cabo la selección de los pines, para ello, daremos clic en "ADC.cydwr" (Este varia, dependiendo de como nombres a tu proyecto), al hacerlo se debe desplegar la siguiente pantalla:
    Figura 8.










Los pines pueden asignarse  de la forma en que se le haga mas fácil al usuario, si se desea se puede usar los asignados en la imagen(En la tabla señalada, en la sección "Port"). 


  • Ya asignados los pines, aun estando en "ADC.cydwr", en la pestaña "System", Cambiar Heap Size a 0x200. Además en la pestaña superior Project->Build settings->Linker->Command Line-> Custom Flags; ingresar "-u_printf_float".
  •  Para compilar los cambios nos vamos a  Build->Build Pantalla. Luego de ello en la pantalla "Workspace Explorer" abrimos el archivo main.c que corresponde al código a ejecutar.
  • En Main, el codigo a utilizar es el siguiente:


#include <project.h>

#include<stdio.h>

#include "cyapicallbacks.h"

//Variables 
char str[12];
float volts=0;
uint32_t resultados[AMuxSeq_1_CHANNELS]={0};
uint8 flag=0;


int main()
{
     CyGlobalIntEnable; 
     LCD_Start();
     AMuxSeq_1_Start();
     ADC_Start();
     ADC_IRQ_Start();
     
    
    LCD_Position(0,0);
    LCD_PrintString("V1 = ");
    LCD_Position(1,0);
    LCD_PrintString("V2 = ");
    
   
  AMuxSeq_1_Next();
  ADC_StartConvert();

    for(;;)
    {
      if(flag==1)
    {
        ADC_StopConvert();
        resultados[AMuxSeq_1_GetChannel()]=ADC_GetResult32();
        
        //ADC1
        LCD_Position(0,6);
        volts=(5.000000/1048576)*resultados[0];
        sprintf(str,"%.4f V",volts);
        LCD_PrintString(str);
        
        //ADC2
        LCD_Position(1,6);
        volts=(5.000000/1048576)*resultados[1];
        sprintf(str,"%.4f V",volts);
        LCD_PrintString(str);
        
        AMuxSeq_1_Next();
        flag=0;
        ADC_StartConvert();
    }
    
    }
}



void ADC_IRQ_Interrupt_InterruptCallback()
{
    flag=1;
}


  • Finalmente debemos programar nuestro micro controlador y listo! Debe de desplegarse en el LCD los dos voltajes de entrada.

Para su mayor comprensión, se muestra el esquemático de la practica junto con su diagrama de flujo. 


Figura 9. Diagrama Esquemático
Figura 10. Diagrama de flujo.

Finalmente, para la observación directa de los resultados a continuación se presenta un vídeo demostrativo de la practica.






Referencias.

Para la elaboración de la practica se obtuvo la información básica, seguidamente modificada a nuestra conveniencia del siguiente blog:




No hay comentarios.:

Publicar un comentario