LA Modul 3 (Mikro)



1. Prosedur[Kembali]

  1. Siapkan alat alat yang diperlukan pada rangkaian
  2. Hubungkan setiap komponen
  3. Inputkan Listing Program
  4. Running

2. Hardware dan Diagram Blok [Kembali]

Hardware yang digunakan dalam rangkaian ini meliputi:

  • Raspberry Pi Pico – Sebagai mikrokontroler utama untuk mengendalikan sistem.



  • Servo


  • Potensiometer



  • LCD






Diagram Blok









3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]









Prinsip Kerja:

  1. Pembacaan Potensiometer (GP26):

    • Potensiometer yang dihubungkan ke pin ADC (Analog-to-Digital Converter) pada Raspberry Pi Pico membaca nilai resistansi.

    • Nilai resistansi ini dikonversi ke bentuk digital berupa angka antara 0 hingga 65535 menggunakan fungsi read_u16().

  2. Konversi Nilai Potensiometer ke Sudut Servo:

    • Nilai digital yang dibaca dari potensiometer dimapping menggunakan fungsi map_value() ke rentang sudut 0-180°.

    • Rentang ini sesuai dengan pergerakan servo motor yang digunakan.

  3. Pengaturan Servo Motor (GP15):

    • Servo motor menerima sinyal PWM dari pin GP15.

    • Nilai sudut yang sudah dikonversi tadi diubah menjadi nilai duty cycle dengan menggunakan fungsi map_value() lagi.

    • Servo motor mengatur posisi berdasarkan nilai duty cycle ini (1500–7500 untuk rentang 0-180°).

  4. Menampilkan Sudut pada LCD:

    • Nilai sudut servo yang dihitung ditampilkan pada layar LCD I2C 16x2.

    • Informasi ini diupdate secara terus-menerus setiap 200ms untuk mencerminkan perubahan yang dihasilkan oleh potensiometer.

Penjelasan Fungsi Tambahan:

  • Fungsi map_value():
    Digunakan untuk mengonversi suatu nilai dari satu rentang ke rentang lainnya, seperti dari rentang 0-65535 (nilai ADC) ke 0-180 (sudut servo) atau dari sudut servo ke duty cycle PWM.


4. Flowchart dan Listing Program[Kembali]

Flowchart







Listing Program

from machine import Pin, ADC, PWM, I2C from pico_i2c_lcd import I2cLcd import utime # 1. Setup Potensiometer (GP26 = ADC0) pot = ADC(Pin(26)) # 2. Setup Servo (GP15) servo = PWM(Pin(15)) servo.freq(50) # Frekuensi PWM standar servo # 3. Setup LCD I2C 16x2 I2C_ADDR = 0x27 # Alamat I2C LCD, bisa 0x3F tergantung modul I2C_NUM_ROWS = 2 I2C_NUM_COLS = 16 try: i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000) # GP0 = SDA, GP1 = SCL lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS) lcd.putstr("Initializing...") utime.sleep(1) lcd.clear() except Exception as e: print("LCD Initialization Error:", e) lcd = None # Fungsi untuk mapping nilai def map_value(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min # Kalibrasi servo SERVO_MIN_DUTY = 1500 # Duty cycle untuk 0° SERVO_MAX_DUTY = 7500 # Duty cycle untuk 180° while True: try: # Baca nilai potensiometer pot_value = pot.read_u16() # Konversi ke sudut 0-180° angle = map_value(pot_value, 0, 65535, 0, 180) # Konversi sudut ke duty cycle duty = map_value(angle, 0, 180, SERVO_MIN_DUTY, SERVO_MAX_DUTY) servo.duty_u16(duty) # Tampilkan di LCD jika tersedia if lcd: lcd.clear() lcd.putstr("Sudut Servo:") lcd.move_to(0, 1) lcd.putstr(f"{angle} derajat") # Delay untuk mengurangi flicker utime.sleep_ms(200) except Exception as e: print("Error:", e) if lcd: lcd.clear() lcd.putstr("Error Occurred") utime.sleep(1)




6. Kondisi[Kembali]

-

7. Video Simulasi[Kembali]









8. Download File[Kembali]


Datasheet Raspberry Pi Pico


Komentar

Postingan populer dari blog ini

Modul 1 Sistem Digital

Home

Modul 3 Sistem Digital