Elektrotekno.com Ana Sayfa || Pic ve diğer işlemci ve denetleyiciler ile yapılmış devreler, projeler || Robot projeleri (robot projects)


FPGA ile Sumo robot uygulaması

Açıklama:
Elektrik, Elektronik, Haberleşme ve Otomasyon konularının ağırlıklı olarak konuşulduğu, tartışıldığı ve bilgi paylaşımı yapıldığı forumumuza hoşgeldiniz.
Şu an Tamamlanmış Elektronik Devreler, Projeler kategorisi içerisindeki Robot projeleri (robot projects) forumunda bulunuyorsunuz.
Bu sayfada üyelerimizin "PIC16F628 ile Çizim Robotu Tasarımı" konusundaki problem, görüş ve önerileri okuyabilir ayrıca konu hakkındaki doküman, resim, proje, devre ve programlara ücretsiz olarak ulaşabilirsiniz. Üye olduktan sonra sizler de konu hakkında sorular sorabilir ya da yorum ve paylaşım yaparak birikimlerinizi aktarabilirsiniz.
Forumdan tam olarak yararlanabilmek için üye olmayı unutmayınız!
Kayıt: 06 Şub 2006
Mesajlar: 22

Offline
egemenak
Tarih: 07 07 2008 16:09

Slm arkadaşlar ekte xilinx spartan 3e fpga' i ile yapmış olduğum sumo robot uygulamasını bulabilirsiniz. Uygulama için gereken bütün dosyalar ekte mevcuttur.

--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity SSMACH2 is
port (sh,solcny,sagcny :in std_logic; -- system input to start the system
solmi,solmg,sagmi,sagmg:out std_logic; -- system output
clk, reset : in std_logic); -- clock and reset inputs
end SSMACH2;
-- purpose: Implement main architecture for SSMACH2
architecture BEHAVIOR of SSMACH2 is
type STATES is (ilkhareket,solgeridon,duzgit,saggeridon,wait1,wait2,wait3,wait4,solgeridon2,solgeridon3,saggeridon2,saggeridon3); -- possible states
signal PRESENT_STATE : STATES; -- present state
signal x,y,z,a:integer;
begin -- BEHAVIOR
-- purpose: Main process
process (clk, reset)
begin -- process

-- activities triggered by asynchronous reset (active high)
if reset = '1' then
PRESENT_STATE <= ilkhareket; -- default state
solmi<='0';
solmg<='1';
sagmi<='1';
sagmg<='0';
-- activities triggered by rising edge of clock
elsif clk'event and clk = '1' then

PRESENT_STATE <= ilkhareket; -- default state
case PRESENT_STATE is

when ilkhareket =>
solmi<='0';
solmg<='1';
sagmi<='1';
sagmg<='0';
if sh='1' and solcny='1' and sagcny='1' then PRESENT_STATE<= duzgit;
elsif sh='1' and solcny='1' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='1' and solcny='0' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='0' and solcny='1' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='0' and solcny='0' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='1' and solcny='0' and sagcny='1' then PRESENT_STATE<=solgeridon;
elsif sh='0' and solcny='0' and sagcny='1' then PRESENT_STATE<=solgeridon;
elsif sh='0' and solcny='1' and sagcny='1' then PRESENT_STATE<= ilkhareket;
end if;

when duzgit =>
solmi<='1';
solmg<='0';
sagmi<='1';
sagmg<='0';
if sh='1' and solcny='1' and sagcny='1' then PRESENT_STATE<= duzgit;
else PRESENT_STATE<= ilkhareket;
end if;

when solgeridon =>
solmi<= '0';
solmg<= '1';
sagmi<= '0';
sagmg<= '1';
x<=25000000;
PRESENT_STATE<= wait1;
--wait for 1000ms;

when solgeridon2=>
solmi <= '0';
solmg <= '1';
sagmi <= '0';
sagmg <= '0';
y<=12500000;
PRESENT_STATE<= wait2;
--wait for 500ms;

when solgeridon3=>
if sh='1' and solcny='0' and sagcny='1' then PRESENT_STATE<=solgeridon;
elsif sh='0' and solcny='0' and sagcny='1' then PRESENT_STATE<=solgeridon;
else PRESENT_STATE<= ilkhareket;
end if;

when saggeridon=>

solmi<='0';
solmg<='1';
sagmi<='0';
sagmg<='1';
z<=25000000;
PRESENT_STATE<= wait3;
--wait for 1000ms;
when saggeridon2=>
solmi<='0';
solmg<='0';
sagmi<='0';
sagmg<='1';
a<=12500000;
PRESENT_STATE<= wait4;
--wait for 500ms;

When saggeridon3=>
if sh='1' and solcny='1' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='1' and solcny='0' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='0' and solcny='1' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='0' and solcny='0' and sagcny='0' then PRESENT_STATE<= saggeridon;
else PRESENT_STATE<= ilkhareket ;
end if;

When wait1=>
if (x>0) then
x<=x-1;
PRESENT_STATE<= wait1;
else PRESENT_STATE<= solgeridon2;
end if;
When wait2=>
if(y>0) then
y<=y-1;
PRESENT_STATE<= wait2;
else PRESENT_STATE<= solgeridon3;
end if;
When wait3=>
if (z>0) then
z<=z-1;
PRESENT_STATE<= wait3;
else PRESENT_STATE<= saggeridon2;
end if;

When wait4=>
if (a>0) then
a<=a-1;
PRESENT_STATE<= wait4;
else PRESENT_STATE<= saggeridon3;
end if;
end case;
end if;
end process;
end BEHAVIOR;

1 Kullanıcı bu konu için endelo46 arkadaşımıza teşekkür ettiler




FPGA ile Sumo robot uygulaması


Benzer Konular

- 8051 robot projesi yardım!!

- 8051 ile İpe Tırmanan Robot (Tarzan)
- fpga ile pci i/o kart tasarımı
- Pic ile ultrasound uygulaması
- çapraz buton uygulaması
- at89c52 ile yapılan yürüyen ışık uygulaması
- at89c52 ile yapılan step motor kontrol uygulaması
- at89c52 mikroişlemcisi ile yapılan 500ms aralıklarla yanan led uygulaması
- at89c52 mikroişlemcisi ile yapılan bir buton bir led uygulaması

- Robot Kol Projem

- Xilinx FPGA - nasıl temin edebilirim?

Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Türkiye | Ads by Google Adsense | Design by Crazy Bat based
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72