Modul 4:Demo Project

Deteksi Logam dan Non Logam




1. Tujuan Perancangan [Kembali]
    1. Untuk mengetahui pemakaian  mikrokontroler pada prototype yang dibuat 
    2. Untuk menghasilkan alat yang dapat bekerja secara otomatis berbasis  mikrokontroler


2. Komponen [Kembali]
    1. Raspbery Pi Pico



   
2.Proximity Sensor


3.Load Cell


4.IR sensor



5.Volatge Regulator

6.Motor Servo 180

7.Motor Servo 360

8.Modul HX711


9.PCB


10. Breadboard


    11. Kabel USB


    12. kabel jumper

    
    13.LCD

14,Resistor


15.





16.Motor DC



    17. motor driver



    18. baterai

19.Triplek



   20.Karton 


    21.Double Tape



22.Belt (Conveyor)
23.Paku
24.Ring


25.

26.Lem Tembak








3. Dasar Teori [Kembali]


1.     PWM (Pulse Width Modulation)

            PWM (Pulse Width Modulation) adalah salah satu teknik modulasi dengan mengubah lebar pulsa (duty cylce) dengan nilai amplitudo dan frekuensi yang tetap. Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi. Duty Cycle adalah perbandingan antara waktu ON (lebar pulsa High) dengan perioda. Duty Cycle biasanya dinyatakan dalam bentuk persen (%).




·       Duty Cycle = tON / ttotal

·       tON = Waktu ON atau Waktu dimana tegangan keluaran berada pada posisi tinggi (high atau 1)

·       tOFF = Waktu OFF atau Waktu dimana tegangan keluaran berada pada posisi rendah (low atau 0)

·       ttotal = Waktu satu siklus atau penjumlahan antara tON dengan tOFF atau disebut juga dengan “periode satu gelombang”

            

2.     ADC (Analog to Digital Converter)

          ADC atau Analog to Digital Converter merupakan salah satu fitur penting dalam sistem mikrokontroler yang berfungsi sebagai penghubung antara sinyal analog dan pemrosesan digital. Fitur ini memungkinkan Raspberry Pi Pico untuk membaca sinyal analog, kemudian mengubahnya menjadi data digital agar dapat diproses oleh sistem.

Fungsi utama ADC adalah mengubah tegangan analog menjadi nilai digital, sehingga data dari sensor seperti potensiometer, sensor suhu, atau cahaya bisa digunakan oleh mikrokontroler.

3.     Mikrokontroler

            Raspberry Pi Pico adalah board mikrokontroler berbasis chip RP2040 buatan Raspberry Pi Foundation (lihat datasheet RP2040). Board ini memiliki 26 pin input/output digital multifungsi, di mana beberapa pin dapat digunakan sebagai PWM output, serta 3 kanal input analog (ADC), osilator internal 12 MHz yang dikalikan dengan PLL untuk mencapai frekuensi kerja hingga 133 MHz, koneksi Micro-USB, pin VSYS untuk catu daya, header SWD (Serial Wire Debug) untuk pemrograman dan debugging, serta tombol BOOTSEL yang berfungsi untuk memasukkan board ke mode pemrograman.

Untuk menggunakan mikrokontroler ini, cukup hubungkan Raspberry Pi Pico ke komputer menggunakan kabel Micro-USB. Setelah itu, board dapat diprogram menggunakan MicroPython atau C/C++ SDK. Pico juga dapat dijalankan menggunakan catu daya eksternal melalui pin VSYS yang mendukung tegangan 1.8V hingga 5.5V, misalnya dari adaptor DC atau baterai. Raspberry Pi Pico akan otomatis menjalankan program yang telah diunggah saat dinyalakan.



           


 Setiap 14 pin digital pada arduino uno dapat digunakan sebagai input dan output, menggunakan fungsi pinMode(), digitalWrite(), dan digitalRead(). Fungsi – fungsi tersebut beroperasi di tegangan 5 volt. Setiap pin dapat memberikan atau menerima suatu arus maksimum 40 mA dan mempunyai sebuah resistor pull-up (terputus secara default) 20-50 kOhm.

 

4.     Komunikasi

4.1.  Universal Asynchronous Receiver Transmitter (UART)

            UART (Universal Asynchronous Receiver-Transmitter) adalah bagian perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat periperal.






Cara Kerja Komunikasi UART :

  1. UART (Universal Asynchronous Receiver/Transmitter) adalah metode komunikasi serial asinkron yang mengirim data bit demi bit tanpa sinyal clock bersama.

  2. Komunikasi terjadi antara dua perangkat dengan menghubungkan:

    • TX (Transmit) satu perangkat ke RX (Receive) perangkat lain.

  3. Data dikirim dalam frame yang terdiri dari:

    • Start bit (LOW) → menandai awal data

    • Data bit (5–8 bit, biasanya 8 bit)

    • (Optional) Parity bit → deteksi error ringan

    • Stop bit (HIGH) → menandai akhir data

  4. Kedua perangkat harus menggunakan baud rate yang sama agar bit-bit terbaca dengan benar.

  5. Penerima akan membaca data sesuai waktu bit berdasarkan baud rate dan menyusun ulang byte aslinya.

   

                                  




4. Listing Program [Kembali]

from machine import Pin, PWM, UART, I2C
from time import sleep
from hx711 import HX711
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
import time

# ========== Bagian UART dan Servo Deteksi Logam ==========
# Inisialisasi UART0 (RX di GP1)
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

# Inisialisasi Servo 180° pada pin GP16
servo_logam = PWM(Pin(16))
servo_logam.freq(50)  # Frekuensi standar servo

# Fungsi untuk mengatur sudut servo
def set_servo_angle(angle):
    min_duty = 1638   # 0 derajat (~2.5% duty)
    max_duty = 8192   # 180 derajat (~12.5% duty)
    duty = int(min_duty + (angle / 180) * (max_duty - min_duty))
    servo_logam.duty_u16(duty)

# Fungsi untuk memutar servo secara perlahan
def move_servo_slowly(target_angle):
    global current_angle
    step = 1 if target_angle > current_angle else -1
    for angle in range(current_angle, target_angle + step, step):
        set_servo_angle(angle)
        time.sleep(0.01)
    current_angle = target_angle

# Status awal servo logam
current_angle = 0
set_servo_angle(current_angle)

# ========== Bagian Timbangan dan LCD ==========
# Inisialisasi HX711
HX711_dout = Pin(5, Pin.IN, pull=Pin.PULL_DOWN)
HX711_sck = Pin(6, Pin.OUT)
LoadCell = HX711(HX711_dout, HX711_sck)

print("Memulai koneksi ke HX711...")
LoadCell.set_scale(1.0)
LoadCell.tare()
sleep(2)

# Inisialisasi LCD I2C (SDA = GP2, SCL = GP3)
i2c = I2C(1, scl=Pin(3), sda=Pin(2), freq=400000)
lcd = I2cLcd(i2c, 0x27, 2, 16)

lcd.clear()
lcd.putstr("Timbangan Aktif")
sleep(2)
lcd.clear()

# ========== Loop Utama ==========
try:
    while True:
        # === Bagian UART dan Servo Deteksi Logam ===
        if uart.any():
            data = uart.read(1)
            if data == b'1':  # Logam terdeteksi
                if current_angle != 180:
                    print("Logam terdeteksi - Menunggu 2 detik...")
                    time.sleep(0.12)
                    print("Servo ke 180°")
                    move_servo_slowly(180)
                    print("Kembali ke posisi awal (0°)")
                    time.sleep(0)
                    move_servo_slowly(0)

        # === Bagian Timbangan (Tanpa Servo 360°) ===
        LoadCell.power_up()
        weight = LoadCell.get_units(1)

        if weight < 0:
            weight = 0

        print("Berat:", weight, "gram")
        lcd.clear()
        lcd.putstr("Berat: {:.2f} g".format(weight))

        sleep(2)
        time.sleep(0.1)  # Delay untuk UART

except KeyboardInterrupt:
    print("⛔ Program dihentikan")
    lcd.clear()
    lcd.putstr("Program Stop")


5. Flowchart [Kembali]









6. Rangkaian Simulasi [Kembali]



7. Vidio [Kembali]

8. Analisis [Kembali]

   Rangkaian ini merupakan sistem sortir otomatis berbasis dua Raspberry Pi Pico yang digunakan untuk mendeteksi dan memisahkan benda logam dan non-logam di atas konveyor. Dua buah sensor PIR digunakan, di mana sensor PIR pertama berperan sebagai sensor IR untuk mendeteksi keberadaan benda di atas konveyor, dan sensor PIR kedua berperan sebagai sensor metal (proximity) untuk mendeteksi apakah benda tersebut mengandung logam.

Saat benda terdeteksi oleh sensor IR, Raspberry Pi Pico (sebagai slave) membaca data dari sensor metal. Jika benda adalah logam, motor servo akan aktif untuk menyortir benda tersebut ke jalur logam, sedangkan jika bukan logam, benda akan terus berjalan di jalur utama. Pico slave juga mengirimkan data status benda ke Pico master melalui komunikasi UART. Pico master kemudian menampilkan informasi tersebut pada LCD 16x2 dan mengontrol pergerakan motor konveyor menggunakan driver motor L298N. Sistem ini juga dilengkapi dengan modul load cell untuk menimbang berat benda sebagai fitur tambahan.

9. Kesimpulan [Kembali]
    SProyek ini berhasil merancang dan mengimplementasikan sistem sortir otomatis berbasis Raspberry Pi Pico untuk mendeteksi dan memisahkan benda logam dan non-logam secara efisien. Dengan memanfaatkan sensor IR sebagai pendeteksi keberadaan benda dan sensor proximity sebagai pendeteksi logam, sistem mampu mengambil keputusan secara otomatis dengan bantuan dua Raspberry Pi Pico yang saling berkomunikasi melalui UART. Informasi status ditampilkan pada LCD, dan pengendalian mekanik dilakukan oleh motor servo serta driver motor L298N. Fitur tambahan seperti load cell digunakan untuk menimbang berat benda sebagai data pendukung. Sistem ini membuktikan bahwa mikrokontroler sederhana seperti Raspberry Pi Pico mampu digunakan dalam aplikasi otomasi industri skala kecil dengan hasil yang akurat dan responsif.

10. Link Download [Kembali]
DataShett RaspBery Pi Pico Klik Disini
DataShett Motor DC Klik Disini
DataShett Motor Servo Klik Disini
DataShett L298N Klik Disini
DataShett Sensor Proximity Klik Disini
DataShett Sensor Load Cell Klik Disini
DataShett IR Sensor Klik Disini
DataShett LCD Klik Disini
DataShett HX711 Klik Disini
DataShett XL4015 Klik Disini

Tidak ada komentar:

Posting Komentar

                                     BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA   Oleh : Arga Vibrano 2210952034 Elektronika A       Do...