Sharp GP2D12 Sensor Jarak Dengan Output Analog

Deskripsi Umum

Sharp GP2D12 adalah sensor jarak analog yang menggunakan infrared untuk mendeteksi jarak antara 10 cm sampai 80 cm. GP2D12 mengeluarkan output voltase non-linear dalam hubungannya dengan jarak objek dari sensor dan menggunakan interface analog to digital converter (ADC).

Bentuk Fisik

Spesifikasi Teknis

•          Range:10 to 80cm

•          Update frequency / period:25Hz / 40ms

•          Direction of the measured distance:Very directional, due to the IR LED

•          Max admissible angle on flat surface:> 40°

•          Power supply voltage:4.5 to 5.5V

•          Noise on the analog output:< 200mV

•          Mean consumption:35mA

•          Peak consumption:about 200mA

Proses Pengukuran

Kelemahan

•          Respon 40ms

•          Error bila Jarak<10cm dan pada Cermin

•          Hanya dapat mengukur <80cm

Kelebihan

•          Dapat mengukur jarak pada bidang miring

•          Sudut pengukuran sempit

•          Sangat direktif

Berikut hubungan antara jarak deteksi objek terhadap output analog sensor.

Ada banyak cara tentunya untuk mencari persamaan dari kurva diatas untuk menentukan jarak dari nilai analog sensor tersebut. Salah satunya dengan cara sampling data dan kemudian menentukan persamaan dari kurva respon voltage terhadap jarak objek. Berikut percobaan yang saya lakukan dengan contoh sampel kurva respon di atas dengan menggunakan excel.

10

2.4

15

1.8

20

1.4

25

1.1

30

1

35

0.86

40

0.78

45

0.7

50

0.63

55

0.6

60

0.55

65

0.5

70

0.48

75

0.43

80

0.41

jarak

volt

persamaan yang mendekati adalah y = 17.6951x^-0.8519 atau y = 17.6951/x^0.8519

jika x^0.8519 susah direpresentasikan dalam bahasa programming, maka kita cari nilai yang mendekati dari x^0.8519

10

7.11E+00

15

1.00E+01

20

1.28E+01

25

1.55E+01

30

1.81E+01

35

2.07E+01

40

2.32E+01

45

2.56E+01

50

2.80E+01

55

3.04E+01

60

3.27E+01

65

3.50E+01

70

3.73E+01

75

3.96E+01

80

4.18E+01

jarak

jarak^0.67

persamaan linier yang mendekati jarak^0.8519 adalah 0.4918jarak + 3.0641

jadi persamaan yang kita dapat adalah volt=17.6951/(0.4918jarak + 3.0641)

Berikut adalah tabel pengecekan dari persamaan di atas.

10

2.2168477

15

1.69475438

20

1.37170254

25

1.15209224

30

0.99309691

35

0.87266424

40

0.77828212

45

0.70232307

50

0.63987257

55

0.58762133

60

0.54325942

65

0.50512545

70

0.47199394

75

0.44294114

80

0.41725755

jarak

volt

Berikut adalah tabel hasil perbandingan persentase error antara data sampel dan data dari persamaan.

Hasil

Data awal

Selisih

Persentase Error

10

2.2168477

2.4

0.183152

7.631346

%

15

1.69475438

1.8

0.105246

5.846979

%

20

1.37170254

1.4

0.028297

2.021247

%

25

1.15209224

1.1

-0.05209

4.735659

%

30

0.99309691

1

0.006903

0.690309

%

35

0.87266424

0.86

-0.01266

1.472586

%

40

0.77828212

0.78

0.001718

0.220242

%

45

0.70232307

0.7

-0.00232

0.331867

%

50

0.63987257

0.63

-0.00987

1.567074

%

55

0.58762133

0.6

0.012379

2.063111

%

60

0.54325942

0.55

0.006741

1.225561

%

65

0.50512545

0.5

-0.00513

1.025089

%

70

0.47199394

0.48

0.008006

1.667929

%

75

0.44294114

0.43

-0.01294

3.009568

%

80

0.41725755

0.41

-0.00726

1.770135

%

jarak

volt

volt

Berikut hasil akhir persamaan yang didapatkan.

(17.6951/volt) = 0.4918jarak + 3.0641

(17.6951/volt)  – 3.0641 =  0.4918jarak

jarak= (35.9803/volt) – 6.2304

jika dalam 8-bit adc, maka nilai adc (misal referensi voltage 5 volt) harus dikonversi ke volt, volt = adc*(5/255)

jarak= (35.9803/(adc*(5/255))) – 6.2304

jarak= (1834.9953/adc) – 6.2304

berikut file excel dari uraian perhitungan di atas. wangready.wordpress.com–gp2d12.

Kode dalam CodeVision AVR

Berikut contoh program dengan menggunakan mikrokontroler ATMega8535, xtal=11.059200 MHz, pin ADC untuk sensor = PINA0, PORT LCD = PORTD. Atau bisa download dalam bentuk CVAVR project berikut. http://www.mediafire.com/file/ogus3zlhpp9um28/GP2D12.rar

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

http://www.hpinfotech.com

Project :
Version :
Date    : 4/2/2011
Author  : Freeware, for evaluation and non-commercial use only
Company :
Comments:

Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 11.059200 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 128
*****************************************************/

#include <mega8535.h>

#include <delay.h>

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

#define ADC_VREF_TYPE 0x60

// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}

unsigned char gp2d12()
{
unsigned char jarak;
jarak = (unsigned char)((1854.9953/(float)read_adc(0)) – 6.2304); //read_adc(0) membaca nilai analog dari PINA0
//nilai ADC sudah dikonversi dengan mengalikan konstanta yang dibagi dengan perbandingan konversi ADC return jarak;
}
// Declare your global variables here

void main(void)
{
// Declare your local variables here
unsigned char kata[16];
// 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=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
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// 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=0x00;
TCCR1B=0x00;
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=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 Clock frequency: 691.200 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: ADC Stopped
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;

// 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 – PORTD Bit 0
// RD – PORTD Bit 1
// EN – PORTD Bit 2
// D4 – PORTD Bit 4
// D5 – PORTD Bit 5
// D6 – PORTD Bit 6
// D7 – PORTD Bit 7
// Characters/line: 16
lcd_init(16);

while (1)
{
// Place your code here
sprintf(kata,”jarak=%d”,gp2d12());//menyusun karakter dengan menggunakan fungsi sprinf
lcd_clear();                      //membersihkan layar LCD
lcd_gotoxy(0,0);                  //mengatur kursor LCD menuju koordinat 0,0
lcd_puts(kata);                   //mengirim data LCD
delay_ms(300);                    //delay agar perubahan dari lcd_clear tidak terlalu cepat
}
}

——————————————————————————————————————-

Daftar Pustaka

-Datasheet Sharp GP2D12

-Materi KRI-KRCI Bandung (Oktober 2008)

10

2.4

15

1.8

20

1.4

25

1.1

30

1

35

0.86

40

0.78

45

0.7

50

0.63

55

0.6

60

0.55

65

0.5

70

0.48

75

0.43

80

0.41

jarak

volt

About these ads

4 Responses to Sharp GP2D12 Sensor Jarak Dengan Output Analog

  1. maikal says:

    Mas mohon bantuannya donk., Saya menggunakan sensor “SHARP GP2Y0A02YK0F 20-150CM”, Sistem keluarannya sama juga sama sensor Sharp GP2D12 yakni analog. Tapi saya masih bingung mas cara buat programnya di CAVR. Soalnya saya gk tahu gmna buat formula untuk menghitung nilai jaraknya. ADC yg saya buat ntar 10 bit.
    Saya sudah cari2 referensi dari internet, masih blom dapat buat programnya di CAVR.
    Mohon bantuannya gan.
    datasheetnya ada di link ini mas : https://www.sparkfun.com/datasheets/Sensors/Infrared/gp2y0a02yk_e.pdf
    Tks banyak mas

  2. Erwin says:

    mas mohon bantuannya donk,

    share rangkaian sensor jarak dengan Sharp GP2D12 nya donk….

    thx

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.