Sei sulla pagina 1di 17

Diseño de Circuitos Digitales

Facultad de Ingeniería
Universidad de Antioquia

Laboratorio 2 Electrónica Básica

Diseño de Circuitos Digitales

Profesor
Jaiber Yepes

Responsables:Gr-05
Juan Carlos Calle
Leidy Jhoana caro

UNIVERSIDAD DE ANTIOQUIA

FACULTAD DE INGENIERÍA

INGENIERÍA DE SISTEMAS

2019-1
Lab 1. Electrónica Básica
1. Objetivos

Implementar un reloj digital usando un arduino y otros componentes.

2. Materiales

• Arduino IDE
• Arduino
• Componentes
• Display 7 segmentos
• Pulsadores
• Otros

1. Consultar

● ¿Qué es una interrupción ?


R//Arduino dispone de dos tipos de eventos en los que definir interrupciones. Por
un lado tenemos las interrupciones de timers (que veremos en su momento al hablar de
temporizadores. Por otro lado, tenemos las interrupciones de hardware, que responden
a eventos ocurridos en ciertos pines físicos.

Dentro de las interrupciones de hardware, que son las que nos ocupan en esta
entrada, Arduino es capaz de detectar los siguientes eventos.

• RISING, ocurre en el flanco de subida de LOW a HIGH.


• FALLING, ocurre en el flanco de bajada de HIGH a LOW.
• CHANGING, ocurre cuando el pin cambia de estado (rising + falling).
• LOW, se ejecuta continuamente mientras está en estado LOW.
● ¿Qué tipos de interrupción se pueden implementar en ARDUINO?
R//Interrupciones en Arduino
• Interrupciones HW o externas: Estas son asíncronas a la
ejecución del procesador, es decir, se pueden producir en cualquier
momento independientemente de lo que esté haciendo el CPU en
ese momento. Las causas que las producen son externas al
procesador y a menudo suelen estar ligadas con los distintos
dispositivos de entrada o salida.
• Interrupciones SW: Las interrupciones por software son
aquellas generadas por un programa en ejecución. Para generarlas,
existen distintas instrucciones en el código máquina que permiten al
programador producir una interrupción. Arduino no soporta las
interrupciones por software
• Un evento programado o Timer. Son las interrupciones
asociadas a los timers y gracias a ellas funciona millis().
• Excepciones: Son aquellas que se producen de forma síncrona
a la ejecución del procesador típicamente causada por una condición
de error en un programa. Normalmente son causadas al realizarse
operaciones no permitidas tales como la división entre 0, el
desbordamiento, el acceso a una posición de memoria no permitida,
etc.

● ¿Cuál es el procedimiento necesario para incluir librerías a un nuevo proyecto?


R//

Para utilizar una de ellas sólo tienes que seleccionarla en la lista. Como resultado, inserta
una línea de código en la parte superior del programa.
Esta línea significa que ha incluido (#include) la librería servo (servo.h). Se hace poniendo
el símbolo menor que (<), el nombre del archivo y mayor que (>).

● ¿Para qué sirve la librería TimerOne?, ¿cuales son sus métodos y opciones
disponibles?
Referencia: http://playground.arduino.cc/Code/Timer1

R//Esta biblioteca es una colección de rutinas para configurar el temporizador


de hardware de 16 bits llamado Timer1 en el ATmega168 / 328. Hay 3 temporizadores
de hardware disponibles en el chip, y se pueden configurar de varias maneras para lograr
una funcionalidad diferente. El desarrollo de esta biblioteca comenzó con la necesidad
de una forma de establecer rápida y fácilmente el período o la frecuencia de PWM, pero
ha crecido para incluir el manejo de interrupciones por desbordamiento del
temporizador y otras características. Se podría ampliar o portar fácilmente para trabajar
con los otros temporizadores.
Descarga: https://arduino-timerone.googlecode.com/files/TimerOne-r11.zip
● Investigue que es un circuito anti-rebote. ¿Cuál es su propósito?
R//

Utilizando pulsadores con Arduino

¿Qué es un pulsador?

Un pulsador es un tipo de interruptor eléctrico, que consta de dos contactos metálicos


separados que cuando se unen al ser presionado el botón, permiten el paso de
corriente. Su simbología es la siguiente:

Existen dos formas de conectar un pulsador, y a pesar de que la función principal es la


misma, a la hora de programar es necesario tener en cuenta dicha conexión:
Como se puede observar, están las configuraciones de:

• Pull Up: En este caso cuando se presiona el pulsador, el Arduino "ve" o lee un
cero en ese pin
• Pull Down: En este caso cuando se presiona el pulsador, el Arduino "ve" o lee un
uno en ese pin.

En este proyecto, y en los que siguen de ahora en adelante, se utilizará el esquema


correspondiente a Pull Up, donde el Arduino va a leer un 0 al presionar un pulsador.

Los pulsadores son dispositivos que tienen un defecto, el cual se llama rebote. Cuando
se presiona o se suelta el pulsador, se produce una fluctuación entre sus contactos
internos, por lo tanto cuando se va a pasar de un 1 (HIGH) a un 0 (LOW) o viceversa, esas
fluctuaciones son también leídas por el Arduino y se produce un comportamiendo
inesperado en el funcionamiento de nuestros proyectos, por ejemplo, el usuario puede
presionar una sola vez el pulsador pero por culpa del rebote el Arduino podría
interpretarlo como si se hubiese presionado varias veces.
El antirrebote viene a solucionar este problema. Puede realizarse por software
y por hardware. En todos los proyectos de este blog se realizarán ambos tipos
de antirrebote al mismo tiempo, para tener seguridad de que ningún pulsador
va a producir un comportamiento indeseado.

Por software, se coloca un condicional en donde una variable cambia


su valor cuando el pulsador se presiona, es decir, cuando se encuentra en LOW.
Luego de que la variable tenga su nuevo valor y cuando se suelte el pulsador, se
realiza entonces la acción deseada en el proyecto.
● Consultar un conversor BCD a 7 segmentos físico, ¿Cuál es su referencia?, ¿Cuál
es su tabla de verdad ? ¿Cuál es su esquemático ?

Los decodificadores son circuitos integrados que convierten una


entrada de código binario a código BCD correspondiente para
encender los segmentos de un display para que se forme el valor en
decimal que responde al número binario.
Existen múltiples referencias, en este artículo hablaremos sobre los
más usados, el 7447 y el 7448, los cuales son tecnología TTL, es decir,
que su voltaje de alimentación es de 5 voltios.
Como sabemos, los display de 7 segmentos pueden ser de ánodo o
cátodo común, y para cada uno corresponde el decodificador a usar,
para el display de ánodo común usamos un 7447 y para uno de
cátodo común el 7448.

La tabla muestra las salidas que el decodificador proporcionará ante la presencia de una
entrada especifica en estados lógicos y la figura el diagrama interno de un 7447
2. Descripción

En esta práctica se requiere diseñar e implementar un reloj digital y visualizar la hora en


un display de 7 segmentos. Para ello se requiere:
1. Diseñar un conversor BCD a 7 segmentos usando lógica booleana y diagramas de
Karnaugh y simularlo en logisim.

R// Decodificador bcd a 7 segmentos forma 1 (compuertas lógicas). Lo primero que se


debe realizar es la tabla de la verdad. Esta se realiza de acuerdo a los segmentos que se
colocan en on para mostrar cada número en el display.
Ya con la tabla de la verdad pasamos a realizar los mapas de Karnaugh. Como son 7
salidas, entonces son 7 mapas. Además se hará, de ser posible el uso de compuertas
nand y xor, la razón es que implementar el circuito es más sencillo, disminuyendo el
número de circuitos integrados usados.
2. Simular e implementar el siguiente circuito:

Características funcionales del sistema


1. Botones:

a. Setup: si se presiona por 2 segundos entra a modo configuración, la cual


permite cambiar la hora, si se presiona nuevamente entra a modificar los
minutos y la siguientes vez que se presione se sale del modo
configuración.

b. Mode: si se presiona este botón el sistema mostrará minutos y segundos,


en otro caso se visualizará horas y minutos.

c. Up: es botón se usa para aumentar las horas o minutos acorde a la


posición de setup. Si se deja presionado, se debe aumentar cada 500 ms.

d. Down: es botón se usa para disminuir las horas o minutos acorde a la


posición de setup. Si se deja presionado, se debe disminuir cada 500 ms.

Desarrollo:

Especificaciones

Especificaciones del reloj digital realizado:

El reloj digital consta de 4 dígitos. Los primeros dos dígitos muestran


la hora y los siguientes dos dígitos muestran los minutos. También
hay puntos que pueden parpadear para mostrar segundos.
Hay 4 botones para ajustar la hora y los minutos. Se Presiona el botón
1 para configurar el reloj. El botón 2 para configurar los minutos.
pulsador 3 para cambiar los modos de reloj digital para cronometro
y viceversa.Y el cuarto para hacer un reset.
En el programa, utilizamos la biblioteca TimerOne.h para poder
configurar el temporizador . El temporizador se inicializa a un
temporizador de 100 ms. Entonces la luz parpadeará cinco veces por
segundo.

Hay 4 botones que usamos, cada uno de los cuales tiene las
siguientes funciones:

• El botón 1 funciona para aumentar el valor de la hora.


• El botón 2 funciona para aumentar el valor de los minutos.
• El botón 3 funciona para cambiar de modo, tanto del modo de
reloj al modo de temporizador y viceversa.
• El botón 4 funciona para reiniciar y reiniciar el cronómetro .
Los valores de hora y minutos solo se pueden aumentar, no se pueden
reducir.

En la condición inicial, el reloj mostrará 00:00 con el modo de reloj como


modo inactivo . Este reloj se puede configurar con el botón 1 y el botón 2.
Los dos puntos en el medio mostrarán segundos. Las luces de punto se
encenderán y parpadearan alternativamente durante un segundo y así
sucesivamente.

Luego, para cambiar de modo, podemos presionar el botón 3. El modo


puede pasar del modo de reloj al modo de cronómetro o viceversa.
Si queremos encender el cronómetro , podemos usar el botón 4 para que
el cronómetro pueda funcionar. Después de correr, podemos reiniciar el
cronómetro nuevamente presionando el botón 4.
Hay un inconveniente en este reloj digital que hicimos. Es decir, en el modo
de cronómetro , el cronómetro no se puede pausar , solo se puede
restablecer . Esto se debe a la asignación incompleta de interrupciones en
el programa.

Potrebbero piacerti anche