Práctica de ADC e Interrupciones en Microcontroladores
Práctica de ADC e Interrupciones en Microcontroladores
Facultad de Ingeniería
Estudiante
Adair Téllez Aviles
Expediente
298497
Maestros:
Dr. Luis Alberto Morales Velázquez
M.C. Leonardo Esteban Moreno Suárez
Materia: Microcontroladores
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
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”
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
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.
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
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.
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.
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 𝑚⁄
𝑥= 𝑠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.
La figura 11, nos muestra los valores de aceleración, cuando se coloca el 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.
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 TIM3_IRQHandler(void)
{
ADC_tim ();
ADC1->CR|=0x4;// pag. 316
GPIOA->ODR ^=0x2;
TIM3->SR &=~1;
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]);
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]