Minggu, 17 Maret 2013

Robot Analog (BeetleBOT) with SPDT Switch RA03


Robot autonomous dapat dibuat dengan sangat sederhana, gambar disamping adalah robot autonomous berbentuk serangga yang dapat bergerak otomatis dan dapat menghindar dari penghalang didepannya menggunakan sensor sentuh berupa dua  sensor saklar SPDT.



Gambar 1. Skema beetleBOT


Simulasi Proteus

Sebelum membuat real robot, penulis sarankan untuk membuat simulasi terlebih dahulu, karena simulasi berfungsi untuk menghindari error saat membuat robot. Simulasi dapat menggunakan Proteus atau sejenisnya baik untuk rangkaian analog maupun digital. Berikut adalah desain proteus robot beetlebot karya Profesor Bolabot

Gambar 2. Desain Proteus robot beetlebot avoider SPDT

Berikut adalah desain aktual menggunakan Fritzing

Gambar 3. Desain aktual robot beetlebot avoider SPDT


Berikut adalah robot beetlebot yang siap untuk di uji coba.




Robot diatas sangat mudah dibuat karena hanya terdiri dari 4 komponen utama yaitu 2 saklar SPDT dan 2 buah motor DC.

Copyright 2012@Profesor Bolabot

" Membuat Robot itu Mudah"












Share:
Read More

Line Follower Analog Robot with Transistor Switch RA02


Sebuah robot yang dapat bergerak mengikuti sebuah garis berwarna hitam, Robot ini lazim disebut robot line tracker atau line follower. Bagaimana bisa robot ini mengikuti garis hitam? Tentulah diperlukan sebuah sensor, yaitu sensor cahaya.

Seperti layaknya manusia, bagaimana manusia dapat berjalan mengikuti jalan yang ada tanpa menabrak dan sebagainya, tentunya karena manusia memiliki “mata” sebagai penginderanya. Begitu juga robot line follower ini, dia memiliki sensor garis yang berfungsi seperti “mata” pada manusia. Sensor garis ini mendeteksi adanya garis atau tidak pada permukaan lintasan robot tersebut, dan informasi yang diterima sensor garis kemudian diteruskan ke prosesor untuk diolah sedemikian rupa dan akhirnya hasil informasi hasil olahannya akan diteruskan ke penggerak atau motor agar motor dapat menyesuaikan gerak tubuh robot sesuai garis yang dideteksinya.

Posisi Sensor di Atas Garis Hitam

Pada konstruksi yang sederhana, robot line follower memiliki dua sensor garis, yang terhubung ke dua motor (kanan dan kiri) secara bersilang melalui sebuah saklar transistor. Sensor garis A (Kiri) mengendalikan motor kanan, sedangkan sensor garis B (kanan) mengendalikan motor kiri.

Gambar 1. Prinsip kerja robot line follower  dengan sensor di atas garis hitam

1.     Ketika sensor A mendeteksi garis sedangkan sensor B keluar garis ini berarti posisi robot berada lebih sebelah kanan dari garis, untuk itu motor kanan akan aktif sedangkan motor kiri akan mati. Akibatnya motor akan berbelok kearah kiri.
2.     Begitu sebaliknya ketika sensor B mendeteksi garis, motor kiri aktif dan motor kanan mati, maka robot akan berbelok ke kanan.
3.     Jika kedua sensor mendeteksi garis maka kedua motor akan aktif dan robot akan bergerak maju.

Gambar 2. Desain proteus robot line follower analog dengan sensor LDR di atas garis hitam

Gambar 3. Desain actual robot line follower analog dengan sensor LDR di atas garis hitam






Posisi Sensor di Atas Permukaan Putih

Jika pada skema Gambar 2, posisi sensor di set di atas garis hitam, maka pada gambar berikut akan di tunjukkan skema untuk posisi sensor yang di set di atas permukaan putih.

Gambar 4. Ilustrasi robot line follower dengan posisi sensor di atas permukaan putih

Gambar 5. Desain proteus robot line follower analog dengan sensor LDR di atas permukaan putih

Gambar 6. Desain aktual robot line follower analog dengan sensor LDR di atas permukaan putih



Copyright 2012@ Profesor Bolabot

"Bekerja Untuk Kebangkitan Teknologi Indonesia"








Share:
Read More

Robot Penghindar Halangan Sensor Ultrasonic PING))) Versi AT Mega 16 dan AT Mega 8


Kelelawar hewan nocturnal, yang berkeliaran di malam hari...meski berada dikegelapan, kelelawar dapat terbang bebas tanpa menabrak penghalang didepannya,, kelelawar dapat menghindari penghalang didepannya karena kelelawar dapat mengeluarkan gelombang ultrasonic, yang jika ada penghalang maka gelombang tersebut akan dipantulkan kembali dan diterima oleh telinga kelelawar yang lebar, sehingga kelelawar dapat menghindar secara spontan ketika didepannya ada penghalang.



Gambar 1. Prinsip kerja pengukuran jarak benda



Karakteristik Sensor Ultrasonic PING Paralax

Ultrasonik, sebutan untuk jenis suara diatas batas suara yang bisa didengar manusia. Seperti diketahui, telinga manusia hanya bisa mendengar suara dengan frekuensi 20 Hz sampai 20KHz. Lebih dari itu hanya beberapa jenis binatang yang mampu mendengarnya, seperti kelelawar dan lumba-lumba. Lumba-lumba bahkan memanfaatkan ultrasonik untuk mengindera benda-benda di laut. Dengan cara mengirimkan sebuah suara dan mengitung lamanya pantulan suara tersebut maka dapat diketahui jarak kapal selam dengan benda tersebut. Mula-mula suara dibunyikan, kemudian dihitung lama waktu sampai terdengar suara pantulan. Jarak dapat dihitung dengan mengalikan kecepatan suara dengan waktu pantulan. Kemudian hasilnya dibagi 2. Misalnya lama waktu pantulan adalah 1 detik, maka jaraknya adalah (344,424m/detik x 1 detik)/2 = 172m.

Ping))) Ultrasonic Range Finder, adalah modul pengukur jarak dengan ultrasonic buatan Paralax Inc. yang didesain khusus untuk teknologi robotika. Dengan ukurannya yang cukup kecil (2,1cm x 4,5cm), sensor seharga 350 ribu rupiah ini dapat mengukur jarak antara 3 cm sampai 300 cm. Keluaran dari Ping))) berupa pulsa yang lebarnya merepresentasikan jarak. Lebar pulsanya bervariasi dari 115 uS sampai 18,5 mS.


Gambar 2. Sensor ultrasonic PING))) Paralax

Pada dasanya, Ping))) terdiri dari sebuah chip pembangkit sinyal 40KHz, sebuah speaker ultrasonik dan sebuah mikropon ultrasonik. Speaker ultrasonik mengubah sinyal 40 KHz menjadi suara sementara mikropon ultrasonik berfungsi untuk mendeteksi pantulan suaranya. Pada modul Ping))) terdapat 3 pin yang digunakan untuk jalur power supply (+5V), ground dan signal. Pin signal dapat langsung dihubungkan dengan mikrokontroler tanpa tambahan komponen apapun.

Ping))) mendeteksi objek dengan cara mengirimkan suara ultrasonik dan kemudian “mendengarkan” pantulan suara tersebut. Ping))) hanya akan mengirimkan suara ultrasonik ketika ada pulsa trigger dari mikrokontroler (Pulsa high selama 5uS). Suara ultrasonik dengan frekuensi sebesar 40KHz akan dipancarkan selama 200uS. Suara ini akan merambat di udara dengan kecepatan 344.424m/detik (atau 1cm setiap 29.034uS), mengenai objek untuk kemudian terpantul kembali ke Ping))). Selama menunggu pantulan, Ping))) akan menghasilkan sebuah pulsa. Pulsa ini akan berhenti (low) ketika suara pantulan terdeteksi oleh Ping))). Oleh karena itulah lebar pulsa tersebut dapat merepresentasikan jarak antara Ping))) dengan objek.

Berdasarkan Datasheet

Jarak = (Lebar Pulsa/29.034uS)/2 (dalam cm)
Jarak = (Lebar Pulsa x 0.034442)/2 (dalam cm)
Karena 1/29.034 = 0.34442

Berdasarkan Perhitungan Kalibrasi Bolabot Institute

Jarak = Lebar Pulsa * 0.020+0.252(dalam cm)

Nilai tersebut berbeda dengan nilai datasheet, sehingga penulis menyarankan untuk melakukan kalibrasi ulang jika akan menggunakan sensor ultrasonik PING))) agar lebih teliti.


Desain Robot Penghindar Halangan Sensor ultrasonik


Berikut adalah desain robot BOLABOT TECHNO ROBOTIC INSTITUTE (www.bolabot.com)menggunakan Proteus:


Gambar 3. Desain robot avoider ultrasonic dengan ATMega 16 dan LCD



Program CV AVR Robot Avoider Ultrasonic

Menggunakan Mikrokontroler ATMega 16 dan LCD 16x2



/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 13/08/2013
Author  :
Company :
Comments:

Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 12,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega16.h>

// Alphanumeric LCD Module functions
#include <alcd.h>
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>

unsigned int hitung;
float jarak;
unsigned char data[16];

void RF1(void)
{
    unsigned int i=0;
    hitung=0;                                                                                    
    DDRA.0=1;
    PORTA.0=1;
    delay_us(5);
    PORTA.0=0; 
    DDRA.0=0;
    PORTA.0=1;
    while(PINA.0==0){i++; if(i>=10000) break;}
    while(PINA.0==1){hitung++; if(hitung>=10000) break;}
    PORTA.0=0;
    delay_ms(10);

}

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here

}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x30;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 11,719 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Inverted
// OC1B output: Inverted
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xF1;
TCCR1B=0x0D;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);

// Global enable interrupts
#asm("sei")

lcd_gotoxy (2,0) ;
lcd_putsf ("== welcome ==") ;
lcd_gotoxy(2,1);
lcd_putsf("==To Bolabot==");          
delay_ms(1000);

DDRD.2=1;   // OUTPUT MOTOR KIRI
DDRD.3=1;   // OUTPUT MOTOR KIRI
DDRD.6=1;   // OUTPUT MOTOR KANAN
DDRD.7=1;   // OUTPUT MOTOR KANAN
PORTD.2=1;
PORTD.3=1;
PORTD.6=1;
PORTD.7=1;

//kecepatan motor kiri
OCR1A=250;
//kecepatan motor kiri
OCR1B=250;

while (1)
      {
        RF1();
        // Persamaan konversi jarak hasil kalibrasi
        jarak = hitung*0.020+0.252;
        sprintf(data,"%0.001f cm", jarak);
        lcd_clear();
        lcd_gotoxy (0,0) ;
        lcd_putsf ("==JARAK==") ;
        lcd_gotoxy(0,1);
        lcd_puts(data);
        delay_ms(100);
        if (jarak<=20)
        {
        PORTD.2=0;
        PORTD.3=1;
        PORTD.6=0;
        PORTD.7=0;
        delay_ms(1000);
        PORTD.2=1;
        PORTD.3=0;
        PORTD.6=1;
        PORTD.7=0;
        }
        else
        {
        PORTD.2=1;
        PORTD.3=0;
        PORTD.6=1;
        PORTD.7=0;
        }
       
      }

}


Menggunakan Mikrokontroler ATMega 8 tanpa LCD


/*****************************************************

This program was produced by the

CodeWizardAVR V2.05.0 Professional

Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : Robot Avoider Ultrasonic
Version : I
Date    : 2/18/2013
Author  : Mada Sanjaya WS, Ph.D
Company : Bolabot Techno Robotic Institute
Comments: -


Chip type               : ATmega8
Program type            : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega8.h>

#include <delay.h>
#include <stdio.h>
#include <stdlib.h>

unsigned int hitung;
float dutu;

void RF1(void)
{
    unsigned int i=0;
    hitung=0;
    DDRC.5=1;
    PORTC.5=1;
    delay_us(5);
    PORTC.5=0; 
    DDRC.5=0;
    PORTC.5=1;
    while(PINC.5==0){i++; if(i>=10000) break;}
    while(PINC.5==1){hitung++; if(hitung>=10000) break;}
    PORTC.5=0;
    delay_ms(10);
}

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    

}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=T
PORTB=0x00;
DDRB=0x06;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 11.719 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x0D;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

DDRD.5=1; // definisi output ke motor kiri
DDRD.6=1; // definisi output ke motor kiri
DDRD.7=1; // definisi output ke motor kanan
DDRB.0=1; // definisi output ke motor kanan
PORTD.5=1;
PORTD.6=1;
PORTD.7=1;
PORTB.0=1;

while (1)
{
RF1();
dutu = hitung*0.020+0.252; // rumus jarak berdasarkan kalibrasi sensor

if (dutu<=20) //jika jarak terhadap penghalang kurang dari sama dengan 20 cm
{
OCR1A=100;
OCR1B=100;
PORTD.5=0;
PORTD.6=1;
PORTD.7=0;
PORTB.0=0;
delay_ms(1000);
OCR1A=100;
OCR1B=100;
PORTD.5=1;
PORTD.6=0;
PORTD.7=1;
PORTB.0=0;}
else{
OCR1A=100;
OCR1B=100;
PORTD.5=1;
PORTD.6=0;
PORTD.7=1;
PORTB.0=0;}
      }
}

Realisasi Hardware Robot Avoider Ultrasonik PING)))




Berikut adalah video yang telah diunggah di youtube




Copyright 2013© Profesor Bolabot

  








Share:
Read More