Membuat Sendiri Sistem Sequential-Relay / Sequential-Timer Menggunakan Board FORTHUNER46


Sequential-Relay atau Sequential-Timer adalah sistem penggerak relay yang diprogram sedemikian rupa (dengan berbasis timer), sehingga sistem tersebut bekerja (mengaktifkan/mematikan relay-relay) dengan urutan kerja tertentu berdasarkan waktu. Contoh urutan kerja sistem sequential-relay atau sequential-timer adalah sebagai berikut:

  1. RELAY-1 ON – DELAY 3 MENIT
  2. RELAY-2 ON – DELAY 2 MENIT
  3. RELAY-1 OFF – RELAY-2 OFF – DELAY 3 MENIT
  4. RELAY-1 ON – DELAY 3 MENIT
  5. RELAY-3 ON – DELAY 5 MENIT
  6. BUZZER-ON

Sistem dengan urutan kerja diatas adalah sistem yang dipesan user asal Malang yang tertarik dengan board KISFORTHUNER (FORTHUNER46). Sistem yang diinginkan adalah, ketika sistem dinyalakan (power-on), maka urutan kerja tersebut dijalankan. Operator harus mematikan sistem dan menyalakan kembali untuk mengulang proses.

Karena menggunakan Forth, maka sistem sequential-relay tersebut dapat langsung diprogram dan diuji secara interaktif tanpa memerlukan proses EDIT – COMPILE – UPLOAD seperti layaknya sistem mikrokontroler pada umumnya. Sangat mudah dan sangat cepat. Sangat cocok bagi Anda yang non-programmer.

Sesuai dengan judul tulisan di atas, pada tulisan ini saya akan menjelaskan tentang bagaimana memrogram board FORTHUNER46 untuk menghasilkan sistem sequential-relay / sequential-timer dengan urutan kerja seperti di atas. Saya menggunakan software sederhana yang saya buat menggunakan interpreter ThinBASIC untuk berinteraksi dengan board FORTHUNER46 melalui port serial. Berikut adalah tampilan programnya.

Untuk berinteraksi dengan mikro, kita berikan perintah pada Command Box dan klik tombol ENTER. Respon dari mikro akan ditampilkan pada komponen editbox di atasnya.

 

Btw, informasi detil mengenai board FORTHUNER46 dapat Anda baca di sini.

 

HARDWARE

Sistem disusun menggunakan board FORTHUNER46 dan board RELAY 4-CHANNEL seperti ditunjukkan oleh gambar berikut ini.

Tiga buah relay dikendalikan melalui pin-pin:

  • RELAY-1   –   PIN PB3
  • RELAY-2   –   PIN PB2
  • RELAY-3   –   PIN PB1

Board relay menggunakan driver aktif-rendah, sehingga untuk mengaktifkan relay, kita harus memberikan logika LOW pada inputnya.

Untuk BUZZER, board FORTHUNER46 memiliki buzzer yang dikendalikan oleh PIN PD2. Buzzer ini aktif-tinggi (HIGH).

 

SOFTWARE

Dengan konfigurasi hardware tersebut, kita dapat secara interaktif membuat program dan menguji program secara interaktif. Contoh, untuk mengaktifkan RELAY-1, maka kita bisa memasukkan perintah pada Command Box:

   $B3 OL

Untuk mematikan RELAY-1, kita bisa memasukkan perintah pada Command Box:

   $B3 OH

Dan untuk mengaktifkan RELAY-2 selama 1 detik, kita bisa memasukkan perintah pada Command Box:

   $B2 OL 1000 MS WAIT $B2 OH

atau

   $B2 DUP OL 1000 MS WAIT OH

Untuk mengaktifkan BUZZER selama 2 detik, kita bisa memasukkan perintah pada Command Box:

   $D2 DUP OH 2000 MS WAIT OL

 

FAKTORISASI

Forth sangat menekankan proses faktorisasi, yakni membagi atau memecah tugas yang kompleks menjadi tugas individual yang sederhana, sangat sederhana sehingga tidak bisa dipecah lagi. Setelah itu, kita bisa membuat fungsi-fungsi untuk masing-masing tugas individual tersebut. Karena tugas individual tersebut sangat sederhana, maka diharapkan tidak mungkin terjadi kesalahan dalam pembuatan fungsi tersebut.

Untuk sistem sequential-relay di atas, kita hanya membutuhkan fungsi-fungsi sederhana untuk:

  1. Mengaktifkan relay/buzzer
  2. Mematikan relay/buzzer
  3. Melakukan tundaan waktu

Sebagai awal, marilah kita membuat fungsi-fungsi tundaan waktu terlebih dahulu. Kita mulai dengan membuat fungsi tundaan waktu dengan satuan waktu 1 detik, programnya adalah sebagai berikut:

   : 1S 1000 MS WAIT RET

Ketik perintah tersebut pada Command Box dan klik tombol ENTER.

MS adalah perintah Forth untuk mengaktifkan timer internal dengan counter timer sesuai parameter yang dalam hal ini adalah nilai 1000. WAIT adalah perintah untuk menunggu proses hingga nilai counter timer bernilai 0.

Dengan adanya fungsi 1S, kita dapat melakukan tundaan selama 1 detik dengan memanggil fungsi tersebut:

   1S

Untuk melakukan tundaan selama 4 detik, kita bisa memanggil fungsi 1S sebanyak 4 kali sebagai berikut:

   1S 1S 1S 1S

Selanjutnya, karena kita membutuhkan tundaan waktu dengan satuan menit, maka kita bisa membuat beberapa fungsi menggunakan fungsi 1S seperti berikut ini:

   : 5S 1S 1S 1S 1S 1S RET
   : 10S 5S 5S RET
   : 30S 10S 10S 10S RET
   : 1M 30S 30S RET

Dari fungsi 1S, kita buat fungsi 5S. Dari fungsi 5S, kita buat fungsi 10S. Dari fungsi 10S, kita buat fungsi 30S. Dan dari fungsi 30S, kita buat fungsi 1M. Model seperti ini sangat sesuai dengan Forth yang menggunakan teknik Threaded Code, khususnya Subroutine Threaded Code.

Bagaimana menurut Anda? Sangat mudah, bukan? Forth itu sederhana. Yang gak perlu ribet, ya gak usah dibikin ribet. Kita tidak butuh struktur pemrograman yang lebih rumit seperti perulangan untuk mencapai hasil yang diinginkan. Cukup dengan faktorisasi fungsi. Jika Anda merasa aneh dan merasa kurang elegan dengan model ini, maka saya pun juga demikian pada awalnya. Tapi demikianlah Forth. Beda tapi asyik. 😀

Nah, selanjutnya kita bisa membuat fungsi-fungsi untuk mengaktifkan dan mematikan relay dan buzzer. Berikut adalah fungsi-fungsinya:

   : R1-ON $B3 OL RET
   : R1-OFF $B3 OH RET
   : R2-ON $B2 OL RET
   : R2-OFF $B2 OH RET
   : R3-ON $B1 OL RET
   : R3-OFF $B1 OH RET
   : BZ-ON $D2 OH RET

Selanjutnya, kita bisa mengembangkan fungsi-fungsi yang merupakan implementasi dari tahapan-tahapan kerja sistem.

Di awal tulisan, saya sudah memberikan urutan kerja sistem yang terdiri dari 6 tahapan atau langkah. Kita bisa membuat fungsi masing-masing langkah tersebut seperti berikut ini:

   : STEP1 R1-ON 1M 1M 1M RET
   : STEP2 R2-ON 1M 1M RET
   : STEP3 R1-OFF R2-OFF 1M 1M 1M RET
   : STEP4 R1-ON 1M 1M 1M RET
   : STEP5 R3-ON 1M 1M 1M 1M 1M RET
   : STEP6 BZ-ON RET

STEP1 berfungsi mengaktifkan RELAY-1 (R1-ON) dan melakukan tundaan waktu selama 3 menit (1M 1M 1M). STEP2, STEP3 dan seterusnya tidak perlu saya jelaskan karena sudah sangat jelas.

Nah, dari fungsi-fungsi STEP1, STEP2, STEP3, STEP4, STEP5 dan STEP6, kita bisa membuat fungsi utama sistem sebagai berikut:

   : MAIN STEP1 STEP2 STEP3 STEP4 STEP5 STEP6 RET

Sampai di sini, secara praktis proses implementasi urutan kerja sistem menjadi program Forth sudah selesai. Kita bisa menjalankan program utama dengan memberikan perintah pada Command Box:

   MAIN

Dan sistem pun akan bekerja sesuai dengan urutan kerja yang diinginkan.

 

AUTOEXE

Dengan memanggil fungsi MAIN, maka sistem akan bekerja sesuai dengan urutan kerja yang diinginkan. Namun demikian, kita menginginkan bahwa urutan kerja tersebut akan dijalankan secara otomatis ketika sistem diaktifkan.

Untuk itu kita perlu memberikan perintah AUTOEXE. Perintah ini berfungsi untuk mendaftarkan nama fungsi yang akan dipanggil secara otomatis ketika sistem diaktifkan.

Agar fungsi MAIN otomatis dijalankan ketika sistem diaktifkan, maka kita berikan perintah pada Command Box:

   AUTOEXE MAIN

Selanjutnya, kita bisa mematikan sistem dan menyalakannya kembali, atau kita bisa mengirimkan perintah INIT pada Command Box:

   INIT

Nah, dengan demikian, tuntaslah tugas kita memrogram FORTHUNER46 dengan urutan kerja sesuai pesanan.

 

KODE PROGRAM SELENGKAPNYA

   : 1S 1000 MS WAIT RET
   : 5S 1S 1S 1S 1S 1S RET
   : 10S 5S 5S RET
   : 30S 10S 10S 10S RET
   : 1M 30S 30S RET
   : Q1-ON $B3 OH RET
   : Q1-OFF $B3 OL RET
   : Q2-ON $B2 OH RET
   : Q2-OFF $B2 OL RET
   : Q3-ON $B1 OH RET
   : Q3-OFF $B1 OL RET
   : BZ-ON $D2 OH RET
   : STEP1 Q1-ON 1M 1M 1M RET
   : STEP2 Q2-ON 1M 1M RET
   : STEP3 Q1-OFF Q2-OFF 1M 1M 1M RET
   : STEP4 Q1-ON 1M 1M 1M RET
   : STEP5 Q3-ON 1M 1M 1M 1M 1M RET
   : STEP6 BZ-ON RET
   : MAIN STEP1 STEP2 STEP3 STEP4 STEP5 STEP6 RET
   AUTOEXE MAIN

 

PENUTUP

Semoga tulisan singkat ini bermanfaat. Jika Anda berminat dengan board FORTHUNER46, silakan menghubungi saya melalui WA ke 081231784018.

Saya juga mengadakan pelatihan singkat pemrograman FORTHUNER46 dengan biaya 100 ribu saja per 3 jam. Bagi Anda yang non-programmer dan ingin membuat sistem kontrol atau otomasi sederhana, board FORTHUNER boleh jadi sangat cocok untuk Anda.

Iklan

3 respons untuk ‘Membuat Sendiri Sistem Sequential-Relay / Sequential-Timer Menggunakan Board FORTHUNER46

  1. Bagaimana dengan fungsi logika interlocking, misal Set-Reset Flip-flop…bisakah diterapkan di aplikasi Forthuner46 ini…

    1. FORTHUNER46 tidak hanya untuk sequential-relay/timer. Board ini bisa diprogram sebagaimana layaknya mikrokontroler namun dengan bahasa tersendiri, yakni Avise yang berbasis Forth. Input, Output, ADC, Timer/Counter, semua resource mikrokontroler bisa didayagunakan. Contoh interlocking: R1 hanya bisa ON jika R2 OFF, dan R2 hanya bisa ON jika R1 OFF, maka kode programnya sbb (R1 di PB0, R2 di PB1, keduanya aktif-tinggi):
      : R1-ON $B1 RIO IF $B0 OH ELSE $B0 OL THEN RET
      : R2-ON $B0 RIO IF $B1 OH ELSE $B1 OL THEN RET
      Fungsi RIO adalah membaca kondisi pin GPIO. $B1 RIO akan menghasilkan 0 jika PB1=LOW dan menghasilkan 1 jika PB=HIGH. Fungsi IF menyeleksi kondisi/hasil perintah $B1 RIO, jika 1 maka $B0 OH (R1=ON) dan sebaliknya.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

w

Connecting to %s