Translate

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.

Salam....

Catu Daya 12 Volt 1 Ampere Yang Dilengkapi Batere Cadangan



Hai Sobat semua, kali ini penulis ingin mengulas rangkaian elektronik berkaitan dengan catu daya. Tapi sebelumnya ingin “mengobrol” terlebih dulu agar tidak suntuk.

Semua pasti sudah tahu jika listrik merupakan bagian dari hidup dan menjadi salah satu kebutuhan yang vital dalam kehidupan kita. Terutama bagi yang tinggal di daerah perkotaan maka kebutuhan itu terasa begitu mutlak. Mulai dari sistem penerangan rumah yang tentunya sudah meninggalkan lampu berbahan bakar minyak dan total menggunakan lampu yang didayai oleh listrik. Belum lagi pompa air dan perangkat listrik lainnya yang menjadi pelengkap dalam rumah tangga.

Rasanya sulit bagi kita hidup tanpa adanya sumber listrik. Karena ke mana pun kita pergi maka akan dijumpai bahwa hampir semua membutuhkan listrik. Ketika kita keluar rumah dan menggunakan kendaraan bermotor jenis apa pun, ada penggunaan listrik di sana. Lampu lalu lintas dan penerangan jalan, sarana transportasi dan komunikasi, bahkan sesampainya di tujuan manapun baik kantor atau tempat usaha atau lainnya maka di situ ada listrik. Bahkan listrik begitu melekat dengan tubuh kita, bukankah dalam saku kita kadang dijumpai perangkat komunikasi seluler yang hidup dengan listrik mengalir di dalamnya?

Sepertinya banyak yang dapat dibicarakan dari salah satu sumber kebutuhan kita berupa listrik. Diakui atau tidak, hidup kita memang sudah dikuasai oleh ketersediaannya dalam menjalani rutinitas kehidupan.

Tahukah Sobat? Listrik bukan sesuatu yang selalu ada sepanjang hari. Ia juga salah satu produk manusia yang memerlukan berangkat untuk menghasilkannya. Secara komersial listrik dihasilkan dari pembangkit-pembangkit listrik raksasa berdaya jutaan bahkan milyaran watt. Listrik yang dihasilkan dari mesin-mesin pembangkit berupa generator baik untuk menjalankannya menggunakan tenaga air (PLTA), tenaga uap (PLTU), tenaga diesel (PLTD) bahkan sampai teknologi nuklir (PLTN) masih harus didistribusikan dari lokasi pembangkit ke seluruh konsumen yang nota bene berjarak sangat jauh. Dalam pendistribusian tersebut dapat kita lihat dari banyaknya menara-menara penghantar SUTET dan mungkin Sobat pernah menjumpai gardu induk ketika sedang dalam perjalanan menuju ke suatu tempat atau setidaknya transformer distribusi di dekat tempat tinggal.

Nah sumber listrik yang menjadi kebutuhan kita ternyata dalam pendistribusiannya tidaklah sederhana. Dari pembangkit hingga sampai kepada kita saja sudah berapa banyak perangkat yang digunakan dan semua adalah buatan pabrik berupa mesin industri. Dan jika berbicara mengenai perangkat mesin dalam industri listrik, maka semua pasti ada kendala. Untuk meminimalisir kendala maka diperlukan perawatan berkala dan perbaikan kerusakan yang ada agar penyediaan kebutuhan listrik senantiasa terjaga.

Selanjutnya, berkaitan dengan perawatan atau perbaikan maka kita kadang menjumpai istilah “gangguan listrik” yang pada akhirnya akan kita rasakan dampaknya yaitu “pemadaman listrik sementara”. Efek yang ditimbulkan dari akibat pemadaman tersebut, sepertinya Sobat semua pasti sudah sangat paham, tergantung kapan dan di mana Sobat berada saat terjadi pemadaman tersebut. Bisa senang ataupun tidak, tapi yang pasti banyak dukanya. Apalagi jika Sobat sedang menonton acara final sepak bola dari tim kesayangan dan tiba-tiba listrik padam.

Banyak cara dilakukan untuk menghadapi “pemadaman listrik sementara”. Gedung-gedung perkantoran, perbelanjaan atau instalasi publik lain melengkapi sistem kelistrikan mereka dengan menyediakan set generator (genset) yang dapat digunakan selama pemadaman dan menjaga kelangsungan aktifitas di tempat tersebut. Bagi Sobat yang mampu juga terkadang melengkapi rumah dengan sebuah genset yang ukuran dan dayanya disesuaikan dengan kebutuhan.

Terjadinya peristiwa pemadaman listrik oleh penyelenggara (PLN) dan proses pemindahan sumber listrik utama ke cadangan menggunakan genset baik secara manual ataupun otomatis, keduanya membuahkan sebuah istilah “byar-pet”. Pada proses pemindahan tersebut sudah pasti terjadi masa “kekosongan” di mana sumber listrik benar-benar hilang dan semua perangkat listrik standar secara otomatis tidak berfungsi sementara kecuali beberapa perangkat vital yang dilengkapi dengan sumber cadangan darurat baik dengan UPS (un-interruptible power supply) atau batere cadangan (emergency backup battery) pada panel catu dayanya.

Nah, obrolan ngalor-ngidul kita sudah mulai menyentuh topik utama nih.

Beberapa perangkat listrik vital atau sangat penting yang biasanya terdapat di rumah sakit, instalasi komunikasi massal atau instalasi data, kantor-kantor dengan sistem komputernya dan tempat penting lainnya jelas tidak boleh terganggu operasinya pada masa “kekosongan” tersebut terjadi. Salah satu cara menangani dampak kekosongan tersebut maka digunakan sebuah sumber cadangan listrik yang tentu hanya bersifat sementara sampai terjadinya peralihan daya yaitu penggunaan UPS. Kemampuan sistem UPS untuk menggantikan sumber utama sangat bergantung pada kapasitas batere yang menjadi sumber listrik bagi perangkat itu sendiri. Kapasitas batere dalam ukuran sekian Ah (ampere per jam) akan dibandingkan dengan kebutuhan daya yang digunakan dan semakin besar berarti semakin lama.

Batere sebagai salah satu komponen yang hadir sebagai pahlawan saat kepergian sementara sumber listrik utama akhirnya menjadi sangat penting dan perlu untuk diperhatikan. Kapasitas batere yang dibedakan dalam ukuran amper per jam dan jenisnya yang beragam patut dipertimbangan saat pemilihan sehingga sesuai dengan kebutuhan. Masih berkaitan dengan UPS pula maka pada umumnya batere yang digunakan adalah jenis asam timbal (lead sealed acid) dan biasanya menggunakan jenis bebas perawatan (free-maintenance). Penggunaan batere asam timbal hingga saat ini masih menjadi pilihan tertinggi dan termurah dibandingkan jenis lainnya apalagi jenis ini memiliki kapasitas yang besar sesuai dengan ukuran fisiknya.

Lalu, apakah semua perangkat listrik vital menggunakan UPS sebagai sumber listrik darurat? Jawabannya tentu saja tidak.

Hampir sebagian besar perangkat listrik, di dalamnya memiliki sistem catu daya. Sumber tegangan yang digunakan untuk mendayai komponen-komponen listrik dan elektronik di dalamnya berbeda-beda antara satu jenis dan jenis lainnya. Ada perangkat yang memerlukan sumber tegangan tunggal tapi ada yang beragam (multi). Sobat sendiri pasti paham bagaimana sebuah PC di dalamnya terdapat catu daya yang menghasilkan beberapa sumber tegangan yang berbeda-beda yaitu dari -12 volt, -5 volt, 3,3 volt, +5 volt dan +12 volt. Memang tidak semua perangkat elektronik memerlukan suber tegangan dengan arus DC (dirrect current) ada juga yang AC (alternating current), ada yang diturunkan nilainya (step down) dan ada pula yang dinaikkan (step up). Nah, bagaimana pun sebuah catu daya harus menghasilkan keluaran untuk semua sumber tegangan yang dibutuhkan perangkat tersebut dari masukan sumber listrik utama di mana di tempat penulis di Indonesia adalah 220 Vac (sumber tegangan arus bolak-balik) dengan frekuensi 50 Hz.

Di atas tadi penulis sempat menjawab tidak semua perangkat penting terhubung dengan UPS. Dari panel beberapa perangkat tertentu, pada sistem catu dayanya dilengkapi dengan batere cadangan (backup baterry). Pada panel perangkat keselamatan dan keamanan (safety and security) yang berkaitan dengan sistem akses dan alarm, bahkan pada panel sistem komunikasi dan data yang bersifat lokal melengkapi sistem catu dayanya dengan fasilitas batere cadangan. Berbagai perangkat tersebut umumnya bekerja pada tegangan 12 volt dan ada yang 24 volt maka penggunaan batere dapat disesuaikan dengan tegangan tersebut. Penulis juga pernah menemukan sebuah perangkat yang ternyata menggunakan batere 6 volt.



Wah, sepertinya setelah informasi di atas, kita akan langsung membahas mengenai rangkaian catu daya yang dilengkapi dengan fasilitas batere cadangan.

Bergantung pada jenis batere yang digunakan karena jenisnya yang berbeda sehingga karakteristik yang ditampilkan juga berlainan maka sebuah perangkat catu daya harus disesuaikan dengan batere tersebut. Pada tulisan ini, pembatasan masalah (seperti skripsi saja), adalah catu daya konvensional dan penggunaan batere yang dapat diisi ulang (rechargeable) jenis asam timbal berukuran 12 volt dengan kapasitas 1,2 Ah. Penggunaan jenis batere lain seperti NiCd (nickel cadmium) dan keturunannya atau Li-Ion (lithium ion) dan keturunannya bisa jadi akan dibahas pada kesempatan lain, jika diperlukan dan Tuhan menghendaki.

Sebuah rangkaian catu daya yang menghasilkan keluaran dengan besar tegangan 12 Vdc dan kemampuan arus mencapai 1 ampere. Catu daya juga harus dilengkapi dengan fasilitas pengisi batere asam timbal. Selain itu catu daya juga harus memiliki sistem deteksi kegagalan sumber utama. Secara global, sistem catu daya tersebut dapat digambarkan pada diagram di bawah ini:



Sesuai diagram blok di atas, terdapat 3 bagian dari sistem catu daya kita, yaitu penurun dan regulator tegangan, unit pengisi batere serta unit kendali keluaran.


Kita mulai dari penurun dan regulator tegangan.

Untuk rangkaian penurun dan regulator tegangan merupakan sebuah catu daya tersendiri. Di pasaran unit ini sering disebut adaptor atau power supply. Jenisnya sendiri ada 2 yaitu konvensional dan switching. Sesuai pembatasan masalah, kita akan melihat sebuah catu daya konvensional. Ada 4 urutan sesuai bagian dari diagram sebuah catu daya konvensional, yaitu penurun tegangan, penyearah, filter dan regulator.



Untuk menurunkan tegangan listrik utama, dibutuhkan sebuah transformer penurun tegangan. Sebuah transformer memiliki 2 gulungan yang terdiri dari gulungan primer yang terhubung ke listrik utaman sebagai sumber tegangan dan gulungan sekunder yang menjadi keluarannya. Besar tegangan keluaran dari sekunder disesuaikan dengan kebutuhan dan pada rangkaian kita setidaknya membutuhkan 15 VAC. Gulungan sekunder dari transformer sendiri terdiri dari 2 jenis yang akan membedakan rangkaian penyearahnya, yaitu gulungan tunggal dan ganda dengan titik tengah atau center tap (CT). Jadi jika Sobat menggunakan gulungan tunggal maka keluaran sekunder terdiri dari 2 saluran yaitu 0V dan 15V. Sementara jika menggunakan jenis CT maka ada 3 yaitu 15V – CT – 15V.

Penyearah tegangan terdiri dari 1 atau beberapa buah komponen dioda. Jenis penyearahan sendiri terdiri dari 2 bentuk yaitu penyearah setengah gelombang (half wave rectifier) yang diperlihatkan pada gambar A di bawah ini dan penyearah gelombang penuh (full wave rectifier) pada gambar B dan C.



Setelah penyearah, kita sudah mendapatkan sebuah keluaran tegangan DC tapi belum selesai dan mungkin tak bisa diimplementasikan pada perangkat elektronik karena meski sudah searah tapi masih berbentuk gelombang. Untuk itu diperlukan filter atau penyaring tegangan. Filter tegangan ini sendiri ada yang sederhana saja yaitu hanya menggunakan sebuah kapasitor namun ada juga yang dilengkapi dengan induktor.



Tegangan keluaran setelah filter sudah dapat digunakan pada rangkaian elektronika karena sudah bersih dan rata meski mungkin masih mengandung sedikit riple tegangan. Ada rumusan yang biasa digunakan untuk menentukan hasil tegangan keluaran. Tegangan berbentuk gelombang yang dihasilkan pada sekunder diukur dari titik 0V dan tinggi gelombang pada tegangan puncak di sebut Vpeak atau Vp. Sebuah amplitudo tegangan terdiri +Vp dan -Vp yang akhirnya disingkat Vp-p yaitu tegangan puncak ke puncak. Tegangan keluaran rata-rata sebuah penyearah biasanya dihitung menurut rumusan:

Vrms = 1,3 x Vp-p

Untuk membuktikan rumus tersebut, Sobat bisa menggunakan AVO meter dengan mengukur tegangan masukan  AC dan keluaran DC. Maka bisa jadi tegangan keluaran dari rangkaian kita sesuai keterangan di atas mencapai 19 VDC. Tapi itu juga tergantung dari transformer yang digunakan dan pabrikan yang membuat. Karena sering kita menjumpai ada 2 jenis transformer di pasaran yaitu murni dan tidak murni.

Tapi besaran tegangan yang dihasilkan tersebut di atas juga masih bergantung pada tegangan listrik dari PLN yang tidak sama pada setiap tempat. Contoh di daerah pinggiran ibukota, aku pernah mengukur hanya 170 VAC. Di rumah lama penulis sekitar 220 VAC, dan rumah baru 210 VAC. Jadi tegangan keluaran catu daya sampai tahap di atas juga akan mengikuti sumbernya.

Untuk mengatasi hal tersebut maka digunakanlah sebuah regulator tegangan. Banyak jenis rangkaian regulator  dari yang menggunakan resistor dan dioda, menggunakan transistor hingga yang rumit bahkan ada juga komponen siap saji (maksud penulis siap pakai) seperti yang biasa penulis gunakan untuk mendapatkan tegangan stabil yaitu seri AN78— dimana 7812 untuk keluaran 12V, 7805 untuk 5V dal lain-lain untuk 5, 6, 9, 15 dan juga jenis regulator negatifnya yaitu seri AN79. Komponen jenis lain boleh saja sesuai keinginan termasuk jika tegangan keluarannya ingin dapat diatur, biasa menggunakan LM317 dan sejenisnya.



Gambar di atas memperlihat 4 contoh regulator. Masih banyak lagi jenis dan rangkaian regulator termasuk yang menggunakan sistem switching. Tapi penulis sering menggunakan rangkaian gambar C dan D dengan alasan praktis. Untuk gambar D biasanya untuk catu daya dengan R2 biasanya diganti dengan variable resistor.


Bagian kedua adalah unit pengisi batere.

Sobat yang baik, kita akan membangun sebuah pengisi batere. Sekali lagi, sesuai pembatasan di atas, kita akan membuat rangkaian pengisi batere jenis sealed lead acid atau SLA dengan tegangan batere 12 volt dan kapasitas 1,2 Ah. Sudah barang tentu untuk dapat membangun sebuah rangkaian pengisi maka kita wajib terlebih dulu mengenal karakteristik dari sebuah batere SLA.

Batere SLA atau kadang kebanyakan orang menyebutnya aki atau accu (accumulator) terutama oleh kalangan otomotif, memiliki karakteristik yang perlu dipahami dalam penggunaannya. Batere SLA adalah jenis rechargeable atau dapat diisi ulang. Pada sebuah batere SLA di dalamnya terdapat lembaran sel berbentuk pelat logam yang merupakan elektroda positif dan negatif. Kedua pelat atau elektroda penghantar (lead) dibuat dari bahan logam campuran berbahan dasar timbal (Pb),  di mana pada kondisi bermuatan penuh, pelat negatif adalah timbal (Pb) dan pelat postitif merupakan timbal oksida (PbO2). Pelat dirancang khusus saling bersisian dalam konstruksinya untuk memperoleh luas permukaan yang besar. Di antara pelat elektroda disisipkan bahan sejenis serat kaca agar tidak terjadi hubungan langsung dari keduanya. Kemudian untuk memperoleh reaksi kimia yang menghasilkan arus dan tegangan maka kedua pelat direndam dalam cairan elektrolit berupa larutan asam sulfat (H2SO4) dengan kadar 4,2 mol atau 33,5%.

Saat proses pembuangan muatan sebagai akibat digunakan atau didiamkan dalam jangka waktu yang lama, kedua pelat cenderung berubah menjadi timbal sulfat (PbSO2) dan larutan asam sulfat semakin kehilangan molaritasnya dan didominasi menjadi air (H2O). Untuk mengembalikannya dilakukan proses elektrolisa atau pengisian dengan arus listrik dan tegangan. Dalam proses pengisian dengan tegangan tinggi menghasilkan gas hidrogen dan oksigen, itu mengapa kita harus sering melakukan pemeriksaan berkala untuk menambahkan air ke dalam batere SLA yang menguap. Untuk pemahaman maka kita menyebut batere jenis ini sebagai batere SLA terendam.

Berbeda dengan batere SLA jenis “bebas perawatan” yang menggunakan teknologi katup asam timbal diatur (VRLA, valve regulated lead acid). Larutan asam sulfat diserapkan pada separator sehingga terkesan seperti gel dan memungkinkan untuk proses rehidrasi. Kadang kebanyakan dari kita menyebutnya dengan batere kering meski sebenarnya tidaklah persis seperti itu kenyataannya. Jenis ini juga lebih populer digunakan meski tidaklah benar-benar 100% bebas perawatan. Justru batere SLA jenis VRLA ini memerlukan kehati-hatian yang tinggi dalam pengisian dan penggunaan.

Sejenak kita sudah mengobrol dan seakan menjadi ahli kimia. Saatnya kita mengenal karakteristik kelistrikan dari batere SLA terutama untuk keperluan proses pengisian.

Perlu Sobat ketahui atau menyegarkan kembali bahwa sebuah sel dari batere SLA mampu membangkitkan tegangan sebesar 2,1 volt pada kondisi bermuatan penuh. Sehingga batere 12V yang terdiri dari 6 sel akan menghasilkan 12,6 volt.

Untuk membuat agar muatan batere tetap terjaga maka diperlukan pemberian tegangan konstan secara terus menerus. Besarnya tegangan yang harus diberikan berbeda-beda antara jenis batere di mana jenis batere SLA terendam membutuhkan tegangan sebesar 13,9 volt sementara untuk jenis VRLA atau elektrolit gel sekitar 13,4 volt. Pemberian tegangan yang tidak sesuai baik kurang atau berlebihan memberi efek sama buruknya terhadap umur dari batere itu sendiri. Tegangan yang kurang cukup akan menimbulkan proses kimia dari larutan asam sulfat yang menimbulkan kristalisasi timbal sulfat sementara kristalisasi ini akan menyebabkan kemampuan batere menurun. Hal yang sama terjadi ketika batere disimpan dalam waktu yang lama. Sementara pemberian tegangan terus menerus yang berlebihan dapat menyebabkan proses korosi atau karat pada elektroda dan kehilangan elektrolit. Ini sebabnya mungkin sering Sobat lihat karat pada terminal (terutama terminal positif) pada sisi luarnya karena biasanya bagian dalam tak terlihat dan secara fisik batere juga tampak mengembung.

Nilai di atas tidak mutlak karena tergantung pada rekomendasi pabrik pembuatnya yang bisa bisa Sobat lihat karena tertulis pada wadah batere itu sendiri.

Batere SLA dinyatakan dalam kondisi kosong dan perlu segera diisi apabila pada keadaan tanpa beban tegangan maka tegangan terminal terukur sebesar 11,7 volt. Apabila batere tersebut dibebani maka tegangan terukur adalah 10,5 volt.

Ada 2 teknik dalam pengisian batere yaitu pengisian dengan pemberian arus konstan dan pengisian dengan tegangan konstan.

Pada pengisian arus konstan, lama pengisian bergantung pada kapasitas batere dan untuk batere berkapasitas 1,2 Ah kemudian arus konstan sebesar 0,1C dari kapasitas (initial current) memerlukan waktu selama 10 jam. Pada wadah batere SLA jenis VRLA biasa tertulis nilai maksimal dari initial current yang berkisar pada 0,4C di mana secara teoritis berarti lama pengisian adalah 2,5 jam. Dalam prakteknya hal ini tidak mungkin.

Tidak seperti batere NiCd atau Li-Ion, maka batere SLA tidak dapat dilakukan dengan cara pengisian cepat hingga di bawah 5 jam. Ada beberapa hal yang perlu diperhatikan seperti efek panas yang ditimbulkan, umur batere dan tegangan terminal saat pengisian.

Pada pengisian cepat dengan arus 0,4C maka ketika proses pengisian berlangsung dan tegangan batere mencapai  14,4 volt, ini berarti batere SLA memasuki kondisi rawan karena pada tegangan tersebut merupakan ambang pelepasan gas dan proses pengisian harus dihentikan. Hal ini biasanya tercapai sekitar 2 jam dan batere pada kondisi ini belum sepenuhnya terisi (belum 100%). Untuk mencapai pengisian penuh perlu dilanjutkan dengan pengisian pada tegangan konstan sebesar 14,4 volt setidaknya selama 3 sampai 4 jam lagi. Jadi total waktu pengisian lamanya kurang lebih 5 jam.

Berikut adalah karakteristik sistem pengisian batere SLA sesuai prosedur di atas. Garis warna merah menunjukkan arus pengisian yang mengaliri batere, sementara garis warna hijau menggambarkan tegangan pada elektroda batere. Pada periode waktu 0 sampai 2 jam, pengisian batere dilakukan dengan CC (current cycle) atau pengisian arus tetap. Periode setelahnya di mana tegangan batere telah mencapai 14,4 volt adalah dengan VC (voltage cycle) atau pengisian dengan tegangan tetap.



Nah, unit pengisi batere yang akan dibuat dapat mengadopsi karakteristik tersebut namun untuk menjaga umur batere lebih lama alias awet maka pengisian dengan 0,4C tidak disarankan. Dari baynyak referensi maka arus pengisian yang ideal adalah di bawah 0,1C. Secara teoritis biasanya batere SLA memiliki siklus pengisian dan pembuangan (recharge & discharge) mencapai 300 sampai 500 kali, tergantung teknik pengisian dan temperatur batere. Mengenai besarnya temperatur juga tertera pada wadah batere, biasanya berkisar 25oC.

Rangkaian elektronik pengisi batere dengan tegangan konstan dapat merujuk pada regulator tegangan yang sudah di bahas di atas.

Banyak jenis rangkaian pembangkit arus konstan. Sebuah contoh rangkaian elektronik yang menghasilkan arus konstan pada sistem pengisi batere dapat dilihat pada gambar berikut:



Secara teoritis, potensial barrier dari sebuah transistor silikon adalah 0,7 volt namun dalam praktek saat diukur dengan AVO neter atau diimplementasikan kadang kita menjumpai angka 0,6 volt. Pada gambar di atas, R2 yang terhubung ke bumi akan menyulut Q1 mencapai kondisi kerja. Q1 yang tersulut akan menyebabkan arus dari Vcc mengalir ke emitornya melalui R1 dan membentuk tegangan pada pertemuan tersebut. Emitor Q1 juga terhubung pada basis Q2 maka ketika tegangan mencapai 0,6 volt secara otomatis juga menyulut kerja Q2. Kondisi Q2 yang tersulut akan mereduksi arus umpan R1 untuk mengoreksi keluaran Q1 dan menyebabkan tegangan pada R1 akan dibatasi pada 0,6 volt.  Karena nilai R1 adalah 10 ohm maka arus yang mengalir pada emitor Q1 kita anggap sama dengan kolektor dengan pendekatan sebagai berikut:

IC = IE = 0,6 / R1 = 0,6 / 10 = 0,06A atau 60 mA

Dikaitkan dengan batere SLA kita yang 1,2Ah maka ini akan menyediakan arus pengisian 0,05C atau memerlukan 20 jam lama pengisian jika batere dalam keadaan benar-benar kosong.


Bagian ketiga adalah unit kendali keluaran

Bagian terakhir ini berfungsi sebagai pengendali dari kerja perangkat catu daya. Fungsi pengendalian adalah mengatur keluaran dari catu daya. Normalnya keluaran catu daya yang berasal dari regulator adalah 13,6 volt. Pada keadaan sumber listrik utama padam, maka secara otomatis keluaran dihasilkan melalui batere. Penggunaan batere yang terus menerus akan menyebabkan muatan batere berkurang dan tegangan batere turun. Kondisi batere yang kehabisan muatan ditandai dengan tegangan keluarannya mencapai 10,5 volt. Unit kendali harus memutus keluarannya. Karena di bawah tegangan tersebut umumnya rangkaian yang di dayai cenderung menunjukkan kinerja yang buruk. Berdasarkan pengalaman penulis dalam penggunaan pada sistem pintu akses menyebabkan kegagalan catu daya untuk menggerakkan relay.

Rangkaian lengkap dari catu daya 1A dengan regulator tegangan dapat dilihat sebagai berikut:



Catu daya menggunakan transformer daya penurun tegangan dengan keluaran 1 ampere pada tegangan 15 Vac. Tegangan akan disearahkan dengan dioda jembatan untuk menghasilkan tegangan 21,4 Vdc. Rangkaian menggunakan regulator LM117 yang memiliki kemampuan hingga 1,2 A namun untuk itu perlu penggunaan pendingin. Keluaran regulator disetel melalui VR1 untuk besar tegangan regulasi 13,6 volt. Dari harga R1, R2 dan VR1 di atas, tegangan dapat disetel antara 12,2 volt  sampai 14,7 volt.

Sekarang kita lihat rangkaian pengisi batere dan kendali keluarannya.



Keluaran dari catu daya teregulasi sebesar 13,6 volt terhubung ke keluaran setelah melalui D2 dan L1. Selain itu juga digunakan untuk mengaktifkan relay K1. Kontak relay K1E1 terhubung paralel dengan diode D4 yang merupakan keluaran dari batere. Posisi K1E1 adalah NO jadi selama sumber utama ada maka posisinya selalu terbuka. Sebaliknya jika sumber utama padam maka  akan menghubung singkat D4 dan batere terhubung langsung dengan keluaran untuk mengurangi rugi tegangan.

Rangkaian pengisi batere terdiri dari regulator arus yang terdiri dari Q101, Q103, R101 dan R102; dan regulator tegangan Q102 dan ZD101. Regulator arus menghasilkan arus konstan sebesar 60 mA atau 0,05C untuk pengisian batere 1,2 Ah selama 20 jam. Regulator tegangan membatasi tegangan pada batere yang terisi tak lebih dari 13,6 volt sekaligus memberikan tegangan standby dari siklus pengisian untuk menjaga kesegaran batere. Fungsi D101 adalah untuk mencegah arus balik dari batere ke rangkaian regulator arus.

Kendali keluaran dibangun dengan komparator LM339. Rangkaian ini berfungsi untuk mengendalikan keluaran terhadap kondisi batere. Komparator akan memeriksa masukan dari keluaran catu daya melalui R201 dan R202. Keluaran ini dibandingkan dengan tegangan referensi yang dibentuk oleh R204, R205 dan R206. Pada saat komparator cut-off maka tegangan referensi adalah hasil bagi antara R204 dan R205 yaitu 2,5 volt. Sementara jika saturasi maka tegangan referensi dipengaruhi oleh R205 menjadi 2,16 volt.

Ketika pertama kali catu daya dihidupkan keluaran komparator dalam keadaan cut-off. Begitu tegangan catu melewati 12,25 volt maka komparator akan trip menjadi saturasi dan menggerakkan relay K201. Kondisi ini untuk menghubungkan batere pada keluaran catu daya.

Jika catu daya utama mati maka keluaran ditangani oleh batere. Penggunaan batere secara terus menerus akan menyebabkan muatannya hilang dan tegangan turun. Jika tegangan batere turun mencapai 10,6 volt dan tegangan terdeteksi pada R201 dan R202 di bawah 2,16 akan menyebabkan komparator trip menjadi cut-off. Komparator akan memutuskan hubungan batere dengan keluaran yang menuju ke perangkat elektronik.

Jika komponen relay K1 ditiadakan berarti K1E1 juga tidak ada, maka tegangan trip batere menjadi 11,2 volt.

Demikian catu daya kita. Untuk ampere yang lebih besar mungkin rangkaian di atas perlu dimodifikasi dengan penggantian beberapa komponen yang disesuaikan kemampuannya. Bahkan jika perlu dilengkapi dengan berbagai proteksi.



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

Salam....