Está en la página 1de 17

INSTITUTO SUPERIOR TECNOLOGICO CENTRAL TECNICO

NOMBRE NELSON PERUGACHI


FECHA 18/07/2022
CURSO 5to A NOCTURNA

Encender varios LED a una secuencia específica (tipo semáforo), se activará el inicio de la
secuencia con un botón pulsador.

Un botón pulsador será empleado para iniciar la secuencia de encendido y apagado de 3 LEDs.
Se simula con este circuito el comportamiento de un semáforo.

11.2 Materiales y Métodos:

1. Tres LEDs (Colores: Amarillo, Verde y Rojo).


2. Una tarjeta Arduino Uno-R3 o Arduino Mega 2560.
3. Un cable USB impresora.
4. Un computador.
5. Cables para el montaje del circuito.
6. Tarjeta Protoboard.
7. Tres Resistencias Eléctrica de 220 ohm.
8. Un Botón Pulsador.

11.3 Montaje de la práctica:

Antes de comenzar la realización del montaje del circuito electrónico, se debe realizar el circuito
en el programa Fritzing. Se debe tener en cuenta el conocimiento de cuál es el cátodo y ánodo
de los LED. Se coloca el ánodo del LED verde en el pin 13, LED amarillo en el pin 12 y LED rojo
en el pin 8. El cátodo de cada LED va a tierra (ground). Se va a usar el pin 5V para alimentar el
botón pulsador tal como se muestra en la figura 2:

Figura 2. Montaje del circuito en el programa Fritzing


Se observa en la Figura 2 que se está utilizando el Arduino Uno, si se utiliza la tarjeta Arduino
Uno-R3 el mismo procedimiento. Como se observa en la Figura 2, el Protoboard nos ayuda a
instalar los LEDs e instalar el circuito a través de cables, al igual que la resistencia eléctrica y el
botón pulsador. La línea que esta de color rojo emite los 5V al botón pulsador. El computador es
capaz de proveerle Arduino 5V. Los 5V como se observa van hacia al botón y luego al cerrarse el
circuito le deja pasar al pin 7. Para proteger el circuito y evitar que al pin 7 no le llegue más de
5V, se coloca una resistencia eléctrica, la cual lleva gran parte de esa señal a tierra.

Luego que se tiene armado el circuito en el programa Fritzing, se comienza con el desarrollo del
programa en el IDE de Arduino.

IDE de Arduino para la práctica:

– Se selecciona la tarjeta Arduino que se esta utilizando sea Arduino Uno-R3 o Arduino Mega
2560.

– Se selecciona el Puerto Serial. Bajo que puerto USB se va a conectar el Arduino con el
computador.

– Se empieza a realizar el código:


 Inicialmente debemos darle un nombre de qué consiste el codigo, esto se hace a través del
símbolo //, se puede colocar el título de la práctica o del programa en sí. También se puede
utilizar como comentarios dentro del programa.


 Se declaran las variables. En la práctica se declaran de tipo constante, una variable que no
cambiara durante el desarrollo del programa, su comando es const, además se debe
especificar qué tipo de datos se almacenará en la constante, en este caso será entero y su
comando es int, luego se le da el nombre de la variable; en la tarjeta Arduino se van a usar
los pines 8, 12 y 13 para alimentar los LEDs. También se declara la variable botón en el pin 7
y una variable entero val igual a cero (0), la diferencia de las demás variables es que la
variable val no será constante ya que puede variar entre 0 y 1.


 Se define si la variable declarada son de tipo entrada o de salida, para eso se utiliza el
comando void setup (), se abre corchete ({) para saber qué es lo que contiene ese comando y
al finalizar el comando se cierra corchete (}). Internamente del corchete se declara que la
variable LED es de salida, esto se realiza a través del comando pinMode, este a su vez
necesita como argumento la variable y el tipo de señal de la misma, es
decir pinMode(LED,OUTPUT); en la que OUTPUT indica que la señal saldrá del pin 13
permitiendo encender el LED. El mismo procedimiento se sigue para los LED conectados en
los pines 12 y 8. Para definir el botón pulsador lo importante es definir el pin donde está
conectado el boton (pin 7), este se define en la programación en vez de ser un OUTPUT es
un INTPUT, cada vez que el reciba en ese INPUT él va a tomar una acción; la cual es decirle
Arduino que tome una señal digital en el pin 13 y encienda el LED, su comando
será pinMode(BONTON,INPUT).


 Luego de definir las variables, se procede a realizar la estructura del código a través del
comando void loop (), de igual manera se abre corchete({) y se cierra (}) luego de terminar su
cumplimiento. Internamente del corchete se establecen las instrucciones que ejecutara
Arduino continuamente. Se utilizara la variable val la cual leerá digitalmente lo que sucede en
el pin 7 (botón), su comando seria digitalRead(BOTON). La práctica permite introducir otra
estructura de programación la cual es if, la que significa si en español. La estructura if es un
condicional que permite decidir en función del valor de la variable val, si este es alto
(HIGH=1) o si es bajo (LOW=0). Se utiliza una variable estado (state) que registrará los
cambios de HIGH y LOW cuando se pulsa el botón de esta manera se crea un suiche de
encendido que luego al volver a presionar sirve para apagar lo que esté dentro del if que
contenga la variable state.


 Para que el LED se encienda, si state==1 se utiliza se emplea una secuencia de código de
encendido y apagado de cada LED simulando la secuencia de un semáforo (primero verde,
luego brevemente el amarillo y finalmente el rojo), para encender cada led se emplea el
comando digitalWrite con la opción HIGH. Para que los LEDs puedan apagarse se utiliza el
mismo comando digitalWrite pero indicándole esta vez una señal baja LOW, esto cuando el
state esté en 0.

DISEÑO DE PROGRAMACIÓN PARA CONTROL ASCENDENTE Y DESCENDENTE


MEDIANTE PULSADORES
Debe ser capaz de contar 4 bits ascendente y descendentemente con un control de
sentido.

1. Creamos un nuevo proyecto en el ISE Project Navigator1

File -> New Project

Se abrirá la siguiente interfaz.


Ponemos un nombre que no contenga espacios por ejemplo “contador4bits”.

1
Para el presente tutorial se ha utilizado la versión 14.2 de Xilinx ISE Design Suite. Con
licencia ISE Web Pack.
Elegimos la locación y el directorio de trabajo (Dejar las ubicaciones por

defecto) Presionamos “next”.

2. En la siguiente ventana debemos especificar la tarjeta en la que vamos a


desarrollar el proyecto.
En nuestro caso contamos con la tarjeta Spartan 3E Starter Board que contiene las siguiente
FPGA:

Family:

Spartan3E

Device:

XC3S500E

Package:

FG320 Speed:

-4

*Los datos de arriba se pueden obtener directamente del chip FPGA

incluido en la tarjeta. Top-Level Source Type: HDL

Synthesis Tool: XST

(VHDL/Verilog) Simulator:

ISim (VHDL/Verilog) Preferred

lenguaje: VHDL

Presionamos “next”.
3. Aparecerá la siguiente ventana que simplemente detalla el proyecto creado.

Presionamos “Finish”.

4. En el tab “design” de la izquierda hacemos doble clic sobre el ícono de


nuestro proyecto y creamos un nuevo recurso (New Source), como en la fig
5.
5. En la ventana emergente seleccionamos el tipo de recurso a crear, como
queremos diseñar el contador en vhdl, escogemos un nuevo recurso de tipo
“VHDL module”.
En “File name” le damos un nombre al módulo VHDL a crear, igualmente no debe contener
espacios por ejemplo “sumador”.

Clic en “next”.

6. En la siguiente ventana podemos ingresar las entradas y salidas que tendrá


la entidad. (consulte la Fig. 1).
Declaramos como entradas en la columna Port Name:

Reset ->

in clk -> in

sentido ->

in

Q -> out -> bus -> MSB 3 LSB 0

En salida “Q”, seleccionamos la opción de “Bus” debido a que es la salida del contador
de 4 bits, por ende debe tener de 0 a 3 bits.

A continuación damos click en “next”, y luego en “finish” en la ventana resumen.

7. Ahora está preparado el archivo Vhdl para su edición.

En el bloque de código de las librerías debemos incluir la siguiente


sentencia
“us
e IEEE.std_logic_unsigned.all;” esto para poder trabajar con sumas y restas sin signo.

Quedaría el código superior así:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.std_logic_unsigned.all;
8. La declaración de la entidad debe quedar de la siguiente manera:

entity contador is
Port ( reset : in STD_LOGIC;
clk : in STD_LOGIC;
sentido : in STD_LOGIC := '0';
Q : out STD_LOGIC_VECTOR (3
downto 0)); end contador;
*recordar que las líneas de código anteriores pueden generarse automáticamente
siguiendo el proceso del paso 6, o pueden escribirse directamente en el código obviando
el paso 6. Sin embargo estas líneas pueden modificarse en cualquier momento.

9. Luego describimos la arquitectura de la entidad, esta arquitectura será de tipo


comportamental o
“behavioral”.

architecture Behavioral of contador is

signal counter : STD_LOGIC_VECTOR (3 downto 0)


:= "0000"; begin
process(reset,clk)

begin

if reset='1' then
counter <=
"0000"; elsif clk'event and Arquitectura comportamental.
clk = '1' then
if sentido = '1' then En cada pulso de reloj se incrementa
counter <= counter + 1;
else una unidad a la señal contador
counter <= counter - 1;
end
if; Q <=
counter;
end if;
end process;
end
Behavioral;

10. El código complete quedaría así:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.std_logic_unsigned.all;

entity contador is
Port ( reset : in
STD_LOGIC; clk :
in STD_LOGIC;
sentido : in STD_LOGIC := '0';
Q : out STD_LOGIC_VECTOR (3
downto 0)); end contador;

architecture Behavioral of contador is

signal counter : STD_LOGIC_VECTOR (3 downto 0)


:= "0000"; begin
process(reset,clk)

begin

if reset='1' then
counter <=
"0000"; elsif clk'event and
clk = '1' then
if sentido = '1' then
counter <= counter + 1;
else
counter <= counter - 1;
end if;

Q <= counter;
end if;

end process;

end

Behavioral;

11. SIMULACIÓN

Una vez terminado nuestro código podemos realizar la simulación para constatar el
correcto funcionamiento.

Creamos un nuevo recurso como en el paso 4, con excepción de que esta vez necesitamos
un recurso de
tipo “VHDL test bench”.
Le asignamos un nombre al nuevo recurso, click en “next”.
En la ventana siguiente se nos pide que asociemos un recurso a este “test bench”,
seleccionamos el recurso correcto, en este caso solo existe un recurso.

A continuación clic en “next” y luego en “finish”.

Ahora tenemos un archivo de tipo VHDL pero con las señales, puertos y
temporizaciones necesarias para una simulación.

*Seleccionando la interfaz “simulation” en la barra de la izquierda podemos visualizar el


archivo de simulación.
Seleccionamos el archivo “VHDL test bench” recién creado, chequeamos la sintaxis en la
barra de la izquierda y luego procedemos a correr la simulación.

12. Al terminar de correr el proceso “Simulate Behavioral Model”, se abrirá otro


programa llamado
“Isim”.

Fig.
12

En el mismo podemos interactuar con las señales de entrada y observar la simulación y


comportamiento de nuestro circuito.
Para modificar las señales de entradas se procede de la siguiente manera:

Damos click derecho en cualquier señal de entrada, por ejemplo en “sentido”. Y


seleccionamos “force constant”.

En la ventana emergente damos un valor de ‘0’ o ‘1’, en “Force to value”.


*Según nuestro ejemplo si la señal “sentido” está en ‘0’ el contador
descenderá, caso contrario ‘1’, elcontador ascenderá.

En la figura 15 se puede observar el funcionamiento del contador y el cambio de la


señal sentido a los 18us.

Para correr la simulación y observar las señales se debe dar clic en el ícono que
se observa en Fig 16 einteractuar con los íconos de zoom out y zoom in.

También podría gustarte