From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
01-18-2014 01:35 PM
Halo rekan-rekan,
Sekedar sharing iseng saya di hari libur
Background:
- Pekerjaan rumah yang repetitif, menyalakan dan mematikan lampu depan dan belakang
- Saya tahu sedikit automation, tahu hanya LabVIEW dan juga waktu luang yang tidak banyak
Tujuan:
- Menyalakan dan mematikan lampu depan dan belakang secara otomatis
- Selesai dalam waktu 1-hari
Poin Penting:
1. Controller: SingleBoardRIO 9626 Dev. Kit
Lengkapnya ada disini: http://sine.ni.com/nips/cds/view/p/lang/en/nid/210419
Kenapa pake ini? Karena barang demo NI yang lagi nganggur
2. Software: LabVIEW, LabVIEW RT dan LabVIEW FPGA
Satu-satunya bahasa program dan embedded yang saya suka, dan tidak menyita banyak waktu
3.Item yang mau dikontrol: Saklar
Saklar ini untuk lampu belakang yang jumlahnya ada dua. Dua-duanya mau saya nyalakan secara bersamaan. Rupanya di dalam saklar 2-switch ini hanya ada tiga kabel, yaitu:
- Saklar 1+ (live)
- Saklar 2+ (live)
- Saklar COM (neutral)
Sistem-nya seperti relay, Open/Close, kalau Open lampu mati, Close lampu nyala. Untuk memastikan, saya pakai DMM (Digital Multi Meter), untuk melihat apakah betul ada tegangan 220VAC, dan ternyata betul. Untuk amannya, listriknya saya matikan dulu via MCB.
Step by Step!
1. Modifikasi Saklar
SOLUSI:
Setelah dipikir matang-matang, elektro-mekanikal relay, sebaiknya tidak diletakkan dekat dengan Breadboard, dikarenakan alasan berikut ini:
a. Karena ada signal 220VAC yang ada resiko bahaya
b. Kabel 220VAC tentu saja lebih besar ketimbang 24VDC (jadi lebih mahal dan kelihatan besar/jelek kalau tarik kabel ini dari saklar ke panel sbRIO)
Jadi solusinya adalah dengan meletakkan elektro-mekanikal relay di dalam lubang saklar, kabel 220VAC tetap pendek di dalam lubang saklar tersebut. Relaynya, saya solder di dalam. Jadi kabel keluar dari saklar ini hanya kabel tipis yang ada dua oleh 24VDC+(putih) dan 24VDC-(hitam). Berikut ini tampilan saklar yang baru:
2. Saklar tipe-nya adalah Relay 220VAC sementara Digital Output sbRIO 9626 adalah 3.3VDC
SOLUSI:
Menggunakan kombinasi ULN2803 (Darlington Drivers) dan 24VDC Relay 220VAC
Berikut ini schematicnya yg saya ambil dari internet tentang penggunaan ULN2803 dan Relay. Contoh dibawah menggunakan Arduino (saya rasa), tapi saya ganti Arduino tsb. dengan sbRIO:
Setelah melakukan testing awal, tentang sirkuit di atas, lalu saya desain terlebih dahulu diagram dibawah ini:
Berikut ini adalah implementasi dalam breadboard:
Pekerjaan elektrikal (buka saklar, solder, prototyping di dalam breadboard) sudah memakan waktu hampir 5 jam. Setelah kelar, lalu baru saya mulai programming LabVIEWnya. Tapi sebelum itu....
3.Software Development (Flowchart)
SOLUSI:
Saya biasakan membuat flowchart terlebih dahulu sebelum menyentuh LabVIEW, sehingga program menjadi lebih terencana yang arti ke depannya stabil dan lebih mudah untuk dimaintain, diupgrade dan discale ke yang lebih besar lagi. Saya pakai software yED (http://www.yworks.com/en/index.html) untuk membuat flowchartnya. Berikut ini cuplikannya:
Setelah diagram dan flow dibuat, baru saya mulai programming di LabVIEW.
4.LabVIEW Programming
Kebutuhan:
--> kebutuhan sekarang sangat simple, input periode nyala-mati dikontrol oleh sebuah text-file
--> saya tidak perlu UI, cukup sistem otomatis untuk sekarang
--> saya perlu sedikit event-logging
SOLUSI:
--> gunakan State Machine
--> keep modular (terpecah menjadi fungsi SubVIs)
--> cukup 1 loop saja
--> Untuk algoritma yang rumit, yaitu periode untuk nyala-mati dalam bentuk:
- Start Time (hh.mm)
- Stop Time (hh.mm)
Artinya, kalau saya mau nyala dari jam 6.30 sore sampai jam 5.45 pagi, maka saya akan berikan input menggunakan format 24hours, yaitu:
Start Time (hh.mm): 18.30
Stop Time (hh.mm): 05.40
Nah saya menggunakan numeric dengan tipe floating (DOUBLE), jadi menjadi angka:
18.3 dan 5.4
Untuk mendapatkan waktu sekarang, kebetulan sbRIOnya punya clock dan battery, jadi clocknya bisa dijaga. Saya cukup menggunakan fungsi Get Date/Time in Seconds, lalu saya hanya ambil hh.mm-nya saja dan mengganti dalam bentuk floating (DOUBLE). Lalu saya bandingkan waktu sekarang, terhadap Start Time dan Stop Time di atas.
Ciaatttt... termasuk debugging dan troubleshooting, program telah siap dalam 1-jam.
Codenya saya attached. Saya lampirkan program HANYA dalam versi LabVIEW 2013.
01-19-2014 11:43 PM
Mantab Kris, niat banget nih bikinnya.