Kamis, 31 Oktober 2013

JENIS-JENIS SENSOR DAN FUNGSINYA

JENIS-JENIS SENSOR DAN FUNGSINYA
http://m-edukasi.net/online/2008/jenissensor/images/line_title.png
Sensor Suhu
Berfungsi untuk mengubah temperatur/suhu menjadi beda potensial listrik.
Jenis-jenis sensor suhu:
  1. Thermokopel
Berfungsi sebagai sensor suhu rendah dan tinggi, yaitu suhu serendah 3000F sampai dengan suhu tinggi yang digunakan pada proses industri baja, gelas dan keramik yang lebih dari 30000F. Thermokopel dibentuk dari dua buah penghantar yang berbeda jenisnya (besi dan konstantan) dan dililit bersama.
Thermokopel
Prinsip Kerja :
Jika salah satu bagian pangkal lilitan dipanasi, maka pada kedua ujung penghantar yang lain akan muncul beda potensial (emf). Thermokopel ditemukan oleh Thomas Johan Seebeck tahun 1820 dan dikenal dengan Efek Seebeck.
Efek Seebeck:
Sebuah rangkaian termokopel sederhana dibentuk oleh 2 buah penghantar yang berbeda jenis (besi dan konstantan), dililit bersama-sama. Salah satu ujung T merupakan measuring junction dan ujung yang lain sebagai reference junction. Reference junction dijaga pada suhu konstan 320F (00C atau 680F (200C). Bila ujung T dipanasi hingga terjadi perbedaan suhu terhadap ujung Tr, maka pada kedua ujung penghantar besi dan konstantan pada pangkal Tr terbangkit beda potensial (electro motive force/emf) sehingga mengalir arus listrik pada rangkaian tersebut.
Kombinasi jenis logam penghantar yang digunakan menentukan karakteristik linier suhu terhadap tegangan.
Tipe-tipe kombinasi logam penghantar thermokopel:
    1. Tipe E (kromel-konstantan)
    2. Tipe J (besi-konstantan)
    3. Tipe K (kromel-alumel)
    4. Tipe R-S (platinum-platinum rhodium)
    5. Tipe T (tembaga-konstantan)
Tegangan keluaran emf (elektro motive force) thermokopel masih sangat rendah, hanya beberapa milivolt. Thermokopel bekerja berdasarkan perbedaan pengukuran. Oleh karena itu jika ukntuk mengukur suhu yang tidak diketahui, terlebih dulu harus diketahui tegangan Vc pada suhu referensi (reference temperature). Bila thermokopel digunakan untuk mengukur suhu yang tinggi makaa akan muncul tegangan sebesar Vh. Tegangan sesungguhnya adalah selisih antara Vc dan Vh yang disebut net voltage (Vnet).
Besarnya Vnet ditentukan dengan rumus:
Vnet = Vh - Vc
Keterangan :
Vnet = tegangan keluaran thermokopel
Vh = tegangan yang diukur pada suhu tinggi
Vc = tegangan referensi
Gambar grafik tegangan terhadap suhu pada thermokopel tipe E, J, K dan R :
Grafik thermokopel
Gambar di bawah ini menunjukkan beberapa thermokopel yang dihubungkan secara seri membentuk thermopile. Thermopile ini diletakkan di titik tengah pyrometer radiasi dan lensa yang digunakan untuk memfokuskan radiasi (pancaran panas) agar jatuh pada thermopile.
Gambar Thermopile:
Thermopile
Gambar Pyrometer Radiasi:
Pyrometer
Untuk masa sekarang thermokopel sudah dibuat dengan kemasan yang mempunyai unjuk kerja yang lebih peka yang disebut thermopile yang digunakan sebagai pyrometer radiasi.
Grafik hubungan suhu terhadap arus keluaran:
Grafik suhu arus
  1. Thermistor (Thermal Resistor/Thermal Sensitive Resistor)
Berfungsi untuk mengubah suhu menjadi resistansi/hambatan listrik yang berbanding terbalik dengan perubahan suhu. Semakin tinggi suhu, semakin kecil resistansi.
Simbol Thermistor :
Thermistor
Konstruksi Thermistor tipe GM102 :
Konstruksi Thermistor
Thermistor dibentuk dari bahan oksida logam campuran, kromium, kobalt, tembaga, besi atau nikel.
Bentuk Thermistor :
    1. Butiran
Digunakan pada suhu > 7000C dan memiliki nilai resistansi 100 Ω hingga 1 MΩ.
    1. Keping
Digunakan dengan cara direkatkan langsung pada benda yang diukur panasnya.
    1. Batang
Digunakan untuk memantau perubahan panas pada peralatan elektronik, mempunyai resistansi tinggi dan disipasi dayanya sedang. Thermistor dibuat sekecil-kecilnya agar mencapai kecepatan tanggapan (respon time) yang baik.
Pemakaian thermistor didasarkan pada tiga karakteristik dasar, yaitu:
      1. Karakteristik R (resistansi) terhadap T (suhu)
      2. Karakteristik R (resistansi) terhadap t (waktu)
      3. Karakteristik V (tegangan) terhadap I (arus)
Grafik hubungan antara resistansi terhadap suhu thermistor :
Grafik resistansi suhu
Rangkaian Pengendali Suhu Ruangan Sederhana (karakteristik R terhadap t):
Cara kerja rangkaian:
Saat temperatur masih dingin hambatan thermistor sangat besar dibandingkan dengan R2, sehingga transistor dalam kondisi menghantar lalu rele kontak (terhubung) dan heater (pemanas) menghasilkan panas. Akan tetapi, ketika ruangan menjadi panas, thermistor juga ikut panas sehingga hambatannya turun. Hambatan paralel thermistor dengan R2 menjadi kecil, sehingga tegangan bias Tr juga kecil, mengakibatkan Tr dalam kondisi cut off, rele tidak kontak dan heater tidak bekerja. Akibatnya, suhu ruangan turun. Demikian seterusnya proses akan berulang dari awal dan suhu ruangan menjadi konstan.
      1. RTD (Resistance Temperature Detectors)
Berfungsi untuk mengubah suhu menjadi resistansi/hambatan listrik yang sebanding dengan perubahan suhu. Semakin tinggi suhu, resistansinya semakin besar. RTD terbuat dari sebuah kumparan kawat platinum pada papan pembentuk dari bahan isolator. RTD dapat digunakan sebagai sensor suhu yang mempunyai ketelitian 0,03 0C dibawah 5000C dan 0,1 0C diatas 10000C.
Konstruksi RTD bahan platinum:
RTD platinum
RTD terpasang pada permukaan logam:
RTD terpasang
Hubungan antara resistansi dan suhu penghantar logam merupakan perbandingan linear. Resistansi bertambah sebanding dengan perubahan suhu padanya. Besar resistansinya dapat ditentukan berdasarkan rumus :
Rumus 1
Besar resistansi pada suhu tertentu dapat diketahui dengan rumus :
Rumus 2
Keterangan :
R1 = resistansi pada suhu awal
R2 = resistansi pada suhu tertentu
Untuk menghasilkan tegangan keluaran dapat diperoleh dengan mengalirkan arus konstan melalui RTD atau dengan memasangnya pada salah satu lengan jembatan wheatstone.
Gambar rangkaian jembatan wheatstone dengan RTD:
Rangkaian RTD
Persamaan rangkaian jembatan wheatstone:
Rumus 2
Prinsip kerja rangkaian: Bila RTD berada pada suhu kamar maka beda potensial jembatan adalah 0 Volt. Keadaan ini disebut keadaan setimbang. Bila suhu RTD berubah maka resistansinya juga berubah sehingga jembatan tidak dalam kondisi setimbang. Hal ini menyebabkan adanya beda potensial antara titik A dan B. Begitu juga yang berlaku pada keluaran penguat diferensial.
Amplifier diferensial (penguat diferensial) menggunakan IC op-amp yang berfungsi untuk menguatkan tegangan keluaran dari rangkaian jembatan menjadi tegangan yang lebih besar. Jika rangkaian jembatan pada posisi setimbang maka pada titik A dan B mempunyai tegangan dan arus yang sama.
Rumus 3
      1. IC LM 35
Berfungsi untuk mengubah suhu menjadi tegangan tertentu yang sesuai dengan perubahan suhu.
Rangkaian dasar IC LM 35:
IC LM 35
Karakteristik IC LM35
Tegangan keluaran rangkaian bertambah 10 mV/0C. Dengan memberikan tegangan referensi negatif (-Vs) pada rangkaian, sesor ini mampu bekerja pada rentang suhu -550C – 1500C. Tegangan keluaran dapat diatur 0 V pada suhu 00C dan ketelitian sensor ini adalah ± 10C. Data yang lebih lengkap dapat diunduh (didownload) di www.national.com/catalog/sg2261.html


Jumat, 14 Juni 2013

Cara membuat aplikasi android dengan ECLIPSE

CHANCHAN | 16.50 | ANDROID
Karena kedepannya saya berencana untuk membuat lebih banyak lagi tutorial dan contoh-contoh program Android, maka cukup masuk akal kalau saya membuat tutorial bagaimana cara membuat project android, pada ide eclipse. Sebab, saya bisa dengan mudah mereferensikan ke halaman ini, saat menulis tutorial, atau bila ada pertanyaan.

Cara membuat project android di IDE sebenarnya cukup sederhana. Dengan catatan, semua step-step yang dibutuhkan seperti, instalasi SDK, emulator, dan juga plugin android di eclipse, sudah selesai dilakukan. Kalau belum, halaman referensi
 instalasi SDK android tersedia untuk anda. Setelah semua itu dipersiapkan, mari kita mulai membuat project baru, caranya sebagai berikut:

1.     Jalankan eclipse, lalu menuju keFile » New » Project...
Free Image Hosting at www.ImageShack.us
2.     PilihAndroid Project, lalu tekanNext >
Free Image Hosting at www.ImageShack.us
3.     Isikan nama project yang anda inginkan dan di mana anda ingin menyimpan source project tersebut, lalu tekanNext >
Free Image Hosting at www.ImageShack.us
4.     Pilih build target yang anda inginkan.
Free Image Hosting at www.ImageShack.us
Kalau kosong, berarti perlu menambahkan terlebih dahulu. Caranya: 

1.     Buka menuWindow » Android SDK Manager
Free Image Hosting at www.ImageShack.us
2.     Pilih paket dan build target yang ingin anda gunakan
Free Image Hosting at www.ImageShack.us
3.     Terima lisensi yang diberikan
Free Image Hosting at www.ImageShack.us
4.     Bersabarlah menunggu proses download dan install paket. Setelah itu, restart enclipse dan build target yang anda pilih tadi, akan tersedia untuk digunakan.
5.     Isikan beberapa info yang dibutuhkan. Diantaranya:
o    Application Name: Nama project yang anda inginkan
o    Package Name: Akan digunakan oleh android market, sebagai unique identifier dari aplikasi anda
o    Create Activity: Langsung buat satu activity utama (yang akan langsung dijalan saat aplikasi dibuka di device)
o    Minimum SDK: target platform paling kecil yang akan disupport aplikasi anda
Setelah semua itu diisi, selanjutnya tekanFinish
Free Image Hosting at www.ImageShack.us
                Ini adalah isi dari activity yang dibuatkan oleh eclipse, kalau anda memilih untuk membuat activity utama, di step sebelumnya.
Free Image Hosting at www.ImageShack.us
Dan ini adalah definisi layout yang menyertai activity di atas. Juga otomatis dibuatkan, bila anda memilih untuk membuat activity utama.
Free Image Hosting at www.ImageShack.us
                Berikut ini tampilan aplikasi, bila dijalankan di emulator atau device.
Free Image Hosting at www.ImageShack.us

Sekian tutorial kali ini, nantikan tutorial-tutorial yang lebih berbobot, berikutnya.

Selasa, 21 Mei 2013

Sistem Kunci Kombinasi Motor Sederhana versi 1


Sistem Kunci Kombinasi Motor Sederhana versi 1

Aku masih mau ngomongin rangkaian sederhana lagi. Alat yang aku buat masih seputaran motor baru yang kami punya. Ide ini muncul dari teman kerja, ceritanya begini:

Teman kerjaku juga beli sepeda motor baru tapi kekuatirannya beda dengan isteriku. Kalau dia mikir soal keamanan motor sewaktu parkir. Jadi dia minta saran dibuatin alat semacam kunci kambinasi motor yang sederhana. Maksudnya biar orang ga gampang ngidupin motor.

Pertama aku tanya, maunya seperti apa? Lalu dia mulai jelasin kemauannya. Dia mau masang alarm yang cara mengaktifkannya harus menggunakan beberapa instrumen yang ada di motor seperti sen, rem dan klakson. Cuma gimana kerjanya terserah aku. Lalu sesuai ekspektasinya, aku kasih gambaran begini sama dia:

Aku buatin sistem kunci kombunasi motor yang hanya bisa diaktifkan dengan menggunakan beberapa instrumen di motor dengan langkah secara berurutan. Contoh: (1) Masukan persneleng ke gigi/gear 1 (keluar dari posisi netral); (2) tekan rem; dan (3) tekan sen kanan. Urutannya harus seperti itu baru kunci kombinasi aktif. Dia setuju, terus ya udah aku minta kertas sama dia dan mulai corat-coret gambar rangkaian yang dimaksud. Hasilnya seperti gambar di bawah ini:






Rangkaiannya sederhana aja kan? Aku cuma perlu 6 buah komponen antara lain: 2 buah relay dan 4 buah dioda saja.

Selanjutnya aku jelasin cara kerja ke temanku itu, seperti ini:

Sewaktu kontak motor dihidupkan atau di-ON-kan, biasanya posisi persneleng adalah NETRAL bukan masuk gigi berapa aja apalagi GEAR 1. Instrumen lainnya juga pada posisi OFF seperti REM, SEN baik KANAN atau KIRI juga KLAKSON atau HORN termasuk tombol START. Nah sebelum jelasin soal lebih lanjut kerja alat di atas, perlu tahu sedikit nih soal instrumen-instrumen motor.

Saklar IGNITION baru ON dan mengeluarkan tegangan 12 volt dari batere sewaktu posisi saklar di putar ke ON. Instrumen lain seperti REM, SEN KANAN, SEN KIRI, KLAKSON dan START akan menghasilkan tegangan 12 volt kalau dioperasikan. Sementara posisi NETRAL dan GEAR justru kebalikannya menghubungkan panel instrumen ke GROUND atau BODY.

Sekarang lanjut lagi....

Pada awal dihidupkan, sesuai gambar di atas maka baru IGNITION yang mengeluarkan tegangan 12 volt. Baik relay K1 atau K2, keduanya belum didayai alias energized alias masih mati atau OFF. Kalau sobat coba hidupkan motor baik pakai starter atau engkol, sampai kelenger juga motor enggak bakal hidup.

Pindahkan dulu posisi persneleng ke GEAR 1, berarti sekarang kumparan relay K1 sudah terhubung ke GROUND. Tekan REM, terserah mau rem tangan atau kaki, tahan jangan dilepas. Saat itu relay K2 belum bereaksi karena posisi saklar K1E1 masih terbuka pada posisi NO (normally opened). Kemudian baru geser saklar sen ke posisi SEN KANAN. Sekarang relay K1 dapat tegangan dari SEN KANAN lewat D2. Posisi saklar relay K1E1 juga menghubungkan tegangan dari REM lewat D1 dan menyebabkan relay K2 sekarang juga hidup. Hidupnya relay K2 membuat posisi saklar-saklar K2E1 berubah, relay K2 sekarang mendapat panjaran tegangan dari IGNITION lewat K2E1. Meskipun selanjutnya REM dilepas, SEN dimatikan dan posisi persneleng ke NETRAL, relay K2 tetap hidup karena ditahan oleh saklar relay K2E1.

Sederhana kan .... siapa yang nyangka kalau mau hidupkan motor harus tekan masukin gigi 1, tekan rem dan sen kanan?

Terus apa fungsi K2E2 di samping gambar di atas?

Perlu tahu dulu nih. Motor sekarang semua sudah pakai CDI tapi antara merek motor yang satu dan lainnya enggak sama. Contoh, motor merek Yamaha dan Suzuki untuk menghidupkan motor, CDI-nya harus dihubungkan ke tegangan 12 volt. Sementara kalau merek Honda kebalikannya, CDI-nya harus dihubungkan ke ground baru bisa hidup. Nah, kalau alat ini dipasang kemotor Suzuki atau Yamaha maka posisi harus dihubingkan ke power 12 volt, sebaliknya kalau dipasang kemotor Honda maka harus dihubungkan ke ground atau body.

Catatan: untuk relay K2 disyaratkan menggunakan relay dengan kemampuan saklar paling tidak berkemampuan minimal 5 ampere karena harus diumpan ke CDI.

Untuk kombinasi lainnya, rangkaian di atas terutama masukan dari instrumen motor bisa ditukar atau diganti sesuai keinginan. Masukan untuk REM dan SEN KANAN bisa ditukar dengan instrumen lainnya seperti SEN KIRI, KLAKSON atau STARTER terserah gimana ngaturnya. Dan posisi GEAR 1 bisa ke persneleng mana aja atau NETRAL.

Tapi aku mau ngasih tahu nih, kunci kombinasi di atas bisa dipasang di motor dan berfungsi baik kalau kondisi aki masih atau lumayan bagus. Kalau kondisi aki soak maka bisa dibayangkan pasti alat tersebut kurang berfungsi dengan baik.

Mau cerita sedikit nih....

Ternyata di samping temanku naksir sama alat di atas, ternyata dia coba tawarin ke teman-temannya. Hasilnya, beberapa temannya juga minta dibuatin alat serupa di atas. Wah, lumayan juga ternyata bisa dikomersilkan. Seterusnya aku dan temanku membuat lagi alat yang sama.
Waktu itu aku masih kerja dan untuk memberikan servis kepada pelanggan yang notabene adalah teman-teman dari temanku itu maka aku minta pemasangan dilakukan pada hari minggu karena hari sabtunya aku baru sempat buat. Lumayan juga dalam sehari aku bisa masang sampai 2 kendaraan bersama temanku itu. Bahkan saking seringnya masang hampir setiap libur kerja di hari sabtu dan minggu sampai-sampai kami namai produk tersebut dengan SAMING alias kerjaan sabtu dan minggu, he....he.

Nah, ada info sedikit nih, penting....

Alat apapun kalau dipasang dimotor haruslah aman. Perangkat elektronik peka sekali dengan air. Jadi sewaktu motor sedang dicuci ada kemungkinan air akan merembes masuk ke alat, akibatnya alatpun jadi rusak. Aku punya solusi untuk itu, bersama temanku alat yang dibuat diamankan dengan resin seperti yang juga bisa dilihat pada CDI. Dengan menggunakan resin kita tidak kuatir lagi terkena air. Bahkan pernah suatu ketika, pelanggan penasaran dan minta aku membuktikan kalau alat itu anti air. Maka untuk meyakinkannya aku minta ember yang diisi air sampai penuh dan kemudian merendam alat sambil terus dioperasikan dan hasilnya oke, alat tetap kerja meski direndam dalam air.

Sayangnya bisnis kecil-kecilan itu tidak lama karena aku capek tiap sabtu buat dan minggu pasang. Enggak ada liburnya.

Tapi sekarang kalau masih ada yang mau pesan lagi, boleh aja. Ada kok temanku yang siap buatin dan pastinya pasang sendiri nanti aku bantu.



Udah ya, makasih udah baca postingan aku. Semoga bisa bermanfaat, sukur-sukur bisa diterapkan di motor sobat semua.

Salam....

Membuat Peraga Jam Dengan Led 7 Segmen Dilengkapi Dengan Alarm



Hai Sobat yang baik. Pada tulisanku sebelum ini, kita sudah melihat apa dan bagaimana mengoperasikan chip RTC-RAM baik dengan DS1302 maupun DS1307. Kita juga sudah membahas mengenai pengoperasian peraga dengan LED 7 segmen. Bagaimana kalau kali ini kita mencoba mengimplementasikan apa yang sudah pernah ditulis tersebut dalam sebuah rangkaian yang mungkin bermanfaat dan menyenangkan bagi para penghobi elektronik digital.

Tulisanku kali ini akan membahas mengenai pembuatan peraga jam menggunakan RTC-RAM DS1307 dengan penampil LED 7 segmen. Sebagai mikrokontroler akan digunakan AT89C51 dari keluarga MCS51 yang murah meriah. Sebelum merancang, ada baiknya kita memahami apa yang diinginkan pada rangkaian kita. Maka aku akan buatkan identifikasi spesifikasi rancangan tersebut, yaitu:

1.             Rangkaian akan menampilkan peragaan waktu dalam format jam dan menit. Untuk itu setidaknya memerlukan 4 digit LED 7 segmen.
2.             Rangkaian juga bisa menampilkan tanggal dan bulan jika perlu tahun dengan menekan tombol tertentu yang berkaitan dengan peragaan tanggal, bulan dan tahun. Nah, tombol-tombol ini juga akan digunakan juga untuk pengaturan waktu.
3.             Rangkaian juga akan dilengkapi dengan sistem alarm untuk memberikan tambahan fasilitas yang menarik.

Wah banyak juga ya maunya. Tapi sebagai penghobi seharusnya semakin banyak semakin menarik. Sekarang kita mulai saja merancang rangkaian yang diinginkan.

Karena kita hanya akan menampilkan sebanyak 4 digit, maka aku menetapkan menggunakan teknik peragaan LED 7 segmen secara scanning untuk menghemat komponen. Agar terlihat atraktif akan ditambahkan 2 buah LED untuk flashing detik.


Untuk melakukan seting waktu dan alarm aku gunakan 2 tombol saja biar hemat, yaitu untuk tombol menu (SET) dan tombol untuk display (CEK). Tidak apa-apa kan?

Sebelum lupa, untuk alarm diperlukan 1 pin lagi.

Nah, kita langsung lihat rangkaiannya saja.



Untuk penampil waktu menggunakan sebanyak 12 saluran gerbang dengan rincian 7 bit gerbang P0 terdiri dari P00 –  P06 untuk dekoder LED 7 segmen dan 4 bit gerbang P1 yaitu P10 – P13 untuk scanning digit (LED1 – LED4). Sementara indikator detik menggunakan P07.

Untuk informasi waktu kita menggunakan DS1307 yang memiliki antarmuka I2C sehingga hanya membutuhkan 2 saluran gerbang yaitu P26 untuk SCLK dan P27 untuk SDA. DS1307 memiliki fitur keluaran gelombang persegi atau SQW yang akan disetel pada perioda 1 detik dan dihubungan pada gerbang p25.

Peraga waktu kita dilengkapi dengan tombol untuk pengaturan yang terdiri dari SET dihubungkan pada gerbang P20 dan CEK pada gerbang P21.

Nah, sebagai pelengkap akan kita tambahkan keluaran untuk alarm yang akan dihubungkan pada buzer melalui gerbang P23.

Oke lah, kita langsung saja menuju barisan program yang harus diisikan pada mikrokontroler.

$mod51

BufferWaktu       data  8h
BufferProg        data  0bh

RegBendera        data  2fh
      FSRDY       bit   RegBendera.0
      FACK        bit   RegBendera.1
      FLB         bit   RegBendera.2
      Menu        bit   RegBendera.3
      Dsp         bit   RegBendera.4
      Ubahan      bit   RegBendera.5
      Pulsa       bit   RegBendera.6
      Alarm       bit   RegBendera.7

Data7Seg          data  p0
LED_Detik         bit   p0.7

Digit7Seg         data  p1
Digit1            bit   p1.0
Digit2            bit   p1.1
Digit3            bit   p1.2
Digit4            bit   p1.3

T_Set             bit   p2.0
T_Cek             bit   p2.1

Buzzer            bit   p2.3

SDA               bit   p2.7
SCL               bit   p2.6

PulsaDetik  bit   p2.5

StackPointer      data  30h

org   0h

Inisialisasi:
      mov   sp, #StackPointer-1
      mov   r0, #BufferWaktu
      mov   a, #8
      mov   b, #0
      acall DS1307_Read
      mov   a, BufferWaktu
      anl   a, #01111111b
      mov   BufferWaktu, a
      mov   a, BufferWaktu+2
      anl   a, #00111111b
      mov   BufferWaktu+2, a
      mov   BufferWaktu+7, #10h
      mov   a, #8
      mov   b, #0
      acall DS1307_Write
      mov   Data7Seg, #255
      mov   Digit7Seg, #11110111b
      mov   r2, #128

Setelah inisialisasi, program dimulai dengan melakukan beberapa pemeriksaan termasuk tombol dan status pulsa SQW dari DS1307.

Mulai:
      jnb   T_Set, TombolMenu
      jnb   T_Cek, TombolCek
      jb    PulsaDetik, PeragaDetik
      jnb   LED_Detik, Peraga
      setb  Pulsa
      clr   LED_Detik
      jb    Menu, Peraga
      jb    Dsp, Peraga

Penyegaran informasi waktu diambil pada pulsa rendah yang diindikasikan oleh SQW. Jumlah data yang diambil berjumlah 11 byte meskipun beberapa tak digunakan, dimulai dari alamat register 01H atau register menit. Data lainnya yang dibaca meliputi jam, hari (tidak digunakan) tanggal, bulan, tahun dan kontrol (tak dipakai) serta 4 byte isi data RAM yang berisi menit dan jam alarm, durasi alarm dan Bell Chime penunjuk pergantian jam.

Setelah penyegaran informasi waktu, jika seting Bell Chime bukan 0 maka setiap nilai menit menunjuk 00 berarti juga perubahan jam maka program akan mengaktifkan buzzer selama 5 detik sesuai isi register R4. Tetapi fasilitas Bell Chime tidak dijalankan jika status alarm sedang aktif.

      AmbilWaktu:
            mov   r0, #BufferWaktu+1
            mov   a, #10
            mov   b, #01h
            acall DS1307_Read
            clr   LED_Detik
            jb    Alarm, PeriksaSelesai
            mov   a, BufferWaktu+11
            jz    PeriksaAlarm
            mov   a, BufferWaktu+1
            jnz   BellChime
            clr   Buzzer
            mov   r4, #5
            ajmp  PeriksaAlarm

            BellChime:
                  setb  Buzzer

Berikut adalah program memeriksa waktu alarm. Data alarm yang ada pada RAM DS1307 dan disimpan pada BufferWaktu diperiksa. Jika sama maka bit Alarm dan buzzer akan diaktifkan. Lamanya durasi alarm juga dimasukkan pada register R4 untuk dicacah mundur, nanti.

            PeriksaAlarm:
                  mov   a, BufferWaktu+8
                  xrl   a, BufferWaktu+1
                  jnz   PeriksaSelesai
                  mov   a, BufferWaktu+9
                  xrl   a, BufferWaktu+2
                  jnz   PeriksaSelesai
                  mov   r4, BufferWaktu+10
                  setb  Alarm
                  clr   Buzzer

Usai pemeriksaan waktu alarm, program dilanjutkan dengan persiapan untuk memperagakan informasi yang diterima pada peraga LED 7 segmen.

            PeriksaSelesai:
                  mov   r0, #BufferWaktu+2
                  ajmp  Peraga

Untuk mematikan alarm, Sobat cukup menekan sembarang tombol yang ada.

      TombolMenu:
            jb    Alarm, ResetAlarm
            ajmp  MenuProg

      TombolCek:
            jb    Alarm, ResetAlarm
            ajmp  MenuCek

      ResetAlarm:
            clr   Alarm
            setb  Buzzer
            jnb   T_Set, $
            jnb   T_Cek, $
            ajmp  Mulai

      PeragaDetik:
            jnb   LED_Detik, Peraga
            setb  LED_Detik

Peragaan tampilan LED dimulai di sini. Waktu aktif setiap LED 7 segmen berkisar antara 5 ms dengan nilai register R2 adalah 128. Dan pengulangan waktu aktif menjadi sekitar 20 ms atau kurang lebih 50 Hz.

Peraga:
      djnz  r2, Mulai
      mov   r2, #128

      PeragaLED1:
            mov   a, @r0
            dec   r0
            jb    Digit4, PeragaLED2
            swap  a
            acall DataLED
            clr   Digit1
            ajmp  AkhirPeraga

      PeragaLED2:
            jb    Digit1, PeragaLED3
            acall DataLED
            clr   Digit2
            ajmp  AkhirPeraga

      PeragaLED3:
            mov   a, @r0
            jb    Digit2, PeragaLED4
            swap  a
            acall DataLED
            clr   Digit3
            ajmp  AkhirPeraga

      PeragaLED4:
            setb  Digit3
            acall DataLED
            clr   Digit4

      AkhirPeraga:
            jb    Menu, DelayPeraga
            jb    Dsp, DelayPeraga
            jnb   Buzzer, DelayPeraga
            ajmp  Mulai

            DelayPeraga:
                  jnb  Pulsa, KeluarPeraga
                  clr   Pulsa
                  djnz  r4, KeluarPeraga
                  mov   RegBendera, #0
                  clr   Buzzer
                  ajmp  AmbilWaktu

                  KeluarPeraga:
                        ajmp  Mulai

Tampilan LED 7 segmen adalah sesuai dengan data pada Kode7Segmen. Jika diterjemahkan maka akan menampilkan 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, t, A, d, C dan blank. Untuk mengambil kode tersebut mengunakan perintah MOVC

DataLED:
      mov   Digit7Seg, #255
      mov   Data7Seg, #255
      anl   a, #0fh
      mov   dptr, #Kode7Segmen
      movc  a, @a+dptr
      mov   Digit7Seg, a
      ret

      Kode7Segmen:
            db 11000000b, 11111001b, 10100100b, 10110000b, 10011001b
            db 10010010b, 10000010b, 11111000b, 10000000b, 10010000b
            db 10000111b, 10001000b, 10100001b, 11000110b, 255

Berikut adalah program rutin MenuProg yang berkaitan dengan penekanan tombol SET. Untuk kebutuhan pemrograman maka digunakan BufferProg untuk menyimpan informasi yang akan dilakukan pengaturan ulang dimulai dari pengaturan menit sampai pengaturan Chime.

Setiap penekanan tombol SET maka menu akan berpindah dari menu pertama hingga akhir sebanyak total 9 menu kemudian kembali ke posisi normal yaitu menunjukkan waktu jam dan menit.

MenuProg:
      clr   LED_Detik
      clr   Buzzer
      jnb   Dsp, ProsesMenu
      ajmp  AmbilWaktu

      ProsesMenu:
            mov   r0, #BufferProg
            mov   a, #10
            mov   b, #1
            acall DS1307_Read
            mov   r4, #5
            jb    Menu, MenuBerikut
            setb  Menu
            clr   Ubahan
            mov   r1,#0
            ajmp  MenuMenit

Setiap penekanan tombol SET maka menu akan berpindah dari menu pertama hingga terakhir sebanyak 9 menu kemudian kembali ke posisi normal menunjukkan waktu jam dan menit. Tapi sebelum kembali ke posisi normal jika terdapat perubahan maka perubahan tersebut akan disimpan.

      MenuBerikut:
            inc   r1
            cjne  r1, #9, MenuMenit
            jnb   T_Set, $
            setb  Buzzer
            jb    Ubahan, SimpanUbahan
            ajmp  AmbilWaktu

            SimpanUbahan:
                  mov   r0, #BufferProg
                  mov   a, #10
                  mov   b, #1
                  acall DS1307_Write
                  ajmp  AmbilWaktu

Setiap menu akan mengubah tampilan di mana digit 1 dan 2 yang semula menunjukkan waktu jam menjadi penunjuk kode menu. Untuk menu pengaturan menit akan menampilkan “t1”, Menu Jam dengan “t2”, tanggal dengan “t3”, bulan dengan “t4”, tahun dengan “t5”, penunjuk menit alarm dengan “A1”, jam alarm dengan “A2”, durasi alarm dengan “A3” dan terakhir untuk Chime dengan “C1”.

Untuk digit 3 dan 4 adalah informasi sesuai dengan menu-menu di atas. Semua data dalam format BCD (binary code decimal). Penunjuk jam menggunakan format 24 jam. Tahun dibatasi hingga maksimal sampai dengan 2025, jika ingin lebih tinggi bisa mengubahnya tapi maksimal adalah 2099. Durasi alarm juga dibatasi hingga 10 menit yang juga bisa dirubah sampai dengan maksimal 99 menit.

      MenuMenit:
            cjne  r1, #0, MenuJam
            mov   r0, #BufferProg
            jnb   T_Cek, SetMenit
            mov   BufferWaktu+2, #0a1h
            mov   BufferWaktu+1, BufferProg
            ajmp  AkhirMenu

            SetMenit:
                  acall UbahWaktu
                  cjne  a, #60h, X_Ubah

      MenuJam:
            cjne  r1, #1, MenuTanggal
            mov   r0, #BufferProg+1
            jnb   T_Cek, SetJam
            mov   BufferWaktu+2, #0a2h
            mov   BufferWaktu+1, BufferProg+1
            ajmp  AkhirMenu

            SetJam:
                  acall UbahWaktu
                  cjne  a, #24h, X_Ubah
                  ajmp  W_Reset

      MenuTanggal:
            cjne  r1, #2, MenuBulan
            mov   r0, #BufferProg+3
            jnb   T_Cek, SetTanggal
            mov   BufferWaktu+2, #0a3h
            mov   BufferWaktu+1, BufferProg+3
            ajmp  AkhirMenu

            SetTanggal:
                  acall UbahWaktu
                  cjne  a, #24h, X_Ubah
                  ajmp  W_Reset

      MenuBulan:
            cjne  r1, #3, MenuTahun
            mov   r0, #BufferProg+4
            jnb   T_Cek, SetBulan
            mov   BufferWaktu+2, #0a4h
            mov   BufferWaktu+1, BufferProg+4
            mov   r0, #BufferProg+4
            ajmp  AkhirMenu

            SetBulan:
                  acall UbahWaktu
                  cjne  a, #13h, X_Ubah
                  ajmp  T_Reset

                  W_Reset:
                        mov   a, #0
                        ajmp  X_Ubah

                  T_Reset:
                        mov   a, #1

                  X_Ubah:
                        mov   @r0, a
                        ajmp  AkhirMenu

      MenuTahun:
            cjne  r1, #4, MenuAlarmMenit
            mov   r0, #BufferProg+5
            jnb   T_Cek, SetTahun
            mov   BufferWaktu+2, #0a5h
            mov   BufferWaktu+1, BufferProg+5
            ajmp  AkhirMenu

            SetTahun:
                  acall UbahWaktu
                  cjne  a, #25h, X_Ubah
                  ajmp  T_Reset

      MenuAlarmMenit:
            cjne  r1, #5, MenuAlarmJam
            mov   r0, #BufferProg+6
            jnb   T_Cek, SetMenit
            mov   BufferWaktu+2, #0b1h
            mov   BufferWaktu+1, BufferProg+6
            ajmp  AkhirMenu

      MenuAlarmJam:
            cjne  r1, #6, AlarmDurasi
            mov   r0, #BufferProg+7
            jnb   T_Cek, SetJam
            mov   BufferWaktu+2, #0b2h
            mov   BufferWaktu+1, BufferProg+7
            ajmp  AkhirMenu

      AlarmDurasi:
            cjne  r1, #7, BellJam
            jnb   T_Cek, SetDurasi
            mov   BufferWaktu+2, #0b3h
            mov   BufferWaktu+1, BufferProg+8
            mov   r0, #BufferProg+8
            ajmp  AkhirMenu

            SetDurasi:
                  acall UbahWaktu
                  cjne  a, #11h, X_Ubah
                  ajmp  T_Reset

      BellJam:
            mov   r0, #BufferProg+9
            jnb   T_Cek, SetChime
            mov   BufferWaktu+2, #0c1h
            mov   BufferWaktu+1, BufferProg+9
            ajmp  AkhirMenu

            SetChime:
                  mov   a, @r0
                  inc   a
                  cjne  a, #2, X_Ubah
                  ajmp  W_Reset

      UbahWaktu:
            clr   ac
            clr   c
            mov   a, @r0
            swap  a
            anl   a, #0fh
            xch   a, b
            mov   a, @r0
            anl   a, #0fh
            da    a
            swap  a
            orl   a, b
            swap  a
            ret


      AkhirMenu:
            jnb   T_Set, $
            jnb   T_Cek, $
            setb  Buzzer
            mov   r0, #BufferWaktu+2
            ajmp  Peraga

Berikut adalah program yang berkaitan dengan penekan tombol CEK yang bisa digunakan untuk pengaturan tapi juga untuk peragaan lainnya selain jam dan menit yaitu tanggal/bulan, tahun dan waktu alarm.

MenuCek:
      clr   LED_Detik
      clr   Buzzer
      jnb   Menu, ProsesDsp
      ajmp  MenuMenit

      ProsesDsp:
            mov   r4, #5
            jb    Dsp, DspBerikut
            setb  Dsp
            mov   r1,#0
            ajmp  DspTanggal

      DspBerikut:
            inc   r1
            cjne  r1, #3, DspTanggal
            jnb   T_Cek, $
            setb  Buzzer
            ajmp  AmbilWaktu

      DspTanggal:
            cjne  r1, #0, DspTahun
            mov   BufferWaktu+1, BufferWaktu+4
            mov   BufferWaktu+2, BufferWaktu+5
            ajmp  AkhirMenu

      DspTahun:
            cjne  r1, #1, DspAlarm
            mov   BufferWaktu+1, BufferWaktu+6
            mov   BufferWaktu+2, #20h
            ajmp  AkhirMenu

      DspAlarm:
            mov   BufferWaktu+1, BufferWaktu+8
            mov   BufferWaktu+2, BufferWaktu+9
            ajmp  AkhirMenu

Untuk melengkapi program seutuhnya, diperlukan 2 buah modul untuk antar muka yang ada pada I2C.TXT dan DS1307.TXT yang sudah pernah aku sampaikan pada tulisanku sebelum ini.

$include (C:\tesasm\I2C.txt)
$Include (C:\tesasm\DS1307.txt)

End

Nah seperti itulah Sobat semua rancangan kita mengenai Jam dengan LED 7 segmen yang dilengkapi dengan alarm yang dapat disetel waktunya dan setiap jam juga ada bell chime. Masih banyak fasilitas yang dapat dikembangkan dalam pengimplementasiannya. Jadi bukan sekedar penampil waktu biasa.

DS1307 memiliki kapasitas sebesar 56 byte yang jika diinginkan dapat diisi dengan setidaknya 27 waktu alarm. Tapi penulis tidak ingin membayangkan jika hampir setiap jam alat kita membunyikan alarm belum lagi ditambah dengan bell chime. Tapi bel chime bisa di non-aktifkan dan keluaran untuk buzzer bisa digunakan untuk apa saja.

AT89C51 memiliki 32 bit gerbang I/O. Untuk rangkaian di atas masih menyisakan bahkan 1 byte gerbang yang benar-benar belum digunakan yaitu P3 ditambah 6 bit gerbang lainnya. Fasilitas serial pada P30 dan P31 juga perlu diberdayagunakan, belum lagi gerbang interupsi P32 dan P33, selain itu gerbang pewaktu P34 dan P35.

Aku pernah mencoba melengkapinya dengan remot audio/video yang ada di rumah, atau terhubung dengan PC melalui RS-232 baik menggunakan kabel maupun IR. Atau mengganti tombol dengan keypad. Bahkan yang masih terpasang tapi akhirnya tampilan LEDnya dihilangkan adalah pewaktu nyala lampu terprogram untuk semua lampu rumah.

Pokoknya sebagai penghobi elektronika adalah suatu yang menyenangkan mengotak-atik perangkat elektronik khususnya buatan sendiri.



Sudah ya, terima kasih sudah membaca artikel aku. Semoga bermanfaat dan bisa diterapkan oleh sobat semua.

Mengendalikan Keluaran ON – OFF Dengan Remot



Rangkaian yang akan dibahas pada kesempatan ini masih sekedar permainan. Tapi bisa jadi bermanfaat untuk aplikasi di rumah atau di mana saja. Aku menggunakan rangkaian ini untuk di rumah sebagai pengatur lampu tetapi sudah dimodifikasi dengan menambahkan memori AT93C46 tentu saja. Bahkan sudah dikembangkan dengan penambahan RTC (real time clock) DS1302 sehingga hidup lebih praktis di rumah mungilku.

Ini hanya konsep dasar yang dapat dikembangkan lebih jauh. Sobat bisa mengaplikasikan dengan beragam fasilitas yang dapat dikombinasikan dengan berbagai perangkat yang dapat dicari dalam tulisan-tulisan terdahulu pada situsku.

Perangkat pemancar remot, biasanya sesuai pengalaman penulis menggunakan IR LED dengan frekuensi 36 kHz. Penulis juga sering menggunakan jenis TSAL6200 dan pada kondisi baik dapat menjangkau hampir 35 meter. Untuk bagian penerimanya menggunakan sebuah TSOP4836 di mana keluarannya sudah dapat langsung dihubungkan ke gerbang mikrokontroler. Mengenai penerima IR TSOP4836 dapat dilihat pada gambar berikut:



Kita perlu menambahkan sebuah resistor senilai 100 ohm dan kapasitor 4,7 uF pada rangkaian TSOP4836 untuk mereduksi riple tegangan dari catu daya.

Berikut aku tampilkan gambar rangkaian berbasis mikrokontroler AT89C2051 yang akan menerima sinyal IR di atas dan memprosesnya untuk mengendalikan ON dan OFF sebuah keluaran relay. Data akan disimpan pada memori AT93C46 yang diorganisasikan ke dalam 8 bit yang terhubung pada gerbang P1.2, P1.3 dan P1.4 untuk antarmukanya.

Saat pengujian perangkat penulis menggunakan modul Kit MCS51 20 Pin yang berbasis AT89S2051 yang menggunakan pemrograman secara ISP menggunakan gerbang P1.5, P1.6 dan P1.7 maka pada gambar berikut pena-pena tersebut tidak digunakan pada rangkaian karena penulis menghubungkannya ke modul programer yang sudah penulis modifikasi dengan indikator LED untuk memudahkan saja.




Rangkaian di atas juga dilengkapi dengan sebuah indikator LED yaitu LP1 yang terhubung pada penyemat gerbang P1.1 dan pada gerbang ini juga dihubungkan pada sebuah sakelar tekan S1 untuk tujuan programming. Keluaran penggerak relay dihubungkan pada gerbang P1.0. Penulis menggunakan jenis relay dengan tegangan kumparan 5 volt.

Sementara untuk masukan IR digunakan gerbang P3.7.

Untuk aplikasi yang harus dimasukkan pada mikrokontroler dapat dilihat berikut ini:

$mod51

PinRelay    bit   p1.0
PinProg     bit   p1.1

DIO         bit   p1.2
CLK         bit   p1.3
RST         bit   p1.4

IR_Sensor   bit   p3.7

BufferData  data  08h

RegBit      data  20h
      Fail  bit   RegBit.0

RegStack    data  30h

Seperti biasanya, pada penulisan di atas, diawali dengan menetapkan konfigurasi penyemat dan alokasi memori RAM yang akan digunakan. Setelah itu baru kita memulai penulisan perintah-perintah yang dimulai pada alamat 0000H. Aplikasi pertama kali akan memeriksa kondisi S1 untuk PROGRAM. Jika pada saat pertama dihidupkan atau setelah RESET S1 ditekan maka aplikasi akan menunggu sampai kurang lebih 5 detik untuk memasuki pemrograman data remot yang ditandai dengan aktifnya keluaran relay. Sobat bisa memasukan data remot dengan menekan salah satu tombol yang ada pada perangkat remot. Namun apabila S1 tidak ditekan atau ditekan kurang dari 5 detik maka aplikasi akan dilanjutkan ke rutin bernama Masukan.

org   0h
      mov   sp, RegStack-1
      mov   r5, #18
Ini1: mov   r6, #255
Ini2: mov   r7, #255

Inisialisasi:
      jb    PinProg, Masukan
      djnz  r7, Inisialisasi
      djnz  r6, Ini2
      djnz  r5, Ini1
      clr   PinRelay
      jnb   PinProg, $
      mov   r0, #BufferData
      jb    IR_Sensor, $
      acall IR_READ
      acall AT93C46_EWEN
      mov   dptr, #0
      mov   r0, #BufferData
      mov   r7, #8

Setelah data remot diterima maka selanjutnya aplikasi akan menyimpan data tersebut ke dalam memori AT93C46 pada alamat 00H.

      SimpanRemot:
            mov   a, @r0
            inc   r0
            acall AT93C46_WRITE
            djnz  r7, SimpanRemot
            acall AT93C46_EWDS
            setb  PinRelay

Setelah data disimpan maka aplikasi kembali menon-aktifkan relay. Di sini Sobat bisa menambahkan perintah untuk verifikasi data jika mau yaitu memasukkan kembali data remot dan membandingkannya dengan data pada memori. Penulis tidak memasukkan rutin ini dan langsung menuju ke rutin Masukan seperti berikut ini:

Masukan:
      mov   r0, #BufferData
      jb    IR_Sensor, $
      acall IR_READ
      mov   dptr, #0
      mov   r0, #BufferData
      mov   r7, #8

Pada rutin Masukan status masukan IR_Sensor diperiksa. Jika ada data yang masuk maka data akan disimpan sementara pada BufferData kemudian akan diperiksa dengan membandingkannya pada data dalam memori AT93C46. Jika data sama maka keluaran relay maupun indikator akan berubah kondisi dengan perintah CPL. Jika semula rendah akan menjadi tinggi atau sebaliknya.

      PeriksaRemot:
            mov   b, @r0
            inc   r0
            acall AT93C46_READ
            inc   dptr
            xrl   a, b
            jnz   Masukan
            djnz  r7, PeriksaRemot
            cpl   PinRelay
            cpl   PinProg
            ajmp  Masukan

Berikut adalah subrutin yang digunakan untuk mengambil data remot:

IR_READ:
      jnb   IR_Sensor, $
      mov   r5, #8

      BacaByte_IR:
            mov   r6, #8
            clr   a

      BacaSerial_IR:
            jb    IR_Sensor, BacaTinggi_IR
            clr   c
            ajmp  RotasiData_IR

            BacaTinggi_IR:
                  setb  c

            RotasiData_IR:
                  rlc   a
                  acall Pulsa
                  acall Pulsa
                  djnz  r6, BacaSerial_IR
                  mov   @r0, a
                  inc   r0
                  djnz  r5, BacaByte_IR
                  ret

      Pulsa:      mov   r7, #255
            djnz  r7, $
            ret

$include (c:\tesasm\93C46_8.txt)

end

Program aplikasi mikrokontroler di atas masih membutuhkan modul untuk antarmuka dengan AT93C46 yang bernama 93C46_8.TXT yang ada dan bisa Sobat lihat pada tulisanku sebelumnya.

Setelah file di atas dikompilasi dan diprogramkan ke mikrokontroler AT89C2051 maka perangkat sudah dapat melaksanakan fungsinya. Penulis sudah mengkompilasi dan hasilnya adalah 408 byte saja.

Desain rangkaian di atas memang sederhana begitu pun dengan aplikasi program yang dibuat. Namun meskipun sederhana yang penting hidup bisa lebih mudah, itu intinya. Bagaimanapun, sebuah desain harus memiliki kegunaan untuk dapat diimplementasikan pada kehidupan kita. Sesuai dengan tulisan pada paragraf awal, maka desain di atas sudah aku implementasikan kebeberapa fungsi perangkat, antara lain:

1.             Remot lampu. Jika di antara sobat ada yang pernah bermain ke rumahku yang sederhana maka jangan pernah bertanya di mana letak sakelar lampu karena tidak ada. Bahkan sistem lampu di rumah menggunakan fasilitas pewaktu jadi urusan lampu hampir tidak pernah terpikirkan untuk menghidupkan atau mematikannya. Semua serba otomatis.
2.             Sakelar remot. Sobat bisa memanfaatkan rangkaian di atas sebagai pengganti perangkat apap pun yang menggunakan sakelar bukan saja untuk perangkat listrik di rumah bahkan juga untuk kendaraan.
3.             Implementasi lain silahkan Sobat cari. Pokoknya selama ada hal yang membutuhkan sakelar maka rangkaian kita bisa menggantikannya dan semua secara remot.