Está en la página 1de 7

CENTRO DE ENSEÑANZA TÉCNICA INDUSTRIAL

PLANTEL COLOMOS

Práctica 9: Timers usando Arduino DK


ELABORADO POR:
Nombre Registro Grupo
BEJARANO PULIDO LUIS FERNANDO 21300687 6I
ALBARRÁN VILLASEÑOR MARCO RICARDO 21300697 6I

Fecha de entrega: 26/04/2024


Materia: Sistemas Embebidos I
Carrera: Desarrollo de Software
1. Objetivo:
“Describe lo que el alumno debe alcanzar en el desarrollo de la práctica en relación con los
objetivos y competencias de la asignatura.”

Aprender a utilizar los timer del Arduino para realizar una aplicación demostrativa.

2. Descripción:
“Expresa de forma más detallada que se debe realizar en la práctica para demostrar el
cumplimiento del objetivo.

Utilizar Arduino MEGA y conectarle dos LEDs. (LED 1, LED 2)

Programar un timer como contador de pulsos internos para hacer encender “LED1” durante 5
segundos y apagarlo 5 segundos, de forma cíclica infinita.

Programar un timer como contador de pulsos externos para hacer encender “LED 2” cada que
lleguen 30 pulsos externos a un pin de entrada del Arduino y apagarlo cada que lleguen otros 30
pulsos externos, de forma cíclica infinita.

Entonces de deben tener al mismo tiempo 2 LEDs parpadeando de acuerdo a lo especificado


anteriormente.

3. Resumen:
“Esta sección indica la información importante sobre el tema de la práctica como definiciones,
configuración y características principales de los CI utilizados en la práctica.”

Arduino Uno: Es una placa de desarrollo de hardware de código abierto basada


en un microcontrolador ATMega328P. Permite la creación de proyectos interactivos
mediante la programación de entradas y salidas digitales y analógicas. Utiliza un
IDE (Entorno de Desarrollo Integrado) para escribir y cargar código a la placa,
usualmente en lenguaje C/C++.
Diodo Emisor de Luz (LED): Es un componente semiconductor que emite luz
cuando una corriente eléctrica pasa a través de él en dirección de conducción. Los
LED son utilizados en una variedad de aplicaciones, desde indicadores luminosos
hasta iluminación general, debido a su eficiencia energética y durabilidad.
Push Button (Botón de Pulsador): Un botón de pulsador es un componente
simple que se utiliza para enviar una señal cuando se presiona y otra cuando se
suelta. Es comúnmente utilizado para la entrada de usuario en proyectos
electrónicos, como encender y apagar dispositivos o cambiar modos de
funcionamiento.
Interrupciones de Timers: Los timers (temporizadores) son componentes
internos de los microcontroladores que cuentan el tiempo o generan pulsos con
una frecuencia determinada. Las interrupciones de timers se pueden configurar
para que el microcontrolador ejecute cierto código cuando se alcance un valor
específico (desbordamiento) en el contador de tiempo del timer. Se utilizan
comúnmente para tareas de temporización precisa, como generar señales
periódicas, controlar el tiempo de ejecución de ciertas operaciones o realizar
tareas de manera regular a intervalos específicos.
Capacitores: Un capacitor electrolítico conectado en paralelo con un botón de
pulsador se emplea para suavizar las fluctuaciones de voltaje, eliminar los rebotes
mecánicos del botón y filtrar el ruido eléctrico, mejorando así la estabilidad y
fiabilidad del circuito electrónico en diversas aplicaciones.

4.- Diagrama Eléctrico


5.- Circuito Real

5.- Código del programa:


“Añadir el Código fuente del programa con comentarios que expliquen su funcionamiento
o poner la explicación en la siguiente sección.”

volatile unsigned int cuenta = 0;


volatile unsigned int segundos = 0;
volatile unsigned int ContadorOld = 0;

//Liaro Albarran & Ferchus Bejarano - Practica Timers: TMR1 = Contador de 0


a 30, TMR2 = Temporizador de 5s
void setup()
{
pinMode(5, INPUT_PULLUP);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
TCCR1A = 0; // Inicializar Timer1A
TCCR1B = 0; // Inicializar Timer1B
TCCR1B |= B00000111; // Reloj Externo en Pin T1 (RISING)
TCNT1 = 0; //Reset de Timer1

TCCR2A = 0; // Inicializar Timer2A


TCCR2B = 0; // Inicializar Timer2B
TCCR2B = B00000111; //Preescalador para que FT2 sea de 7812.5Hz
TIMSK2 |= B00000001; //Interrupcion por overflow
TCNT2 = 0; //Reset de Timer2

Serial.begin(9600);
}

void loop()
{
if(ContadorOld!=TCNT1){
//En caso de ejecutar este codigo en la computadora, usted observará las
veces que se ha pulsado el botón
Serial.print("Pulsos de Contador: ");
Serial.println(TCNT1);
ContadorOld = TCNT1;
}
if(TCNT1 >= 30) {
digitalWrite(A0, !digitalRead(A0));
TCNT1 = 0; //Reset de Timer
}
delay(250);
}

ISR(TIMER2_OVF_vect){
//Servicio de interrupciones TMR2 Temporizador
cuenta++;
if(cuenta > 59) {
segundos++;
cuenta=0;
}
if(segundos == 5){
digitalWrite(A1, !digitalRead(A1));
segundos = 0;
}
}

6.- Observaciones:
“Comentar brevemente problemas que tuviste en tu práctica y como lo solucionaste).”
Hicimos la práctica 10 antes de la 9, y en esta ocasión como el Timer1 estaba siendo
utilizado en configuración de contador externo, decidimos utilizar el Timer2 como
temporizador de 5 segundos, esto causó varias inconformidades a la hora de conectarlo.

La configuración del timer 2 es diferente, no incluye los últimos dos números 6 y 7 ya que
este no cuenta con su propia salida externa, pero cuenta con otras características, como
un preescalador de 32 o 128.

Como puede observar, las configuraciones de timer1 y 2 son diferentes, para formar el
segundo con un total de 8 bits es imposible, para hacer esto se tuvo que contar 60 veces el
reloj para completar un segundo.

7.- Conclusión:
“Escribir un texto que exprese de forma concreta el conocimiento significativo que
obtuviste al realizar la práctica. Puedes tomar en cuenta consideraciones de diseño,
relación teoría-realidad, dificultades, conocimiento que reforzaste o con que otro lo
relacionaste. (Hacer énfasis en esta parte)”

Los Timers son un tema un poco más delicado dentro del mundo de Arduino, sobre todo
cuando este está orientado a ser un kit de desarrollo amigable. Manejar registros y utilizar
operaciones or, o incluso manipular estos para convertirlos en timers externos son una
tarea complicada, es algo tedioso al principio, pero cada vez al realizar este ejercicio varias
veces con diferentes propósitos nos enseñan a dominar el tema de Timers. Incluso, a
medida que se gana experiencia, se comprende mejor cómo funcionan los timers y cómo
pueden ser aprovechados para realizar tareas temporizadas y precisas en proyectos de
Arduino. Aunque puede parecer complejo al principio, dominar el manejo de los registros y
las operaciones bitwise abre un mundo de posibilidades para el desarrollo de proyectos
más avanzados, permitiendo crear aplicaciones más sofisticadas y eficientes. Con la
práctica y la comprensión de los conceptos subyacentes, el manejo de timers se convierte
en una herramienta poderosa y valiosa.

También podría gustarte