Bila dilihat perkembangan blog ini dalam 1 tahun kebelakang memang sedikit saja postingan yang ditulis oleh saya. Ya karena saya merasa ilmu dasar sudah banyak saya tumpahkan dan bila pembaca rajin mengikuti dari awal maka saya rasa kemampuannya akan tidak jauh berbeda dengan apa yang saya miliki. Walau memang jumlah posting semakin sedikit dan jarang jarang akan tetapi pertanyaan yg masih banyak diajukan via email/sms/WA dll masih saya layani disela kesibukan. Lalu kemanakah saya ?
Minggu, 17 Agustus 2014
Hobby dan Karir yang Saling Menunjang
"...GAN ....kok jarang diupdate lagi nih blognya ? di kaskus juga kok sepi-sepi aja ? ....."
Bila dilihat perkembangan blog ini dalam 1 tahun kebelakang memang sedikit saja postingan yang ditulis oleh saya. Ya karena saya merasa ilmu dasar sudah banyak saya tumpahkan dan bila pembaca rajin mengikuti dari awal maka saya rasa kemampuannya akan tidak jauh berbeda dengan apa yang saya miliki. Walau memang jumlah posting semakin sedikit dan jarang jarang akan tetapi pertanyaan yg masih banyak diajukan via email/sms/WA dll masih saya layani disela kesibukan. Lalu kemanakah saya ?
Foto diatas saya ambil sekitar tahun lalu setelah timnas U-19 membantai timnas U-19 korea, dan benar juga keesokan harinya saya menerima surat pemutusan hubungan kerja dari bos korea saya. Walau fotonya hanya gurauan semata tapi cukuplah buat menghibur hati yang galau....kemanakah akan melangkah dengan uang pesangon yang tanggung ? Haruskah membuka warung nasi babi guling atau beternak itik dan lele dikampung ? Orang bijak pernah menulis...."bakarlah kapalmu agar tidak ada pilihan selain berenang ke pulau tujuan" ....ishhhh ini kapal terbakar dan tenggelam bersama-sama penumpangnya. Tapi pelampung yang bernama "Hobby Solder Menyolder" mengapungkan saya kearah yang dirasa akan menuju ke tujuan.
Apa yang terjadi selanjutnya adalah jawaban dari rahasia tuhan 5 tahun sebelumnya. Pada tulisan terdahulu saya menjelaskan perjalanan dari lulus 2003, meninggalkan dunia solder sehingga tahun 2009 dan saat itu tuhan memberikan petunjuk bahwa saya harus meneruskan hobby lama ini. Istri pun merasa heran kenapa saya kok kembali meringkuk di ruangan penuh kabel dan komponen berserakan, mengutak atik sampai larut malam. Ya namanya juga rahasia tuhan ya saya juga tidak tahu atau sadar dan hanya berusaha melakukan yg saya memang sukai sejak kecil sehingga terasa mudah. Dari memulai kembali perkenalan dengan AVR, microprocessor dan tidak lupa komponen diskrit dan yang lainnya, juga mengumpulkan tools penunjang, mencari resource dan tulisan2 elektronika sampai troubleshooting alat-alat elektronika....sekali lagi hobby tak akan membuatmu lelah.
Ketika bos-bos korea meninggalkan kota surabaya yang di tinggalkannya adalah harta karun berupa proyek lama yang mau tidak mau harus saya ambil. Begitu pula pelanggan dan klien lama masih mengandalkan kita untuk menangani perangkat mereka. Dengan "POWER OF KEFEFET" saya dan beberapa teman senasib membentuk suatu CV kecil yg bertugas menggantikan perusahaan yang lama....dan tentu saja proyek yg mungkin nilainya dianggap kecil oleh si korea (makanya mereka pergi) bagi kami ini adalah berkah yang lumayan menggiurkan. Lalu apa hubungannya dengan Hobby Solder Menyolder ?
Perangkat yg mereka tinggalkan ada yg perlu di repair dan karena hubungan ke korea terputus ya terpaksa harus di reparasi di lokal. Ya... "ini kesempatan baik" kata teman-teman seperjuangan dan saya yang "tukang solder" ditantang untuk memperbaiki barang yg dulunya hanya bisa kita sentuh luarnya dan tidak satu mur-baut pun boleh lepas ! Duhhh barang apa pula ini....apakah komponennya umum ? apakah processornya dapat di ganti ? Bagaimana dengan komponen SMD yang aneh-aneh ? Pusing kepala dibuatnya...sampai tidur tidak nyenyak. Sebagai orang normal tentunya perasaan menyerah di awal ini adalah penyakit yang harus dibasmi. Dengan bantuan seorang rekan yg mendorong saya dengan cara yang cukup aneh...dibawanya modul ini ke tukang servis tv dan ternyata berhasil jalan seperti normal kembali.!!
MAK JANGGG....diriku tertegun dan ....terpaksa mengakui tukang servis tv itu problem solver ....yaaa ! yang diperlukan adalah kemampuan mencari komponen rusak, tanpa perlu mengetahui fungsi rangkaian nya secara keseluruhan. Wuihhhh...saya yg sarjana dan bekerja dibidang yg sama seharusnya saya tahu cara kerjanya komponen dan rangkaian pada modul ini ...dan tak berselang lama 1..2..3...dan banyak jenis modul yg saya berhasil perbaiki hanya dengan cara belajar teknik reparasi umum. Persetan dengan FPGA dan MicroProcessor yang ternyata sesuai dengan harganya yang mahal maka kehandalannya pun tidak diragukan, berbeda dengan komponen diskrit berharga murah yang kemungkinan rusaknya besar.
Bendera perusahaan kami semakin berkibar dengan menyebarnya kabar bahwa proyek peninggalan si korea bisa jalan dengan kemampuan anak bangsa sendiri. Beberapa tawaran repair modul lain pun hadir dan mungkin saya akan meninggalkan blog ini ....ooopppsss jangannn.....oke saya akan menghaluskan kata-kata saya dengan berjanji akan terus menulis bila ada waktu. Dan saya jamin tulisan saya akan mengilhami banyak orang Indonesia lainnya bahwa kita MAMPU mengerjakan apa saja asal sesuai bidang dan apalagi sesuai hobby dan menghasilkan . Iya tidak ?
Selasa, 24 Juni 2014
[ PROJECT ] Intercom PTT (push to talk) memanfaatkan kit amplifier
INTERCOM ...jadul amat sih boz...kata salah satu teman di kantor saya yg baru. Tapi capek juga kalau mesti turun tangga atau menghabiskan urat tenggorokan 'teriak' kalau ada keperluan mendesak dari lantai 1 ke lantai 2. Masalah yang agak terlalu "gampang" bagi penggemar elektronika...tinggal beli kit intercom atau wireless handy talkie. Ehhh ternyata di toko elektronika sebelah adanya cuman kit preamp mic dan kit amplifier OCL 100 watt. kata yang jualan " Jadul amat mas cari intercom, napa ga pake HP aja ?" ...iya juga sihh..di playstore android ada juga app nya kok dengan search kata kunci "PTT (push to talk)"...masa bodooo...kita ini orang elektronika...solder aja !!
Dan gambar diatas menunjukkan daftar belanjaan kami. Ada kit preamp + mic condenser, kit amplifier, push button DPDT, speaker kecil dan adaptor 12v. Mulailah merangkai dengan sangat gampang , tujuan pertamanya mengetest mic --> preamp --> ampli --> speaker ...setelah tersambung hasilnya mengecewakan, mic condensernya kurang sensitif terhadap suara atau mungkin pre-amp nya kurang gede. Sang arsitek yg bernama deni pun ga kalah akal dengan bimbingan master aisi555 kemudian dimanfaatkanlah speaker sebagai microphone. Kok bisa bos ? ya bisa lah..wong dalemannya mic sama aja dengan speaker.
Bagaimana dengan koneksi dan perkabelan nya ? ya perhatikanlah dengan seksama gambar dibawah ini, warna-warni dari koneksi menunjukkan hubungan yang berbeda dan hanya dibutuhkan 5 buah pasang kabel. Power suply dan bagian preamp/ampli bisa diletakkan dimana saja.
Klik pada gambar dibawah biar tambah jelas
Keterangan:
- Speaker B dan switchnya di letakkan berjauhan dengan rangkaian utama, menggunakan sambungan 5 kabel ( 12v adaptor, suply 12v ke kit, input Mic preamp, output Amplifier, dan Ground)
- Hubungkan kabel dengan warna sama dan nama yg sama. Hanya gunakan 1 Baterai/adaptor saja, jangan salah ya ... yg kodenya panah 12V itu nyambung .
- Tekan switch untuk berbicara didepan speaker, otomatis speaker lawan akan terdengar suara juga
Prinsipnya adalah memanfaatkan switch DPDT untuk memilih speaker apakah sebagai input atau output dan juga memutus arus supply dari adaptor ke pre-amp/amplifier (agar lebih awet). Video demonya dapat dilihat pada video youtube berikut :
Jika alat ini diberikan box yg bagus bisa dipasang di depan gerbang/ pintu disebelah bel pintu sehingga bisa menyapa tamu yang akan berkunjung dan bisa saja mengusir marketing kartu kredit yg iseng ke rumah. Kalau ditambah kamera video kecil bagus juga tuh.
TIPS :
TIPS :
- Untuk menghasilkan suara lebih jernih tanpa dengung maka pada output adaptor cukup diberi regulator tegangan 78xx (dalam contoh ini 7812), kecuali adaptornya memang sudah bagus outputnya semisal adaptor switching.
- Switch DPDT seperti contoh yg digunakan aslinya memiliki latch/kunci atau kata lain bukan toggle yg akan kembali setelah di lepas. Jadi modifikasi kawat/besi pengait dengan menariknya dan kemudian cukup diletakkan disamping untuk menjadikannya toggle switch.
SELAMAT MENCOBA !!
.
Senin, 09 Juni 2014
[Tutorial] 4 Led Matrix dengan Mega8535/16
Bahan-Bahan:
- ATMega 8535/16/32
- 4 buah Led matrix 7x5
- 3 bh Resistor 10K
- 2 Tombol tactile switch
- Breadboard / projectboard
- Kabel secukupnya
Dasar yg harus dikuasai:
Dasar I/O, Led Matrix Lovehurt , Counter/Timer
Skematik :
Klik untuk lebih jelas, baca keterangan pada gambar
Script Jam Led matrix
#define F_CPU 1000000UL //ubah sesuai clock micro #include <avr/io.h> #include <util/delay.h> #include <avr/eeprom.h> #include <inttypes.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <string.h> //ARRAY UNTUK MENYIMPAN DATA ANGKA const char textset[] PROGMEM = {0x7f, 0x41, 0x7f, //0 0x80, 0x80, 0x7f, //1 0x79, 0x49, 0x4f, //2 0x49, 0x49, 0x7f, //3 0x0f, 0x08, 0x7f, //4 0x4f, 0x49, 0x79, //5 0x7f, 0x49, 0x79, //6 0x01, 0x01, 0x7f, //7 0x7f, 0x49, 0x7f, //8 0x4f, 0x49, 0x7f, //9 }; char titik_dua = 0x14; // : char blk = 0x80; // BLANK char fulltext[22] ; //ARRAY TAMPILAN led matrix char detik,menit,jam; //variabel jam void cleartext(void) // MEMBERSIHKAN datanya menjadi kosong { uint8_t i; for(i=0 ; i <20 ; i++) { fulltext[i] = 0 ; } } void ubah_angka(char angka1, char angka2, char angka3, char angka4) { //routine mengubah angka waktu ke tampilan led matrix uint8_t a,b; //jam b=angka1*3; for(a=b; a<b+3; a++) strncat_P(fulltext,&textset[a],1); //spasi strncat(fulltext,&blk,1); b=angka2*3; for(a=b; a<b+3; a++) strncat_P(fulltext,&textset[a],1); strncat(fulltext,&blk,1); strncat(fulltext,&blk,1); // untuk tampilan titik dua berkedip if(detik%2 == 0)strncat(fulltext,&titik_dua,1); else strncat(fulltext,&blk,1); strncat(fulltext,&blk,1); strncat(fulltext,&blk,1); //menit b=angka3*3; for(a=b; a<b+3; a++) strncat_P(fulltext,&textset[a],1); strncat(fulltext,&blk,1); b=angka4*3; for(a=b; a<b+3; a++) strncat_P(fulltext,&textset[a],1); } //routine untuk scanning & menulis ke led matrix void tulis_text(void) { uint8_t a; int b,speed; a=0; speed=5;//UBAH NILAI speed sesuai kedip dan kecerahan yg diinginkan while(a<21) { for(b=0;b<speed;b++ ) { if(a<8 ) { PORTD = ~(1<<a) ; PORTC =0b11111111; PORTB =0b1111; } else if(a>=8 && a<16) { PORTC = ~(1<<(a-8)) ; PORTD =0b11111111; PORTB =0b1111; } else if(a>=16 && a<21) { PORTB = ~(1<<(a-16)) ; PORTD =0b11111111; PORTC =0b11111111; } PORTA=fulltext[a]; _delay_us(50); PORTA=0x80; //biar tidak berbayang } a++; } } ISR(TIMER1_COMPA_vect) //vector interupt untuk 1/2 detik { detik++; //dibuat 1/2 detik agar mudah menampilkan : kedap kedip if(detik==120) // 1 menit { menit++; if(menit==60) //1 jam { jam++; if(jam==24)jam=0; // 1 hari menit=0; } detik=0; } cleartext(); ubah_angka(jam/10, jam%10, menit/10, menit%10); //tampilkan } void init_timer(void) { TCCR1B |= (1 << CS11)|(1 << CS10); // Set up counter dengan prescale 64 //Baca datasheet untuk mencari konfigurasi prescaler micro yg sesuai TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode TIMSK |= (1 << OCIE1A); // Enable CTC interrupt OCR1A = 7812; // nilai atas dari TCNT1, untuk perhitungan 1 detik sei(); //hidupkan interupt } int main(void) { //bagian ini sesuaikan dengan port micro yg kamu gunakan DDRA = 0b11111111; // portA = data text dot matrix DDRC = 0b11111111; //scanning kolom DDRD = 0b11111111; //scanning kolom DDRB = 0b11001111; //scaning, PB5 & PB4 sebagai tombol jam = 10; menit = 23; init_timer(); while(1) { tulis_text(); //ini untuk pembacaan tombol if (bit_is_clear(PINB, PINB4)) // membaca tombol jika port input B#4 di clear LOW / 0 { menit++; if(menit>=60) menit=0; _delay_ms(200); } if (bit_is_clear(PINB, PINB5)) // membaca tombol jika port input B#5 di clear LOW / 0 { jam++; if(jam>=24) jam=0; _delay_ms(200); } } return 0; }
Hasil
SELAMAT MENCOBA
.
Minggu, 08 Juni 2014
Dukun Fusebit Mengalahkan Fusebit Doctor !
Pernah mengalami masalah ic tidak response setelah mengubah fusebit clock pada microcontroler AVR ?
Anda lupa clock yg digunakan atau Xtal yang akan disolder entah kemana ?
Duit cekak di penghujung bulan sementara tugas sudah deadline ?
Duit cekak di penghujung bulan sementara tugas sudah deadline ?
DUKUN FUSEBIT AKAN MEMBANTU ANDA !
Anda tidak perlu menggunakan Fusebit Doctor yg dijual dipasaran atau rangkaian njlimet lainnya
Cukup Menggunakan Praktek dasar timer 555 yang ada disini
Dengan Menggunakan Rumus Frequency = 1.44 / [C*(R2 + 2*R1)]
Maka buatlah clock dengan frekuensi 500khz- 1Mhz dan hubungkan dengan kaki output (3) dari timer 555 menuju XTAL1 pada ic microcontroller AVR anda.
Putar-putar VR/ Trimpot sehingga memiliki resistansi berkisar 20k - 30 k ohm dan hubungkan avr ke isp programmer seperti biasa ( disarankan menggunakan stk500/avrisk mk2, rangkai micro seperti biasa dan jangan lupa di beri vcc/gnd/pull up di rst). Jika Read signature berhasil maka lakukan perubahan Fusebit seperti biasa (ubah ke default internal RC saja)
Contoh ubah fusebit di avrstudio 4
Syarat dan ketentuan:
- IC microcontroller dalam keadaan BAIK, hanya fusebit clock nya saja yg salah atau lupa
- Port SPI masih dalam posisi ENABLE, jika tidak maka perlu HVPP (high Voltage Parallel Programming) atau menggunakan universal programmer (All-7/All-100) yg biasanya ada di toko yg melayani pengisian EEPROM Player DVD/TV
TUNGGU APALAGI ...
SELAMAT MENCOBA !!
Sabtu, 29 Maret 2014
Elektronika Untuk Anak - Jurang Generasi Orangtua vs Anak
Senangnya melihat anak-anak ini meluangkan waktu dengan robot lego (walau berharga jutaan rupiah), si ortu pun jadi terkurangi bebannya karena anak-anak bisa menghabiskan waktu dengan lebih baik daripada menonton acara alay di tv. Salah satu teman penulis yg mempunyai 2 orang anak SD baru saja pulang dari jalan-jalan ke luar negeri dan membawakan oleh-oleh anaknya berupa robot rakitan. Dan karena kebingungan harus memulai darimana dan takut kalau mainan yang mahal ini nantinya rusak, akhirnya di kontaklah penulis dan ditodong untuk mengajarkan anaknya bagaimana cara bermain-main dengan robot ini. Tentunya bagi penulis sangat mudah karena sudah tersedia software bawaan yg cukup mudah dengan GUI yg sangat interaktif. Dan apa yg terjadi dengan si anak ? yahh karena tanpa tantangan yang berarti dalam 1 minggu mainan robot yang mahal itu hanya menjadi pajangan di lemari.
Teringat pada jaman dulu ketika penulis masih kecil di tahun 80-an, mungkin mainan dengan pelepah pisang adalah favorit penulis walau akhirnya di ujung SD lebih tertarik dengan warna warni LED, tapi tetap saja lebih asyik bermain perang-perangan bersama teman. Begitu juga dengan teman penulis yang ceritakan diatas juga menghabiskan masa kecil tahun 80-90 an dengan bermain gundu/neker/kelereng sampai dikatakan menjadi juragan gundu karena punya 1 kaleng biskuit yang berisi ratusan gundu.
Bagaimana dengan dunia elektronika jaman 80-90an ? Seingat penulis, Indonesia pada jaman itu hanya berkutat di dunia audio dan radio (walau mungkin di lingkungan kampus era digital mulai ramai), dengan pengalaman penulis yang berlomba dengan teman sekelas untuk merakit amplifier OCL 150 watt dan mencobanya ke speaker segede gaban sampai transistor Jengkol 2N3055 mengeluarkan asap! Bagi yang mempunyai uang lebih dan kurang hobby menyolder biasanya memiliki radio break (HT/ CB) atau mungkin kalo didesa terpencil bisa tetap bercuap-cuap juga (bisa disebut moyangnya whatsapp ) menggunakan intercom dengan kabel kawat yg di bentangkan di sekeliling desa.
Jadi dapat dibayangkan kesenjangan antara orang tua dan anak dan hal ini bisa menjadi sangat menjengkelkan bagi kedua pihak. Sang ayah masih terbayang-bayang dengan masa kecil yang hanya menunggu hari minggu pagi untuk menonton si unyil atau kartun polisi akademi, sedangkan sang anak termanjakan dengan gadget , game console, komputer dan internet yang dapat dinikmati kapan saja. Hobby elektronika pun menjadi relatif mahal dengan munculnya modul siap pakai atau robot rakitan yang bagi beberapa orang demi prinsip "sayang anak" akhirnya dituruti juga .
** gambar wajah sengaja di tutup sesuai UU perlindungan anak
Berbagai prestasi "semu" dari anak-anak SD dalam hal elektronika banyak diekspose media, seperti anak SD pencipta robot , juara lomba line follower dan sebagainya. Umumnya judul berita akan dibuat hiperbola dan sedikit miris karena kalau dipikir anak SD tentu belum menguasai prinsip elektronika secara baik dan guru pembimbinglah yang lebih berperan. Lalu apakah ini salah ? Tidak ! yang salah adalah ketika guru menuntut anak didik yang terlalu berlebihan dan cenderung agak "berbohong" dengan mengatakan bahwa ini adalah kreasi ciptaan mereka. Sebaiknya (menurut pendapat penulis) tetap diberikan porsi kejujuran dengan menjelaskan bahwa anak-anak ini merakit, memprogram dan menjalankan kreasi mereka dengan bantuan guru dan diingat siswa hanya sebagai peserta lomba merakit , bukan menciptakan !
Seiring dengan bertambahnya umur maka kemampuan anak akan berkembang. Pada usia SD sebaiknya dimulai dengan bermain LED menggunakan IC diskrit semacam 555 + 4017 dan ini pas buat mereka. Jika ini kurang menarik cobalah orang tua mengajak anak berkreasi dengan kombinasi input dan output semisal sensor sederhana dengan limit switch yg akan mengeluarkan suara sirene atau lampu alarm kedap-kedip (Flip Flop) saat jendela terbuka. Sesuatu yg bergerak akan sangat disenangi oleh anak-anak semisal menambahkan lampu LED + sirene pada mobil-mobilan atau pada sepeda yang anak miliki.
Ketika sudah mencapai umur SMP-SMA ini adalah saat yg tepat untuk mengajarkan elektronika yang sudah lumayan maju. Walau penulis sangat benci dengan modul siap pakai tapi kenyataannya modul ini dapat juga menjadi "penolong" agar anak-anak tidak menjadi cepat bosan. Microcontroller sekelas AVR dan arduino cukup menjadi awal menuju ke elektronika digital jaman sekarang. Mungkin ortu yg jadul dengan IC TTL/CMOS nya dapat juga menyelipkan ilmu-ilmu lawas agar anak-anak menjadi lengkap ilmunya. Ingat bahwa anak jaman sekarang lebih gampang menyerap hal baru sehingga jangan heran mereka akan cepat bosan jika kurang tantangannya . Yah mau bagaimana lagi karena pilihan yg dimiliki anak jaman sekarang jauh lebih beragam daripada jaman 80-an ketika hanya beberapa pilihan dan itupun sudah dianggap seru sekali !
Ketika beranjak kuliah semua hal dapat terjadi bagi sang anak, mungkin dia akan menjadi pengejar wanita atau kutu buku tapi hal ini bisa dianggap sebagai perkembangan yg wajar selama masih menghargai norma -norma. Satu hal yg mungkin akan berguna bagi mereka adalah nilai " kejujuran " karena tidak jarang peserta lomba robotika di tingkat universitas lebih memalukan daripada lomba line follower tingkat SD. Tidak perlu saya sebutkan siapa yang pernah melakukan ini tapi pada intinya tetap uang yang berbicara. Siapa yg bisa belanja motor dan kontrol yg lebih mahal biasanya akan juara ! Mungkin hanya keberuntungan akan mengalahkan robot "berduit". Sekali lagi ini sah-sah saja karena kita sadar hidup di lingkungan yang seperti tidak sadar bahwa hal ini akan merusak nasib bangsa. "Toh nantinya lulus kebanyakan jadi makelar produk buatan zhensen atau beijing, bisa kaya kok !" ....tidak bermaksud menjadi sok suci, tapi kapan lagi ada sebuah lomba robot dengan tingkat komponen lokal 100 % ? Haruskah anak kita membuat mainan senapan dari pelepah pisang yang diimpor dari malaysia ?
Tentunya tulisan ini merupakan isi hati dari penulis yang mungkin saja berseberangan dengan pendapat pembaca. Jika YA berkeberatan silahkan diskusi sehat dimulai di bagian komentar dibawah. Semoga kita dapat nyambung (terutama dalam hobby elektronika) dengan anak-anak dan menjadikan hubungan ortu-anak menjadi lebih berkualitas.
-=ditulis di STO Tandes Surabaya=-
Selasa, 18 Maret 2014
[TUTORIAL] Clinometer (pengukur ketinggian) Sederhana Memanfaatkan ADC
Persiapan sebelum memulai project :
Bahan-bahan yang dibutuhkan :
- Minimum System / ATmega 8535/ ATmega 16
- Display LCD 16 x 2
- Potensiometer linear (nickel) 10K ohm(2 buah)
- Resistor 1K (2 buah)
Project ini adalah request dari anak SMA yang mendapatkan tugas matematika dimana gurunya cukup "Gila" untuk menantang anak didiknya membuat alat clinometer atau pengukur ketinggian. Sang murid mencari di google dan didapatkan rangkaian yg menggunakan acelerometer tapi kendalanya harga yang mahal dan dia pun kesulitan mengerjakannya. Solusi saya cukup sederhana dengan memanfaatkan putaran sudut yg dikonversikan ke putaran potensiometer (variable resistor) yang kemudian dirubah ke dalam level tegangan dan dibaca ADC.
Gambar diatas merupakan ilustrasi trigonometri dari sebuah clinometer dengan mencoba memanfaatkan rumus trigonometri. Keuntungan rumus diatas adalah tidak perlu menentukan jarak pengamat ke benda yang diukur,akan tetapi karena mengandalkan rumus tangen maka dari grafik tangen berikut terjadi sedikit anomali pengukuran jika sudut mendekati kelipatan 90 derajat, dimana tangent 90 adalah tak berhingga !.
grafik tangen yang tidak linear sedikit mempengaruhi keakuratan
Pemilihan potensiometer yang akan digunakan sebagai penerjemah dari sudut ke tegangan (menggunakan prinsip pembagian tegangan) juga perlu diperhatikan karena pada umumnya potentiometer yg dijual dipasaran adalah potentiometer audio yg bersifat logaritmik. Jadi potentiometer yang dipilih adalah berjenis "wire wound" atau yang umum di pasaran bernama "potensiometer nikel".
Output dari project kali ini menggunakan lcd 16x2 yang akan menampilkan nilai sudut alpha, beta dan nilai hasil pengukuran ketinggian.
Perputaran sudut pengukuran vs tegangan yg dihasilkan dapat menggunakan rumus pembagian 10 bit adc (0 - 1023) sehingga didapat sudut yang mewakili per bit. Tentunya potensiometer tidaklah terlalu linear karena banyak faktor dan untungnya kita hanya menggunakan sudut 0-90 derajat saja untuk alpha maupun beta. Saya mendapatkan untuk sudut 0-90 dapat menggunakan pembagian nilai bulat per bit ADC yaitu "pembacaan adc / 3". Jadi sesuaikan dulu dengan respon nilai potensiometer yang kamu punya dengan sudut yang dihasilkan.
Untuk pengukuran tangen pada WinAvr akan digunakan library "math.h" dimana pengukuran sudut akan dirubah menjadi satuan radian. Rumus yang digunakan tentunya akan sangat memakan memory akibat nilai "float" yang digunakan. Hal ini kita akali saja dengan menggunakan unsigned integer 32 bit dengan pendekatan seperti berikut :
- tana = tan((M_PI*adcalpha)/180)*1000;
- tanb = tan((M_PI*adcbeta)/180)*1000;
- tinggi= (tanb/tana) + 1 ;
Kita ingat juga konversi dari derajat ke radian digunakan rumus :
- RADIAN = (PI * sudut ) /180
Pengali 1000 pada rumus diatas digunakan untuk mendapatkan nilai float (pecahan / koma) menjadi ratusan sehingga pembagian menjadi agak bulat.
Skematiknya adalah sebagai berikut ini :
klik untuk memperjelas
Script selengkapnya seperti dibawah ini, diasumsikan bahwa tinggi pengamat 1 meter :
#define F_CPU 4000000UL#include <string.h>#include <avr/io.h>#include <util/delay.h>#include <avr/eeprom.h>#include <math.h>#include "lcd.h"char derajat = 0xDF; // karakter derajatvoid reverse(char s[]) //rutin untuk merubah angka ke ascii{int c, i, j;for (i = 0, j = strlen(s)-1; i < j; i++, j--){c = s[i];s[i] = s[j];s[j] = c;}}void itoa(uint16_t n, char s[])//rutin untuk merubah angka ke ascii
{uint16_t i;i = 0;do { // generate digits in reverse orders[i++] = n % 10 + '0'; // get next digit} while ((n /= 10) > 0); // delete its[i] = '\0'; // add null terminator for stringreverse(s);}void initADC() //inisialisasi ADC{ADMUX=(1<<REFS0);// Aref=AVcc;ADCSRA=(1<<ADEN)|(7<<ADPS0);}uint16_t ReadADC(uint8_t ch) //pembacaan ADC{//Select ADC Channel ch must be 0-7ch=ch&0b00000111;ADMUX|=ch;//Start Single conversionADCSRA|=(1<<ADSC);//Wait for conversion to completewhile(!(ADCSRA & (1<<ADIF)));//Clear ADIF by writing one to itADCSRA|=(1<<ADIF);return(ADC);}int main(void){uint16_t baca1,baca2,tana,tanb,tinggi;char dum;lcd_init(LCD_DISP_ON);//inisialisasi LCDlcd_clrscr(); //bersihkan LCDwhile(1){initADC();baca1=ReadADC(6) / 3; //baca alphaif(baca1 <90){ //jika hasil tidak lewat 90 derajatlcd_gotoxy(0,0);lcd_putc(224); //ascii alphalcd_puts(" =");itoa(baca1,&dum);lcd_puts(&dum);lcd_putc(derajat);lcd_putc(' ');}else{ //jika lebih 90 di warninglcd_gotoxy(0,0);lcd_putc(224);lcd_puts(" =max");}_delay_ms(100);initADC();baca2= ReadADC(5) / 3; //baca beta
if(baca2 <90){ // jika perhitungan < 90 derajatlcd_gotoxy(8,0);lcd_putc(226);lcd_puts(" =");itoa(baca2,&dum);lcd_puts(&dum);lcd_putc(derajat);lcd_putc(' ');}else{ //jika lebih 90 di warninglcd_gotoxy(8,0);lcd_putc(226);lcd_puts(" =max");}_delay_ms(100);lcd_gotoxy(0,1);if(baca1 <90 && baca2 <90){//PERHITUNGAN TINGGItana = tan((M_PI*baca1)/180)*1000;tanb = tan((M_PI*baca2)/180)*1000;tinggi= (tanb/tana) + 1 ;lcd_puts(" TINGGI:");itoa(tinggi,&dum);lcd_puts(&dum);lcd_puts(" m");lcd_puts(" ");}else{lcd_gotoxy(0,1);lcd_puts(" TINGGI: Error !");}}return 0;}
SELAMAT MENCOBA