Tugas TIP Sensor

16
SENSOR JARAK GP2D12 SHARP GP2D12 adalah sensor pengukur jarak yang diproduksi oleh Sharp. Sensor ini mengelua sinyal analog dan mampu mengukur jarak pada rentang 10 80 cm. Prinsip kerja sensor inframerah ini dalam mengukur jarak berbeda dengan sensor ultr menggunakan waktu pantul gelombang bunyi karena waktu pantul cahaya jelas terlalu s untuk dapat diukur. Cahaya inframerah dengan frekuensi 40 kHz dipancarkan dan hasil pantulannya diterima oleh susunan detektor inframerah. Sudut pantulan sinar inframe berubah sesuai jarak sensor dan obyek. Antarmuka sensor GP2D12 dengan AVR sangatlah mudah, namun sayangnya output analog sensor ini sangatlah tidak linier. Untuk mengatasi masalah ketidaklinearan sensor tersebut disini saya melakukan kalib menggunakan metode Trendline dengan menggunakan MS. Excel. menurut application note sensor GP2D12 mempunyai hubungan yang cukup linear antara tegangan keluaran sensor (Vout) dengan 1/(distance+K), K bernilai 0,42 untuk tipe G Sumbu X merupakan output sensor sedangkan sumbu Y adalah 1/(distance+K). Berdasarka grafik diatas kita sudah dapat menggunakan persamaan metode Trendline yang ada pada Exel. Baiklah berikut adalah beberapa langkah panduan melakukan kalibrasi sensor GP

Transcript of Tugas TIP Sensor

SENSOR JARAK GP2D12 SHARP

GP2D12 adalah sensor pengukur jarak yang diproduksi oleh Sharp. Sensor ini mengeluarkan sinyal analog dan mampu mengukur jarak pada rentang 10 80 cm. Prinsip kerja sensor inframerah ini dalam mengukur jarak berbeda dengan sensor ultrasonik yang menggunakan waktu pantul gelombang bunyi karena waktu pantul cahaya jelas terlalu singkat untuk dapat diukur. Cahaya inframerah dengan frekuensi 40 kHz dipancarkan dan hasil pantulannya diterima oleh susunan detektor inframerah. Sudut pantulan sinar inframerah akan berubah sesuai jarak sensor dan obyek. Antarmuka sensor GP2D12 dengan AVR sangatlah mudah, namun sayangnya output analog sensor ini sangatlah tidak linier. Untuk mengatasi masalah ketidaklinearan sensor tersebut disini saya melakukan kalibrasi menggunakan metode Trendline dengan menggunakan MS. Excel. menurut application note sensor GP2D12 mempunyai hubungan yang cukup linear antara tegangan keluaran sensor (Vout) dengan 1/(distance+K), K bernilai 0,42 untuk tipe GP2D12. Sumbu X merupakan output sensor sedangkan sumbu Y adalah 1/(distance+K). Berdasarkan grafik diatas kita sudah dapat menggunakan persamaan metode Trendline yang ada pada MS. Exel. Baiklah berikut adalah beberapa langkah panduan melakukan kalibrasi sensor GP2D12:

LANGKAH PERTAMA melakukan pengukuran dari 10-80 cm setiap kelipatan 5. Kemudian me-Record setiap tegangan keluarannya. Kemudian berikan nilai untuk X=Vout dan untuk Y=1/(distance+K), K=0,42. Teman-teman dapat menggunakan Voltmeter untuk me-Record tegangan keluaran sensor. Berikut adalah hasil yang didapatkan: jarak 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 X=Vout (Volt) 2.4 1.8 1.4 1.1 1 0.86 0.78 0.7 0.63 0.6 0.55 0.5 0.48 0.43 0.41 K=0.42 Y=1/(distance+k) 0.09596929 0.064850843 0.048971596 0.039339103 0.03287311 0.028232637 0.024740228 0.022016733 0.019833399 0.018044027 0.016550811 0.015285845 0.014200511 0.013259082 0.012434718

LANGKAH KEDUA Setelah mendapatkan nilai X dan Y untuk tabel diatas, plot tabel tersebut kedalam grafik pada MS. Excel dengan type grafik XY scatter. Kemudian klik pada grafik dan pilih menu trendline di MS. Excel, caranya LAYOUT ANALYSIS TRENDLINE MORE TRENDLINE OPTIONS sesuaikan dengan gambar berikut. Kemudian CLOSE. LANGKAH KETIGA (TERAKHIR) Langkah terakhir ini digunakan untuk mendapatkan persamaan akhir yang akan dipakai pada program untuk menghitung jarak dari sensor Sharp GP2D12. Caranya: X=Vout Y=1/(distance+K) K=0.42 Disubtitusikan ke persamaan trendline yaitu: Y=0.04X-0.006

Menjadi: 1/(distance+0.42)=(0.04*Vout)-0.006 Sehingga: distance=((1/((0.04*Vout)-0.006)-0.42)) Atau dalam program menggunakan CodeVision menjadi: jarak=(float)((1/((0.04*Vout)-0.006)-0.42)); Nilai dari Vout masih merupakan tegangan keluaran sensor GP2D12, sehingga perlu pengubahan dari nilai biner ADC 8 bit ke dalam bentuk tegangan keluaran sensor (Vout) tersebut, caranya: Vout=read_adc(0); Vout=Vout/51; Berikut adalah listing program lengkap GP2D12, dengan output sensor GP2D12 masuk ke PA0://output #include #include #include #include sensor ke PA0

int baca_adc; float jarak, vo; char temp[6]; // Alphanumeric LCD Module functions #asm .equ __lcd_port=015 ;PORTC #endasm #define ADC_VREF_TYPE 060 // 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|=040; // Wait for the AD conversion to complete while ((ADCSRA & 010)==0); ADCSRA|=010; return ADCH; } void baca_sensor() {

baca_adc=read_adc(0); vo= (float)baca_adc/51; } void gp2d12() { jarak=(float)((1/((0.04*vo)-0.006)-0.42)); } void tampil_lcd()//menampilkan jarak ke LCD { lcd_clear(); lcd_putsf(ElectO-cOntrOl); ftoa(jarak,1,temp);//menampilkan nilai jarak yg sesungguhnya lcd_gotoxy(0,1); lcd_puts(temp); lcd_gotoxy(4,1); lcd_putsf(cm); ftoa(vo,2,temp); //menampilkan nilai dari Vout (tegangan keluaran sensor) lcd_gotoxy(9,1); lcd_puts(temp); delay_ms(2000); } void main(void) { // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=080; SFIOR=000; // ADC initialization // ADC Clock frequency: 750.000 kHz // ADC Voltage Reference: AVCC pin // ADC Auto Trigger Source: None // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=084; // LCD module initialization lcd_init(16); while (1) { baca_sensor(); gp2d12(); tampil_lcd(); }; }

SENSOR SUHU LM35Sensor suhu LM35 adalah komponen elektronika yang memiliki fungsi untuk mengubah besaran suhu menjadi besaran listrik dalam bentuk tegangan. Sensor Suhu LM35 yang dipakai dalam penelitian ini berupa komponen elektronika elektronika yang diproduksi oleh National Semiconductor. LM35 memiliki keakuratan tinggi dan kemudahan perancangan jika dibandingkan dengan sensor suhu yang lain, LM35 juga mempunyai keluaran impedansi yang rendah dan linieritas yang tinggi sehingga dapat dengan mudah dihubungkan dengan rangkaian kendali khusus serta tidak memerlukan penyetelan lanjutan. Meskipun tegangan sensor ini dapat mencapai 30 volt akan tetapi yang diberikan kesensor adalah sebesar 5 volt, sehingga dapat digunakan dengan catu daya tunggal dengan ketentuan bahwa LM35 hanya membutuhkan arus sebesar 60 A hal ini berarti LM35 mempunyai kemampuan menghasilkan panas (self-heating) dari sensor yang dapat menyebabkan kesalahan pembacaan yang rendah yaitu kurang dari 0,5 C pada suhu 25 C.

sensor jenis ini memiliki keluaran langsung kedalam bentuk tegangan. menurut data sheet Sensor ini dapat mendeteksi suhu -55 c sampai 150 c. Sensor ini memiliki skala keluaran sebesar 10mV/C, Pada suhu +150 C outputnya +1500mV Pada suhu +25 C outputnya +250mV Pada suhu -55 C outputnya -550mV

Untuk membuat termometer digital menggunakan lm35 ini rangkaiannya adalah sebagai berikut.

Hal yang terpenting dalam proses pembacaan data dari sensor adalah kalibrasi. Karena (redmenurut datasheet) lm35 sudah terkalibrasi dalam celcius maka, untuk mendapatkan suhu tinggal dihitung saja tegangan outputnya dengan pin adc. Dalam program ditulis dengan sintakSUHU = read_adc(0); suhu_celcius = (float)SUHU*500/1023;//rumus untuk mengubah kedalam derajat celcius

berikut adalah listing program lengkapnya.int SUHU; char temp[8]; float suhu_celcius; #include #include #include #include

// Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm #define ADC_VREF_TYPE 0x40 // Read the AD conversion result unsigned int 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 ADCW; } void main(void) { // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 750.000 kHz // ADC Voltage Reference: AVCC pin // ADC Auto Trigger Source: None ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84; // LCD module initialization lcd_init(16); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("ElectrO-cOntrOl"); lcd_gotoxy(0,1); lcd_putsf("SENSOR SUHU LM35"); delay_ms(1000); while (1) { lcd_clear( ); SUHU = read_adc(0); suhu_celcius = (float)SUHU*500/1023;//rumus untuk mengubah kedalam derajat celcius lcd_gotoxy(0,0); lcd_putsf("Tugas TIP"); ftoa(suhu_celcius,1,temp);//mengubah tipe data float ke tipe data array yg akan ditampilkan di LCD lcd_gotoxy(0,1); lcd_puts(temp); lcd_gotoxy(5,1);

lcd_putchar(0xdf);//menampilkan karakter derajat lcd_putsf("C"); delay_ms(500); }; }

Digital Compass CMPS031. Karakteristik Digital Compass Sistem navigasi yang cukup baik, efektif, mudah digunakan dan murah meriah adalah dengan kompas digital. Banyak jenis kompas digital yang diproduksi khusus untuk keperluan robotika, salah satu yang sangat populer adalah CMPS03 Magnetic Compass buatan Devantech Ltd. CMPS03 yang berukuran 4 x 4 cm ini menggunakan sensor medan magnet Philips KMZ51 yang cukup sensitif untuk mendeteksi medan magnet bumi.

Gambar 1. CMPS03 Digital Compass

Kompas digital ini hanya memerlukan supplai tegangan sebesar 5 Vdc dengan konsumsi arus 15mA. Pada CMPS03, arah mata angin dibagi dalam bentuk derajat yaitu : Utara (00), Timur (900), Selatan (1800) dan Barat (2700). Ada dua cara untuk mendapatkan informasi arah dari modul kompas digital ini yaitu dengan membaca sinyal PWM (Pulse Width Modulation) pada pin 4 atau dengan membaca data interface I2C pada pin 2 dan 3. PWM Interface Sinyal PWM adalah sebuah sinyal yang telah dimodulasi lebar pulsanya. Pada CMPS03, lebar pulsa positif merepresentasikan sudut arah. Lebar pulsa bervariasi antara 1mS (00) sampai 36.99mS (359.90). Dengan kata lain lebar pulsa berubah sebesar 100uS setiap derajatnya. Sinyal akan low selama 65mS diantara pulsa, sehingga total periodanya adalah 65mS + lebar pulsa positif (antara 66mS sampai 102mS). Pulsa tersebut dihasilkan oleh timer 16 bit di dalam prosesornya, yang memberikan resolusi 1uS. Selain PWM, CMPS03 juga dilengkapi dengan interface I2C yang dapat digunakan untuk membaca data arah dalam bentuk data serial. Pada mode 8 bit, arah utara ditunjukkan dengan data 255 dengan resolusi 1,40625 derajat/bit. Pada mode 16 bit, arah utara ditunjukkan dengan data 65535 sehingga resolusinya menjadi 0,0055 derajat/bit. I2C Interface Pin 2 dan 3 adalah jalur komunikasi I2C dan dapat digunakan untuk membaca data arah (bearing). Jika jalur I2C tidak digunakan, maka pin ini harus di pull up (ke +5V) melalui resistor yang nilainya sekitar 47K, nilai resistor tidak kritikal.

Gambar 2. I2C Communication Protocol

I2C communication protocol dimulai dengan mengirimkan start bit, address modul digital compass dengan read/write low (0xC0), kemudian nomor register yang akan dibaca. Selanjutnya diikuti dengan start bit lagi, address modul digital compass dengan read/write high (0xC1). Selanjutnya anda bisa membaca satu atau dua register (8 bit atau 16 bit). Untuk register 16 bit, yang pertama kali dibaca adalah high byte. CMPS03 memiliki 16 register sesuai tabel berikut : Tabel 1. Register CMPS03Register 0 1 2,3 4,5 6,7 8,9 10,11 12 13 14 15 Function Software Revision Number Compass Bearing as a byte, i.e. 0-255 for a full circle Compass Bearing as a word, i.e. 0-3599 for a full circle, representing 0-359.9 degrees. Internal Test - Sensor1 difference signal - 16 bit signed word Internal Test - Sensor2 difference signal - 16 bit signed word Internal Test - Calibration value 1 - 16 bit signed word Internal Test - Calibration value 2 - 16 bit signed word Unused - Read as Zero Unused - Read as Zero Unused - Read as Zero Write 255 to perform calibration step. See text.

Register 0 adalah Software revision number. Register 1 adalah data arah yang diubah dalam nilai 0-255. Dalam aplikasinya ini lebih mudah dibandingkan nilai 0-360 karena memerlukan dua byte. Untuk resolusi yang lebih tinggi pada Register 2 dan 3 akan menyimpan data arah 16 bit dengan nilai 0-3599. Ini menunjukkan arah 0-359.9. Register 4 sampai 11 adalah internal test register. Register 12, 13 dan 14 tidak digunakan. Register 15 digunakan untuk melakukan kalibrasi kompas. Pin 7 adalah input untuk memilih mode operasi 50Hz (low) atau 60Hz (high). Pilihan ini diperlukanuntuk melakukan sinkronisasi dengan frekuensi jala-jala PLN jika digital compass menggunakanpower supply yang terhubung ke jala-jala PLN. Hal ini dapat menurunkan deviasi pembacaan dataarah. Proses konversi didalam sensor, selesai dalam waktu 40mS (50Hz) atau 33.3mS (60Hz). Pin ini memiliki resistor pullup on board dan dapat dibiarkan tidak terhubung (unconnected) untuk operasi 60Hz. Pin 6 digunakan untuk kalibrasi digital compass. Pin ini memiliki resistor pullup on board dan dapat dibiarkan tidajk terhubung setelah proses kalibrasi.

2. Kalibrasi Kalibrasi hanya perlu dilakukan sekali, data kalibrasi akan disimpan didalam EEPROM pada chip PIC16F872. Anda tidak perlu melakukan kalibrasi lagi setiap kali modul diaktifkan. Modul digital compass harus tetap dalam posisi horizontal terhadap permukaan bumi dengan sisi komponen berada dibagian atas. Jauhkan modul dari metal, terlebih lagi dari objek yang mengandung magnet. Kalibrasi Rev 3 Software a. Kalibrasi Dengan Metode I2C Untuk mengkalibrasi kompas menggunakan I2C, anda hanya perlu menuliskan data 255 ke register 15 dan memutar modul kompas secara perlahan sampai 360 derajat. Menuliskan 0 pada register 15 akan menyimpan nilai kalibrasi kedalam EEPROM internal prosesor. Pembacaan dilakukan oleh prosesor pada empat titik arah kompas dan nilai ini digunakan untuk menghasilkan nilai kalibrasi. Register 14 membaca 255 selama operasi normal. Dan membaca 0 pada mode kalibrasi dan 255 lagi ketika 4 titik arah kompas telah diukur. Register 14 kemudian akan menunjukkan bahwa 4 titik telah didapat. Kemudian nilai 0 dapat dituliskan ke register 15 untuk menyimpan data kalibrasi dan kompas akan kembali ke operasi normal. Sangat penting untuk memutar kompas secara sangat perlahan selama proses kalibrasi untuk menghindari kehilangan titik arah kompas yang diperlukan dan kompas harus tetap horizontal untuk memastikan akurasi proses kalibrasi. b.Kalibrasi Dengan Metode Pin Pin 5 dan 6 digunakan untuk mengkalibrasi kompas. Pin 6 dibuat low dan putar kompas 360 derajat secara sangat perlahan. Setelah itu Pin 6 dibuat high agar data kalibrasi tersimpan didalam EEPROM internal prosesor. Pin 5 akan high dalam kondisi normal, dan akan low selama proses kalibrasi. Pin 5 akan high kembali ketika 4 titik arah kompas telah diukur. Kalibrasi Rev 7 Software Pin 5 (CalDone) dan register 14 (Calibration Done Flag) tidak digunakan pada Rev 7 software atau CMPS03. Pin 5 harus dibiarkan tidak terhubung dan register 14 diabaikan. Pada saat mengkalibrasi kompas, anda harus tahu dengan pasti arah Utara, Timur, Selatan dan Barat. Jangan menebak-nebak. Gunakan magnetic compass. a.Kalibrasi Dengan Metode I2C Untuk mengkalibrasi dengan I2C, anda hanya perlu menuliskan 255 (0xFF) ke register 15 untuk tiap 4 titik arah, Utara, Timur, Selatan dan Barat. Secara internal, nilai 255 akan clear secara otomatis setelah semua titik terkalibrasi. Berikut adalah langkah-langkah kalibrasi : 1. Pastikan kompas pada posisi rata, hadapkan kearah Utara, tuliskan 255 ke register 15. 2. Pastikan kompas pada posisi rata, hadapkan kearah Timur, tuliskan 255 ke register 15. 3. Pastikan kompas pada posisi rata, hadapkan kearah Selatan, tuliskan 255 ke register 15. 4. Pastikan kompas pada posisi rata, hadapkan kearah Barat, tuliskan 255 ke register 15. b.Kalibrasi Dengan Metode Pin Pin 6 dapat dihubungkan ke 0V (Ground) dengan sebuah push button switch. Dan lakukan langkah-langkah berikut : 1. Pastikan kompas pada posisi rata, hadapkan kearah Utara, tekan switch dan lepaskan. 2. Pastikan kompas pada posisi rata, hadapkan kearah Timur, tekan switch dan lepaskan. 3. Pastikan kompas pada posisi rata, hadapkan kearah Selatan, tekan switch dan lepaskan. 4. Pastikan kompas pada posisi rata, hadapkan kearah Barat, tekan switch dan lepaskan.

3. Contoh Aplikasi Pembacaan Data 8 bit Digital Compass Pada aplikasi ini mikrokontroler akan membaca data arah dari CMPS03 dan ditampilkan ke LCD. ATmega 8535L

PS03Gambar 3. Rangkaian Aplikasi Digital Compass

Berikut adalah langkah percobaannya : 1. Lakukan setting codewizard sebagai berikut :

2. Buat program sebagai berikut :/********************************************* This program was produced by the CodeWizardAVR V1.24.0 Standard Automatic Program Generator Copyright 1998-2003 HP InfoTech s.r.l. http://www.hpinfotech.ro e-mail:[email protected] Project : Version : Date : 11/12/2007 Author : hendawan Company : Comments: Chip type : ATmega8535L Program type : Application Clock frequency : 11,059200 MHz Memory model : Small External SRAM size : 0 Data Stack size : 128 *********************************************/ #include #include // I2C Bus functions #asm .equ __i2c_port=0x1B .equ __sda_bit=1 .equ __scl_bit=0 #endasm #include // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x12 #endasm #include unsigned char Msg1[16]; unsigned char Msg2[16]; // Declare your global variables here /* read a byte from the COMPASS */ unsigned char data; float posisi; void compass_read() { i2c_start(); i2c_write(0xC0); i2c_write(0x01); i2c_start(); i2c_write(0xC1); data=i2c_read(0); i2c_stop(); } void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In // State0=T State1=T State2=T State3=T State4=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func0=In Func1=In Func2=In Func3=In Func4=In // State0=T State1=T State2=T State3=T State4=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func0=In Func1=In Func2=In Func3=In Func4=In // State0=T State1=T State2=T State3=T State4=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func0=In Func1=In Func2=In Func3=In Func4=In // State0=T State1=T State2=T State3=T State4=T PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00;

Func5=In Func6=In Func7=In State5=T State6=T State7=T

Func5=In Func6=In Func7=In State5=T State6=T State7=T

Func5=In Func6=In Func7=In State5=T State6=T State7=T

Func5=In Func6=In Func7=In State5=T State6=T State7=T

MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off ACSR=0x80; SFIOR=0x00; // I2C Bus initialization i2c_init(); // LCD module initialization lcd_init(16); while (1) { // Place your code here compass_read(); posisi=data; sprintf(Msg1,"Bearing=%d ",data); sprintf(Msg2,"t=%f.%u\xdf",posisi%10); lcd_gotoxy(0,0);lcd_puts(Msg1); lcd_gotoxy(0,1);lcd_puts(Msg2); }; }

KALIBRASI,CARA PENGGUNAAN, SKEMA RANGKAIAN, CODING DARI SENSOR-SENSOR

Disusun Oleh: Mochamad Arif Haryadi L2F009123

JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS DIPONEGORO SEMARANG 2012