Tampilkan postingan dengan label Elektro. Tampilkan semua postingan
Tampilkan postingan dengan label Elektro. Tampilkan semua postingan

Sabtu, 21 September 2024

Membuat regulator tegangan 3.3 Volt

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan membuat regulator tegangan 3.3 Volt. Dengan input tegangan mulai dari 5 sampai dengan 12 Volt. Ok langsung saja cek skemanya.

Bahan:

  • IC Regulator AMS1117 3.3
  • Resistor 100 ohm
  • LED hijau
  • Elco 10 uF
  • Jack DC power female
  • PCB dot matrix
  • Jack DC power male + kabel
  • Terminal block 2 pin

Cara kerja rangkaian:
  • AMS1117 adalah regulator tegangan linier yang mengatur tegangan input (4.75V hingga 15V) menjadi output stabil 3.3V.
  • Lampu LED dipasang pada bagain output regulator, agar bisa dipakai rentang tegangan input 5 sampai 12 volt, dengan begitu tidak perlu merubah resistor pada LED
Kegunaan:
  • Regulator Tegangan: Menyediakan tegangan stabil untuk rangkaian elektronik.
  • Sistem Mikrokontroler: Sumber daya untuk mikrokontroler seperti Arduino dan ESP8266.
  • Proyek IoT: Digunakan dalam perangkat Internet of Things yang membutuhkan catu daya stabil.
  • Modul Sensor: Menyediakan tegangan untuk berbagai modul sensor dan perangkat periferal.
  • Konsol Game Mini: Sering digunakan dalam proyek konsol game DIY untuk menjaga kestabilan tegangan.

Senin, 09 September 2024

Membuat mini power amplifier stereo dengan PAM8610

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan membuat mini power amplifier stereo dengan PAM8610 (PAM8610 2x15W Stereo Mini Power Amplifier 2 Channel Class D). Ok langsung saja cek skemanya.

Bahan:

  • Potensio stereo 50K
  • Knop potensio
  • Skalar
  • Elco 330 µF
  • Jack input audio stereo female 3.5 mm
  • Jack DC power female
  • Terminal jepit speaker
  • Elco 10 µF
  • LED
  • Modul PAM8610
  • Kotak plastik
  • Kabel secukupnya
  • Resistor 1K
  • Push Button ON/OFF

Cara kerja rangkaian:
  • Menggunakan modul amplifier PAM8610
  • Potensio stereo untuk volume suara
  • LED sebagai indikator power supply sudah menyala
  • Skalar untuk menghidupkan power supply
  • Jack DC power supply 12 Volt
  • Terminal jepit menuju ke speaker
  • Jack audio untuk input 
  • Push Button untuk fungsi MUTE / membisukan suara
Kegunaan/Kesimpulan:
  • Keperluan pengunaan amplifier mini, ringkas, ukuran kecil bisa dibawa kemana-mana
  • Setelah di tes Power suara cukup kencang untuk ukuran 15 watt per channel
  • Bisa dibuat bisnis jualan amplifier mini
  • Bisa di modif dengan menambah baterai 3.7 volt + modul step up + TP4056 agar lebih portable dan praktis

Senin, 02 September 2024

Membuat alat tester speaker sederhana

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan membuat alat tester speaker sederhana. Ok langsung saja cek skemanya.

Bahan:

  • Tempat baterai 18650 1 slot
  • Modul musik bekas dari mainan ponsel (kalian bisa menggunakan modul musik apa pun yang penting bisa digunakan untuk menguji suara pada speaker)
  • Terminal blok 2 pin
  • Saklar push button
  • Baterai 3.7 volt
  • Jepit buaya sepasang

Cara kerja rangkaian:
  • Jepit buaya dihubungkan dengan speaker, buzzer, piezo dan lain sebagainya
  • Kemudian tekan push button, dengarkan jika speaker berbunyi berarti masih bisa dipakai karna lilitan atau kumparan didalam speaker masih terhubung
  • Jika setelah menekan push button tidak ada respon suara sama sekali kemungkinan sudah rusak karna lilitan kumparan speaker sudah putus/gosong/terbakar.
Kegunaan:
  • Mengecek speaker rusak atau masih bisa dipakai
  • lebih praktis dan cepat dalam mengecek speaker

Minggu, 25 Agustus 2024

Membuat kapasitor bank untuk aki motor

PERINGATAN! 
Disclaimer: Resiko dan Tanggung Jawab Pribadi

Tutorial ini disediakan hanya untuk tujuan edukasi. Dengan mengikuti tutorial ini, Anda menyadari dan menerima semua risiko yang mungkin terjadi. Kami tidak bertanggung jawab atas kerusakan apa pun yang mungkin timbul akibat penerapan tutorial ini.

Baca Disclaimer sebelum membaca / menonton video.

--------------------------------------------------------------------------------------------------------------------------

Halo Rek! kali ini Ruang Teknik akan membuat kapasitor bank untuk aki motor. Ok langsung saja cek skemanya.

Bahan:

  • Elko kisaran 5000 - 10000 uF 50V
  • Saklar
  • Sekring kisaran 5 - 7,5 A (Tergantung spek sepeda motor kalian)
  • Fuse holder / Rumah sekring
  • Kabel (diameter usahakan yg besar agar arus bisa maksimal dan tidak panas) atau cari diameter kabel yg sesuai spek rentang arus yg dipakai (cari listnya di google)

Cara kerja rangkaian:
  • Kapasitor bank untuk aki bekerja dengan cara menyimpan dan melepaskan energi listrik untuk membantu menstabilkan tegangan di sistem kelistrikan kendaraan. 
  • Menyimpan Energi: Kapasitor bank menyimpan energi listrik dalam bentuk muatan ketika tegangan dari alternator atau aki berada di puncaknya.
  • Melepaskan Energi: Ketika ada penurunan tegangan, misalnya saat ada beban berat seperti saat menyalakan starter atau menggunakan perangkat elektronik berdaya tinggi, kapasitor bank akan melepaskan energi yang telah disimpannya untuk menjaga tegangan tetap stabil.
  • Mengurangi Beban Aki: Dengan menjaga tegangan stabil, kapasitor bank mengurangi beban pada aki, sehingga aki tidak perlu bekerja keras untuk mengatasi fluktuasi tegangan. Ini dapat membantu memperpanjang umur aki.
  • Secara keseluruhan, kapasitor bank membantu dalam menjaga kelistrikan kendaraan tetap stabil, mengurangi risiko kerusakan pada perangkat elektronik, dan memperpanjang umur aki.
Kegunaan:
  • Menstabilkan tegangan agar sistem kelistrikan kendaraan tetap stabil.
  • Mengurangi beban aki sehingga aki tidak perlu bekerja terlalu keras, memperpanjang umurnya.
  • Meningkatkan performa perangkat elektronik dengan menyediakan suplai daya tambahan saat dibutuhkan.
  • Mencegah gangguan atau kerusakan pada perangkat elektronik akibat fluktuasi tegangan.
Kesimpulan:
  • Setelah mencoba beberapa hari terasa efeknya, starter motor jadi lebih ringan
  • Secara keseluruhan tidak terlihat dampak yang besar, jadi terserah kalian ingin memasang kapasitor bank atau tidak
  • Penting perlunya menggunakan sekring agar jika terjadi kebocoran arus pada elko maka AKI tidak rusak
  • Penting mematikan saklar jika sepeda motor tidak dipakai, agar AKI tidak tekor/drop.

Minggu, 18 Agustus 2024

Cara mengetes motor stepper tanpa driver

PERINGATAN! 
Disclaimer: Kewaspadaan dan Tanggung Jawab Pribadi

Video/Tutorial ini melibatkan penggunaan listrik 220V yang sangat berbahaya. Lakukan hanya jika Anda berpengalaman dalam menangani listrik. Selalu matikan daya dan gunakan alat pelindung diri. Keselamatan adalah yang utama. Kami tidak bertanggung jawab atas risiko cedera atau kerusakan.

Baca Disclaimer sebelum membaca / menonton video.

--------------------------------------------------------------------------------------------------------------------------

Halo Rek! kali ini Ruang Teknik akan mengetes motor stepper tanpa driver. Ok langsung saja cek skemanya.



Bahan:

  • Motor stepper
  • Trafo kecil atau besar (sesuaikan dengan tegangan kerja motor stepper)
  • Elko kisaran 100 hingga 500 uF (disini kita pakai 330uF)
  • Saklar 2 arah
  • Terminal block 2 pin
  • PCB dot matrix

Cara kerja rangkaian:
  • Kalau kalian hanya ingin mengetes, cukup gunakan 2 komponen utama yaitu trafo dan elko. Tapi, kalau kalian ingin hasil yang lebih rapi, bisa dibuat modul dengan menambahkan komponen tambahan lainnya, tapi ini opsional ya.
  • Ini adalah metode yang sangat dasar, konsep ini mirip dengan cara menyalakan motor AC induksi satu fasa menggunakan kapasitor untuk memulai putaran. 
  • Pergeseran Fasa: Pada motor AC satu fasa, kapasitor digunakan untuk menciptakan pergeseran fasa antara arus dalam dua gulungan, sehingga menghasilkan medan magnet yang berputar. Ini yang menyebabkan rotor mulai berputar. Dalam kasus motor stepper, meskipun motor ini dirancang untuk dioperasikan dengan sinyal DC berurutan, penggunaan tegangan AC dan kapasitor dapat menciptakan pergeseran fasa serupa yang membuat rotor motor stepper berputar.
  • Rotasi Medan Magnet: Medan magnet yang dihasilkan oleh arus AC yang melalui gulungan motor, dengan bantuan kapasitor, menciptakan medan magnet yang berubah-ubah, yang pada gilirannya menggerakkan rotor untuk mengikuti perubahan medan tersebut.
  • Namun, kontrol putaran pada motor stepper dengan metode ini tidak akan sebaik dengan driver yang dirancang khusus untuk motor stepper. Tapi, sebagai tes sederhana untuk memeriksa apakah motor berfungsi, ini bisa digunakan.

Kegunaan:
  • Hanya untuk tester saja, mengetahui motor stepper normal atau rusak.
  • Metode ini lebih eksperimental dan tidak memberikan kontrol presisi seperti yang didapatkan dari pengendali motor stepper berbasis mikrokontroler atau driver stepper khusus.

Kamis, 08 Agustus 2024

Membuat charger baterai 1,2 volt otomatis cut off mudah dan praktis

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan membuat charger baterai 1,2 volt otomatis cut off mudah dan praktis. Ok langsung saja cek skemanya.

Bahan:

  • Tempat baterai AA 3 slot
  • Modul charger TP4056
  • Dioda 1N4007
  • Charger 5 Volt 

Cara kerja rangkaian:
  • Semua komponen dirangkai sesuai skema diatas
  • Setelah diukur tegangan dioda sekitar 0.6 volt
  • Jadi total tegangan baterai 1,2 volt dikali 3 = 3,6 volt, ditambah dengan dioda 0.6 volt jadi total tegangannya adalah 4,2 volt 
  • Tegangan 4,2 volt sesuai dengan batas cut off modul TP4056 dengan begini baterai akan aman dari over charge

Kegunaan:
  • Mencharger baterai AA dengan aman karna fitur cut off modul TP4056

Minggu, 14 Juli 2024

Rangkaian charger TP4056 untuk 4 baterai 18650

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan share rangkaian charger TP4056 untuk 4 baterai 18650. Ok langsung saja cek skemanya.

Bahan:

  • Tempat baterai 18650 4 slot
  • Kawat tembaga
  • 4 modul charger TP4056
  • Charger 5 Volt kapasitas 4 Ampere

Cara kerja rangkaian:
  • Semua komponen dirangkai secara paralel sesuai skema diatas
  • Pastikan output setiap modul charger independen tidak tersambung dengan modul charger lainnya
  • Charger 5 Volt akan menyuplaikan arus 4 ampere ketika semua baterai dipasang, karena setiap modul membutuhkan arus maksimal 1 ampere

Kegunaan:
  • Mencharger baterai 18650 secara bersamaan (4 baterai sekaligus) sehingga lebih efisien.

Kamis, 11 Juli 2024

Solusi timah tidak lengket karna ujung solder menghitam

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan memberikan solusi timah yang tidak lengket karna ujung solder menghitam.

Dengan menggunakan proses elektrolisis kita akan mencoba melapisi ujung mata solder agar bisa dipakai kembali, ok langsung saja cek prosesnya.

Bahan:

  • Air secukupnya
  • Garam dapur
  • Wadah plastik
  • Timah
  • Mata solder 
  • Power supply 12 Volt

Cara kerja rangkaian:
  • Larutkan air dan garam hingga bercampur dengan sempurna agar proses elektrolisis lebih sempurna
  • Amplas ujung mata solder agar lapisan logam timah menempel dengan sempurna
  • Hubungkan tegangan positif ke timah dan hubungkan tegangan negatif ke mata solder, kemudian masukan keduanya ke dalam larutan air garam
  • Tunggu proses eletrolisis selama 10 menit
  • Setelah selesai, bersihkan mata solder dengan tisu dan tes dengan mencobanya untuk melelehkan timah
  • Seharusnya sekarang timah akan menempel pada mata solder dan proses selesai.

Kegunaan:
  • Memperbaiki dan melapisi ujung mata solder agar timah bisa menempel kembali
  • Menghemat pengeluaran dengan menggunakan proses elektrolisis dalam keadaan darurat.

Jumat, 28 Juni 2024

Modifikasi jam dinding menggunakan baterai isi ulang 3,7 Volt

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan memodifikasi jam dinding menggunakan baterai isi ulang 3,7 Volt. Ok tanpa panjang lebar silahkan dibaca dan cek skema rangkaiannya dibawah ini.

Bahan:

  • LED Hijau 2 - 2.2 Volt
  • Baterai 3.7 Volt
  • Jam dinding

Cara kerja rangkaian:
  • Semua komponen dirangkai seri sehingga total beban LED + Jam dinding sekitar 3.5 - 3.7 Volt sama dengan tegangan baterai sehingga memungkinkan jam dinding dapat bergerak dan tidak overload tegangannya.

Kegunaan:
  • Eksperimen untuk hobi saja, secara penggunaan tidak direkomendasikan karena lebih boros penggunaannya
  • Tapi tidak menutup kemungkinan bisa awet hingga 1-3 bulan jika kapasitas Ah baterai cukup tinggi

Rabu, 19 Juni 2024

Modifikasi mainan kompor anak dengan musik

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan memodifikasi mainan kompor anak dengan musik. Ok tanpa panjang lebar silahkan dibaca dan cek skema rangkaiannya dibawah ini.



Bahan:

  • Resistor 100 Ohm (2 pcs)
  • Push Button
  • TP4056
  • Baterai 3.7 Volt
  • Led merah (2 pcs)
  • Limit switch
  • Modul musik bekas dari mainan HP

Cara kerja rangkaian:
  • Push button untuk menyalakan musik
  • Limit switch untuk menyalakan LED
  • TP4056 untuk mencharger baterai 3.7 Volt

Kegunaan:
  • Membuat bahagia anak agar mainan kompor bisa menyala dan ada musiknya :)



Minggu, 02 Juni 2024

Membuat power supply tanpa trafo (transformerless)

PERINGATAN! Aktivitas Berbahaya
Disclaimer: Kewaspadaan dan Tanggung Jawab Pribadi

Video/Artikel ini disajikan untuk tujuan edukatif semata. Praktik-praktik elektronik yang ditampilkan mungkin melibatkan komponen listrik yang berpotensi berbahaya. Perlu diingat bahwa aktivitas semacam ini dapat membawa risiko serius, termasuk cedera fisik, kebakaran, atau bahkan kematian.

Penonton/pembaca diingatkan untuk tidak mencoba mereplikasi atau mengikuti praktik yang ditunjukkan dalam video/artikel ini tanpa pengawasan dan bimbingan ahli yang memadai dalam bidang elektronik/listrik. Setiap tindakan yang diambil atas dasar informasi dalam video/artikel ini adalah tanggung jawab pribadi penonton, dan pembuat video/artikel tidak bertanggung jawab atas kerugian atau cedera yang mungkin timbul sebagai hasil dari tindakan tersebut.

Dengan menonton/membaca video/artikel ini, Anda menyetujui bahwa Anda memahami risiko yang terlibat dan bertanggung jawab sepenuhnya atas tindakan Anda sendiri.

Baca Disclaimer sebelum membaca / menonton video.

--------------------------------------------------------------------------------------------------------------------------

Halo Rek! kali ini Ruang Teknik akan mencoba membuat power supply tanpa trafo dengan melihat jalur PCB dari mesin raket nyamuk. Ok tanpa panjang lebar silahkan dibaca dan cek skema rangkaiannya dibawah ini.


Bahan:

  • Mesin raket nyamuk bekas 
  • Resistor 1 Kilo Ohm (2 pcs)
  • Resistor 300 Kilo Ohm
  • Kapasitor AC: 400V 684J
  • Dioda 1N4007 (4 pcs)
  • LED Merah
Cara kerja rangkaian:
  • Transformerless power supplies adalah sirkuit daya yang tidak menggunakan transformator. Yaitu dengan mengubah tegangan AC menjadi tegangan DC tanpa komponen tambahan yang berat dan mahal seperti transformator. Metode umum meliputi penggunaan kapasitor atau resistor sebagai pembagi tegangan. 
  • Dalam rangkaian transformerless melibatkan penggunaan kapasitor sebagai elemen pembagi tegangan. Ketika kapasitor dilewatkan oleh arus AC, ia mulai mengisi muatan listrik. Pada setiap siklus tegangan AC, kapasitor akan mengisi muatan dan kemudian melepaskan muatan tersebut. Namun, karena kapasitor bereaksi terhadap perubahan tegangan dengan lambat (kapasitif), aliran arus yang dapat melewatinya terbatas. Oleh karena itu, kapasitor bertindak sebagai penghalang bagi arus listrik yang lebih besar.
  • Power supply ini cocok untuk aplikasi dengan daya kecil hingga menengah seperti lampu LED dan pengisi daya ponsel, tetapi perlu digunakan dengan hati-hati karena risiko kejutan listrik yang tinggi.
Kegunaan:
  • Beberapa kegunaan sirkuit transformerless termasuk ukurannya yang kecil dan ringan, biaya produksi yang rendah, dan kemampuan untuk digunakan dalam aplikasi portabel seperti pengisi daya ponsel dan lampu LED. Meskipun sederhana dalam desainnya, perlu diperhatikan faktor keamanan seperti isolasi yang memadai dan perlindungan terhadap kejutan listrik.




Kamis, 08 Desember 2022

Kombinasi modul counter (IC 4017) dengan modul infrared (IR receiver TSOP1838)

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan mencoba menggabungkan modul IR receiver (TSOP1838) dengan modul counter (IC 4017). Ok tanpa panjang lebar silahkan dibaca dan cek skema rangkaiannya dibawah ini.

Bahan:

  • Modul IR receiver (TSOP1838) 
  • Modul counter (IC 4017)
  • Resistor 220 ohm
  • LED
  • Power supply 5 volt
  • Remote TV
Cara kerja modul:
  • Modul ini membutuhkan power supply 5 volt
  • Bisa menggunakan berbagai jenis remote TV (rata-rata bisa)
  • Jika modul IR receiver (TSOP1838) menerima sinyal infrared dari remote TV maka output akan mengeluarkan tegangan 5 volt, kemudian output tersebut masuk ke jalur input modul counter (IC 4017) sehingga LED akan menyala. Kondisi ini tetap bertahan hingga kita menekan tombol remote TV sekali lagi sehingga LED padam, begitu seterusnya.
Kegunaan:
  • Untuk rangkaian remote jarak jauh dengan sistem sinyal I/O, bisa menghasilkan remote jarak jauh yg bisa diaplikasikan pada bermacam alat elektronik.
  • Jika dipasang pada kipas angin maka kita bisa menyalakan dan mematikan dengan remote TV hanya menggunakan 1 tombol yang sama (menggunakan tombol dari remote TV)
  • Bisa juga dikombinasi mengunakan Arduino
  • dan lain-lain sesuai kreatifitas anda

Selasa, 22 November 2022

Membuat modul infrared IR Receiver menggunakan TSOP1838

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan membagikan skema untuk membuat modul infrared IR Receiver menggunakan TSOP1838 . Ok tanpa panjang lebar silahkan dibaca dan cek skema rangkaiannya dibawah ini.


Skema modul infrared IR Receiver menggunakan TSOP1838

Skema modul infrared IR Receiver menggunakan TSOP1838

Bahan:

  • TSOP1838
  • Papan PCB berlubang
  • Resistor 1 K
  • Resistor 220
  • Terminal blok 2 pin (2 pcs)
  • Elko 100 uF
  • LED
  • Trannsitor PNP BC558
Cara kerja modul:
  • Modul ini membutuhkan power supply 5 volt
  • LED hanya sebagai indikator power supply
  • Jika TSOP1838 menerima sinyal infrared maka output akan mengeluarkan tegangan 5 volt, sinyal infrared yang dimaksudkan adalah dari remote TV atau sejenisnya atau bisa juga menggunakan LED infrared transmitter.
Kegunaan:
  • Untuk rangkaian remote jarak jauh dengan sistem sinyal I/O, contoh menggunakan remote TV dikombinasi dengan Modul Counter jadi output dari modul Infrared ini masuk ke terminal input pada Modul Counter maka akan bisa menghasilkan remote jarak jauh yg bisa diaplikasikan pada bermacam alat elektronik.
  • Jika dipasang pada kipas angin maka kita bisa menyalakan dan mematikan dengan remote TV hanya menggunakan 1 tombol yang sama (menggunakan tombol dari remote TV)
  • Bisa juga dikombinasi mengunakan transistor sebagai saklar sementara
  • Bisa juga dikombinasi mengunakan Arduino
  • dan lain-lain sesuai kreatifitas anda



Sabtu, 19 November 2022

Membuat modul counter ON dan OFF dengan hanya menggunakan 1 input yang sama dengan IC 4017

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! kali ini Ruang Teknik akan membagikan skema untuk membuat Modul Counter dengan menggunakan IC 4017. Ok tanpa panjang lebar silahkan dibaca dan cek skema rangkaiannya dibawah ini.




Bahan:

  • IC 4017
  • Papan PCB berlubang
  • Resistor 10 K
  • Terminal blok 2 pin (2 pcs)
Cara kerja modul:
  • Modul ini membutuhkan power supply 5 volt
  • Jika terminal input diberi tegangan (5 volt) sesaat maka PIN 3 pada IC4017 mengeluarkan sinyal HIGH
  • Jika terminal input diberi tegangan (5 volt) sesaat sekali lagi maka PIN 3 menjadi LOW dan PIN 2 menjadi HIGH
  • Jika terminal input diberi tegangan (5 volt) sesaat sekali lagi maka PIN 3 menjadi HIGH dan PIN 2 menjadi LOW begitu seterusnya bergantian, sehingga modul ini memberi efek sperti saklar toggle ON OFF pada outputnya hanya saja bekerja mengunakan sinyal digital sebagai pemicunya.
Kegunaan:
  • Untuk rangkaian remote jarak jauh dengan sistem sinyal I/O dengan input yang sama, contoh menggunakan remote TV dikombinasi dengan sensor IR receiver yang dipasang pada terminal input modul ini maka akan bisa menghasilkan remote jarak jauh yg bisa diaplikasikan pada bermacam alat elektronik.
  • Jika dipasang pada kipas angin maka kita bisa menyalakan dan mematikan dengan remote TV hanya menggunakan 1 tombol yang sama (menggunakan tombol dari remote TV)
  • Bisa juga dikombinasi mengunakan input dari sensor suara
  • Bisa juga dikombinasi mengunakan input dari sensor cahaya
  • dan lain-lain sesuai kreatifitas anda


Selasa, 25 Oktober 2022

Rangkaian remote sepeda motor (Kunci kontak, Suara Car lock, Hazard, dan Suara Bep dari buzzer)

Baca Disclaimer sebelum membaca / menonton video.

Halo Rek! Kali ini Ruang Teknik akan sharing skema rangkaian remote sepeda motor buatan sendiri, ide awal sebenarnya simple pingin bisa menyalakan lampu hazard pada sepeda motor dengan remote kontrol tujuannya jika kita parkir malem hari di tempat pasar malem yang kurang penerangan, maka dengan menyalakan hazard akan mempermudah menemukan sepeda motor kita ditempat parkir. Karna sangat bersemangat membuatnya tidak terasa saya tambah beberapa fitur sekalian jadi lebih lengkap. Oke silahkan cek gambar skema dibawah ini dan ikuti langkah dan keterangan yang diberikan.







Disini kita membutuhkan:
  • Modul remote + receiver
  • Arduino nano
  • Resistor 10K 4 pcs
  • Modul relay 4 pcs
  • Buzzer
  • Modul MP3 player (untuk memainkan suara Car Lock)

Rangkai sesuai skema diatas dan ikuti penjelasan dibawah ini:
  • Relay kunci kontak digunakan untuk menyambung jalur listrik kunci kontak jadi kita harus memotong kabel dan menyambungkannya melalui relay
  • Relay Car Lock, disini kita menggunakan modul Mp3 player/DF player jadi kita hanya perlu menyambung sumber 5V pada modul melalui relay
  • Relay Hazard, kita akan mengabungkan kedua jalur lampu Sein menjadi satu kemudian menyambungkannya melalui relay
  • Relay piezo buzzer kita sambungkan melalui relay

  1. Kunci kontak: disini relay digunakan untuk menyambung jalur kelistrikan kunci kontak sepeda motor. Jadi walaupun kunci kontak sudah dinyalakan tetapi jika tombol remote A belum ditekan maka sepeda motor tidak akan bisa distarter. Untuk menyalakan tekan tombol A satu kali untuk mematikan tekan tombol A satu kali. Catatan: Ketika relay menyala maka secara default koding di set untuk menyalakan suara car lock & hazard sekaligus
  2. Suara Car Lock: ketika tombol B ditekan maka suara car lock tidak berbunyi untuk menyalakan silahkan ditekan kembali. Tujuannya kadang ketika menyalakan Tombol A kita tidak mau suara car lock berbunyi jadi bisa dimatikan secara manual.
  3. Hazard: ketika tombol C ditekan maka lampu Hazard tidak menyala untuk menyalakan silahkan ditekan kembali.. Tujuannya kadang ketika menyalakan Tombol A kita tidak mau Hazard menyala jadi bisa dimatikan secara manual.
  4. Suara Bep ini hanyalah sebagai indikator saja (opsional tidak perlu juga tidak apa-apa), jadi ketika Tombol A, B atau C ditekan maka akan piezo buzzer akan berbunyi sehingga kita tahu bahwa remote telah bekerja. Khusus Tombol A suara buzzer baru berbunyi jika kondisi relay off
  5. Tombol D berfungsi untuk menyalakan Suara Car Lock dan Hazard, walaupun tombol A belum ditekan.

Berikut koding arduino, copy paste seluruh coding dan paste ke dalam software Arduino IDE kosongan tanpa void setup dan void loop:


#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <avr/io.h>
#include <avr/interrupt.h>

volatile uint8_t timerOF=0;
#define OVERSAMPLES 10
static volatile uint16_t adcData;
static volatile uint16_t ADCtotal;
static volatile uint8_t adcDataL;
static volatile uint8_t adcDataH;
static volatile uint8_t sample_count;
ISR(TIMER0_OVF_vect){timerOF=1;}
ISR(ADC_vect)
{
    adcDataL = ADCL;
    adcDataH = ADCH;
    adcData = 0;
    adcData = adcData | adcDataH;
    adcData = adcData << 8;
    adcData = adcData | adcDataL;
    ADCtotal = ADCtotal+adcData;
    sample_count ++;
}
int16_t do_math(int16_t A,int16_t B,char Operator)
{
    int32_t result = 0;
    if (Operator == '+'){result = A+B;}
    if (Operator == '-'){result = A-B;}
    if (Operator == '*'){result = A*B;}
    if (Operator == '/'){result = A/B;}
//    if (Operator == '='){result = A = B;}
    int16_t i =  ((result >> 0) & 0xffff);
   return i;
}
uint16_t read_adc(uint8_t channel)
{
    ADMUX = channel;// set channel
    ADMUX |=  (1<<REFS0);// sets ref volts to Vcc
    ADCSRA |= (1<<ADEN); // enable the ADC
    sample_count = 0; ADCtotal = 0;//clear sample count
    ADCSRA |= (1<<ADSC);//start conversion
    //read adcData done in interrupt
    while (sample_count < OVERSAMPLES){asm volatile ("nop"::);}//wait for completion
    ADCSRA &=~ (1<<ADEN); // stop the ADC
    return (ADCtotal/OVERSAMPLES); //mx osamples = 63  othewise will overflow total register with 10 bit adc results
}
int main()
{
//set up ADC
    ADCSRA |= ( (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) );//  sets adc clock prescaler to 128 //checked
    ADCSRA |= (1<<ADIE); // enable ADC conversion complete interrupt
    ADCSRA |= (1<<ADATE);// set to auto trigger (free running by default)
   DDRD |= (1<<5);
   DDRD |= (1<<6);
   DDRD |= (1<<7);
   DDRB |= (1<<0);
   DDRB |= (1<<3);
   DDRB |= (1<<4);
   DDRB |= (1<<5);

   PORTC |= (1<<4);
   PORTC |= (1<<5);
   PORTD |= (1<<2);
   PORTD |= (1<<3);
   PORTD |= (1<<4);

    //set up loop timer:
    TIMSK0 |= (1<<TOIE0);// overflow capture enable
    TCNT0 = 101;// start at this
    TCCR0B |= ((1<<CS10)|(1<<CS12));// timer started with /1024 prescaler
     sei();
    uint8_t cont_S1_NC = 1;
    uint8_t output_A1 = 0;
    uint8_t branch_1_0 = 0;
    uint8_t cont_A1_NO = 0;
    uint8_t branch_2_0 = 0;
    uint8_t cont_A2_NO = 0;
    uint8_t branch_1_2 = 0;
    uint8_t cont_A1_NC = 1;
    uint8_t branch_2_2 = 0;
    uint8_t cont_A3_NC = 1;
    uint8_t output_A2 = 0;
    uint8_t branch_3_0 = 0;
    uint8_t cont_A3_NO = 0;
    uint8_t branch_4_0 = 0;
    uint8_t output_A3 = 0;
    uint8_t output_K1 = 0;
    uint8_t cont_S2_NC = 1;
    uint8_t output_AA1 = 0;
    uint8_t branch_8_0 = 0;
    uint8_t cont_AA1_NO = 0;
    uint8_t branch_9_0 = 0;
    uint8_t cont_AA2_NO = 0;
    uint8_t branch_8_2 = 0;
    uint8_t cont_AA1_NC = 1;
    uint8_t branch_9_2 = 0;
    uint8_t cont_AA3_NC = 1;
    uint8_t output_AA2 = 0;
    uint8_t branch_10_0 = 0;
    uint8_t cont_AA3_NO = 0;
    uint8_t branch_11_0 = 0;
    uint8_t output_AA3 = 0;
    uint8_t output_K2 = 0;
    uint8_t cont_S3_NC = 1;
    uint8_t output_AAA1 = 0;
    uint8_t branch_15_0 = 0;
    uint8_t cont_AAA1_NO = 0;
    uint8_t branch_16_0 = 0;
    uint8_t cont_AAA2_NO = 0;
    uint8_t branch_15_2 = 0;
    uint8_t cont_AAA1_NC = 1;
    uint8_t branch_16_2 = 0;
    uint8_t cont_AAA3_NC = 1;
    uint8_t output_AAA2 = 0;
    uint8_t branch_17_0 = 0;
    uint8_t cont_AAA3_NO = 0;
    uint8_t branch_18_0 = 0;
    uint8_t output_AAA3 = 0;
    uint8_t output_K3 = 0;
    uint8_t branch_21_0 = 0;
    uint8_t cont_S4_NC = 1;
    uint8_t branch_22_0 = 0;
    uint8_t cont_K4_NO = 0;
    uint8_t cont_K5_NC = 1;
    uint8_t output_K4 = 0;

    uint8_t Timer_T1 = 0;
    uint16_t setpoint_Timer_T1 = 300;
    uint16_t reg_Timer_T1 = 0;

    uint8_t prev_rungstate_Timer_T1 = 0;
    uint8_t rungstate_Timer_T1 = 0;

    uint8_t run_Timer_T1 = 0;

    uint8_t output_K5 = 0;

    uint8_t Timer_T2 = 0;
    uint16_t setpoint_Timer_T2 = 300;
    uint16_t reg_Timer_T2 = 0;

    uint8_t prev_rungstate_Timer_T2 = 0;
    uint8_t rungstate_Timer_T2 = 0;

    uint8_t run_Timer_T2 = 0;

    uint8_t output_K6 = 0;
    uint8_t branch_26_0 = 0;
    uint8_t cont_Z1_NO = 0;
    uint8_t branch_27_0 = 0;
    uint8_t cont_Z2_NO = 0;
    uint8_t output_Piezo = 0;
    uint8_t branch_28_0 = 0;
    uint8_t branch_29_0 = 0;
    uint8_t output_Z1 = 0;
    uint8_t output_Z2 = 0;
    uint8_t branch_33_0 = 0;
    uint8_t cont_K1_NO = 0;
    uint8_t cont_K6_NC = 1;
    uint8_t cont_K7_NC = 1;
    uint8_t branch_34_0 = 0;
    uint8_t cont_K2_NC = 1;
    uint8_t output_Alarm = 0;
    uint8_t branch_35_0 = 0;
    uint8_t branch_36_0 = 0;
    uint8_t cont_K3_NC = 1;
    uint8_t cont_K8_NC = 1;
    uint8_t cont_K10_NC = 1;
    uint8_t output_Hazard = 0;
    uint8_t output_Starter = 0;

    uint8_t Timer_T3 = 0;
    uint16_t setpoint_Timer_T3 = 300;
    uint16_t reg_Timer_T3 = 0;

    uint8_t prev_rungstate_Timer_T3 = 0;
    uint8_t rungstate_Timer_T3 = 0;

    uint8_t run_Timer_T3 = 0;

    uint8_t output_K7 = 0;
    uint8_t cont_K9_NC = 1;

    uint8_t Timer_T4 = 0;
    uint16_t setpoint_Timer_T4 = 20;
    uint16_t reg_Timer_T4 = 0;

    uint8_t prev_rungstate_Timer_T4 = 0;
    uint8_t rungstate_Timer_T4 = 0;

    uint8_t run_Timer_T4 = 0;

    uint8_t output_K8 = 0;
    uint8_t cont_K8_NO = 0;

    uint8_t Timer_T5 = 0;
    uint16_t setpoint_Timer_T5 = 20;
    uint16_t reg_Timer_T5 = 0;

    uint8_t prev_rungstate_Timer_T5 = 0;
    uint8_t rungstate_Timer_T5 = 0;

    uint8_t run_Timer_T5 = 0;

    uint8_t output_K9 = 0;
    uint8_t cont_K11_NC = 1;

    uint8_t Timer_T6 = 0;
    uint16_t setpoint_Timer_T6 = 20;
    uint16_t reg_Timer_T6 = 0;

    uint8_t prev_rungstate_Timer_T6 = 0;
    uint8_t rungstate_Timer_T6 = 0;

    uint8_t run_Timer_T6 = 0;

    uint8_t output_K10 = 0;
    uint8_t cont_K10_NO = 0;

    uint8_t Timer_T7 = 0;
    uint16_t setpoint_Timer_T7 = 20;
    uint16_t reg_Timer_T7 = 0;

    uint8_t prev_rungstate_Timer_T7 = 0;
    uint8_t rungstate_Timer_T7 = 0;

    uint8_t run_Timer_T7 = 0;

    uint8_t output_K11 = 0;
    uint8_t W = 1;
    while (1)
    {
        if (timerOF == 1)
        {
           timerOF=0;//reset timer flag
           TCNT0 = 101;// start at this
           //inputs:
           cont_S1_NC = PINC &(1<<4);
             if(output_A1 == 1){
                cont_A1_NO=1;}
             else {
                cont_A1_NO=0;} //link name
             if(output_A2 == 1){
                cont_A2_NO=1;}
             else {
                cont_A2_NO=0;} //link name
             if(output_A1 == 0){
                cont_A1_NC=1;}
             else {
                cont_A1_NC=0;} //link name
             if(output_A3 == 0){
                cont_A3_NC=1;}
             else {
                cont_A3_NC=0;} //link name
             if(output_A1 == 1){
                cont_A1_NO=1;}
             else {
                cont_A1_NO=0;} //link name
             if(output_A3 == 1){
                cont_A3_NO=1;}
             else {
                cont_A3_NO=0;} //link name
             if(output_A1 == 0){
                cont_A1_NC=1;}
             else {
                cont_A1_NC=0;} //link name
             if(output_A2 == 1){
                cont_A2_NO=1;}
             else {
                cont_A2_NO=0;} //link name
             if(output_A2 == 1){
                cont_A2_NO=1;}
             else {
                cont_A2_NO=0;} //link name
           cont_S2_NC = PINC &(1<<5);
             if(output_AA1 == 1){
                cont_AA1_NO=1;}
             else {
                cont_AA1_NO=0;} //link name
             if(output_AA2 == 1){
                cont_AA2_NO=1;}
             else {
                cont_AA2_NO=0;} //link name
             if(output_AA1 == 0){
                cont_AA1_NC=1;}
             else {
                cont_AA1_NC=0;} //link name
             if(output_AA3 == 0){
                cont_AA3_NC=1;}
             else {
                cont_AA3_NC=0;} //link name
             if(output_AA1 == 1){
                cont_AA1_NO=1;}
             else {
                cont_AA1_NO=0;} //link name
             if(output_AA3 == 1){
                cont_AA3_NO=1;}
             else {
                cont_AA3_NO=0;} //link name
             if(output_AA1 == 0){
                cont_AA1_NC=1;}
             else {
                cont_AA1_NC=0;} //link name
             if(output_AA2 == 1){
                cont_AA2_NO=1;}
             else {
                cont_AA2_NO=0;} //link name
             if(output_AA2 == 1){
                cont_AA2_NO=1;}
             else {
                cont_AA2_NO=0;} //link name
           cont_S3_NC = PIND &(1<<2);
             if(output_AAA1 == 1){
                cont_AAA1_NO=1;}
             else {
                cont_AAA1_NO=0;} //link name
             if(output_AAA2 == 1){
                cont_AAA2_NO=1;}
             else {
                cont_AAA2_NO=0;} //link name
             if(output_AAA1 == 0){
                cont_AAA1_NC=1;}
             else {
                cont_AAA1_NC=0;} //link name
             if(output_AAA3 == 0){
                cont_AAA3_NC=1;}
             else {
                cont_AAA3_NC=0;} //link name
             if(output_AAA1 == 1){
                cont_AAA1_NO=1;}
             else {
                cont_AAA1_NO=0;} //link name
             if(output_AAA3 == 1){
                cont_AAA3_NO=1;}
             else {
                cont_AAA3_NO=0;} //link name
             if(output_AAA1 == 0){
                cont_AAA1_NC=1;}
             else {
                cont_AAA1_NC=0;} //link name
             if(output_AAA2 == 1){
                cont_AAA2_NO=1;}
             else {
                cont_AAA2_NO=0;} //link name
             if(output_AAA2 == 1){
                cont_AAA2_NO=1;}
             else {
                cont_AAA2_NO=0;} //link name
           cont_S4_NC = PIND &(1<<3);
             if(output_K4 == 1){
                cont_K4_NO=1;}
             else {
                cont_K4_NO=0;} //link name
             if(output_K5 == 0){
                cont_K5_NC=1;}
             else {
                cont_K5_NC=0;} //link name
             if(output_K4 == 1){
                cont_K4_NO=1;}
             else {
                cont_K4_NO=0;} //link name
             if(output_K4 == 1){
                cont_K4_NO=1;}
             else {
                cont_K4_NO=0;} //link name
             if(output_K4 == 1){
                cont_K4_NO=1;}
             else {
                cont_K4_NO=0;} //link name
             if(output_K4 == 1){
                cont_K4_NO=1;}
             else {
                cont_K4_NO=0;} //link name
             if(output_Z1 == 1){
                cont_Z1_NO=1;}
             else {
                cont_Z1_NO=0;} //link name
             if(output_Z2 == 1){
                cont_Z2_NO=1;}
             else {
                cont_Z2_NO=0;} //link name
             if(output_A3 == 1){
                cont_A3_NO=1;}
             else {
                cont_A3_NO=0;} //link name
             if(output_K1 == 1){
                cont_K1_NO=1;}
             else {
                cont_K1_NO=0;} //link name
             if(output_K6 == 0){
                cont_K6_NC=1;}
             else {
                cont_K6_NC=0;} //link name
             if(output_K7 == 0){
                cont_K7_NC=1;}
             else {
                cont_K7_NC=0;} //link name
             if(output_K4 == 1){
                cont_K4_NO=1;}
             else {
                cont_K4_NO=0;} //link name
             if(output_K6 == 0){
                cont_K6_NC=1;}
             else {
                cont_K6_NC=0;} //link name
             if(output_K2 == 0){
                cont_K2_NC=1;}
             else {
                cont_K2_NC=0;} //link name
             if(output_K1 == 1){
                cont_K1_NO=1;}
             else {
                cont_K1_NO=0;} //link name
             if(output_K7 == 0){
                cont_K7_NC=1;}
             else {
                cont_K7_NC=0;} //link name
             if(output_K4 == 1){
                cont_K4_NO=1;}
             else {
                cont_K4_NO=0;} //link name
             if(output_K3 == 0){
                cont_K3_NC=1;}
             else {
                cont_K3_NC=0;} //link name
             if(output_K8 == 0){
                cont_K8_NC=1;}
             else {
                cont_K8_NC=0;} //link name
             if(output_K10 == 0){
                cont_K10_NC=1;}
             else {
                cont_K10_NC=0;} //link name
             if(output_K1 == 1){
                cont_K1_NO=1;}
             else {
                cont_K1_NO=0;} //link name
             if(output_K1 == 1){
                cont_K1_NO=1;}
             else {
                cont_K1_NO=0;} //link name
             if(output_K1 == 1){
                cont_K1_NO=1;}
             else {
                cont_K1_NO=0;} //link name
             if(output_K1 == 1){
                cont_K1_NO=1;}
             else {
                cont_K1_NO=0;} //link name
             if(output_K1 == 1){
                cont_K1_NO=1;}
             else {
                cont_K1_NO=0;} //link name
             if(output_K7 == 0){
                cont_K7_NC=1;}
             else {
                cont_K7_NC=0;} //link name
             if(output_K9 == 0){
                cont_K9_NC=1;}
             else {
                cont_K9_NC=0;} //link name
             if(output_K1 == 1){
                cont_K1_NO=1;}
             else {
                cont_K1_NO=0;} //link name
             if(output_K7 == 0){
                cont_K7_NC=1;}
             else {
                cont_K7_NC=0;} //link name
             if(output_K9 == 0){
                cont_K9_NC=1;}
             else {
                cont_K9_NC=0;} //link name
             if(output_K8 == 1){
                cont_K8_NO=1;}
             else {
                cont_K8_NO=0;} //link name
             if(output_K8 == 1){
                cont_K8_NO=1;}
             else {
                cont_K8_NO=0;} //link name
             if(output_K4 == 1){
                cont_K4_NO=1;}
             else {
                cont_K4_NO=0;} //link name
             if(output_K11 == 0){
                cont_K11_NC=1;}
             else {
                cont_K11_NC=0;} //link name
             if(output_K4 == 1){
                cont_K4_NO=1;}
             else {
                cont_K4_NO=0;} //link name
             if(output_K11 == 0){
                cont_K11_NC=1;}
             else {
                cont_K11_NC=0;} //link name
             if(output_K10 == 1){
                cont_K10_NO=1;}
             else {
                cont_K10_NO=0;} //link name
             if(output_K10 == 1){
                cont_K10_NO=1;}
             else {
                cont_K10_NO=0;} //link name

            //Start of Ladder:
            //rung at 0
             W = 1;
             if(cont_S1_NC == 0){W = 0;}
              output_A1 = W;
            //end rung

            //rung at 1
             W = 1;
             branch_1_0 = 1;
             if(cont_A1_NO == 0){branch_1_0 = 0;}
             branch_2_0 = 1;
             if(cont_A2_NO == 0){branch_2_0 = 0;}
             if( (branch_2_0 == 0) && (branch_1_0 == 0 )) {W = 0;} //node_[1, 0]
             if( (branch_2_0 == 2) || (branch_1_0 == 2 )) {W = 1;} //node_[1, 0] if is latching element
             branch_1_2 = 1;
             if(cont_A1_NC == 0){branch_1_2 = 0;}
             branch_2_2 = 1;
             if(cont_A3_NC == 0){branch_2_2 = 0;}
             if( (branch_2_2 == 0) && (branch_1_2 == 0 )) {W = 0;} //node_[1, 2]
             if( (branch_2_2 == 2) || (branch_1_2 == 2 )) {W = 1;} //node_[1, 2] if is latching element
              output_A2 = W;
            //end rung

            //rung at 3
             W = 1;
             branch_3_0 = 1;
             if(cont_A1_NO == 0){branch_3_0 = 0;}
             if(cont_A3_NO == 0){branch_3_0 = 0;}
             branch_4_0 = 1;
             if(cont_A1_NC == 0){branch_4_0 = 0;}
             if(cont_A2_NO == 0){branch_4_0 = 0;}
             if( (branch_4_0 == 0) && (branch_3_0 == 0 )) {W = 0;} //node_[3, 2]
             if( (branch_4_0 == 2) || (branch_3_0 == 2 )) {W = 1;} //node_[3, 2] if is latching element
              output_A3 = W;
            //end rung

            //rung at 5
             W = 1;
             if(cont_A2_NO == 0){W = 0;}
              output_K1 = W;
            //end rung

            //rung at 7
             W = 1;
             if(cont_S2_NC == 0){W = 0;}
              output_AA1 = W;
            //end rung

            //rung at 8
             W = 1;
             branch_8_0 = 1;
             if(cont_AA1_NO == 0){branch_8_0 = 0;}
             branch_9_0 = 1;
             if(cont_AA2_NO == 0){branch_9_0 = 0;}
             if( (branch_9_0 == 0) && (branch_8_0 == 0 )) {W = 0;} //node_[8, 0]
             if( (branch_9_0 == 2) || (branch_8_0 == 2 )) {W = 1;} //node_[8, 0] if is latching element
             branch_8_2 = 1;
             if(cont_AA1_NC == 0){branch_8_2 = 0;}
             branch_9_2 = 1;
             if(cont_AA3_NC == 0){branch_9_2 = 0;}
             if( (branch_9_2 == 0) && (branch_8_2 == 0 )) {W = 0;} //node_[8, 2]
             if( (branch_9_2 == 2) || (branch_8_2 == 2 )) {W = 1;} //node_[8, 2] if is latching element
              output_AA2 = W;
            //end rung

            //rung at 10
             W = 1;
             branch_10_0 = 1;
             if(cont_AA1_NO == 0){branch_10_0 = 0;}
             if(cont_AA3_NO == 0){branch_10_0 = 0;}
             branch_11_0 = 1;
             if(cont_AA1_NC == 0){branch_11_0 = 0;}
             if(cont_AA2_NO == 0){branch_11_0 = 0;}
             if( (branch_11_0 == 0) && (branch_10_0 == 0 )) {W = 0;} //node_[10, 2]
             if( (branch_11_0 == 2) || (branch_10_0 == 2 )) {W = 1;} //node_[10, 2] if is latching element
              output_AA3 = W;
            //end rung

            //rung at 12
             W = 1;
             if(cont_AA2_NO == 0){W = 0;}
              output_K2 = W;
            //end rung

            //rung at 14
             W = 1;
             if(cont_S3_NC == 0){W = 0;}
              output_AAA1 = W;
            //end rung

            //rung at 15
             W = 1;
             branch_15_0 = 1;
             if(cont_AAA1_NO == 0){branch_15_0 = 0;}
             branch_16_0 = 1;
             if(cont_AAA2_NO == 0){branch_16_0 = 0;}
             if( (branch_16_0 == 0) && (branch_15_0 == 0 )) {W = 0;} //node_[15, 0]
             if( (branch_16_0 == 2) || (branch_15_0 == 2 )) {W = 1;} //node_[15, 0] if is latching element
             branch_15_2 = 1;
             if(cont_AAA1_NC == 0){branch_15_2 = 0;}
             branch_16_2 = 1;
             if(cont_AAA3_NC == 0){branch_16_2 = 0;}
             if( (branch_16_2 == 0) && (branch_15_2 == 0 )) {W = 0;} //node_[15, 2]
             if( (branch_16_2 == 2) || (branch_15_2 == 2 )) {W = 1;} //node_[15, 2] if is latching element
              output_AAA2 = W;
            //end rung

            //rung at 17
             W = 1;
             branch_17_0 = 1;
             if(cont_AAA1_NO == 0){branch_17_0 = 0;}
             if(cont_AAA3_NO == 0){branch_17_0 = 0;}
             branch_18_0 = 1;
             if(cont_AAA1_NC == 0){branch_18_0 = 0;}
             if(cont_AAA2_NO == 0){branch_18_0 = 0;}
             if( (branch_18_0 == 0) && (branch_17_0 == 0 )) {W = 0;} //node_[17, 2]
             if( (branch_18_0 == 2) || (branch_17_0 == 2 )) {W = 1;} //node_[17, 2] if is latching element
              output_AAA3 = W;
            //end rung

            //rung at 19
             W = 1;
             if(cont_AAA2_NO == 0){W = 0;}
              output_K3 = W;
            //end rung

            //rung at 21
             W = 1;
             branch_21_0 = 1;
             if(cont_S4_NC == 0){branch_21_0 = 0;}
             branch_22_0 = 1;
             if(cont_K4_NO == 0){branch_22_0 = 0;}
             if( (branch_22_0 == 0) && (branch_21_0 == 0 )) {W = 0;} //node_[21, 0]
             if( (branch_22_0 == 2) || (branch_21_0 == 2 )) {W = 1;} //node_[21, 0] if is latching element
             if(cont_K5_NC == 0){W = 0;}
              output_K4 = W;
            //end rung

            //StateUser
            //connected to rung at 23
             W = 1;
             if(cont_K4_NO == 0){W = 0;}
             rungstate_Timer_T1 = W;
             if((prev_rungstate_Timer_T1 == 0) && (rungstate_Timer_T1 == 1)){
                run_Timer_T1=1;}
             if(run_Timer_T1 == 1){
                reg_Timer_T1++;
                if (reg_Timer_T1 == 65535) {reg_Timer_T1--;}//avoid overrun
                if (setpoint_Timer_T1 <= reg_Timer_T1) {Timer_T1=1;}
             }
             if((prev_rungstate_Timer_T1 == 1) && (rungstate_Timer_T1 == 0)){
                reg_Timer_T1=0; Timer_T1=0; run_Timer_T1=0;} //reset
             prev_rungstate_Timer_T1 = rungstate_Timer_T1;
            //end rung

            //rung at 23
             W = 1;
             if(cont_K4_NO == 0){W = 0;}
             if(Timer_T1 == 0){W = 0;}
              output_K5 = W;
            //end rung

            //StateUser
            //connected to rung at 24
             W = 1;
             if(cont_K4_NO == 0){W = 0;}
             rungstate_Timer_T2 = W;
             if((prev_rungstate_Timer_T2 == 0) && (rungstate_Timer_T2 == 1)){
                run_Timer_T2=1;}
             if(run_Timer_T2 == 1){
                reg_Timer_T2++;
                if (reg_Timer_T2 == 65535) {reg_Timer_T2--;}//avoid overrun
                if (setpoint_Timer_T2 <= reg_Timer_T2) {Timer_T2=1;}
             }
             if((prev_rungstate_Timer_T2 == 1) && (rungstate_Timer_T2 == 0)){
                reg_Timer_T2=0; Timer_T2=0; run_Timer_T2=0;} //reset
             prev_rungstate_Timer_T2 = rungstate_Timer_T2;
            //end rung

            //rung at 24
             W = 1;
             if(cont_K4_NO == 0){W = 0;}
             if(Timer_T2 == 0){W = 0;}
              output_K6 = W;
            //end rung

            //rung at 26
             W = 1;
             branch_26_0 = 1;
             if(cont_Z1_NO == 0){branch_26_0 = 0;}
             branch_27_0 = 1;
             if(cont_Z2_NO == 0){branch_27_0 = 0;}
             if( (branch_27_0 == 0) && (branch_26_0 == 0 )) {W = 0;} //node_[26, 0]
             if( (branch_27_0 == 2) || (branch_26_0 == 2 )) {W = 1;} //node_[26, 0] if is latching element
              output_Piezo = W;
            //end rung

            //rung at 28
             W = 1;
             branch_28_0 = 1;
             if(cont_S2_NC == 0){branch_28_0 = 0;}
             branch_29_0 = 1;
             if(cont_S3_NC == 0){branch_29_0 = 0;}
             if( (branch_29_0 == 0) && (branch_28_0 == 0 )) {W = 0;} //node_[28, 0]
             if( (branch_29_0 == 2) || (branch_28_0 == 2 )) {W = 1;} //node_[28, 0] if is latching element
              output_Z1 = W;
            //end rung

            //rung at 30
             W = 1;
             if(cont_A3_NO == 0){W = 0;}
             if(cont_S1_NC == 0){W = 0;}
              output_Z2 = W;
            //end rung

            //rung at 33
             W = 1;
             branch_33_0 = 1;
             if(cont_K1_NO == 0){branch_33_0 = 0;}
             if(cont_K6_NC == 0){branch_33_0 = 0;}
             if(cont_K7_NC == 0){branch_33_0 = 0;}
             branch_34_0 = 1;
             if(cont_K4_NO == 0){branch_34_0 = 0;}
             if(cont_K6_NC == 0){branch_34_0 = 0;}
             if( (branch_34_0 == 0) && (branch_33_0 == 0 )) {W = 0;} //node_[33, 2]
             if( (branch_34_0 == 2) || (branch_33_0 == 2 )) {W = 1;} //node_[33, 2] if is latching element
             if(cont_K2_NC == 0){W = 0;}
              output_Alarm = W;
            //end rung

            //rung at 35
             W = 1;
             branch_35_0 = 1;
             if(cont_K1_NO == 0){branch_35_0 = 0;}
             if(cont_K7_NC == 0){branch_35_0 = 0;}
             branch_36_0 = 1;
             if(cont_K4_NO == 0){branch_36_0 = 0;}
             if( (branch_36_0 == 0) && (branch_35_0 == 0 )) {W = 0;} //node_[35, 1]
             if( (branch_36_0 == 2) || (branch_35_0 == 2 )) {W = 1;} //node_[35, 1] if is latching element
             if(cont_K3_NC == 0){W = 0;}
             if(cont_K8_NC == 0){W = 0;}
             if(cont_K10_NC == 0){W = 0;}
              output_Hazard = W;
            //end rung

            //rung at 37
             W = 1;
             if(cont_K1_NO == 0){W = 0;}
             if(cont_K1_NO == 0){W = 0;}
              output_Starter = W;
            //end rung

            //StateUser
            //connected to rung at 38
             W = 1;
             if(cont_K1_NO == 0){W = 0;}
             rungstate_Timer_T3 = W;
             if((prev_rungstate_Timer_T3 == 0) && (rungstate_Timer_T3 == 1)){
                run_Timer_T3=1;}
             if(run_Timer_T3 == 1){
                reg_Timer_T3++;
                if (reg_Timer_T3 == 65535) {reg_Timer_T3--;}//avoid overrun
                if (setpoint_Timer_T3 <= reg_Timer_T3) {Timer_T3=1;}
             }
             if((prev_rungstate_Timer_T3 == 1) && (rungstate_Timer_T3 == 0)){
                reg_Timer_T3=0; Timer_T3=0; run_Timer_T3=0;} //reset
             prev_rungstate_Timer_T3 = rungstate_Timer_T3;
            //end rung

            //rung at 38
             W = 1;
             if(cont_K1_NO == 0){W = 0;}
             if(Timer_T3 == 0){W = 0;}
              output_K7 = W;
            //end rung

            //StateUser
            //connected to rung at 40
             W = 1;
             if(cont_K1_NO == 0){W = 0;}
             if(cont_K7_NC == 0){W = 0;}
             if(cont_K9_NC == 0){W = 0;}
             rungstate_Timer_T4 = W;
             if((prev_rungstate_Timer_T4 == 0) && (rungstate_Timer_T4 == 1)){
                run_Timer_T4=1;}
             if(run_Timer_T4 == 1){
                reg_Timer_T4++;
                if (reg_Timer_T4 == 65535) {reg_Timer_T4--;}//avoid overrun
                if (setpoint_Timer_T4 <= reg_Timer_T4) {Timer_T4=1;}
             }
             if((prev_rungstate_Timer_T4 == 1) && (rungstate_Timer_T4 == 0)){
                reg_Timer_T4=0; Timer_T4=0; run_Timer_T4=0;} //reset
             prev_rungstate_Timer_T4 = rungstate_Timer_T4;
            //end rung

            //rung at 40
             W = 1;
             if(cont_K1_NO == 0){W = 0;}
             if(cont_K7_NC == 0){W = 0;}
             if(cont_K9_NC == 0){W = 0;}
             if(Timer_T4 == 0){W = 0;}
              output_K8 = W;
            //end rung

            //StateUser
            //connected to rung at 42
             W = 1;
             if(cont_K8_NO == 0){W = 0;}
             rungstate_Timer_T5 = W;
             if((prev_rungstate_Timer_T5 == 0) && (rungstate_Timer_T5 == 1)){
                run_Timer_T5=1;}
             if(run_Timer_T5 == 1){
                reg_Timer_T5++;
                if (reg_Timer_T5 == 65535) {reg_Timer_T5--;}//avoid overrun
                if (setpoint_Timer_T5 <= reg_Timer_T5) {Timer_T5=1;}
             }
             if((prev_rungstate_Timer_T5 == 1) && (rungstate_Timer_T5 == 0)){
                reg_Timer_T5=0; Timer_T5=0; run_Timer_T5=0;} //reset
             prev_rungstate_Timer_T5 = rungstate_Timer_T5;
            //end rung

            //rung at 42
             W = 1;
             if(cont_K8_NO == 0){W = 0;}
             if(Timer_T5 == 0){W = 0;}
              output_K9 = W;
            //end rung

            //StateUser
            //connected to rung at 44
             W = 1;
             if(cont_K4_NO == 0){W = 0;}
             if(cont_K11_NC == 0){W = 0;}
             rungstate_Timer_T6 = W;
             if((prev_rungstate_Timer_T6 == 0) && (rungstate_Timer_T6 == 1)){
                run_Timer_T6=1;}
             if(run_Timer_T6 == 1){
                reg_Timer_T6++;
                if (reg_Timer_T6 == 65535) {reg_Timer_T6--;}//avoid overrun
                if (setpoint_Timer_T6 <= reg_Timer_T6) {Timer_T6=1;}
             }
             if((prev_rungstate_Timer_T6 == 1) && (rungstate_Timer_T6 == 0)){
                reg_Timer_T6=0; Timer_T6=0; run_Timer_T6=0;} //reset
             prev_rungstate_Timer_T6 = rungstate_Timer_T6;
            //end rung

            //rung at 44
             W = 1;
             if(cont_K4_NO == 0){W = 0;}
             if(cont_K11_NC == 0){W = 0;}
             if(Timer_T6 == 0){W = 0;}
              output_K10 = W;
            //end rung

            //StateUser
            //connected to rung at 45
             W = 1;
             if(cont_K10_NO == 0){W = 0;}
             rungstate_Timer_T7 = W;
             if((prev_rungstate_Timer_T7 == 0) && (rungstate_Timer_T7 == 1)){
                run_Timer_T7=1;}
             if(run_Timer_T7 == 1){
                reg_Timer_T7++;
                if (reg_Timer_T7 == 65535) {reg_Timer_T7--;}//avoid overrun
                if (setpoint_Timer_T7 <= reg_Timer_T7) {Timer_T7=1;}
             }
             if((prev_rungstate_Timer_T7 == 1) && (rungstate_Timer_T7 == 0)){
                reg_Timer_T7=0; Timer_T7=0; run_Timer_T7=0;} //reset
             prev_rungstate_Timer_T7 = rungstate_Timer_T7;
            //end rung

            //rung at 45
             W = 1;
             if(cont_K10_NO == 0){W = 0;}
             if(Timer_T7 == 0){W = 0;}
              output_K11 = W;
            //end rung

           //outputs:
         if(output_Piezo == 0){PORTB &=~ (1<<0);}
         else {PORTB |= (1<<0);}
         if(output_Alarm == 0){PORTD &=~ (1<<6);}
         else {PORTD |= (1<<6);}
         if(output_Hazard == 0){PORTD &=~ (1<<7);}
         else {PORTD |= (1<<7);}
         if(output_Starter == 0){PORTD &=~ (1<<5);}
         else {PORTD |= (1<<5);}

       }
   }
}