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 "robot kol projesi" 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;

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




FPGA ile Sumo robot uygulaması


Benzer Konular

- Işık İzleyen Robot Projesi

- Pic ile hesapmakinesi uygulaması
- Robot Kol Projem
- Xilinx FPGA - nasıl temin edebilirim?
- pic ve plc uygulaması...
- 4-20 ma akımın pic ile uygulaması
- 8051'le yapılacak robot acil yardım!
- DİGİTEST - seriport haberleşmesi ve fpga (elektronik staj defteri)
- lazer diyot matrisli kayan yazı uygulaması

- Çizgi izleyen robot yardımı

- 16f84 ile lcd uygulaması yardım!

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