ROBOTUMUZ 3 BÖLÜMDEN OLUŞUYOR: Mekanik aksam, elektronik devre ve yazılım.



Benzer belgeler
Yaptığımız aracın yere çizilen bir çizgiyi tanıması ve bu çizgiyi takip etmesi.

Çizgi İzleyen Robot Yapımı

DC motorların sürülmesi ve sürücü devreleri

ROKART VER 3.1 AYRINTILI MONTAJ KILAVUZU MALZEME LİSTESİ. DEVRENİN MONTAJINDA KULLANILAN ARAÇLAR Lehim teli watt havya Yankeski Maket bıçağı

5.BÖLÜM ÇİZGİ İZLEYEN ROBOT

ELEKTRİK ELEKTRONİK MÜHENDİSLİĞİ SAYISAL TASARIM LABORATUVARI DENEY 6 ANALOG/DİGİTAL DÖNÜŞTÜRÜCÜ. Grup Numara Ad Soyad RAPORU HAZIRLAYAN:

YILDIZ TEKNİK ÜNİVERSİTESİ MAKİNE FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ MEKATRONİK MÜHENDİSLİĞİNE GİRİŞ DERSİ. Proje Adı Proje No

Sabit Gerilim Regülatörü Kullanarak Ayarlanabilir Güç Kaynağı

BAŞKENT ÜNİVERSİTESİ MAKİNE MÜHENDİSLİĞİ BÖLÜMÜ MAK 402 MAKİNE MÜHENDİSLİĞİ LABORATUVARI DENEY 11 ELEKTRİK MOTOR TORKUNUN BELİRLENMESİ

PIC 16F877A ile DA MOTOR KONTROLLÜ ROBOT UYGULAMASI DC MOTOR CONTROLLED ROBOT APPLICATION WITH USING PIC 16F877A

SEYYAR BALANS MAKİNESİ KULLANIM KILAVUZU

OTONOM ÇĐM BĐÇME MAKĐNESĐ GELĐŞTĐRĐLMESĐ DEVELOPING OF AUTONOMOUS LAWN MOVER. Danışman: Prof.Dr. Koray TUNÇALP, Marmara Üniversitesi Đstanbul

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları / Dr. Serkan DİŞLİTAŞ


1970 yılında ise şimdilerde kullandığımız her iki tarafada yöne hareket edebilen mouse un patentini almıştır.

YAKLAŞIM SENSÖRLERİ (PROXIMITY) Endüktif, Kapasitif ve Optik Yaklaşım Sensörleri

6. Osiloskop. Periyodik ve periyodik olmayan elektriksel işaretlerin gözlenmesi ve ölçülmesini sağlayan elektronik bir cihazdır.

BESLEME KARTI RF ALICI KARTI

idea Kontrol Kartı (idea Board jv2.1) Kullanım Kılavuzu

Robot Bilimi. Robot Aktüatörler (Çıkış Elemanları, Uygulayıcılar) Öğr. Gör. M. Ozan AKI. r1.0

YAPILAN İŞ: Sayfa 1. Şekil 1

EAGLE KÜTÜPHANE OLUŞTURMA

ÇİZGİ İZLEYEN ROBOTU YAPIMI

BAŞKENT ÜNİVERSİTESİ MAKİNE MÜHENDİSLİĞİ BÖLÜMÜ MAK 402 MAKİNE MÜHENDİSLİĞİ LABORATUVARI DENEY 11 ELEKTRİK MOTOR TORKUNUN BELİRLENMESİ

5.35. BASKI DEVRE MONTAJ OTOMASYONU

YILDIZ TEKNİK ÜNİVERSİTESİ MAKİNE FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ MEKATRONİK MÜHENDİSLİĞİNE GİRİŞ DERSİ. IŞIĞA DÖNEN KAFA Proje No:2

Proje Teslimi: güz yarıyılı ikinci ders haftasında teslim edilecektir.

O-bOt ile Uygulamalı Deneyler

PIC PROGRAMLAMA STEP MOTOR SÜRÜCÜ VE KONTROL AMAÇ NEDİR? Unipolar Step Motorlar. Uç TESPİTİ NASIL YAPILIR?

SSM - 4 ORANSAL SERVOMOTOR SSM 4 TANITIM BİLGİLERİ :

Deney 1: Saat darbesi üretici devresi

Robotik AKTUATÖRLER Motorlar: Çalışma prensibi

Çizgi İzleyen Robot Yapımı ve Teknik Bilgiler

Örnek. int analogpin = 3; int val = 0; void setup() { Serial.begin(9600); } void loop() { val = analogread(analogpin); Serial.

Uygulama kağıtları ve Kısa Sınav kağıtlarına; Ad, Soyad, Numara ve Grup No (Ör: B2-5) mutlaka yazılacak.

DERS NOTLARI. Yard. Doç. Dr. Namık AKÇAY İstanbul Üniversitesi Fen Fakültesi

KONTROL VE OTOMASYON KULÜBÜ

4-Deney seti modüler yapıya sahiptir ve kabin içerisine tek bir board halinde monte edilmiştir.

6. DENEY Alternatif Akım Kaynağı ve Osiloskop Cihazlarının Kullanımı

ADC Devrelerinde Pratik Düşünceler

5. (10 Puan) Op-Amp devresine aşağıda gösterildiği gibi bir SİNÜS dalga formu uygulanmıştır. Op-Amp devresinin çıkış sinyal formunu çiziniz.

ZENER DİYOTLAR. Hedefler

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

ABSOLUTE ROTARY ENKODER Çok Turlu Absolute Enkoder, Manyetik Ölçüm GENEL ÖZELLİKLER

A.Ü. GAMA MYO. Elektrik ve Enerji Bölümü ÖLÇME TEKNİĞİ 5. HAFTA

DOKUMANLAR

Şekil 1. Darbe örnekleri

WT-02 HP KABLOSUZ ODA TERMOSTATI KULLANMA KILAVUZU

DENEY FÖYÜ 4: Alternatif Akım ve Osiloskop

MLS-310 MANYETİK LİNEER ENCODER SİSTEMİ

Proje Teslimi: güz yarıyılı ikinci ders haftasında Devre ve Sistem Analizi Dersinde teslim edilecektir.

ZM-2H606 İki Faz Step. Motor Sürücüsü. Özet

RS-RK01/02 rsbot Gezer Robot Kit KULLANICI KILAVUZU

TRİFAZE VOLTAJ REGÜLATÖRLERİ

Alıcı Devresi; Sinyali şu şekilde modüle ediyoruz;

YILDIZ TEKNİK ÜNİVERSİTESİ MAKİNE FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ MEKATRONİK MÜHENDİSLİĞİNE GİRİŞ DERSİ. Işığı Takip Eden Kafa 2 Nolu Proje

YILDIZ TEKNIK ÜNİVERSİTESİ ELEKTRİK - ELEKTRONİK FAKULTESİ ELEKLTRONİK VE HABERLEŞME MÜHENDİSLİĞİ BÖLÜMÜ

Pringles Kutusundan Adım Adım WI-FI Kablosuz Anten Nasıl Yapılır?

5.45. KONNEKTÖRLERE KABLO EKLEME OTOMASYONU

Sensörler. Yrd.Doç.Dr. İlker ÜNAL

UYGULAMA # 4:ENSTRUMANTASYON KUVVETLENDĐRĐCĐSĐ VE SAĞ BACAK SÜRÜCÜSÜ

Elektronik kireç önleme sistemi


HD710 ISI KONTROLLÜ RÖLE MONTAJ KILAVUZU MALZEME LİSTESİ

GENEL KULLANIM İÇİN SABİT AKIM LED SÜRÜCÜLERİ. Uygulama Notları ACG-D350/500/700/1000 UYGULAMA NOTLARI. 1. LED adedi

ZM-2H504 İki Faz Step. Motor Sürücüsü. Özet

IR Modülü. Kart Özellikleri Çalısma Frekansı: 38KHz Mesafe: 6 Metre Çalısma Voltajı: 3.3-5V Kart Boyutları: 20 mm x 20 mm

Çizgi İzleyen Robot Tasarımı

Fatih Üniversitesi Elektrik ve Elektronik Mühendisliği Bölümü EEM 316 Haberleşme I LAB SINAVI DARBE GENLİK MODÜLASYONU (PWM)

2019

Servo Motor. Servo Motorların Kullanıldığı Yerler

Adım Adım Windows 2000 Server Kurulumu 11 Cuma, 08 Eylül :32 - Son Güncelleme Cumartesi, 12 Eylül :45

İçerik. Ürün no.: MLC500T EX2 Güvenlik ışık perdesi verici

ÖZET. Basit Makineler. Basit Makine Çeşitleri BASİT MAKİNELER

BİLGİSAYAR BİLİMİ DERSİ ROBOT PROGRAMLAMA ÜNİTESİ

BQ Modbus Analog Giriş Kartı 6 Kanal PT100 - PT1000. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

EEM 311 KONTROL LABORATUARI

Gösterge. Açıklama. Genel. Takometre. Kalibrasyon

ZM-2H2080 İki Faz Step. Motor Sürücüsü. Özet

PLUSSMART HT 350 ODA TERMOSTATI KULLANIM KILAVUZU

ENGELDEN KAÇARAK SESE YÖNELEN PALETLĐ ROBOT PROJESĐ ROBOTVOICETRACKTOWARDSFLEEFROM OBSTACLE. Ömer AYAN ÇANKIRI KARATEKĐN ÜNĐVERSĐTESĐ, ÇANKIRI

9. Güç ve Enerji Ölçümü


Nem ve Sıcaklık Sensörleri XH10P - XH20P - XH15P - XH25P GENEL TANIMI

DENEYLERDE KULLANILACAK LABORATUVAR EKİPMANLARI

UPSLIFT ASANSÖR KURTARMA GÜÇ MODÜLÜ KULLANIM KILAVUZU

SAKARYA ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRİK ELEKTRONİK MÜHENDİSLİĞİNE GİRİŞ LABORATUARI

T.C. RC SERVO MOTOR KONTROLÜ

Temel Mantık Kapıları

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş

MULTİMETRE. Şekil 1: Dijital Multimetre

BLGM423 Gömülü Sistem Tasarımı

ARTOS7F1 ARIZA TESPİT CİHAZI VE PC OSİLOSKOP 7 FONKSİYON 1 CİHAZDA

DENEY NO 3. Alçak Frekans Osilatörleri

İçerik. Ürün no.: ODSL 96K/ S12 Optik mesafe sensörü. Teknik veriler Elektrik bağlantısı Kumanda ve gösterge Aksesuarlar

İçerik. Ürün no.: ET5I.3/4P Enerjik ışık sensörleri

5.13. SONDAJ MAKİNESİ PROJESİ

Hazırlayan: Tugay ARSLAN

ELE 201L DEVRE ANALİZİ LABORATUVARI

ELEKTRİKSEL EYLEYİCİLER

Transkript:

5 Kasım 2006 ÇĐZGĐ ĐZLEYEN ROBOT TANIM Çizgi izleyen robot, herhangi bir renkteki zemin üzerine farklı renkte çizilmiş bir çizgiyi almaçlarıyla takip ederek ilerleyen bir robottur. GĐRĐŞ Merhaba arkadaşlar, çizgi izleyen bir robotun yapımıyla meşgul olmuş biri olarak çalışma boyunca edindiğim tecrübeleri, bu çalışmayı nasıl yaptığımı, nelere dikkat edilmesi gerektiğini bu yazıya aktarmaya çalışacağım. Ancak robot bitti daha geliştirilemez diyemeyiz tabi ki, nitekim biz de şu sıralar robotu geliştirmeye hızlandırmaya, daha kıvrak virajlar aldırmaya çalışıyoruz. Bu yüzden yazı boyunca bazı kısımların yazıya sonradan eklendiğine şahit olabilirsiniz, bu da nerden çıktı demeyiniz! Bu yazıyı yazmaya karar vermeden önce her şey bittikten sonra yazayım diye düşündüm ancak sonra sıcağı sıcağına yazmanın daha verimli olacağına karar verdim(zaten hiçbir zaman her şey bitmiyor), bu yüzden bu yazı bir sürece yayılarak yazılmıştır, sonradan eklediğim kısımlar, güncellemeler için elimden geldiğince konu bütünlüğünü bozmamaya çalıştım. Hatalarımız olduysa affoluna! Yazımız daha çok yeni başlayan arkadaşlara yönelik olacaktır. Çünkü bu çalışmaya başlarken ben de yeni başlamış biriydim. Kısaca kendi çalışmamın genel seyri üzerine bilgi vereyim: Bu çalışma yaklaşık 2 ayıma yayıldı, 2 ay boyunca birkaç sefer Karaköy e malzeme almaya gittim, internetten çeşitli araştırmalar yaptım, forumlarda konuyla ilgili sorulmuş soruları inceledim, arkadaşlarımdan yardım aldım. Çalışma boyunca sadece çizgi izleyen robot yapımına odaklanmadım, haricinde uygulamalar geliştirdim, farklı şeyler öğrendim. Bu olması gereken bir şeydi, eğer sadece çizgi izleyen robot yapımına odaklanılırsa iyi kötü giden bir robot kısa zamanda yapılabilir, bu zor bir şey değil ancak bizlerin(yeni başlamış bireylerin) amacı bu çalışmada olabildiğince çok şey öğrenmek, bu yüzden robotumuzun daha düzgün gidebilmesi için araştırma geliştirme yapmak yeni başlamış olsak da yerinde olacaktır. Nelerle başladım: Bu çalışmaya niyetlenmeden önce çalışmamızın temel taşlarından biri olan mikro denetleyicilerin kullanımı hakkında pek az bilgim vardı. Bu yüzden ilk olarak basit mikro denetleyici uygulamaları yaptım, yanıp sönen led, düğme kontrollü led gibi. Ardından dc-motor hız denetimi, kızılötesi led ve fototransistörlü almaç kullanarak siyah-beyaz renk algılama devresi kurup denemeler yaptım. Böylece adım adım robotumuzun parçalarını ayrı ayrı çalıştırmış oldum. Biz bu yazımızda mikro denetleyicilerle nasıl çalışırız veya yeni başlamak isteyen arkadaşlar nasıl başlayacak sorularına girmeyeceğiz, dileyen arkadaşlar PIC programlamaya kolay ve hızlı giriş nasıl yapılır sorusuna kendimce cevap vermeye çalıştığım PIC Programlamaya Nasıl Başlamalı! yazısını okuyabilirler. Bağlantı adresi: (http://www.yucomp.org/icerik.asp?yer=gst&t=2&id=105) Bu yazıda neler bulacaksınız? Bu yazı yeni başlamış arkadaşlara çizgi izleyen robot yapımını anlatmayı, en azından bu konuda ve temel bazı konularda fikir sahibi olmalarını amaçlıyor. Đlerleyen bölümlerde örnek bir robota ait devre şeması, yazılım ve resimler olacaktır. Bu Robotun Çizgi Đzleme Mantığı Nedir? Bu çalışmada robotumuza çizgiyi takip ettirebilmek için almaçları optik almaçlar olan basit bir denetim yapacağız. Bu yöntem bir robota çizgi takip ettirmenin en kolay yöntemlerinden biridir. Alternatif ve daha zor olan bir yöntem ise yoldan kamerayla görüntü alıp alınan görüntünün çeşitli tekniklerle(image processinggörüntü işleme) işlenmesi ve robotun buna göre yönlendirilmesi yöntemidir. Bu yöntem birinci yönteme göre daha yavaş çalışır.

ROBOTUMUZ 3 BÖLÜMDEN OLUŞUYOR: Mekanik aksam, elektronik devre ve yazılım. 1) Mekanik Aksam Mekanik aksam robotumuzun mekanik parçalarından oluşur; motorlar, tekerlekler, gövde gibi. Çizgi izleyen robotumuzun mekanik tasarımı aslında gayet kolay ancak biz yeni başlayan arkadaşlar için tasarım konusunda karşımıza çıkan asıl ve en büyük mesele uygun malzeme temini ve atölye gereksinimi dir. Bazı arkadaşlar bu meseleyi oyuncak arabalardan bozarak yaptıkları gövdeleri ve onlardan çıkan motorları kullanarak aşıyorlar ancak bu durumda ne yazık ki istedikleri özgün tasarımı yapamamış oluyorlar. Eğer malzeme temin etmeniz sizin için çok zorsa(malzeme listesi ve temin yerleri ilerleyen bölümlerde verilecektir) ve bir günlük de olsa kesme, delme gibi işlemler yapacağınız atölye ve araç-gereç tahsis edemiyorsanız siz de bu arkadaşlar gibi yapabilirsiniz, hiç yoktan iyidir:). Eğer tasarımı kendiniz yapabiliyorsanız robotunuzun sürüş sistemine göre bir tasarım yapmak durumundasınız. 2 tip sürüş sistemi vardır: I) Diferansiyel Sürüş Sistemi II) Direksiyonlu Sürüş Sistemi Diferansiyel sürüş sistemi dönme hareketinin bir tarafın daha hızlı veya daha yavaş gitmesiyle sağlandığı sürüş sistemidir. Örneğin tanklarda diferansiyel sürüş sistemi vardır. Direksiyonlu sürüş sistemini tahmin etmişsinizdir, bu sürüş sistemi bildiğimiz bir arabanın sürüş sistemi gibi direksiyon yardımıyla tekerleklere yön verilmesiyle dönme sağlanan sürüş sistemidir. Eğer oyuncak araba kullanmayı düşünüyorsanız muhtemelen direksiyonlu sürüş sistemini kullanacaksınız ancak oyuncak tanklarda 2 tarafta da motor olduğu için diferansiyel sürüş sistemi kullanılabilir. Bizim örnek robotumuz diferansiyel sürüş sistemi kullanıyor. Bu yüzden biz de diferansiyel sürüş sistemine göre anlatacağız. Tasarım aşamasında karşılaştığımız ikinci mesele ise uygun motor seçimidir. Aradığımız motor çok yavaş olmasın, çok büyük olmasın ve torku yeterli olsun isteriz. Ancak ne yazık ki istediğimiz özelliklerde motor bulmak zor bir iştir. Motorlar hakkında sıkça duyduğumuz terimler vardır; servo, adım motor, basit dc motor, devri düşürülmüş motor gibi. Şimdilik bizim servolarla ve adım motorlarla işimiz yok, ancak olamaz değil, gelişmiş uygulamalarda tabi ki bu motorlar da kullanılabilir. Bizim seçimimiz basit dc motorlarla devri düşürülmüş motorlar arasında olacaktır. Aslında devri düşürülmüş tabiri genel bir tabirdir ancak devri düşürülmüş denilince akla devri düşürülmüş dc motor gelir. Devir düşünce ne oluyor birazdan göreceğiz ama önce dc motora kısa bir bakış yapalım. Dc motorlar doğru akımla(direct current) çalışan elektrik motorlarıdır, hepimizin oyuncak arabalardan bildiği basit motorlardır. Dc motorun çalışma prensibi gayet basittir, manyetik alan içerisinde üzerinden akım geçen bir tele(veya tel demetine) kuvvet uygulanır(bu kuvvetin yönü sağ el kuralı ile bulunabilir). Her devirde akımın yönü değiştirilir ve devir daim sağlanır. Bu arada tersten geldiğimizde, yani manyetik alan içerisinde bir teli hareket ettirdiğimizde telde bir akım oluşur, bu da dinamoların çalışma prensibidir. Konuyu fazla dağıtmadan motor seçimimize dönelim, ben motor seçerken birçok motor denedim, şunu gördüm ki basit dc motorlar yalın haliyle(devri düşürülmemiş) robot sürme işlemi için uygun değil, çünkü bu motorlar çok hızlı dönüyorlar ve torkları çok düşük, yani kolayca duruyorlar, zora*gelmiyorlar. TORK: Dönen bir motor mili için dönme eksenine h kadar uzaklıktaki bir noktadan dönmeyi ancak durdurabilen bir dik F kuvvetini varsaydığımızda, F x h motorumuzun torku olur. Birimi N.m(Newton x metre)dir.

Sürme işlemi için tork değeri yol tutma, yokuş çıkabilme kabiliyetini ifade eden bir değerdir. Örnek:Motorumuzun torku 5 Nm ise motorumuza 0. 05 m yarıçaplı tekerlek bağladığımızda tekerleğin yüzeyine uygulanacak 100N luk dik kuvvet motorumuzu durdurmaya yetecektir veya torku 10Nm olan bir motora 1 m uzunluğunda ağırlıksız bir çubuk bağladığımızda motorumuzun torku çubuğun ucuna uygulanan 10N luk dik kuvveti dengelemeye yetecektir. Kendi ekseni etrafında dönen bir cisim için: P= ω x T Güç=Açısal Hız x Tork eşitliği vardır. Eşitliğimize baktığımızda; verdiğimiz güç sabit olduğunda torku arttırabilmemiz için açısal hızı düşürmemiz gerektiğini görürüz. Bunu da dişli kullanarak yapabiliyoruz. Bildiğiniz gibi küçük yarıçaplı bir dişli büyük yarıçaplı bir dişliyle geçiştiği zaman büyük yarıçaplı dişlinin açısal hızı küçük yarıçaplıya göre daha düşük olur. Bu prensibe göre özel hazırlanmış dişli kutuları vardır, mesela giriş tarafından saniyede 300 devir yapan mil varken çıkış tarafında saniyede 30 devir yapan bir mil bulunan dişli kutusu torku 10 katına çıkarmış demektir. Oyuncak arabaların içinde birkaç dişliden oluşan dişli kutuları vardır. Oyuncak arabalarda da bu sayede devrin düşürülüp torkun arttırıldığını görebilirsiniz. Devri düşürülmüş motorların tek kaynağı oyuncak arabalardaki motor-dişli sistemleri değil tabi ki, motorlara entegre edilmiş dişli kutularıyla istenilen oranda devri düşürülmüş(redüktörlü) farklı özelliklerde motorlar piyasada mevcut, fiyatları 15 YTL den başlıyor. Ben de kullandığım motorları piyasadan temin ettim. Aşağıda dişli kutusu entegre edilmiş devri düşürülmüş bir motor görüyorsunuz. Devri Düşürülmüş Motor Benim kullandığım devri düşürülmüş motorlar dakikada 120 devir(120 rpm=120 revers per minute) yapıyor. Bu normal bir hız, ancak hızlı veya yavaş olması tercihinize kalmış bir durumdur. Aşağıda benim

kullandığım devri düşürülmüş motorlardan birini görüyorsunuz. Gördüğünüz gibi motorumuz pervaz biçiminde alüminyum plakaya küçük vidalarla tutturulmuş vaziyette. Bunu motoru kasamıza sağlıklı bir şekilde monte edebilmek için yaptık. Motorun kasada kararlı bir şekilde durması atölye imkanı olmayan arkadaşlar için sıkıntı oluşturacaktır. Motorların üzerinde monte etme işlemi için 2 adet vida deliği bulunur. Bu delikler sayesinde motorunuzu herhangi bir yüzeye monte edebilirsiniz. Bu durumda sağlıklı bir motor yerleştirme işlemi için robotunuzun kasasının yan taraflarında bir yüzey bulunması gerekiyor ya da benim yaptığım gibi motorunuzu önce pervaza sonra da pervazı kasanıza monte edebilirsiniz. Bizim kullandığımız alüminyum pervaz(aşağıda): Böylece motor seçim ve nasıl monte edebiliriz konusunu kapatıyoruz, netice olarak motorlarımız devri düşürülmüş motor(redüktörlü) olacak ve kasamızı motorları monte edebilmemiz için yaz yüzeyleri olacak şekilde tasarlayacağız. Eğer piyasada diferansiyel sürüş sistemine göre tasarlanmış uygun bir oyuncak bulursanız o tasarım diferansiyel sürüş sistemli çizgi izleyen robot için ideal bir tasarım olabilir, oyuncaklarda devir-hız dengesi iyi ayarlanmış oluyor. Yani iyi hız ve ona yetecek kadar tork. Bulamazsanız veya ben kendi tasarımımı yaparım diye düşünebilirsiniz, nitekim biz kendimiz yapalım dedik. Aşağıda kendi imkanlarımızla yapabileceğimiz genel bir kasanın şematik görüntüsünü göstermeye çalıştım. Açılan delikler yerleştirilecek motorların milleri ve motorlar üzerinde bulunan vida delikleri içindir.

Genel bir kasa görüntüsü Bunlar da bizim kullandığımız kasanın resimleri (aşağıda): (Not: Kasamız çok geniş olduğu için biz kasamızı daralttık, şu anda resimdeki halinin 3/5 i genişliğinde) Kasa için kullanacağımız malzeme türü çok da önemli değil, çok ağır olmadığı sürece kolay işlenebilen malzemeler kullanılabilir, alüminyum, kontra plak, plexyglass malzemeleri kullanılabilir. Biz plexyglass kullandık. Eğer alüminyum kullanırsanız motorları monte edeceğiniz yüzeyleri sadece bükme işlemi ile elde edebilirsiniz.aşağıda gösterildiği gibi

Alüminyumu düzgünce delmek için matkap kullanmak zorundasınız ancak plexyglass veya herhangi bir plastik malzemeyi delmek için lehim aletinizi(havya) kızdırıp kullanabilirsiniz, çok düzgün bir delik olmasa da atölye imkanı olmayan arkadaşların çok işine yarayacaktır.(lehim aletini kullanarak delecekseniz, pense yardımıyla tuttuğunuz bir çiviyi ısıtarak delmek istediğiniz noktaya bastırmak daha uygun olabilir) Kasa konusunda dikkat edilecek başka bir husus ise kasanızın genişliğidir, eğer kasanızın genişliği çok fazla ise robotunuz dar virajları almada zorlanacaktır, eğer virajın eğrilik yarıçapı robotunuzu eninden küçükse robotunuzun o virajı alması imkansız olacaktır.(dönme sırasında bir tekerleği geri yönde döndürme imkanı olduğu takdirde daha dar virajlar alınabilir). Bu yüzden robotunuzun genişliğinin çok fazla olmamasına dikkat ediniz. Öte yandan robotun genişliğine göre almaç yerleşim aralıklarının da uygun olması gerekir. Bu uzunlukların oranları robotun gidişini doğrudan etkileyen bir faktördür. Bu yüzden almaçları robota yerleştirmeden önce 2 almacı çalışır hale getirdikten sonra portatif bir pist üzerinde denemeler yapmakta fayda var(voltmetre kullanarak almaçların en iyi hangi uzaklıkta okuduğunu ve aralarına ne kadar mesafe koymanız gerektiğini bu şekilde bulabilirsiniz ). Aşağıda her ne kadar merkezdeki tekerleği hiç dönmese de fazla geniş olduğu için virajı alamayan şematik bir robot görüyorsunuz. 3. pozisyon da almaçlar çizginin dışında kalıyor. Ancak şimdilik robot yarışmalarında 30 cm lik yarıçapa sahip virajdan daha dar viraj yok. Ancak olmaz değil Tasarımınız çok orantısız olmadığı sürece böyle bir engelle karşılaşacağınızı zannetmiyorum. Mekanik aksamda karşımıza çıkan bir diğer mesele tekerlek meselesidir. Uygun çapta ve kaymayan bir tekerlek! Tekerlek edinebileceğiniz en güzel kaynaklar oyuncak araba satan dükkanlardır. Eğer çapı uygun bir tekerlek bulduğunuzu düşünüyorsanız ancak kayganlık problemi varsa kaymayan bir malzemeyle tekerleği sıkıca çevreleyip, yapıştırarak kaymaz ve uygun büyüklükte tekerlek elde etmiş olursunuz. Oyuncak arabaların haricinde; plastik şişe kapaklarını veya sair yuvarlak cisimleri uygun malzemeyle çevreleyip tekerlek yapmak diğer alternatifler arasında, ancak bu şekilde yaptığınız tekerleklerin motorlara monte edilmesi sırasında canınız sıkılabilir! Diğer tekerlek temin edebileceğiniz yerler: Bauhaus, nalburiyeler. Uygun büyüklükte ve kaymayan tekerleğiniz olduysa yolumuza devam edelim Tekerleklerin motorlara tutturulması Mekanik kısmın en riskli bölümü, en garanti çözüm: Uygun tekerleği ve motorları temin ettikten sonra bir tornacının yardımıyla tekerleği motorun miline tutturmak(kuplaj). Ancak tornacıyı nerden bulacağız diyorsanız diğer yöntemlerle tekerleğinizi mile tutturabilirsiniz. Eğer tornacıya gitmediysek en genel uygulanan yöntem: Tekerleğin tam merkezine motor mil çapına yakın büyüklükte bir delik açmak(zorlandığında mil içeri girebilecek kadar), varsa ve küçükse genişletmek(delik daha büyükse yandık teknik imkanlarınız varsa ve sorunu halledebiliyorsanız ne ala ama yoksa başka bir tekerlek arayabilirsiniz), sonra kuvvetli bir yapıştırıcıyı hem mile hem deliğe sürdükten sonra bekletmeden mili tekerleğe sokmak.

Tüm bunları yaptık ancak hâlâ kendi ayakları üzerinde duran bir kasamız yok çünkü sadece iki tekerleği olan bir yapımız var, ben 2 tekerlekli kasayı dengede tutarım diyorsanız ayrı(!) ancak tutamayacak arkadaşlar için tahmin edebileceğiniz gibi kasanın ön veya arka kısmının yere sürtünmesi robotun hareketini ciddi şekilde etkileyecektir. Diferansiyel sürüşlü çizgi izleyen robotlarda genellikle tekerlekleri bir tarafa daha yakın koyarlar ve kalan kısmın ortasına sarhoş tekerlek yerleştirirler(sarhoş tekerlek, her yöne gidebilen tekerlek). Tabi siz hem öne hem arkaya koyabilir veya tamamen farklı bir yapı geliştirebilirsiniz. Sarhoş tekerleğin görevini yapacak bir yapıyı kendiniz geliştirebilir, farklı cisimler kullanabilirsiniz veya piyasadan sarhoş tekerlek temin edebilirsiniz. Şu anda ben de bu bölüme yerleştireceğim ideal yapıyı bulamadım, kozmetik ürünlerin üst kısmında bulunan rulo veya esansların üst kısmında bulunan rulo da beklediğim performansı göstermedi! Piyasada bulunan en küçük sarhoş tekerleği de büyük olduğu için kullanmadım, şimdilik sürtünme katsayısı düşük cisimlerle idare ediyoruz ancak arayışımız sürüyor ve arayışımız bitti, nalburlardan temin edebileceğiniz misket bilye! Çok güzel çalışıyor, resmi aşağıda. Biraz yağlı olduğu için temiz yüzeylerde kullanmak daha uygun olabilir. Resim http://www.robbot.org/default.aspx?pid=15488 adresinden alınmıştır. Böylece mekanik aksam kısmında anlatacaklarımızı bitirmiş bulunuyoruz, son olarak kullandığımız malzemeleri söylememiz gerekirse: Temin edebileceğimiz uygun büyüklükte bir kasa, 2 adet devri düşürülmüş dc motor, uygun büyüklükte vida ve somunlar. Mekanik aksamda kullandığımız malzemeler: 2 adet devri düşürülmüş dc motor, 16 x 9 x 0.5 cm plexyglass(veya ahşap malzeme), 7.5 cm 2 adet L metal(motorları üzerine yerleştirdiğimiz köşeli metaller), 2 adet tekerlek, 1(veya 2) adet misket bilye, vida ve somunlar Bu malzemeleri nerden temin edebiliriz? Eğer Đstanbul da yaşıyorsanız devri düşürülmüş motorlar için Karaköy de bulunan Selanik elektronikçiler çarşısı; kasanız, vida-somunlar için yine Karaköy de bulunan Perşembe Pazarı olarak adlandırılan malzemeciler çarşısı fazlasıyla yeterli olacaktır. Tekerlekleri yazımızın ilk bölümünde konuşmuştuk ve misket bilyenin nalburlarda bulunacağını söylemiştik. L metaller Karaköy de Perşembe Pazarı nın arka taraflarında Arap Camii adlı caminin hemen arkasındaki bir alüminyumcudan veya Bauhaus lardan temin edilebilir. Karaköy den alışveriş yapma imkanınız yoksa devri düşürülmüş motorları nerden temin edebileceğiniz konusunda ne yazık ki fikrim yok 2) Elektronik Aksam ve Yazılım(Kodlar CCS C Dilinde yazılmıştır.) Kullanacağımız temel malzemeler: 1 PIC 16F877 Mikro denetleyici 1 L293D veya L298 Motor sürücü entegresi 1 LM 7805 5V voltaj regülatörü CNY 70 almaçlar(farklı sayıda olabilir) Devrede kullanılacak direnç, kapasite gibi elemanları saymıyorum. Devre şemalarında görebilirisiniz. Elektronik aksam bölümü de en az mekanik aksam bölümü kadar önemli bir bölüm, robotumuzun en çok sorun çıkaran ve en titiz davranmamız gereken bölümü. Kullanacağımız başlıca elemanlar PIC mikro denetleyici, L293D motor sürücü devresi, CNY 70 almaçlar, 7805 voltaj regülatörü. Bu elemanlar içerisinde mikro denetleyici ayrı bir yer tutmaktadır çünkü sistemin tüm kararlarını o vermektedir, diğer elemanları o yönetecektir. Mikro denetleyiciler çok küçük birer bilgisayardırlar, içerlerinde mikro işlemci, hafıza, ram ve giriş çıkış birimlerini bulundururlar ve programlanıp çeşitli sistemlerde çeşitli amaçlar için kullanılabilirler.

Dünyada mikro denetleyici üreten farklı firmalar var, PIC model ismiyle başlayan ve kendilerinden sadece PIC kelimesiyle bahsettiğimiz mikrodenetleyicileri üreten Microchip firması bunlardan bir tanesi. Biz de bu çalışmamızda Microchip firmasının üretimi olan mikro denetleyicilerinden olan PIC 16F877 yi kullanacağız. Neden 16F877 sorusunun hemen verebileceğimiz 2 cevabı var; birincisi ADC özelliğinin olması, ikincisi 2 adet PWM çıkışı bulunduruyor olması. Bu kavramların ne anlama geldiğini ilerleyen bölümlerde göreceğiz. Kullandığımız entegrelerin(özellikle mikro denetçimizin) iç yapısına yeterince vakıf olmadığım için elektronik aksam bölümü arzulandığı gibi pek bilimsel olmayabilir. Bu bölümde bu entegreleri genel olarak tanıyıp çalışmalarımızda nasıl kullanacağımızı işlemeye çalışacağım. Her şeyden önce, bir elektronik devre nasıl geliştirilir sorusuna kendimizce cevap vermeye çalışalım. Devremizi gerçeklemeden önce ne yapmak istediğimizi iyi bilmeliyiz sonra devremizi deney tablası(breadboard - protoboard) adı verdiğimiz tablaya dikkatle kurarız. Devre kurup çalıştırmak isteyen arkadaşlarda her şeyden önce en az bir tane deney tablası bulunmalıdır, çünkü tüm denemeler deney tablası üzerinde yapılır. Deney tablası, adından da anlaşıldığı gibi üzerinde hızlı bir şekilde denemeler yapabileceğimiz bir çalışma tahtasıdır, örnek olması açısından üzerine bir devre kurulmuş hali aşağıda: Resim http://www.teknomerkez.com/makale.asp?konu=222 adresinden alınmıştır. Devreyi deney tablasına kurmamızın amacı devrenin bir provasını yapmaktır, uzmanı olduğunuz devreler için deney tablasında deneme yapmadan hemen baskı devre yapabiliriz. Baskı devre! Yeni bir ifade Denememizi yaptıktan sonra devremizi kalıcı bir ortama almak isteriz(aynı zamanda çalışma tahtamızı diğer çalışmalar için boşaltmış oluruz), bu kalıcı ortam delikli tahta(pertinax) olabileceği gibi daha güvenli ve kalıcı olan baskı devre de olabilir. Bu arada çalışma tahtamızdan kalıcı ortama geçişte karşımıza çıkan ilk olay lehim yapmak oluyor. Hem delikli tahta için hem de baskı devre için lehim yapmamız gerekir, delikli tahtaya geçiş biraz zahmetli ancak teknik imkan gerektirmeyen bir işlemdir, aşağıda delikli tahtaya kurulmuş basit bir devre görüyorsunuz:

Resim http://www.dddac.de/pics/ddpres10.jpg adresinden alınmıştır. Ve bir başkası: Resim http://astro.corlan.net/fwheel/fwheel_pcb_front.jpg adresinden alınmıştır. Baskı devre yapımı ise(kendimiz yapmak istediğimizde) başta devremizin baskı devre çizimi, lazer yazıcıdan çizimin alınması, ütü basılması ve belli oranlarda karışmış kimyasalların oluşturulması ve birtakım malzemelerin temin edilmesi gibi işlemler gerektirir. Aşağıda baskı devre haline getirilmiş ve devre elemanları yerleştirilip lehimlenmiş bir devrenin arkadan resmi görülmektedir: Resim http://www.photoesque.com/hapb/hapb2_files/backpcb.jpg adresinden alınmıştır.

ve önden bir baskı devre: Resim http://www.janson-soft.de/pic/pic-brenner.jpg adresinden alınmıştır. Burada resimlerle örneklemeye çalıştığımız baskı devreler(son iki resim) el yapımı baskı devrelerdir(yukarıda saydığımız gibi yapımı bazı teknik imkanlar gerektiren), yoksa elektronik cihazlarda görmeye alışık olduğumuz yeşil plakalara kurulu devreler de birer baskı devredir. Baskı devre konusunu uyarımızı yapmadan geçmeyelim: Kendi imkanlarımızı kullanarak baskı devre yapmak istediğimizde son aşama olan bakırı çözme işleminde son derece dikkatli olmalısınız. Bunu bir not halinde yazarsak: Plaketi, hazırladığınız çözeltiye attığınızda açığa çıkan gaz tehlikelidir, farkında olmadan soluyabilirsiniz. Oluşan gaz yoğunluğuna göre gözle görünmeyebilir ve soluduğunuzu hissetmeyebilirsiniz. Bu işlemi mutlaka açık havada yapınız ve çözünme esnasında plaketten uzak durunuz. Soluduğunuz takdirde boğazınız ve ciğerleriniz tahriş olur, ileri olmayan vakalarda ilaçlı tedavisi oluyor. Bakır elementinin insan sağlığına zararlı olduğunu da unutmayınız. Artık devrenizi delikli tahtaya almak veya baskı devreye almak sizin kararınız, tabi bunların ikisini de yapmadan devrenizi deney tablanız üzerinden de çalıştırabilirsiniz(geçici bir çözüm). Ancak deney tablalarının sık sık problem çıkarıp, sebebi anlaşılamayan çalışma bozukluklarına sebep olabileceğini de bildirelim. Devrelerle ilgili bu küçük bilgilerden sonra kendi devremize gelelim. Kullanacağımız elemanları niçin kullandığımızı ve onların özelliklerini ifade etmeye çalıştıktan sonra devremizi oluşturacağız. 1) Mikro denetleyici Yukarıda da bahsettiğimiz gibi mikro denetleyici küçük bir bilgisayardır, çalışması içindeki yazılım tarafından kontrol edilir. Biz bu çalışmada Microchip üretimi olan PIC 16F877 kullanmayı düşünüyoruz. Neden 16F877? Çünkü 16F877 de ADC özelliği ve 2 adet PWM bulunmaktadır. 40 Pinli mikro denetleyicimizin pin diagramı: (Devremizi kurarken bu diagrama ihtiyacımız olacak çünkü hangi pin nerde ezbere bilemeyiz, bu diagram bu mikro denetleyicinin datasheet inden alınmıştır, datasheet lere üretici firma www.microchip.com dan ulaşabilirisiniz veya daha kolayı google ile ;) doğrudan ulaşabilirsiniz )

Mikro denetleyicimizin pinlerine gelen analog bir sinyalin dijital bir değerdeki karşılığına çevirme işlemi analog dan dijitale çevirme işlemidir. Bu işlemi gerçekleştiren yapıya da analogdan dijitale çevirici (analog to digital converter) kısaca ADC diyoruz. Analog dan Dijitale Çevirici ADC(Analog to Digital Converter) ADC özelliğini anlatmaya çalışalım: En dış daireden olayımızın içine doğru gelelim. PIC uygulamalarımızda mikodenetleyicimizin pinlerine 0 ile 5V arasında herhangi bir sinyal gelebilir-input olarak-. Gelen bu sinyal bizim için önemlidir, çünkü o sinyal bize bir haber getirmiştir ve gelen habere göre önceden yazmış olduğumuz kod bir karar verir ve mikro denetleyicimiz gereğini yapar. Peki gelen bu haberci sinyali ne kadar hassaslıkta okuyoruz? Eğer herhangi bir ekstra çaba göstermezsek PIC bu gelen sinyale bakacak ve eğer 3,5V tan yüksek ise gelen sinyali lojik 1, 3,5 V tan düşük ise gelen sinyali lojik 0 olarak yorumlayacaktır. 2 seçenek var: 0 veya 1, sizce bu haberci herhangi bir sistemi kontrol etmek için yeterli haberi size getiriyor mu? Göreceli bir soru! Sistem eğer çok basitse evet(ve göreceli bir cevap yakında anlaşılacak). Gelin buna bir örnek verelim: Hava sıcaklığına göre pencerelerinizin açıklığını ayarlayan bir sistem yapmak istiyorsunuz ve elinizdeki mikro denetleyici gelen haberci sinyali-yani input sinyalini diyebiliriz- eğer hava sıcaklığı 30 C dan yüksekse 1, düşükse 0 olarak yorumluyor. Ne kadar hassas bir kontrol yapabilirsiniz? Pencereleriniz için ideal bir açılma miktarı belirleyebilir misiniz? Şimdi de mikro denetleyicimizin ADC özelliğini kullanarak sıcaklık değerini her 5 C de bir ölçebileceğimizi düşünün, her 2 C de bir ve her 0.5 C de bir Đyi bir kontrol yapabilmek için her şeyden önce almaçlarımızdan gelen haberci sinyalimizi olabildiğince hassas okumalıyız. Ne kadar hassas okuyabilirsek o kadar iyi kontrol yapma imkanımız olur. Gelen sinyali daha hassas okumamızı sağlayan aracın ismi ADC, yukarıda da bahsettiğimiz gibi ADC özelliği tüm PIC lerde

bulunmamaktadır-16f877 yi tercih sebeplerimizden-. Bu özellik bulunmayan bir PIC de herhangi bir pine gelen sinyali okumak istediğimizde-örnek olarak pinimiz B5 pini olsun- yazmamız gereken kod: input(pin_b5); olacaktır. (Yazılan kodların CCS C dilinde olduğunu hatırlatmamıza gerek var mı?) Bu ifade b5 pinindeki 3,5V veya daha üstü bir sinyal için lojik 1; 3,5V un altındaki bir sinyal için lojik 0 değeri döndürecektir. Yukarda verdiğimiz örnekteki 30C den yüksek veya alçak bilgisi gibi. Bu hassasiyetteki bir algı nerde kullanılabilir? Eğer değişen bir olayın bizim için sadece açık veya kapalı-on/off- olma durumu önemliyse -veya olayımızda sadece açık kapalı durumu varsa- o zaman input(pin_b5) kodu bizim için yeterli olacaktır. Ancak biz yukarıdaki pencere örneğinde olduğu gibi olayımızdan olabilecek en fazla hassasiyette bilgi almak istiyoruz. Hava sıcaklığı 35,5 ise 35,5 olarak öğrenmek isteriz(30 dan yüksek olarak değil) ki penceremizi açısını ona göre ayarlayalım. Her şeyden önce bu hassaslıkta bilgi alabilmek için almacımız bu hassaslıkta ölçüm yapabiliyor olmalıdır, sonrasında iş almaçtan gelen sinyali değerlendirecek olan mikro denetleyicimize kalıyor. Bizim kullanacağımız almaçlar(cny 70) 0 ile 5 V arasında analog sinyal döndürdüğü için yeterince hassas. Bizim buradaki çabalarımız mikro denetleyicimizle hassas bir okuma yapabilmek için olacak. Bu çalışmada biz CNY 70 adlı, kızılötesi ışık yayan ve bu ışığın geri yansımasına göre çalışan bir almaç kullanacağız- almacımızı ileride daha detaylı tanıyacağız-. Almacımız beyaz renk üzerinde(çizgi üzerinde) 0V - 0 a yakın- döndürürken, tam siyah üzerinde idealde -yol üzerinde- 5V (pratikte 5 e yakın) sinyal döndürür. Bu iki renk arasında 0V ile 5V arasında değişen sinyaller döndürür. Almacımızın birinin çizgiye biraz yaklaştığını düşünelim ve döndürdüğü değer 4V olsun(5 ti 4 e düştü), biraz daha yaklaşsın döndürdüğü değer 3,7V e düşsün Eğer sinyalimizi yukarıda örneklediğimiz gibi okumaya kalkarsak robotumuzun bu hareketinden haberimiz olmayacak! Çünkü 5V, 4V, 3,7V değerlerinin hepsi lojik 1 olarak değerlendirilecektir. Ne zaman ki almacımız 3,5V veya daha altı bir değer döndürecek kadar beyaz üzerine gelecek robotumuzun çizgi üzerine geldiğinden o zaman haberimiz olacaktır. Bu kontrolü yaptığımızda robotumuzun hareketini geç algılamış olsak da onu geri döndürmek için geç kalmış olmayacağız-robotumuzun hızı çok fazla olmamak şartıyla- ancak robotumuz yalpa yalpa gidecek, biz bu çalışmada daha kararlı bir gidiş istiyoruz. O zaman sinyalimizin 5V dan 4V a veya 4V dan 3,7V a geçişlerinden bir şekilde haberdar olup, o esnada robotumuzu biraz döndürerek daha kararlı gitmesini sağlamalıyız! Peki ama nasıl haberdar olacağız? Sorumuzun cevabı ADC kullanarak. Buraya kadarki kısma kısa bir özet geçelim: PIC mikro denetleyicimizin pinlerine gelen sinyalleri 2 şekilde okuyabiliyoruz. Bunlardan birincisi bir satır kodla(input(pin_b5)) mümkün oluyor ve eğer sinyal 3,5 V dan yüksekse lojik 1 değilse lojik 0 döndürüyor. Đkincisi ADC kullanarak okumak, böylece sinyali daha hassas okuyabiliyoruz. ADC gelen analog bir sinyali sayısal bir değerine çevirir. Bizim kullanacağımız ADC 10 bitlik çözünürlüğe sahip yani gelen sinyali (0.5/1024)*giriş sinyal aralığı hassasiyette okuyabilir. ADC miz 10 bitlik çözünürlüğe sahip olduğundan onu 1024 tane aralığı olan bir çevirici gibi görelim, gelen sinyalin bu aralıklardan hangisine tekabül ettiğini bulur ve o değeri döndürür. ADC mizin nasıl bir iş çıkardığını bazı örnek input ve outputlarını vererek anlatmaya çalışmak daha iyi olabilir: 5V ADC 1024 3V ADC (3/5)*1024 = 614.4 2V ADC (2/5)*1024 3,67 ADC (3,67/5)*1024 3,4 ADC (3,4/5)*1024 3,2 ADC (3,2/5)*1024 1,2 ADC (1,2/5)*1024

0 ADC 0* 1024=0 Umarım yukarıdaki değerler ADC nin nasıl bir iş başardığı konusunda fikir vermiştir. ADC kullanımı için mikro denetçimizde bu iş için ayrılmış pinler vardır, yani her istediğimiz pin den ADC ile okuma yapamayız. Bunlar yanlarında AN yani analog yazan pinlerdir. Pin diagramında görülebileceği gibi:an0, AN1, AN7 pinlerinden sinyalimizi ADC ile okuyabiliriz. A3 pinine kadar AN ile A aynı giderken A4 pinin AN4 olmadığına dikkat ediniz. Bu zaman zaman gözden kaçabilir. ADC işlemini PIC e yaptırmak için yazmamız gereken kodlar şöyle olacaktır. Şunu da belirtelim, PIC in tüm portlarındaki(a, B, C ve D) pinlerden ADC ile okuma yapamayız. Bu amaç için sadece A portundaki pinleri kullanabiliriz. Kodumuzun ilk kısmında #device adc=10 //ADC 10-bit bildirimi int a; double b; //ADC ile gelen sinyali a değişkenine alacağız // 0-5 aralığına indirgeyeceğiz ADC ile okuyacağımız değer 0 ile 1024 arasında bir tam sayı olacağından okuduğumuz değeri integer bir değere atayabiliriz. Buraya kadar tamam, eğer bu değerin voltaj olarak karşılığını görmek istiyorsanız (0-5 V arasına indirgemek) gelen değeri 5/1024 ile çarpmak durumundasınız. Bulduğumuz yeni değer büyük ihtimalle küsürlü çıkacağından elde ettiğimiz yeni değeri double bir değişkende tutmalıyız. Bu çalışmada gelen işaretin gerçek değeri bizi ilgilendirmiyor(voltaj ölçümü yapmıyoruz).biz bu çalışmada 0-1024 arasında gelebilecek olan işareti 0-100 arasına indirgeyeceğiz(sanki % üzerinden değer alıyor gibi olmuş olacağız). Böylece istediğimiz bilgiyi(almaçlar ne kadar çizgi üzerinde=robotumuz ne kadar çizgi üzerinde) elde etmiş olacağız. Örnek: Gelen değer 100 ise almaç çizginin yüzde yüz üstünde(veya dışında) şeklinde Gelelim Analog okuma yapmak için yazmamız gereken asgari CCS C kodumuza: ******************************************** //***ADC nin ayarlanması*** setup_adc(adc_clock_internal); //internal clock setup_adc_ports(ra0_analog); //RA0 analog input //******************* set_adc_channel(0); //kanalı 0 a ayarla, çok kanallı adc okumak için yani birden çok pinden ADC okumak istediğimizde- kanal değiştirmemiz gerekecek. Bu çalışmada biz 2 pinden ADC okuyacağız(robotumuz 2 almaçlı olacak, bu sayı artırılabilir). Bu örnekte zaten tek kanallı olduğu için değiştirmemiz gerekmeyecek. Đlgili bildirimler CCS C nin kurulu olduğu dizinde Devices adlı klasörde bulunan kütüphane dosyalarında bulunmaktadır, bakmanızı tavsiye ederim. a=read_adc(); //koduyla voltaj değeri 1024 üzerinden okunur, a int türünden bir değişken ******************************************** Bu kodu olduğu gibi alıp derleyicinize aktarırsanız çalışmayacağını göreceksiniz. Burada sadece olayımızla ilgili olan kısımlarını verdim. Nasıl çalıştıracağınızı biliyor olduğunuzu varsayıyorum. Değişken direnç üzerindeki gerilimi ADC okuyan ve okuduğu değeri LCD ekrana yazan bir örnek uygulamanın CCS C kodu ve Proteus simülasyonu için www.fatiherdem.net/robot/adc.rar adresine bakınız. PWM(Pulse Width Modulation Darbe Genlik Modülasyonu)

PWM bir modülasyondur, bir kare dalga işaretinin 1 olduğu zamanların 0 olduğu zamanlara oranın değiştirilerek işaretin amaçlanan bir ortalama değere gelmesini sağlama işine darbe genlik modülasyonu diyoruz. Modüle edilen bu işarete de PWM işareti diyoruz. Biz bu modülasyonu nerde kullanacağız? Motor sürme işinde Tanımımız size çok şey ifade etmiyor, telaşlanmayınız. [Bu arada bazen işaret bazen sinyal diyorum, aynı anlama gelmektedir] Robotumuzu sürerken motorların hızlarını kontrol etmemiz gerekiyor mu? -Evet Peki bir DC motorun hızını nasıl kontrol edebilir veya değiştirebiliriz? -Besleme gerilimini değiştirerek. Aklınıza gelen gerilim değiştirme yöntemleri nelerdir? - Güç kaynağımın gerilim ayarlayıcısı, kullandığım pil voltaj değerini değiştirmek veya bir ayarlanabilir gerilim bölücü kullanmak Peki bu yöntemleri hareket eden bir robot üzerinde nasıl uygularsınız? - Şimdi şöyle düşünelim: Belirli bir besleme gerilimine bağlı DC motorumuz ve bu motoru çalıştıran bir anahtar olsun. Bu anahtar 1 sn aralıklarla aktif ve pasif ediliyor olsun. Ne görüyoruz? Motor 1 saniye çalışıyor ve 1 saniye duruyor. Şimdi 0.5 saniye aralıklarla. Motor 0.5 saniye çalışıyor 0.5 saniye duruyor. 0.25 saniye 0.10 saniye aralıklarla ve 0.05 saniye aralıklarla Motorun durup çalıştığını fark edebiliyor musunuz? Hayır. 0.1 saniyelik zaman dilimindeki durma ve çalışmayı fark edemiyoruz, aslında kesikli olan bir hareketi sürekliymiş gibi algılıyoruz. Motorumuzun şu anda azami hızının hemen hemen yarı hızda dönmektedir. Buyurun: Yarı hızda dönen bir motor. 2. bir sitem: Anahtarımız 9 saniye aktif 1 saniye pasif. Ne görüyoruz? Motorumuz 9 saniye çalışıyor 1 saniye duruyor.0.9 saniye aktif 0.1 saniye pasif. Motorumuz azami hızına yakın ama tam azami olmayan bir hızda dönüyor. %90 hızında diyelim. Buyurun: %90 hızda dönen bir motor. Aklınıza Bu motor bu kadar hızlı değişimlere cevap verir mi? gibi sorular gelebilir. Bu soruların cevapları tamamen motorun özelliklerine ve işaretin frekansına kalmış. Ancak burada anlaşılması gereken olay şudur ki: Bir kare dalganın 1 olduğu zamanların bir periyotluk zamana oranını(duty cycle) değiştirerek ve bir periyotluk zamanı çok kısa tutarak DC motor hız kontrolü yapabiliyoruz. PWM kısmında temel olayımız budur. PWM sinyallerinin üretilmesine geçmeden önce birkaç PWM sinyaliyle olayımızı örneklendirmeye çalışalım:

Zaman birimi önemsiz dedim çünkü burada pwm sinyallerini sadece bir birbiriyle karşılaştıracağız(pwm i anlamak için).(zaman birimini ms-milisaniye-) kabul edebilirisiniz. Ve başka bir tanesi: ve %50 Duty Cycle ya sahip başka bir PWM işareti: Bu işaretin 1. işaretten ne farkı var? Frekansı daha yüksek. Gördüğünüz üzere PWM işaretlerinin 2 önemli özelliği var 1) Duty Cycle(işaretimizin 1 olduğu zaman aralığının, 1 periyotluk zamana oranı) 2) Frekans. Đşaretimizin bir de değerini bile vermediğimiz Yükseklik-Amplitude değeri var. Ancak

bu değerin bizim için bir önemi yok, lojik1 veya anahtarın açık olduğu durum olarak düşüneceğiz(aktifpasif ettiğimiz anahtarı düşünün). Bizim PWM sinyalimizin yüksekliği 5V olacak, çünkü motor sürücü devremizdeki anahtarlarımız 5V ile aktif 0 V ile pasif oluyor. Orda da mı anahtar var!!! Evet, motor sürücü devremizde de (ilerleyen bölümde tanıyacağız) anahtarlar var ve yaptığımız iş anahtarları aktif-pasif etmekten başka bir şey olmayacak(çıkarılabilecek küçük bir bilgi: Motor sürücü devresi anahtarlardan oluşuyor). 2 işaretin de duty cycle si aynı olmasına rağmen frekansları farklı! Acaba bu neleri değiştirir? Đşte bu soru yukarda sorulan( Bu motor bu kadar hızlı değişimlere cevap verir mi? ) sorusuna benziyor. Hangi motor? Motorumuzun hangi frekanslara nasıl cevap verdiği çok önemlidir. Bu cevap motordan motora değişmektedir. Ben bir DC motora PWM le hız kontrol yapmak istediğimde sinyal jeneratörüyle ideal frekansı gözlemleyerek buluyorum. Ancak frekans konusunda çok ince eleyip sık dokumaya gerek yok, 1-50 KHz ler seviyesindeki frekanslar tam doğrusal olmasa da motorunuza doğrusala yakın bir hız kontrolü yapmanızı sağlayabilir. Ancak kullandığınız frekansın motor sürücü devrenizle uyumlu olduğuna da dikkat etmeniz gerekir. Mesela L293D nin kataloğuna baktığımızda uygun çalışma frekansının 5kHz e kadar olduğunu görürüz. Gelelim PIC 16F877 kullanarak PWM sinyali elde edilmesine, yazmamız gereken kod şöyle olacaktır: setup_ccp1(ccp_pwm); //PWM i ayarla setup_timer_2(t2_div_by_1, 127, 1); //timer2 için çeşitli parametreler set_pwm1_duty(100); veya set_pwm1_duty(90); veya set_pwm1_duty(50); // burada duty cycle a ilk değerini veriyoruz. Gördüğünüz gibi timer_2 yi kullanıyoruz. Burada timer2 nin aldığı parametreleri değiştirerek farklı frekansta pwm ler elde edebilirsiniz. EE! Sinyalimiz nerde? Mikro denetleyicimizin CCP1 yani 17 nolu pininde. Yukarıdaki kodla ccp1 i ayarladık, aynı kodları ccp2 için de yazarsak CCP2 pininden(pin 16) de PWM işareti alabiliyoruz(bu mikrodenetleyicide en fazla 2 PWM çıkşımız var, 2 pwm işareti 2 motoru sürmemiz için yeterli). PWM ve ADC ortak kullanımı ile ilgili CCS kodu ve Proteus simülasyonları için www.fatiherdem.net/robot/pwmadc.rar adresine bakınız. Arkadaşlar bu dosyaları iyi incelerseniz çalışmamız için epey yol almış olursunuz. Osiloskop ekranında işaretleri daha güzel görmeniz için time base ve gain ayarlarıyla oynamanız gerekebilir. Yeri gelmişken söyleyelim: PWM üretmek için PIC kullanmak zorunda değiliz, çeşitli elektronik devre sistemleriyle istenilen frekansta ve istenen duty cycle da PWM üretilebilir. Anahtar kelimeler: testere diş(sawtooth), komparatör(comparator) 2) LM 7805 Voltaj Regülatörü Elektronik devrelerimizde kullanacağımız voltaj seviyesi 5V olacağından ya 5V luk sabit bir gerilim kaynağı kullanacağız ya da daha yüksek gerilimli bir kaynağı 5V luk voltaj regülatörüyle 5V a indirip kullanacağız. Genelde 2.sini yapıyoruz. LM 7805 veya 7805 sayısıyla biten diğer regülatorler 9V ile 30V arasındaki gerilimleri 5V a regüle ederler. Şekilden de görüleceği gibi 3 bacaklı basit bir elemandır. Önden baktığımızda sol 2 pin giriş geriliminin verileceği pinlerdir(ortadaki pin toprak(-)) ve sağdaki 2 pin çıkışın(5v) alınacağı pinlerdir(orta toprak). Daha düzgün bir 5V elde edebilmek için giriş pinlerine 470uF çıkış pinlerine 100nF kapasite bağlanabilir.

Kapasiteleri bağladığımızda: Toprak ifadesi yeni başlayan arkadaşlar için kafa karıştırıcı olabilir; bu devreler için toprak pilimizin ucunu ifade etmektedir. 3) L293D Motor Sürücü Entegresi Neden Motor Sürücüye Đhtiyaç Duyarız? Motorlar diğer devre elemanlarına kıyasla çok daha yüksek akımlar çekerler ve motorları sürmek için yüksek akımlara dayanabilecek devreler gerekir. PIC mikro denetleyiciler ise bir pinden azami 20-25 ma verebilirler, daha yüksek akım çekmek istediğimizde PIC in zarar görmesi işten bile değildir. Zaten mikro denetleyiciler karar vermesi, sistemi yönetmesi için kullanılırlar. Motor sürmek gibi ağır işlerde kullanılmazlar. Mikro denetleyici sadece motorun hangi yönde hangi hızla gideceğini belirler, motoru sürme işi başka devrelere-yüksek akıma dayanabilecek devrelere- yaptırılır. Bu yüzden motor sürücü devreler kullanıyoruz. L293D entegresi H köprüsü diye tabir edilen basit bir devreden oluşmaktadır. H köprüsü bir motoru her iki yönde sürmek için 4 transistörun 2 li 2li anahtarlanması prensibine göre çalışır. L293D pin diagramı şöyle:

Bu resim http://www.robot.metu.edu.tr/dosya/l293d.pdf içeriğinden alınmıştır. Görüldüğü üzere bir motor için 2 giriş ve 2 çıkış bulunmaktadır. Çalışma prensibi oldukça basit: giriş1 +, giriş2 yapıldığı durumda çıkış1 + ve çıkış2 olur. Tersi giriş durumda çıkışlar da tersi. Đşte burada PWM sinyalini nereye uygulayacağımızı konuşabiliriz. PWM sinyalimizi girişlere uygulayacağız. Örn: Giriş1 e PIC ten ürettiğimiz PWM işaretini uygulayıp giriş2 ye verirsek, motorumuzun PWM işaretimizin duty cycle ına göre bir dönüş hızı olacaktır. Bizim 2 motorumuz var, 2 de PWM çıkışımız var. Motorları ters yöne döndürmemiz söz konusu olmayacağından(çok keskin virajlar için) giriş2 ve giriş4 ün de bizim için pek bir anlamı olmayacak, o pinleri direkt ye bağlayabiliriz. (Eğer motorlar ters yöne de döndürülmek isteniyorsa bu durumda PWM lerimizi entegremizin ENABLE pinlerine vermemiz ve yönler için mikrodenetleyicimizden 4 ayrı pinden çıkış almamız gerekir.) Motorumuza hız kontrolünü nasıl yapılacağını yukarıda(pwm bahsinde) konuşmuştuk, L293D entegresi sadece bir aracı, konuştuğumuz mantıkta bir değişiklik olmayacak. 4) CNY 70 Almaçlarımız CNY70 almacı bir kızıl ötesi led ve bir fototransistörden oluşmuştur. Led ortama kızıl ötesi ışık verir ve bu ışık yansıtıcı bir yüzeyden yansıyıp fototransistöre dönebilirse almacımızın çıkışı 0 V a düşer. Beyaz bir yüzey karşısında çıkış 0.5 V seviyelerine düşmektedir. Burada önemli olan almacımızın yüzeye olan uzaklığıdır, bu uzaklık için en uygun uzunluk ortam şartlarına bağlı olabilmektedir(denemelerimiz sonucu farklı ışıklı ortamlarda farklı sonuçlar gördük), bu uzaklığı kendiniz deneme yaparak tesbit edebilirsiniz. Kataloğunda algılama mesafesi olarak 0.3 mm verilmiş ancak bu mesafe bizim için tabiki çok kısa, bu demek olmuyor ki daha uzak mesafeler için almaç çalışmaz. Kendi çalışmanız için deneyerek en uygun ve makul uzaklığı bulabilirsiniz. Devre şeması şöyle:

Bu resim http://www.robot.metu.edu.tr/dosya/cny70.pdf içeriğinden alınmıştır. Bu görüntüde almacımıza üstten bakıyoruz ve mavi kısım(kızıl ötesi led) sol tarafta kalacak şekilde bakıyoruz. CNY70 le deneme yapmanız biraz zahmetli, çünkü deney tablasına uygun şekilde yerleşmiyor ve bacaklar birbirine oldukça yakın. Ben ilk denemelerimde eski tip bilgisayar kasalarında bolca bulunan IDE kablolarının soketlerini kullanmıştım, sonrasında kendime delikli tahtadan(pertinaks) bir soket yaptım. En rahatı ise baskı devre, baskı devrenin rahatlığını en çok CNY70 lerin kullanımında hissedeceksiniz. NOT: ODTU Robot un sitesinin dökümanlar bölümünden bu elemanlarla(l293 ve CNY) ilgili daha detaylı bilgilere ulaşabilirsiniz, hazırlayan arkadaşlara teşekkür ederiz. http://robot.metu.edu.tr/index.php?link=5 Şimdi de verdiğimiz elemanların bağlantıları yapılmış haliyle hepsini birden görelim:

Bu resim için Yasin Güven arkadaşıma teşekkürler. Burada L293D nin input 1 ve input4 uçları boşta bırakılmış, hatırlarsanız motorlar tek yönde döneceği için biz onları ye bağlayabiliriz diye konuşmuştuk veya siz PWM çıkışlarını input1 ile input3 e bağlayıp 2 ve 4 nolu inptları topraklayabilirsiniz. Bir seferde yukarıdaki devreyi kurmaya çalışmamalıyız, öncelikle motor kontrol denemeleri yapmalıyız, L293 lü devreyi ve PIC li devreyi kurup PWM ile hız kontrolü denemeleri yapmalıyız. Bunu yaptıktan sonra(zaten çoğu iş de bitmiş oluyor) bu PWM değerlerini sensörlerden okuduğumuz değerle ilişkilendirmek kalacak. Arkadaşlar yazımız burada sona eriyor, umarım faydalı olmuştur. Her yazıda olduğu gibi bu yazıda da muhtemelen zamanla ekleme ve düzenlemeler yaparım. Bana ulaşmak isteyen olursa e-posta adresim: fatihed@gmail.com. Đyi çalışmalar dilerim. F.Erdem