Robotik
OKUDUĞUNUZ KONU
Şekil Çizen Robot Araba
22

Şekil Çizen Robot Araba

Yazar : Eda Baysal13 Ekim 2016
Projeyi Satın Al
Bu projeyi kurulu çalışır halde yada isterseniz demonte halde satın alabilirsiniz.Proje ile birlikle yapım aşaması resimleri bağlantı şemaları ve kodları açık kaynak olarak gönderilir. "Satın Almak İçin Yukarıda Butona Basınız"

Kağıt üzerine çeşitli şekiller çizen yazılar yazan xy plotter dediğimiz sistemleri sitemizi takip edenler bilirler.Bu robot bu sistemlerden biraz daha farklı olarak tekerlekleri üzerinde bir araba gibi hareket ederek programındaki şekilleri çizebilmektedir.Robotun platik parçalarının büyük bir kısmı 3d yazıcı ile çıkartılmıştır.

Projede adafruit firmasının  Pro Trinket – 3V 12MHz kartı kullanılmış bu kartı piyasada bulmak zordur.Bunun yerine arduino uno kullanabilirsiniz.

Projede Kullanılan Malzemeler

  •  Adafruit Pro Trinket – 3V 12MHz
  • 5V dişli step motor (2 adet)
  • ULN2803 step sürücü
  • Breadboard
  • Mikro Servo

Öncelikle gerekli sitemizden indirdiğiniz dosyanın içindeki stl partlarını 3d yazıcıdan basınız eğer 3d yazıcınız yoksa sitemizden 3d yazıcı çıktılarını satın alabilirsiniz. Dosyayı İndir

 

Robotun motor ve tekerlek bağlantıları resimlerde göründüğü gibi yapılır daha sonra tekerlek üzerindeki yerden cıvata ile motor sabitlenir.

Step motorun robotun gövdesine bağlantısı resimlerdeki gibidir.Bağlantılarda M3 cıvata kullanılmıştır.Çeşitli boylarda M3 cıvata ve somun alırsanız zorluk çekmezsiniz.

Robotumuz 2 tekerlekli olduğundan dengeleme için sarhoş tekerlek kullanılmış, 3d yazıcıda zaten sarhoş tekerin yeri mevcut siz sadece resimdeki yere bilya kullanmalısınız.Çocukken oynadığımız cam bilyalardan da kullanabilirsiniz.

robotsekilcizen (9)

Yazının başında da bahsettiğimiz gibi projede farklı bir kart kullanılmış ama isterseniz arduino uno da kullanabilirsiniz.Zaten kartın bağlantıları aynı hiçbir fark yok.

robotsekilcizen (4)Adafruit Pro Trinket – 3V 12MHz ile yapılmış devrenin bağlantı şeması resimdeki gibidir.Devrede 4 adet AA pil kullanılmış buda 6 voltluk bir gerilim yapıyor.Robotun sağlıklı çalışması için idealdir.

sekilcizenbaglanti

Projenin orjinal kaynağı : http://www.instructables.com/id/Low-Cost-Arduino-Compatible-Drawing-Robot/

Projenin kodları

#include <Servo.h>

// setup servo
int servoPin = 8;
int PEN_DOWN = 170; // angle of servo when pen is down
int PEN_UP = 80; // angle of servo when pen is up
Servo penServo;

int wheel_dia=66.25; // # mm (increase = spiral out)
int wheel_base=112; //, # mm (increase = spiral in)
int steps_rev=128; //, # 512 for 64x gearbox, 128 for 16x gearbox
int delay_time=6; // # time between steps in ms

// Stepper sequence org->pink->blue->yel
int L_stepper_pins[] = {10, 12, 13, 11};
int R_stepper_pins[] = {3, 5, 6, 4};

int fwd_mask[][4] = {{1, 0, 1, 0},
{0, 1, 1, 0},
{0, 1, 0, 1},
{1, 0, 0, 1}};

int rev_mask[][4] = {{1, 0, 0, 1},
{0, 1, 0, 1},
{0, 1, 1, 0},
{1, 0, 1, 0}};
void setup() {
randomSeed(analogRead(1));
// put your setup code here, to run once:
Serial.begin(9600);
for(int pin=0; pin<4; pin++){
pinMode(L_stepper_pins[pin], OUTPUT);
digitalWrite(L_stepper_pins[pin], LOW);
pinMode(R_stepper_pins[pin], OUTPUT);
digitalWrite(R_stepper_pins[pin], LOW);
}
penServo.attach(servoPin);
Serial.println("setup");
}
void loop(){ // draw a calibration box 4 times
pendown();
for(int x=0; x<12; x++){
forward(100);
left(90);
}
penup();
done(); // releases stepper motor
while(1); // wait for reset
}
// ----- HELPER FUNCTIONS -----------
int step(float distance){
int steps = distance * steps_rev / (wheel_dia * 3.1412); //24.61
/*
Serial.print(distance);
Serial.print(" ");
Serial.print(steps_rev);
Serial.print(" ");
Serial.print(wheel_dia);
Serial.print(" ");
Serial.println(steps);
delay(1000);*/
return steps;
}
void forward(float distance){
int steps = step(distance);
Serial.println(steps);
for(int step=0; step<steps; step++){
for(int mask=0; mask<4; mask++){
for(int pin=0; pin<4; pin++){
digitalWrite(L_stepper_pins[pin], rev_mask[mask][pin]);
digitalWrite(R_stepper_pins[pin], fwd_mask[mask][pin]);
}
delay(delay_time);
}
}
}
void backward(float distance){
int steps = step(distance);
for(int step=0; step<steps; step++){
for(int mask=0; mask<4; mask++){
for(int pin=0; pin<4; pin++){
digitalWrite(L_stepper_pins[pin], fwd_mask[mask][pin]);
digitalWrite(R_stepper_pins[pin], rev_mask[mask][pin]);
}
delay(delay_time);
}
}
}
void right(float degrees){
float rotation = degrees / 360.0;
float distance = wheel_base * 3.1412 * rotation;
int steps = step(distance);
for(int step=0; step<steps; step++){
for(int mask=0; mask<4; mask++){
for(int pin=0; pin<4; pin++){
digitalWrite(R_stepper_pins[pin], rev_mask[mask][pin]);
digitalWrite(L_stepper_pins[pin], rev_mask[mask][pin]);
}
delay(delay_time);
}
}
}
void left(float degrees){
float rotation = degrees / 360.0;
float distance = wheel_base * 3.1412 * rotation;
int steps = step(distance);
for(int step=0; step<steps; step++){
for(int mask=0; mask<4; mask++){
for(int pin=0; pin<4; pin++){
digitalWrite(R_stepper_pins[pin], fwd_mask[mask][pin]);
digitalWrite(L_stepper_pins[pin], fwd_mask[mask][pin]);
}
delay(delay_time);
}
}
}
void done(){ // unlock stepper to save battery
for(int mask=0; mask<4; mask++){
for(int pin=0; pin<4; pin++){
digitalWrite(R_stepper_pins[pin], LOW);
digitalWrite(L_stepper_pins[pin], LOW);
}
delay(delay_time);
}
}
void penup(){
delay(250);
Serial.println("PEN_UP()");
penServo.write(PEN_UP);
delay(250);
}
void pendown(){
delay(250);
Serial.println("PEN_DOWN()");
penServo.write(PEN_DOWN);
delay(250);
} 
SİZCE NASIL OLMUŞ?
Beğendim
67%
İlginç
11%
Eh İşte
5%
Anlamadım
9%
Kötü
4%
Berbat
4%
YAZAR HAKKINDA
Eda Baysal
Bilgisayar mühendisiyim , gömülü sistemler ve IoT üzerinde çalışmalar yapmaktayım.Proje Hocam sitesini uzun zamandır takip ediyordum ve bu oluşumun içerisinde olmak istedim.Bu sitede yazılarımı paylaşıp sizlere yararlı olmak istiyorum
22 YORUMLAR
  • Harun ARSLAN
    23 Ekim 2016 at 11:27

    Merhaba Eda Hanım projemiz olarak bu projeyi yapmak istiyoruz. Size bi sorum var. Şekiileri nasıl çiziyor peki bu robot. Yardımlarınız için şimdiden teşekkürler. İyi çalışmalar.

  • Atakan
    9 Kasım 2016 at 11:13

    Merhaba kod UNO ile uyumlu mu?

  • 9 Kasım 2016 at 17:04

    Merhabalar
    Acaba sekilleri nasil ciziyor bu robot ? Hep sitandart bi sekilmi yoksa sekli degistirnek icin kodlardami degisiklik yapnak gerekir ?

  • Yakup Hoca
    20 Kasım 2016 at 15:04

    Bluetooth modülü eklenerek, bilgisayarda hazırlanan bir program üzerinden istenilen çizim yaptırılabilir. Mevcut durumda sadece kod içerisinde yazılmış algoritmaya göre çizimler yapacaktır.

  • Hilal tanrıkulu
    11 Aralık 2016 at 22:02

    Bu projeyi nasıl satın alabilirim

  • KAMİL GÖK
    17 Şubat 2017 at 21:03

    PROJE KODLARI HANGİ PROGRAM İLE YAZILIYOR

    • Murat Duran
      17 Şubat 2017 at 23:12

      Arduino programı ile düzenleme ve yükleme yapabilirsiniz

      • Kamil gök
        19 Şubat 2017 at 13:06

        Porgramın linkini verebilirmisiniz

        • KAMİL GÖK
          19 Şubat 2017 at 13:11

          Arduino:1.8.1 (Windows Store 1.8.1.0) (Windows 10), Kart:”Arduino Pro or Pro Mini, ATmega328 (3.3V, 8 MHz)”

          _ekil_izen_robot:4: error: stray ‘\303’ in program

           

          ^

          _ekil_izen_robot:4: error: stray ‘\202’ in program

          _ekil_izen_robot:4: error: stray ‘\302’ in program

          _ekil_izen_robot:4: error: stray ‘\240’ in program

          _ekil_izen_robot:10: error: stray ‘\303’ in program

           

          ^

          _ekil_izen_robot:10: error: stray ‘\202’ in program

          _ekil_izen_robot:10: error: stray ‘\302’ in program

          _ekil_izen_robot:10: error: stray ‘\240’ in program

          _ekil_izen_robot:15: error: stray ‘\303’ in program

           

          ^

          _ekil_izen_robot:15: error: stray ‘\202’ in program

          _ekil_izen_robot:15: error: stray ‘\302’ in program

          _ekil_izen_robot:15: error: stray ‘\240’ in program

          _ekil_izen_robot:19: error: stray ‘\303’ in program

           

          ^

          _ekil_izen_robot:19: error: stray ‘\202’ in program

          _ekil_izen_robot:19: error: stray ‘\302’ in program

          _ekil_izen_robot:19: error: stray ‘\240’ in program

          _ekil_izen_robot:24: error: stray ‘\303’ in program

           

          ^

          _ekil_izen_robot:24: error: stray ‘\202’ in program

          _ekil_izen_robot:24: error: stray ‘\302’ in program

          _ekil_izen_robot:24: error: stray ‘\240’ in program

          exit status 1
          stray ‘\303’ in program

          This report would have more information with
          “Show verbose output during compilation”
          option enabled in File -> Preferences.
          bu hatayı veriyor nası halledebilirim derlerken

  • KAMİL GÖK
    19 Şubat 2017 at 13:31

    proje kodlarında bi hata varmıdır yardım edebilirmisiniz
    nasıl kodlucam

  • 11 Mart 2017 at 21:43

    projeyi nasıl indiriyoruz acaba 3d yazıcıdan çektirmek istiyorum bir bilginiz varmı acaba ??

  • yakup pala
    11 Mart 2017 at 23:36

    hocam 28byj-48 step motor kullanılması sorun oluşturur mu?

  • KAMİL GÖK
    17 Mart 2017 at 20:37

    pro trinketi ardunioda bulamıyorum nasıl bulacam yardım edermisiniz

  • Esma kıran
    25 Nisan 2017 at 21:01

    Bu projeyi yapıcam ama hiçbir bilgim yok verilen malzemeleri alsam yapabilir miyim ?yani onlar dışında bişey yok mu alınacak.bana hazır tüm herşeyimi gönderseniz birleştirmesini ben yapsam olmaz mı

  • Doğan Şahin
    26 Nisan 2017 at 12:12

    3D yazıcıdan yazılması gereken parçaları nasıl satın alabilirim site de bulamadım

  • doğan
    29 Nisan 2017 at 16:38

    Adafruit Pro Trinket – 3V 12MHz bulamadığımdan yerine arduino uno kullanmak istiyorum ama bağlantı hakkından bilgim olmadığı için yapamıyorum acaba ardino uno lu bağlantı şemasını tarif edebilirmisiniz

  • Yuşa YİŞ
    25 Mayıs 2017 at 00:40

    Eda Hanım merhaba ardunio uno ile aynı devreyi kurdum ancak kodu aktardığımda robot tekerlekleri titreşime geçiyor ve hareket etmiyor.
    Yazdığınız codu ardunio uno ile denediniz mi? Yardımcı olursanız çok sevinirim. Teşekkürler

YORUM YAP