UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN
FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Diseño de Sistemas Embebidos
Docente: Dr. Héctor Gilberto Barrón González
Actividad Fundamental 1: Control On-Off.
Nombre: Janeth Jamilet Cardiel Cortes Matricula: 1867586
Hora: V4 Salón: 7215
Brigada: 002 Plan: 401
Contenido
1.- Descripción del Problema .............................................................................................................. 3
2.- Objetivo .......................................................................................................................................... 3
3.- Diagrama de Flujo Propuesto......................................................................................................... 4
4.- Diagrama de la Implementación del Circuito (Si fue requerido) ................................................... 6
5.- Evidencia Grafica (Si existe un circuito) ......................................................................................... 7
6.- Prototipos de funciones principales .............................................................................................. 7
1.- Descripción del Problema
Se requiere elaborar un circuito que simule el funcionamiento de un control on – off en un indicador
visual (Led RGB). Este circuito deberá operar estableciendo un color para cada uno de los rangos de
trabajo del control cuya señal de referencia provendrá de la lectura de una señal analógica. Para
elaborar el circuito considere las siguientes instrucciones:
1.- 0-4096 = 0-100% rango total de la conversión en porcentaje
2.- Utilizar un led RGB para iluminar en color Azul cuando el valor del adc sea menor a 50%,Color
Verde entre 50 y 60% y color rojo cuando el valor del ADC sea mayor a 60%.
2.- Objetivo
• Desarrollar un código que permita configurar el ADC en 12 bits para lograr el rango
operativo que plantea el problema.
• Elaborar un pequeño algoritmo de control que tome la decisión de establecer el color
adecuado tomando como referencia y retroalimentación el valor de la señal analógica y
los rangos establecidos para cada color.
3.- Diagrama de Flujo Propuesto
INICIO
# define RED pin_ 6
#define GREEN pin_7
#define BLUE pin_6
UNIT 32_t ADCValue=0;
UNIT8_t VP=0;
NO
WHILE
END
SI
HAL_ADC_STAR(&HADC1);
HADC1=HA SI
ADCVALUE=
L_OK HAL_ADC_GETVALUE(&HA
DC1);
NO
HAL_ADC_STOP(&HADC1);
VP=ADCVALUE(100)/40
.96
SI BLUE
BP<50 HAL_GIO_WRITEPIN (gioa, red, gpio_pin_reset);
HAL_GIO_WRITENPIN(gioa, green, gpio_pin_reset);
HAL_GIO WRITENPIN(giob, blue gpio_pin_set);
NO
Vp>=50 SI GREEN
& HAL_GIO_WRITEPIN (gioa, red, gpio_pin_reset);
HAL_GIO_WRITENPIN(gioa, green, gpio_pin_set);
Vp<60 HAL_GIO WRITENPIN(giob, blue gpio_pin_reset);
NO
SI RED
VP>60 HAL_GIO_WRITEPIN (gioa, red, gpio_pin_set);
HAL_GIO_WRITENPIN(gioa, green, gpio_pin_reset);
HAL_GIO WRITENPIN(giob, blue gpio_pin_reset);
NO
4.- Diagrama de la Implementación del Circuito
5.- Evidencia Grafica (Fotografía)
6.- Prototipos de funciones principales
while
{
HAL_ADC_Start(&hadc1);
if(HAL_ADC_PollForConversion(&hadc1, 5)==HAL_OK)
{
ADCValue=HAL_ADC_GetValue(&hadc1);
}
HAL_ADC_Stop(&hadc1);
VP=(ADCValue*100)/4096;
if(VP<50)
{
HAL_GPIO_WritePin(GPIOB, RED+GREEN+BLUE,
GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, BLUE, GPIO_PIN_SET);
}
else if(VP>=50 && VP<=60)
{
HAL_GPIO_WritePin(GPIOB, RED+GREEN+BLUE,
GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GREEN, GPIO_PIN_SET);
}else
{
HAL_GPIO_WritePin(GPIOB, RED+GREEN+BLUE,
GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, RED, GPIO_PIN_SET);
}
DESCRIPCIÓN
1.En la línea 1, while, inicia el loop infinito.
2.La línea 3 inicia la conversión de la entrada analógica mediante la instrucción
HAL_ADC_Start,
3.La línea 4 condiciona a saber si se ejecutó la conversión del canal correctamente si
es el caso avanza a la sig. funcion.
4.En la línea 6 se obtiene el valor medido por el convertidor ADC con la instrucción
HAL_ADC_GetValue(&hadc1) y se guarda en la variable ADCValue.
5.En la línea 8 termina la conversión del ADC.
6.En la línea 9, se hace la operación para obtener el porcentaje del voltaje que se está
suministrado mediante por parte del ADC con la multiplicación de la variable adcValue
y eso dividido entre 4096, almacenándose en la variable VP.
7.En la línea 10, se condiciona que el valor de VP por medio de una instrucción if que
sea menor de 50 para poder ejecutar la instrucción del caso verdadero en caso de no
serlo pasara a la sig. Función if.
8.En la línea 12 de haberse cumplido la condición del If de la línea 10 este ejecutara
un reinicio de los pines BLUE, GREEN, Y RED para después mandar una instrucción
de que encienda el pin BLUE.
9.En la línea 15, al no haber cumplido la condición anterior procederá a verificar si
cumple con su condición la cual, si la variable VP es mayor o igual a 50, pero menor o
igual a 60 procederá a ejecutar las instrucciones de su condición verdadera en caso
de que no pasara a la siguiente función If.
10.En la línea17, de haberse cumplido la condición del If de la línea 15 este ejecutara
un reinicio de los pines BLUE, GREEN, Y RED para después mandar una instrucción
de que encienda el pin GREEN.
11.En la línea 19 se considera un último caso, donde si ninguna de las condiciones
anteriores se cumplió procederá a ejecutar su función.
12.En la línea 21, de haberse cumplido la condición del esle de la línea 19 este
ejecutara un reinicio de los pines BLUE, GREEN, Y RED para después mandar una
instrucción de que encienda el pin RED.
13.En la 23 termina el ciclo while(1) regresando al inicio de este mismo para seguir
ejecutando el loop infinito