Derin Darbe Sumo Robot Projem

Sumo robot bitmiş haliyle iki ultrasonik sensörü yanlarda Sharp sensörler

Derin Darbe Sumo Robot

Eski bir proje.. Yeni canavar projeler karşısında pek şansı olmayacağı için 2009’da emekli ettim. Aşağıdaki yazı temel olarak 2008’de yazılmıştır.

Projeyi geliştirirken Japon sumo robotlarının videolarını izledim, nasıl bu kadar hızlı olabildiklerini, keskin dönüşleri nasıl gerçekleştirdiklerini düşündüm.  Ve Derin Darbe doğdu :) Önünde 2 Ping Ultrasonik sensörü yanlarda Sharp kızılötesi sensörleri ve 2 kontrast sensörü 6 Faulhaber motoru ve 12 piliyle karşınızda Derin Darbe;)

 

Gövde
Robotun gövdesi 6 motoru devreleri ve 12 pili alabilecek kadar geniş pratik kullanımlı ve en uygun şekilde olmalıydı. İlk başlarda kartondan ve forex’ten gövde tasarımları yaptım. Robotun yükskeliğinin 6 cm olmasını düşünmüştüm ama sonra 8 cm’in daha iyi olacağını düşündüm. Gövde de ince aliminyum kullanmadım. Robotun şasisinde ön taraftaki eğik düzlem dışında 2mm’lik demir plaka kullanıldı.

Gövde  Aluçlar Makina şirketinin yardımlarıyla yapıldı. Yoğun işleri arasında bana ayırdıkları zaman ve yardımları için teşekkür ederim :) 2mm metal (sac) plaka lazer kesimle sol resimdeki gibi kesildi. Sonra büküm işlemi ve kaynaktan sonra sağlam bir şasi oldu. Ön eğik düzlemin hafif kavisiyle rakibi kaldırması daha kolay..

Gövde üst kapak ve ana gövde olmak üzere 2 parçadan oluşuyor. Ön taraftaki eğik düzlemi sonradan kaynakla ana gövdeye birleştirdim.

Robot bittiğinde yaklaşık 250 gr ağırlık fazlası vardı (Toplam kütle 3 kilogramı geçiyordu). Ve Derin Darbe Gravyer versiyonu doğdu..:) ,Robotun alt ve yan panellrinde bolca delik açtım.

Sumo robot delikli gövde

Robotu hafifletmek için üstten ve alttan bir miktar delik deldim.

Bir sumo robotun en önemli kısımlarından biri eğik düzlemidir. Çünkü eğik düzlem sayesinde robotunuz, rakip robotun altına girebilir; böylece ittirmesi için gereken kuvvet çok daha azalır. Gövde yapılırken eğik düzlemin zemine olabildiğinde yakın olmasını istemiştim. Ama proje bittiğinde öndeki eğik düzlem yerden 1-2 mm yüksekte kaldı.  Bende robotun ön tarafına çok ince yay çeliği plakası (harç karıştırmak için kullanılan boyacısı malası levhalarından) yapıştırdım. Yapıştırma işlemi çok sağlam olmalıydı, metal epoksi kullandım.

Pil Yuvaları

Robot toplam 12 pille çalışıyor. Daha önceki sumo projemde olduğu gibi batarya yaptırmak istemedim. 12 pili robota bağlamak için 3 tane kapaklı pil yuvası kullandım.

Pil yuvalarının ikisini kapağın alt tarafına epoksi ile yapıştırdım. Diğer pil yuvasıysa motorların arasına dik olarak giriyor. Kapaktaki 2 pil yuvası arasında güç anahtarı bulunuyor.

 

Voltaj Regülatörü

Robotta tek güç kaynağı ve tek bir voltaj regülatörü kullandım. Herhangi bir elektriksel gürültü oluşmadı. 14,4 V’u 5V’a indirmek için LM2937 (7805 benzeri bir entegre) kullandım.

Voltaj regülatörü çok ısınıyordu bende ram soğutucu aluminyum heatsinklerden kullandım. Soğutucu aliminyum yüksek olduğundan 7805 entegresinin sırtına taktığımda kapağın kapanmasını engelliyordu bende ön tarafa taktım.

 Faulhaber Dc Motorlar

Sumo robotumda Alman malı Faulhaber marka motorları kullandım. Motorlar yüksüz çalışmada yalnızca 9MA çekiyorlar. Çünkü bu motorların üretim teknolojileri diğer sıradan motorlara göre farklı. Bu motorlar coreless DC motor olarak geçiyor yani motorların merkezlerinde bobinin sarıldığı demir bir çekirdek yok. Motorun merkezinde neodmiyum-alnico mıknatıs var. Bobin bu mıknatısın dış kısmında duruyor. Standart motorlardaysa bobin merkezdedir ve mıknatıs da bobinin çevresindedir.

Faulhaber motorların diğer bir üstün tarafı içindeki armatürün (bobini) 5 kutuplu olmasıdır. Normal orta kaliteli çin motorları 3 kutupludur. Kutup sayısı arttıkça motorun hassasiyeti artar. 3 kutuplu bir motorun içinde ayrı 6 bobin (3’ün 2’li permütasyonları) vardır. 5 kutuplu bir motorda 20 bobin (5’in 2 ‘li permütasyonları) vardır. Bu da 3 kattan  fazla hassasiyet demektir ve buna ek olarak motor hızla döndüğünden her  bobinde daha az süre kalır az akım çekmesinde bu da bir etkendir.

Motorlarla ilgili Pdf’ler:  Motor Kısmı // Dişli kutusu kısmı

Faulhaber Motorların Teknik Özellikleri
Motor Model No 2233F012S
Motor gücü> 3,66W
ÇAlışma Voltajı 12V
Yüksüz Akımı 9mA !!!
Rpm (devir/dakika) 495 rpm @ 12V
Tork 40 oz/inç
Şaft kesit çapı 4 mm
Motor Çapı 24 mm
Motor uzunluğu (şaft dahil) 73 mm
Dişli Kutusu Model No 22/2K (bilya destekli)
Düşürme Oranı 17,2 : 1
Dişli Kutusu Verimliliği %81!! (eski sumo robotum bariyerdeki dişli kusu verimi %57 )
Motor Ağırlığı (Dişli kutusuyla birlikte) 133 gr

faulhaber dc motor 6 adetSol Fotoğraf: Her motor gövdeye 3 vidayla bağlanıyor. Sağ üst köşedeki ilk motorun vidaları gevşemiş olduğundan ekseni kaymış gözüküyor.

En altta gözüken devreyse arka kontrast sensörü devresi. Büyütmek için fotoğraf üstüne tıklayınız.

 

 

 

Sorunlu Motorlar

Motorları alırken çalışan 2 motor, eve geldiğimde çalışmadı. yani 6 motorumun 2’sinde arıza vardı. Motorlara elektrik verdiğimde bir yöne rahatça dönebilirken elektriği terslediğimde motorlar dönmüyor kısa devre oluyorlardı. Bu sorunun nedeni motorların fırçalarının aşınmış olmasıydı. Motorları aldığım elektronikçide yedek motor kalmamıştı. Ben de bir kaç denemeden sonra motor fırçalarını kendim yaptım. Tabi fabrika çıkışlı gibi olmadı ama çalışıyor :)

[box color=”white” icon=”chart_pie”](2011 Yazı Güncellemesi)

Bu projenin motorları çok kaliteli ve verimli olmasına rağmen günümüzdeki projelere kıyasla çok zayıf kalıyor.. Şöyle ki.. Bu projenin her bir motorunun gücü 3,66 watt, son projem Füzyon sumo robotun her bir motorunun gücüyse 150 watt! Arada 40 kat enerji farkı var. Bu 40 kat farka karşılık Derin darbe’de etkin olduğu 2007 – 2008 yıllarında oldukça iyi maçlar çıkardı.[/box]

Bu fotoğraf 2008 yada 2007’de yarışma öncesi son gün çekildi.

Pil sayısını 12’den daha da hızlandırmak için 16’ya çıkardım.

Ön tarafta iki adet Ping ultrasonik sensör yer alıyor.

Fotoğrafta tam gözükmese de yanlardaki minik pencerelerden de sharp GP2Y0D340K sensörler dışarı bakıyor.

 

 

 

 

Robotun Motor Kontrol Devresi

Motorlar çok düşük akım çektiklerinden basit bir l293 devresi kullandım (Her bir motor boşta 9ma zorlanmada birkaç 100ma çekiyor, L293 entegresinin her bir kanaldan verebileceği çıkışsa 600ma). L293’ün enable giriş uçlarını da (1 ve 9 numaralı pinler)  MCU’ya (PIC 16F628A) bağladım. Enable girişlerine pwm uygulanınca motorun hızını ayarlayabiliyorum.

Tekerlekler

Tekerleklerin dış malzemsi olan pembe lastikleri karaköyde bir plastik conta satıcısından aldım. Bulabildiğin en yumuşak lastiklerdi. Genellikle hepsi çok sert siyah lastikelrdi. PEmbe olmasa belki daha iyi olurdu ama… :) Belkide robotun ismini Pembe tekerlekli şirin robot olarak değiştirmeliyim :) Tekerleklerin merkezindeki demir bloklar torna makinasında yapıldı. Motor şaftını (milini) tutmak için demir blokların bir tarafından merkeze doğru M4’lük setuskul (başsız) vida geçiyor. Her bir tekerin 78 gr ağırlığı var. ve 6 adet tekerlek toplam 468 gr yapıyor. Tekerleklerin sürtünmesindne çok memnun değilim ama maalesef bulabildiğim en uygun tekerlekler. Tekerlekler 4cm çaplı.

Robotun Hızı

12V’ta 495 rpm, 15V ta 618 devir dakika , saniyede yaklaşık 10 devir
Teker çapı : 4cm
Teker çevresi = 4 x Π ≈ 12,5 cm
Hız = teker çapı x saniyedeki devir  = 12,5 x 10 =125 cm/sn
Robotun formüğllere göre hızı yaklaşık 125cm/sn ama  bu değer motorlar yüksüzken sağlanabilecek bir değer. Robotun gerçek hızıysa saniyede 80 cm civarı. Çünkü her bir motora 500 gr ağırlık düşüyor ve dohyonun (sumo ringi) çapı robotun maksimum hıza ulaşmasına engel oluyor. Ekleyeceğim her ek pil robota bir miktar daha hız ve güç olarak geri dönecek. Tabi daha yüksek voltaj motorların yanmasına neden olabilir. Uygulamadan önce bazı hesaplamalar yapmak lazım :)

Sensörler

Robotun rakip robotu bulması için ve sumo ringinden (dohyodan) çıkmaması için bazı sensörler kullanması gerekir.

Kontrast Sensörleri

Kontrast sensörlerinde daha önceki sumo robot projem Bariyerdeki gibi QRD1114 optoküplör sensörü kullandım.

Robotumun ilk kez katıldığı, MEB Robotik yarışmasında (2007) robot çok hızlı olduğundna sumo ringinde kalamıyor. Ringten düşüyordu. Çünkü kontrast sensörleri ve tekerlekler arasındaki uzaklık çok azdı. Bu nedenle tepki süresi robotun hızına göre yavaş kalıyordu. Odtü robot günlerine kadar eski delikten 2 cm önde yeni bir delik açtım.

 

Kızılötesi Rakip Algılama Sensörleri

Rakip algılama sensörlerinde önde 2 adet Sharp GP2Y0D340K  adlı kızılötesi sensör kullandım.  Bu sensörler standart haldeyken 40cm’e kadar engel algılama yapabiliyorlar.

Kullanımları oldukça basit sağda yer alan devreyi yaptım kondansatör değeir 1uF ile 10uF arasında olabilir. Direnç değriyse 1ohm ile 10 ohm arasında olabilir. Direnç değeri 1 ohm iken sensör kızılötesi ışın yollarken 300ma akım çekiyor; direnç değeri 2 ohm olduğundaysa sensör 146ma akım çekiyor. Ama direnç değeri 1 ohmken sensör maksimum performansa ulaşıyor.

Direncin daha büyük değerlerinde sensörün görüş mesafesi düşüyor.  Bu akım değerleri mikrosaniyeler içinde oluştuğundan voltaj regülatörü pek etkilenmiyor. Sensörün standart çalışma akım değeriyse 30 ma.

 Ping Ultrasonik sensörler

Rakibi algılamak için robotun ön tarafında kullandığım ultrasonik sensörler Parallax firmasının ürettiği Ping adlı sensörlerdir. Sensör modüllerinden artı eksi ve sinyal kabloları olmak üzere 3 kablo çıkıyor.  Bağlantı şeması için sağdaki grafiğe tıklayınız.

Ultrasonik Sensör Ping))) ile ilgili Pdf:  Ping-ultrasonik-sensor.pdf

Ultrasonik Sensörlerin Teknik Özelikleri

 Sensör Menzili  2cm-3m !!
 Besleme Voltajı  5 VDC
 Besleme Akımı 30 ma (35 ma max)
Sensör Frekansı 40 khz (200 mikrosaniyelik atımlarla)
Giriş Tetik  Özelliği Pozitif TTL sinyal , 2 us ile 5 mikrosaniye arasında değişebilir.
Eko sinyali Pozitif TTL sinyal ,115 us ile 18,5 milisaniye arasında değişebilir. MCU bu süreyi okuyarak uzaklık tayini yapıyor.
 Ebatlar  22mm en x 46 mm boy x16 mm derinlik

Parallax ultrasonik sensörler Sensörün menzili 3 metre; bu mesafe bir sumo için gereğinden fazla bende programında 120 cm ile sınrılandırdım.

Sumo robotun programını sayfanın en altında görebilirsiniz.

 

 

MCU (Micro Controlling Unit – Robotun Beyni)

Robotta MCU olarak PIC 16F28A kullandım. İlk ürettiğim kartta 16F877A mcu’sunu kullanıyordum. Ama kartta bazı sorunlar çıktı ve bende kolaya kaçtım. Planladığım amaçlar için aslında 16F628’in giriş çıkışları yetmiyor.

Kullandığım pinler:
– 4 pin motor kontrol
– 4 pin Kontrast sensörleri
– 1 pin buzzer (ses çıkışı)
– 2 pin yan Kızılötesi sensörleri
– 2 pin ön Ultrasonik sensörleri

Sumo Robotun Programı

Program Picbasic’de yazılmıştır.

[togglebox state=”closed” head=”Program için tıklayınız.” ]

‘Derin Darbe Avci Program
‘Robots101.com
@ dEVICE pic16F628A
@ Device INTRC_OSC_NOCLKOUT
@ device MCLR_off
‘a2 sagir
‘a3 solir
CMCON = 7
x var word
y var word
t var word
p var word
z var byte
v var byte
‘***********************
CMCON = 7
RawToCm         CON     2257                    ‘ 1 / 29.034 (with **)
IsHigh          CON     1                       ‘ for PULSOUT
IsLow           CON     0
Pingb7         var     portb.7
pinga1 var             porta.1
tetikzaman   con   1
rawDist         VAR     Word                    ‘ raw measurement
cmsag              VAR     Word
cmsol              VAR     Word
‘***********************
output 0  ‘ Motorlar
output 1
output 2
output 3
output 4
‘***********************
input porta.2 ‘Kizilotesi
input porta.3
‘***********************
input porta.6  ‘kontrast
input porta.7
‘***********************
sayim:
for x = 1 to 5
high portb.4
low portb.0
low portb.1
low portb.2
low portb.3
pause 500
low portb.4
low portb.0
low portb.1
low portb.2
low portb.3
pause 500
next
‘***********************
basla:
sonarsol:
GOSUB Get_Sonarsol                            ‘ get sensor value
cmsol = rawDist ** RawToCm

sonarsag:
GOSUB Get_Sonarsag                            ‘ get sensor value
cmsag = rawDist ** RawToCm

anadongu:
if cmsag<60 And cmsol<60 then ileri
if cmsag<60 And cmsol>60 then sagus
if cmsag>60 And cmsol<60 then solus
if porta.6 = 1 and porta.7 = 1 then geri
if porta.6 = 1 and porta.7= 0 then solkon
if porta.7 = 1 and porta.6 = 0 then sagkon
if porta.2 = 1 and porta.3= 0 then solir
if porta.3 = 1 and porta.2 = 0 then sagir
low portb.0
high 1
low portb.2
High 3
goto basla
‘***********************
ileri:
low portb.0
high 1
low portb.2
High 3
goto basla
‘***********************
geri:
high portb.0
high portb.1
high portb.2
high portb.3
pause 300
for y = 1 to 50
low portb.0
high portb.1
high portb.2
high portb.3
pause 10
next
goto basla
‘***********************
solkon:
high portb.0
high portb.1
high portb.2
high portb.3
pause 300
for t= 1 to 20
if porta.2=0 and porta.3=1 then sagir
if porta.2=1 and porta.3=0 then solir
high portb.0
high portb.1
low portb.2
high portb.3
pause 10
next
goto basla
‘***********************
sagkon:
high portb.0
high portb.1
high portb.2
high portb.3
pause 300
for p = 1 to 20
if porta.2=0 and porta.3=1 then sagir
if porta.2=1 and porta.3=0 then solir
low portb.0
high portb.1
high portb.2
high portb.3
pause 10
next
goto basla
‘***********************
solir:
low  portb.0
high portb.1
high portb.2
high portb.3
goto basla
‘***********************
sagir:
high portb.0
high portb.1
low  portb.2
high portb.3
goto basla
‘***********************
Get_Sonarsag:
Pingb7 = IsLow                                  ‘ make trigger 0-1-0
PULSOUT Pingb7, tetikzaman
PULSIN  Pingb7, IsHigh, rawDist                 ‘ measure echo pulse
rawdist = rawdist * 5                    ‘ convert to uS
pause 1                        ‘ remove return trip
RETURN
‘***********************
Get_Sonarsol:
Pinga1 = IsLow                                  ‘ make trigger 0-1-0
PULSOUT Pinga1, tetikzaman                      ‘ activate sensor
PULSIN  Pinga1, IsHigh, rawDist                 ‘ measure echo pulse
rawdist = rawdist * 5
pause 1                       ‘ remove return trip
RETURN
‘***********************
Sagus:
high portb.0
high portb.1
low  portb.2
high portb.3
Goto basla
‘***********************
solus:
low  portb.0
high portb.1
high portb.2
high portb.3
goto basla
‘***********************[/togglebox]

Ultrasonik Sensörün Test Programı

Kodlar pic 16F628A’ya göre yazılmıştır. Sensör b portunun 7. pinine bağlıdır. ve Portb.4’e bağlı bir buzzer var. Programda algılanan mesafelere göre buzzerdan farklı frekanslarda sesler çıkıyor.

[togglebox state=”closed” head=”Ultrasonik test programı için tıklayınız” ]

‘Robots101.com
@ dEVICE pic16F628A
@ Device INTRC_OSC_NOCLKOUT
@ device MCLR_off 

CMCON = 7
RawToCm         CON     2257                    ‘ 1 / 29.034 (with **)

IsHigh          CON     1                       ‘ for PULSOUT
IsLow           CON     0
Ping         var     portb.7
tetikzaman   con     1
rawDist         VAR     Word                    
cm              VAR     Word

basla:
  GOSUB Get_Sonar                            ‘ get sensor value
  cm = rawDist ** RawToCm                     ‘ convert to centimeters
  pause 60
  if cm>140 then Muzik1
  if cm < 140 and cm> 20 then  muzik2
  if cm<20 then muzik3
  goto basla

Get_Sonar:
  Ping = IsLow                                  ‘ make trigger 0-1-0
  PULSOUT Ping, tetikzaman                   
  PULSIN  Ping, IsHigh, rawDist           ‘ measure echo pulse
  rawdist = rawdist * 5                  
  pause 1                         
  RETURN

Muzik1:
FREQOUT PORTB.4, 200,8000             ‘ 8khz’lik frekansta 200 milisaniyelik sinyal
goto basla

Muzik2:
FREQOUT PORTB.4, 200,4000            ‘ 4khz’lik frekansta 200 milisaniyelik sinyal

goto basla
Muzik3:
FREQOUT PORTB.4, 200,500              ‘ 500hz’lik frekansta 200 milisaniyelik sinyal

goto basla[/togglebox]

Robot Videoları

Daha çok video youtube kanalımda bulunmaktadır.

 

 

3 Yorum
  1. […] sensörlerde de mevcuttur. Sharp GP2Y0D340KKendi Robotlarımda da bolca kullandığım (Bknz: Derin Darbe) bir kızılötesi sensörüdür. Uygun fiyatlı (6$ – 15$ arası) bir sensördür.Algılama […]

  2. Profile photo of mustafa cinali
    mustafa cinali 6 sene önce

    Sa kardeş çok güzel olmuş ama bi konu danışıcam sana mesaj atar mısın bana ?

Kimliğiniz ile giriş yapın

veya    

Ayrıntılarınızı unuttunuz mu?

Create Account