Translate

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.



Udah ya, makasih udah baca postingan aku. Semoga bisa bermanfaat dan jika mungkin bisa diterapkan oleh sobat semua.

Salam....

2 komentar:

  1. untuk dana sendiri untuk alat ini menghabiskan berapa biaya . ?
    thx atas postingannya.

    BalasHapus
  2. Ada 2 perhitungan pembuatannya

    1. Dgn modul yang ada dipasaran: kit MCS51 20 pin(100rb), IR receiver(35rb), relay dan transistor (6rb) serta remotnya (17rb) jadi total 148rb

    2. Kalau bikin PCB sendiri ga sampai 100rb.

    BalasHapus