viernes, 1 de julio de 2016

PRÁCTICA: PANTALLA LCD CON LECTURA DE VOLTAJES INDEPENDIENTES


Objetivo

Esta práctica consiste en mostrar el voltaje de entrada de un ADC en una pantalla LCD mediante el PSoC, con el fin de visualizar dos lecturas de dicho voltaje, esto mediante la regulación dos potenciómetros que trabajan de manera independiente y uno más para configurar el brillo de la pantalla LCD.

Materiales

A continuación, se presentan los componentes utilizados para el desarrollo de la práctica

  • Tarjeta PSoc CY8CKIT­059 PSoC 5LP
  • Pantalla LCD de 16x2
  • 3 potenciómetros (entre 10 y 50k)
  • Jumpers o cables
  • Protoboard

Procedimiento

El inicio de esta implementación consiste en entrar a la pestaña Top Design en el workspace de nuestro software, en donde se seleccionan los componentes a usar, en este caso fueron:
  •  Character LCDmp
  •  ADC_DelSig
  •  Analog Pin

En la figura 1 se presenta el esquemático con las creado a partir de los componentes mencionados anteriormente.

Figura 1. Esquemático de la práctica.

Cabe mencionar que la función del ADC radica en convertir una señal analógica que es proporcionada por cada uno de los dos potenciómetros a una señal digital que el LCD pueda leer.

La librería del LCD usado en esta práctica no se encuentra disponible en el software; a continuación, se proporciona dicha librería para su instalación:


Posteriormente, toca el turno de la asignación de los pines de entrada y salida (figura 2), esto lo realizamos dando doble click en la pestaña “nombredenuestrodiseño.cydwr” ubicado en la pestaña Workspace Explorer, ubicada en la parte izquierda del programa.

Figura 2. Asignación de los pines de la tarjeta


Una vez configurado los pines de nuestro dispositivo, esto procedemos a realizar la programación para la lectura e impresión de nuestros datos dando doble clic en la sección “main.c” ubicado en la pestaña Workspace Explorer, el código de programación implementado se presenta en la sección de programación.

PROGRAMACIÓN


En primera instancia, se presenta un diagrama flujo para describir brevemente la programación elaborada (figura 3).

Figura 3, Diagrama de flujo de la sección programable del proyecto.




#include <project.h>
#include <stdio.h>
#include "cyapicallbacks.h"

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

int main()
{
     CyGlobalIntEnable; /* Enable global interrupts. */
    LCD_Start();
    AMux_Start();
    ADC_Start();
    ADC_IRQ_Start();
    AMux_Next();
    ADC_StartConvert();

  

    for(;;)
    {
    if(flag==1)
    {
    ADC_StopConvert();
    resultados[AMux_GetChannel()]=ADC_GetResult32();
   
    LCD_Position(0,0);
    LCD_PrintString("Pot1:");
    LCD_Position(0,5);
    LCD_PrintNumber(0);
    volts=(5.0000000/1048576)*resultados[0];
    sprintf(str,"%.4fV",volts);
    LCD_PrintString(str);
   
    LCD_Position(1,0);
    LCD_PrintString("Pot2:");
     LCD_Position(1,5);
    LCD_PrintNumber(0);
    volts=(5.0000000/1048576)*resultados[1];
    sprintf(str,"%.4fV",volts);
    LCD_PrintString(str);

    AMux_Next();
    flag=0;
    ADC_StartConvert();

    }
    }
}

/* [] END OF FILE */


void ADC_IRQ_Interrupt_InterruptCallback(void)
{
flag=1;
   
return;
}


Por último, presentamos la construcción física del circuito (figura 4) y el funcionamiento correcto de la implementación (figura 5).


Figura 4. Circuito implementado en protoboard.

Figura 5. Funcionamiento del circuito al 100%.




Referencias :http://www.psoclatinoamerica.com/2016/07/adc-delta-sigma-multicanal-2-psoc-5lp.html










No hay comentarios.:

Publicar un comentario