0% encontró este documento útil (0 votos)
62 vistas13 páginas

Práctica de ADC e Interrupciones en Microcontroladores

Este documento describe una práctica de laboratorio sobre el uso de un convertidor analógico a digital y las interrupciones en un microcontrolador. Se explica el objetivo de medir la respuesta de un sensor mediante el ADC y mostrar el valor en una pantalla LCD. Se detallan los conceptos teóricos sobre ADC, sensores y acelerómetros. Luego se presenta la metodología y diagrama de flujo del código, incluyendo la configuración de registros y conexiones del microcontrolador.

Cargado por

Adair Téllez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
62 vistas13 páginas

Práctica de ADC e Interrupciones en Microcontroladores

Este documento describe una práctica de laboratorio sobre el uso de un convertidor analógico a digital y las interrupciones en un microcontrolador. Se explica el objetivo de medir la respuesta de un sensor mediante el ADC y mostrar el valor en una pantalla LCD. Se detallan los conceptos teóricos sobre ADC, sensores y acelerómetros. Luego se presenta la metodología y diagrama de flujo del código, incluyendo la configuración de registros y conexiones del microcontrolador.

Cargado por

Adair Téllez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Universidad Autónoma de Querétaro

Facultad de Ingeniería

Campus San Juan del Río

Estudiante
Adair Téllez Aviles

Carrera: Ingeniería Electromecánica

Expediente
298497

Maestros:
Dr. Luis Alberto Morales Velázquez
M.C. Leonardo Esteban Moreno Suárez

Materia: Microcontroladores

Practica 5: ADC e interrupciones

Fecha: 21-03-2024
Microcontroladores

Objetivo
Medir la respuesta en voltaje del transductor mediante el uso del convertidor de analógico a digital para
mostrar el valor de la variable física adquirida en una pantalla LCD.

Introducción
El ADC, es un dispositivo electrónico que sirve para convertir una señal analógica (de tensión o de corriente)
en una señal digital, con el propósito de facilitar su procesamiento, así como hacer la señal resultante (digital)
más inmune al ruido y otras interferencias a las que son más sensibles las señales analógicas.
Por lo que en resumen se puede decir que se está realizando una lectura de voltaje a través de un sensor
analógico, para el posterior procesamiento de sus datos. [1]
Sensor:
“Es un dispositivo diseñado para captar un estímulo de su entorno y traducir esa información que recibe.
Esa información recibida es normalmente convertida a un impulso eléctrico que posteriormente es
procesado por una serie de circuitos que generan una acción predeterminada en un aparato, sistema o
máquina. Es un artefacto que en algunas aplicaciones transforma una clase de información en otra que se
quiere medir o controlar.” [2]
Puesto que el acelerómetro es un sensor que nos permite realizar mediciones de aceleración, deberemos
de tener claro el concepto, el cual se muestra a continuación:
“La aceleración es el nombre que le damos a cualquier proceso en donde la velocidad cambia.” [3]

Los acelerómetros son dispositivos electromecánicos que detectan las fuerzas de aceleración, ya sea
estática o dinámica. Las fuerzas estáticas incluyen la gravedad, mientras que las fuerzas dinámicas pueden
incluir vibraciones y movimiento. [3]

Los acelerómetros pueden medir la aceleración en uno, dos o tres ejes. Los de tres ejes son más comunes
conforme los costos de producción de los mismos baja. [3]

Generalmente, los acelerómetros contienen placas capacitivas internamente. Algunos de estos son fijos,
mientras que otros están unidos a resortes minúsculos que se mueven internamente conforme las fuerzas
de aceleración actúan sobre el sensor. Como estas placas se mueven en relación el uno al otro, la
capacitancia entre ellos cambia. A partir de estos cambios en la capacitancia, la aceleración se puede
determinar. [3]
Microcontroladores

Finalmente, se utiliza un acelerómetro ADXL354CZ, el cual se muestra en la Figura 1.

Figura 1. Acelerómetro ADXL354CZ.


A continuación, se muestran los tres pines que se utilizan para la conexión del acelerometro
VDD: 3.3 V.
VSS: GND
Z: Salida analógica del eje z.

Metodología
Descarga Búsqueda Seleccionar Definir Generar Realizar
Lectura Realizar código
de la hoja de del de los pines a entrada y nuevo conexiones
datos del de la hoja correspon-
de datos registro(s) utilizar. salida según documento físicas
acelerometro diente.
a utilizar. la elección “.c”

Figura 2. Diagrama de bloques a seguir.


Microcontroladores

La Figura 2, nos muestra el proceso que se llevara a cabo de forma general, para la implementación del
ADC e interrupciones
Inicio

Habilitar puertos

Encender
ADC y

Encender Timer y
configurar

Realizar
captura ADC

Activar y mandar
interrupción

Bucle

Figura 3. Diagrama de flujo del código.

Para iniciar, se realiza la configuración de la interrupción, para que se tenga un tiempo de 10 ms, de la hoja
de datos del microcontrolador, se sabe que la frecuencia del mismo es de 8 MHz, para ello, se coloca al
preescalador con un valor de 7, para que se tomen muestras cada us, finalmente se coloca el valor de autor
recarga con un valor de 10000, para que, de esta manera, se tengan los 10 ms solicitados, esto se muestra
a continuación, con un fragmento del código generado.

void ADC_tim (void)


{
NVIC->ISER[0] |= 1<<TIM3_IRQn; //timer
TIM3->SR |= TIM_SR_UIF; //registro de estado
TIM3->PSC = 7;//preescalador
TIM3->ARR = 999; //autorrecarga
TIM3->CR1 |= 0x1; //bandera
TIM3->DIER |= 1;
}

Seguido de ello, se realiza la activación de cada uno de los registros que se utilizan, inicialmente, con el
registro RCC_APBENR1, se realiza el encendido del microcontrolador y también la activación del timer,
como se puede observar en la Figura 4, se cuentan con una gran cantidad de Timers, aunque se debe de
ser cuidadoso, para utilizar uno que si este disponible.
Microcontroladores

Figura 4. Registro RCC_APBENR1.

Posteriormente se realiza la habilitación e los puertos que se utilizan, en este caso, se habilitaron los puertos
A y B, esto se hace con el registro RCC_IOPENR, el cual se muestra en la Figura 5.

Figura 5. Registro RCC _IOPENR.

El siguiente registro a utilizar es el RCC_APBENR2, el cual se muestra en la Figura 6, en donde se


encuentra el ADC, el cual deberemos de activar, para así posteriormente poder utilizar.
Microcontroladores

Figura 6. Registro RCC_APBENR2.

Posteriormente, se utiliza el registro ADC_CHSELR, el cual se muestra en la Figura 7, para seleccionar el


canal donde que se utiliza, en este caso es el canal cero.

Figura 7. Registro ADC_CHSELR.

El siguiente registro a utilizar es el ADC_ISR, el cual se muestra en la Figura 8, en donde se encuentra la


bandera del final de la conversión, por lo que es necesario activarlo.
Microcontroladores

Figura 8. Registro ADC_ISR.

Como último registro para utilizar el ADC, se activa el ADC_DR, el cual se muestra en la Figura 9, donde se
almacenan los datos digitales, convertidos desde una señal analógica por el ADC del microcontrolador.

Figura 9. Registro ADC_DR.

Seguido de ello, se muestra en la tabla 1, la conexión que se realiza con el microcontrolador.

Puerto Pin Función


Microcontroladores

B 0 Salida, conectado al pin de


selección de registro de control
de datos
B 1 Salida, conectado al pin de
habilitación de la pantalla
B 4 Salida, conectado a D4,
perteneciente al bus de datos de
la pantalla
B 5 Salida, conectado a D5,
perteneciente al bus de datos de
la pantalla
B 6 Salida, conectado a D6,
perteneciente al bus de datos de
la pantalla
B 7 Salida, conectado a D7,
perteneciente al bus de datos de
la pantalla
A 0 Entrada, configurada como
analógica.
Tabla 1 Configuración de pines para modelo experimental.

Cabe señalar que, para la interpretación de los resultados mediante el software, se analiza la ec. 1.
9.81 𝑚⁄ 2 = 𝐴𝐷𝐶 − 1.6 ∗ 𝑋 𝑒𝑐. 1
𝑠

9.81= Aceleración de la tierra


ADC= Lectura del sensor en el eje z.
1.6 = Valor obtenido de la hoja de datos equivalente a 9.81 𝑚⁄ 2 .
𝑠
x = Incógnita que debe de hallarse.

Al despejar la variable ”x”, se obtiene la ec. 2.

9.81 𝑚⁄
𝑥= 𝑠2 = −49.05 𝑒𝑐. 2
1.4 − 1.6

Este valor se puede observar en la parte de programación, donde se observa que es para poder hacer la
interpretación de los datos, puesto que de esta manera se puede detectar si se tiene aceleración positiva o
negativa.
Microcontroladores

Resultados
La figura 10, muestra los valores de aceleración, después de la lectura y conversión de los valores dados
por el ADC.

Figura 10. LCD, con valores de aceleración.

La figura 11, nos muestra los valores de aceleración, cuando se coloca el acelerómetro en vertical.

Figura 11. Valores de aceleración, con acelerómetro en vertical.

Finalmente, la figura 12, muestra los valores de aceleración, cuando se voltea totalmente el acelerómetro,
donde se puede observar, una aceleración negativa.

Figura 12. Valor de aceleración, con acelerómetro, totalmente volteado.


Microcontroladores

Conclusión
Tras la realización de la práctica, se pueden destacar ciertos puntos importantes. La adecuada utilización
del acelerómetro requiere un análisis exhaustivo de la hoja de datos del sensor, ya que esto es fundamental
para interpretar los resultados correctamente. Además, es crucial seleccionar el pin adecuado para la
entrada del ADC, asegurándose de que sea analógico para garantizar la lectura de los datos,
independientemente de la corrección del resto de la programación.
El objetivo inicial de la práctica, que consistía en la lectura del eje z del acelerómetro mediante el ADC, del
microcontrolador, utilizando las interrupciones y la visualización de los resultados en una pantalla LCD, se
ha cumplido satisfactoriamente.
Finalmente, es relevante mencionar que se aplicaron conocimientos previos, como el manejo de caracteres
especiales y la continuidad en el uso de la pantalla LCD.

Anexos
Anexo 1 código para STM32G031K8.
#include "main.h"
#include "lcd.h"

float k=49.05,adc;

void ADC_tim (void)


{
NVIC->ISER[0] |= 1<<TIM3_IRQn; //timer
TIM3->SR |= 1; //registro de estado
TIM3->PSC = 159;//preescalador
TIM3->ARR = 999; //autorrecarga
TIM3->CR1 |= 0x1; //bandera
TIM3->DIER |= 1;

}
void TIM3_IRQHandler(void)
{
ADC_tim ();
ADC1->CR|=0x4;// pag. 316
GPIOA->ODR ^=0x2;
TIM3->SR &=~1;

int main (void){


Microcontroladores

uint16_t a,j;
init_lcd();
char otilde[] ={0x02,0x04, 0x1F, 0x11, 0x11, 0x11, 0x1F, 0x00 };
char c1[] = {0x08,0x14,0x04,0x08,0x10,0x1C,0x00,0x00};//^2
char c2[] = {0x00,0x00,0x00,0x06,0x08,0x06,0x01,0x0E};//s

comd(0x40+8);
for(j=0; j<8; j++)
caract(otilde[j]);//o con tilde

comd(0x40+16);
for(j=0; j<8; j++)
caract(c1[j]);//

comd(0x40+24);
for(j=0; j<8; j++)
caract(c2[j]);

RCC->APBENR1 |= 0x10000000;//encendido de la tarjeta


while(!(RCC->APBENR1&0x10000000));
RCC->APBENR2 |= 0x100000;//Habilitación ADC
while(!(RCC-> APBENR2 & 0x100000));
RCC->IOPENR |= 0x3;//habilitación de los puertos a y b
while(!(RCC->IOPENR&0x3));

ADC1->CR =0x1;//habilitacion del adc


ADC1-> CHSELR |= 0x1;//seleccion del canal

float k=49.05,adc;

comd(0x80);
caract('a');
caract('c');
caract('e');
caract('l');
caract('e');
caract('r');
caract('a');
caract('c');
caract('i');
caract(1);//ó
caract('n');
Microcontroladores

while(1){
TIM3_IRQHandler();
//ADC1->CR|=0x4;// pag. 316
while(!(ADC1->ISR&0x4));//---** fin de la conversion
adc= ((float)ADC1->DR)*(3.3/4095);
adc=(adc-1.755)*k;

comd(0x80);
if(adc>=0)
{
comd(0xC0);
caract('+');
}

else
{
adc*=-1;
comd(0xC0);
caract('-');

a= (uint16_t)(adc*1000);
caract('0'+(char)(a/10000));
a%=10000;
caract('0'+(char)(a/1000));
caract('.');
a%=1000;
caract('0'+(char)(a/100));
caract('0'+(char)(a%100));
a%=100;
caract('0'+(char)(a/10));
caract('0'+(char)(a%10));

comd(0xC9);
caract('m');
caract('/');
caract(3);
caract(2);

}
Microcontroladores

Bibliografía
[1] ¿Qué es la aceleración? (s/f). Khan Academy. Recuperado el 21 de marzo de 2024, de
[Link]
article
[2] Sensores. (2021, junio 25). SDI. [Link]
[3] ABC del acelerometro. (s/f). [Link]. Recuperado el 21 de marzo de 2024, de
[Link]

También podría gustarte