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 CY8CKIT059 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.
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).
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