Expendedora de Gaseosas
-
Upload
jaider-gomez -
Category
Documents
-
view
231 -
download
2
description
Transcript of Expendedora de Gaseosas
![Page 1: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/1.jpg)
Expendedora
Gómez Espitia Jaider Ivan (1802424)
UNIVERSIDAD MILITAR NUEVA GRANADAFACULTAD DE INGENIERIAINGENIERIA MECATRONICA
DIGITALESSEMESTRE IV 2015-1
EXPENDEDORA
![Page 2: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/2.jpg)
![Page 3: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/3.jpg)
EXPENDEDORA DE GASEOSAS
Código del programa
----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 16:04:58 05/25/2015
-- Design Name:
-- Module Name: Monedero1 - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
![Page 4: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/4.jpg)
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity Monedero1 is
Port ( m1,m2,m3 : in STD_LOGIC;
dis : out STD_LOGIC_VECTOR (6 downto 0);
reset: in STD_LOGIC;
clk : in STD_LOGIC;
pd: out STD_LOGIC_VECTOR(3 downto 0);
mos : out STD_LOGIC_VECTOR(3 downto 0));
end Monedero1;
architecture Behavioral of Monedero1 is
TYPE mostrar is( md1,md2,md3,md4);
TYPE cambio is(cd1,cd2,cd3,cd4);
![Page 5: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/5.jpg)
CONSTANT cero: std_logic_vector(0 TO 6):="1000000";
CONSTANT uno: std_logic_vector(0 TO 6):="1111001";
CONSTANT dos: std_logic_vector(0 TO 6):="0100100";
CONSTANT tres: std_logic_vector(0 TO 6):="0110000";
CONSTANT cuatro: std_logic_vector(0 TO 6):="0011001";
CONSTANT cinco: std_logic_vector(0 TO 6):="0010010";
CONSTANT seis: std_logic_vector(0 TO 6):="0000010";
CONSTANT siete: std_logic_vector(0 TO 6):="1111000";
CONSTANT ocho: std_logic_vector(0 TO 6):="0000000";
CONSTANT nueve: std_logic_vector(0 TO 6):="0010000";
SIGNAL actual:mostrar:=md1;
SIGNAL actual1:cambio:=cd1;
SIGNAL contador: integer range 0 to 39999;
SIGNAL contador1: integer range 0 to 8000000;
SIGNAL saldo: integer range 0 to 19:=0;
SIGNAL cam: integer range 0 to 4:=0;
![Page 6: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/6.jpg)
signal div_frec:std_logic;
signal aux: std_logic:='0';
begin
Frecuencia:
PROCESS (clk) begin
if rising_edge(clk) then
contador<=contador+1;
if contador>=100 then
aux<='1';
contador<=0;
else
aux<='0';
end if;
end if;
end process Frecuencia;
div_frec<=aux;
Cambio1:
PROCESS(m1,m2,m1,clk) begin
if reset='1' then
if clk='1' and clk'event and saldo<10 then
contador1<=contador1+1;
IF contador1>=7500000 and m1='1' and m2='0' and m3='0' then
![Page 7: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/7.jpg)
contador1<=0;
saldo<=saldo+1;
end if;
if contador1>=7500000 and m2='0' and m1='0' and m3='1' then
contador1<=0;
saldo<=saldo+2;
end if;
if contador1>=7500000 and m3='0' and m2='1' and m1='0' then
contador1<=0;
saldo<=saldo+5;
end if;
end if;
if saldo>=10 then
mos<="0000";
case saldo is
when 11=>cam<=1;
when 12=>cam<=2;
when 13=>cam<=3;
when 14=>cam<=4;
when others=> cam<=0;
![Page 8: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/8.jpg)
end case;
else
mos<="1111";
end if;
else
saldo<=0;
mos<="1111";
end if;
end PROCESS Cambio1;
cool:
PROCESS(div_frec)
BEGIN
if div_frec='1' AND div_frec'EVENT THEN
case actual is
when md1=> actual<=md2;
when md2=> actual<=md3;
when md3=> actual<=md4;
when md4=> actual<=md1;
end case;
end if;
END PROCESS cool;
cool1:
PROCESS(div_frec)
![Page 9: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/9.jpg)
BEGIN
if div_frec='1' AND div_frec'EVENT THEN
case actual1 is
when cd1=> actual1<=cd2;
when cd2=> actual1<=cd3;
when cd3=> actual1<=cd4;
when cd4=> actual1<=cd1;
end case;
end if;
END PROCESS cool1;
mostrar1:
PROCESS (actual,saldo) begin
if reset='1' then
case actual is
when md1=>
pd<="0111";
case saldo is
when 0=> dis<=cero;
when 1=> dis<=cero;
when 2=> dis<=cero;
when 3=> dis<=cero;
when 4=> dis<=cero;
when 5=> dis<=cero;
![Page 10: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/10.jpg)
when 6=> dis<=cero;
when 7=> dis<=cero;
when 8=> dis<=cero;
when 9=> dis<=cero;
when 10=> dis<=uno;
when 11=> dis<=uno;
when 12=> dis<=uno;
when 13=> dis<=uno;
when 14=> dis<=uno;
when others=> pd<="1111";
end case;
when md2=>
pd<="1011";
case saldo is
when 0=> dis<=cero;
when 1=> dis<=uno;
when 2=> dis<=dos;
when 3=> dis<=tres;
when 4=> dis<=cuatro;
when 5=> dis<=cinco;
when 6=> dis<=seis;
when 7=> dis<=siete;
when 8=> dis<=ocho;
![Page 11: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/11.jpg)
when 9=> dis<=nueve;
when 10=> dis<=cero;
when 11=> dis<=uno;
when 12=> dis<=dos;
when 13=> dis<=tres;
when 14=> dis<=cuatro;
when others=> pd<="1111";
end case;
when md3=>
pd<="1101";
case saldo is
when 0=> dis<=cero;
when 1=> dis<=cero;
when 2=> dis<=cero;
when 3=> dis<=cero;
when 4=> dis<=cero;
when 5=> dis<=cero;
when 6=> dis<=cero;
when 7=> dis<=cero;
when 8=> dis<=cero;
when 9=> dis<=cero;
when 10=> dis<=cero;
when 11=> dis<=cero;
![Page 12: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/12.jpg)
when 12=> dis<=cero;
when 13=> dis<=cero;
when 14=> dis<=cero;
when others=> pd<="1111";
end case;
when md4=>
pd<="1110";
case saldo is
when 0=> dis<=cero;
when 1=> dis<=cero;
when 2=> dis<=cero;
when 3=> dis<=cero;
when 4=> dis<=cero;
when 5=> dis<=cero;
when 6=> dis<=cero;
when 7=> dis<=cero;
when 8=> dis<=cero;
when 9=> dis<=cero;
when 10=> dis<=cero;
when 11=> dis<=cero;
when 12=> dis<=cero;
when 13=> dis<=cero;
when 14=> dis<=cero;
![Page 13: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/13.jpg)
when others=> pd<="1111";
end case;
end case;
else
case actual1 is
when cd1=>
pd<="0111";
case cam is
when 0=> dis<=cero;
when 1=> dis<=cero;
when 2=> dis<=cero;
when 3=> dis<=cero;
when 4=> dis<=cero;
when others=> pd<="1111";
end case;
when cd2=>
pd<="1011";
case cam is
when 0=> dis<=cero;
when 1=> dis<=uno;
when 2=> dis<=dos;
when 3=> dis<=tres;
when 4=> dis<=cuatro;
![Page 14: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/14.jpg)
when others=> pd<="1111";
end case;
when cd3=>
pd<="1101";
case cam is
when 0=> dis<=cero;
when 1=> dis<=cero;
when 2=> dis<=cero;
when 3=> dis<=cero;
when 4=> dis<=cero;
when others=> pd<="1111";
end case;
when cd4=>
pd<="1110";
case cam is
when 0=> dis<=cero;
when 1=> dis<=cero;
when 2=> dis<=cero;
when 3=> dis<=cero;
when 4=> dis<=cero;
when others=> pd<="1111";
end case;
end case;
![Page 15: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/15.jpg)
end if;
end PROCESS mostrar1;
end Behavioral;
ASIGNACION DE PINES PARA TARJETA COOLRUNNER II
![Page 16: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/16.jpg)
NET "clk" LOC = "P38" ;
NET "dis<0>" LOC = "P56" ;
NET "dis<1>" LOC = "P53" ;
NET "dis<2>" LOC = "P60" ;
NET "dis<3>" LOC = "P58" ;
NET "dis<4>" LOC = "P57" ;
NET "dis<5>" LOC = "P54" ;
NET "dis<6>" LOC = "P61" ;
NET "m1" LOC = "P142" ;
NET "m2" LOC = "P139" ;
NET "m3" LOC = "P136" ;
NET "mos<0>" LOC = "P3" ;
NET "mos<1>" LOC = "P68" ;
NET "mos<2>" LOC = "P69" ;
NET "mos<3>" LOC = "P10" ;
NET "pd<0>" LOC = "P126" ;
NET "pd<1>" LOC = "P128" ;
NET "pd<2>" LOC = "P129" ;
NET "pd<3>" LOC = "P130" ;
NET "reset" LOC = "P124" ;
Análisis
![Page 17: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/17.jpg)
El primer análisis que se debe hacer respecto a la programación y el funcionamiento físico de este es la asignación de pines en la tarjeta coolrunner ya que de acuerdo al programa que se realizó se utilizaron se utilizaron los módulos que están asignados con el nombre J1 Y J2 es decir que toda la conexión respecto a lo que tenga que ver con la expendedora se realizara de este par de módulos.
Procedimiento
Después de realizar la respectiva programación de cada uno de los componentes se declararon tres pulsadores y un diodo led donde:
m_1: $100
m_2: $200
m_3:$500
Led: Gaseosa o Refresco
Posterior a ya saber qué es esto se debe saber que el costo de cada bebida es de $1000 de acuerdo a este se lleva a “ingresar las monedas” por medio de los pulsadores en el momento que se llegue a $1000 pesos sin importar el orden de monedas y cantidad, la maquina al detectar los $1000 encenderá el led haciendo referencia de que salió la bebida y el cambio respectivo se mostrara en los displays, así se lleva a cabo cada proceso de solicitud de gaseosa.
Sustentación
En el momento de presentar como sustentación se pidió que la representación de cada una de las monedas se hiciera por leds asignándole a cada moneda un led. Ejemplo:
Led 1: $100
Led 2: $200
Led 3: 500
![Page 18: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/18.jpg)
El fin de este es que cuando se arrojen las vueltas se identifique de que valor es la moneda que devuelve es decir sean las vueltas $300 mostrar el led que identifica $200 y $100.
Simulaciones en el programa de ISE con monedas de $100, $200, $500.
MONEDA DE $500
MONEDA DE $200
![Page 19: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/19.jpg)
![Page 20: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/20.jpg)
MONEDA DE $100
Conclusión
![Page 21: Expendedora de Gaseosas](https://reader036.fdocuments.us/reader036/viewer/2022062302/5695d3d41a28ab9b029f547a/html5/thumbnails/21.jpg)
La máquina expendedora funciono de la forma que pedía el profesor devolviendo las vueltas de acuerdos a los leds y las entradas usadas como pulsadores.
Se demostró buen funcionamiento durante la sustentación y se cumplió el objetivo principal.