- Dapatkan link
- X
- Aplikasi Lainnya
LAPORAN M4
Sistem monitoring perawatan dan pemeliharaan marmut
Marmut (Cavia porcellus), atau guinea pig, adalah hewan pengerat kecil yang menggemaskan dan banyak digemari sebagai hewan peliharaan di berbagai belahan dunia. Dengan sifatnya yang jinak, suara khas "wheek" yang ekspresif, dan perawatan yang relatif mudah, marmut menjadi pilihan menarik bagi banyak pecinta hewan. Namun, di balik daya tariknya, pemeliharaan marmut yang bertanggung jawab memerlukan pemahaman mendalam tentang kebutuhan spesifik mereka untuk memastikan kesehatan dan kesejahteraan optimal.
Salah satu aspek krusial dalam pemeliharaan marmut adalah manajemen lingkungan kandang yang baik, terutama terkait dengan keberadaan gas amonia. Gas ini, yang umumnya berasal dari penumpukan urin dan feses yang tidak dibersihkan secara teratur, dapat menjadi ancaman serius bagi sistem pernapasan marmut. Paparan jangka panjang terhadap amonia bisa menyebabkan iritasi, infeksi pernapasan, dan berbagai masalah kesehatan lainnya. Oleh karena itu, kebersihan kandang dan sirkulasi udara yang baik adalah kunci.
Selain itu, asupan nutrisi yang tepat melalui takaran makan yang sesuai dan pemantauan suhu lingkungan yang stabil juga merupakan faktor fundamental dalam menjaga marmut tetap sehat dan aktif. Marmut memiliki kebutuhan diet khusus, termasuk kebutuhan tinggi akan Vitamin C karena tubuh mereka tidak dapat memproduksinya sendiri. Pemberian makanan yang tidak sesuai atau berlebihan dapat menyebabkan masalah pencernaan dan obesitas.
Marmut membutuhkan lingkungan dengan suhu normal yang stabil, yaitu antara 18°C hingga 24°C (65°F hingga 75°F). Suhu di luar rentang ini, terutama suhu ekstrem yang terlalu panas atau terlalu dingin, dapat menyebabkan stres parah, heatstroke, atau hipotermia, yang berpotensi fatal bagi mereka.
Mengenai pola makan, marmut adalah hewan herbivora yang membutuhkan makan sepanjang hari (grazing). Mereka biasanya makan dalam porsi kecil namun sering. Idealnya, hay (rumput kering) harus tersedia tanpa batas (ad libitum) sepanjang waktu sebagai sumber serat utama yang krusial untuk kesehatan pencernaan dan gigi mereka. Untuk pelet khusus marmut, takaran umumnya adalah sekitar 15-20 gram per hari per marmut dewasa. Pelet ini sebaiknya diberikan dua kali sehari, misalnya di pagi dan sore hari, untuk melengkapi nutrisi. Selain itu, sayuran segar sekitar satu cangkir (sekitar 100-150 gram) per marmut dewasa per hari juga harus diberikan, dibagi menjadi beberapa porsi untuk memastikan asupan vitamin dan mineral esensial.
Tujuan dari rancangan yang dilakukan yaitu:
Meningkatkan Efisiensi dan Kemudahan Pemeliharaan
Menjamin Ketersediaan Pakan yang Optimal
Mengontrol Kadar Gas Amonia dan Memastikan Suhu Lingkungan Ideal
- Alat
- Komponen
1.
PWM (Pulse
Width Modulation)
PWM (Pulse Width Modulation) adalah
salah satu teknik modulasi dengan mengubah lebar pulsa (Duty Cycle)
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”
Pada board Raspberry Pi Pico, hampir semua pin
digital dapat digunakan untuk PWM (Pulse Width Modulation) karena tersedia 16
saluran PWM yang dapat dikonfigurasi sesuai kebutuhan. Dalam pemrograman
menggunakan MicroPython, PWM diakses melalui modul machine dengan
membuat objek PWM dari pin tertentu, misalnya PWM(Pin(15)). Frekuensi PWM
default adalah sekitar 1.000 Hz, tetapi dapat diubah menggunakan metode freq(),
sedangkan lebar pulsa atau duty cycle diatur dengan metode duty_u16() yang
menerima nilai dari 0 hingga 65.535. Nilai 0 berarti output pin selalu berada
pada tegangan rendah (0 volt), sedangkan nilai 65.535 berarti pin selalu berada
pada tegangan tinggi (3,3 volt). Jika diberi nilai tengah seperti 32.768, maka
selama satu siklus, pin akan bernilai tinggi selama 50% waktu dan rendah selama
50% sisanya, menghasilkan duty cycle 50%. Nilai duty cycle lain seperti 16.384
(sekitar 25%) akan menghasilkan pulsa bernilai tinggi selama seperempat siklus
dan rendah selama tiga perempatnya. Dengan pengaturan ini, Raspberry Pi Pico
memungkinkan pengendalian sinyal analog semu (pseudo-analog) melalui sinyal
digital yang dikendalikan waktunya, yang sangat berguna dalam aplikasi seperti
pengaturan kecepatan motor, kecerahan LED, atau kontrol posisi servo.
2.
ADC (Analog to
Digital Converter)
ADC atau Analog to Digital Converter merupakan
salah satu perangkat elektronika yang digunakan sebagai penghubung dalam
pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini
adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi
sinyal digital dengan bentuk kode-kode digital. Ada 2 faktor yang perlu
diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi.
Pada Raspberry Pi Pico, konversi sinyal analog ke
digital dilakukan melalui ADC (Analog to Digital Converter) internal yang
tersedia pada beberapa pin, yaitu pin GP26, GP27, dan GP28. Kecepatan sampling
menyatakan seberapa sering sinyal analog dibaca dan dikonversi ke sinyal
digital dalam satu detik, dan biasanya dinyatakan dalam satuan sample per
second (SPS). Resolusi ADC pada Raspberry Pi Pico adalah 12 bit, yang berarti
nilai digital yang dihasilkan berkisar antara 0 hingga 4095, memberikan tingkat
ketelitian yang lebih tinggi dibandingkan dengan Arduino Uno yang hanya
memiliki resolusi 10 bit (0–1023). Tegangan referensi ADC pada Raspberry Pi
Pico adalah 3,3 volt, sehingga ADC mampu membaca tegangan analog dari 0 hingga
3,3 volt. Untuk membaca nilai analog, digunakan perintah ADC(Pin(x)).read_u16()
dalam MicroPython, di mana nilai yang dihasilkan berupa 16-bit (0 hingga
65.535), meskipun secara fisik hanya menggunakan 12 bit efektif. Nilai ini
dapat dikonversi kembali ke bentuk tegangan dengan mengalikan hasil pembacaan
dengan 3,3 dan membaginya dengan 65.535. Dengan kemampuan ini, Raspberry Pi
Pico dapat membaca sinyal analog dengan lebih presisi dan kecepatan tinggi
sesuai kebutuhan aplikasi.
3.
Mikrokontroler
Raspberry Pi Pico adalah papan rangkaian
elektronik yang di dalamnya terdapat komponen utama chip mikrokontroler RP2040,
yang dirancang dan diproduksi oleh Raspberry Pi Foundatio. Tidak seperti
komputer mini raspberry Pi lainnya yang menjalankan sistem operasi seperti
Linux, Pico dirancang untuk tugas-tugas yang lebih sederhana dan langsung
(embedded system), seperti membaca sensor, mengontrol perangkat, atau melakukan
pengolahan data pada tingkat hardware. Adapun spesifikasi dari Raspberry Pi
Pico adalah sebagai berikut:
Gambar 1. Arduino
Uno
Microcontroller |
RP2040 |
Operating Voltage |
3.3 V |
Input Voltage
(recommended) |
5 V via USB |
Input Voltage
(limit) |
1.8–5.5 V |
Digital I/O Pins |
26 GPIO pins |
PWM Digital I/O
Pins |
16 |
Analog Input Pins |
3 |
DC Current per
I/O Pin |
16 mA |
DC Current for
3.3V Pin |
300mA |
Flash
Memory |
2 MB on-board
QSPI Flash |
SRAM |
264 KB |
Clock Speed |
Hingga 133
MHz |
STM32F103C8 adalah mikrokontroler berbasis ARM Cortex-M3 yang dikembangkan oleh STMicroelectronics. Mikrokontroler ini sering digunakan dalam pengembangan sistem tertanam karena kinerjanya yang baik, konsumsi daya yang rendah, dan kompatibilitas dengan berbagai protokol komunikasi. Pada praktikum ini, kita menggunakan STM32F103C8 yang dapat diprogram menggunakan berbagai
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 :
Data dikirimkan secara paralel dari data bus
ke UART1. Pada UART1 ditambahkan start bit, parity bit, dan stop bit kemudian
dimuat dalam satu paket data. Paket data ditransmisikan secara serial dari Tx
UART1 ke Rx UART2. UART2 mengkonversikan data dan menghapus bit tambahan,
kemudian ditransfer secara parallel ke data bus penerima.
4.2.
Serial
Peripheral Interface (SPI)
Serial Peripheral Interface (SPI) merupakan salah satu mode komunikasi serial synchrounous kecepatan tinggi yang dimiliki oleh ATmega 328. Komunikasi SPI membutuhkan 3 jalur yaitu MOSI, MISO, dan SCK. Melalui komunikasi ini data dapat saling dikirimkan baik antara mikrokontroler maupun antara mikrokontroler dengan peripheral lain di luar mikrokontroler.
- MOSI : Master Output Slave Input artinya jika dikonfigurasi sebagai master maka pin MOSI sebagai output tetapi jika dikonfigurasi sebagai slave maka pin MOSI sebagai input.
- MISO : Master Input Slave Output artinya jika dikonfigurasi sebagai master maka pin MISO sebagai input tetapi jika dikonfigurasi sebagai slave maka pin MISO sebagai output.
- SCLK : Clock jika dikonfigurasi sebagai master maka pin CLK berlaku sebagai output tetapi jika dikonfigurasi sebagai slave maka pin CLK berlaku sebagai input.
- SS/CS : Slave Select / Chip Select adalah jalur master memilih slave mana yang akan dikirimkan data.
Cara Kerja
Komunikasi SPI :
Sinyal clock dialirkan dari master ke slave
yang berfungsi untuk sinkronisasi. Master dapat memilih slave mana yang akan
dikirimkan data melalui slave select, kemudian data dikirimkan dari master ke
slave melalui MOSI. Jika master butuh respon data maka slave akan mentransfer
data ke master melalui MISO.
4.3.
Inter-Integrated
Circuit (I2C)
Inter Integrated Circuit atau sering disebut
I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang
didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari
saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data
antara I2C dengan pengontrolnya.
Cara Kerja
Komunikasi I2C :
Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop.
- Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL.
- Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL.
- R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave.
- ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telah diterima receiver.
5. Komponen
5.1. RTC (Real Time Clock)
RTC adalah singkatan dari Real Time Clock, yaitu jam elektronik yang terdapat dalam sebuah chip pada motherboard komputer. RTC berfungsi untuk menyimpan dan mengatur waktu saat ini secara akurat, bahkan ketika komputer dimatikan atau tidak terhubung dengan internet. RTC ditenagai oleh baterai CMOS yang terpisah dari sumber daya utama komputer, sehingga jam tidak akan terganggu oleh pemadaman listrik atau perubahan tegangan. RTC juga disebut sebagai CMOS, karena chip RTC memiliki memori kecil yang menyimpan pengaturan sistem komputer, termasuk nilai waktu saat ini.
RTC merupakan salah satu komponen penting dalam komputer, karena waktu merupakan faktor krusial dalam berbagai proses dan aplikasi. RTC memungkinkan komputer untuk mengetahui tanggal dan jam saat ini, sehingga dapat menyesuaikan fungsi dan kecepatan semua operasinya. RTC juga memastikan bahwa semua proses yang terjadi dalam sistem disinkronkan dengan tepat, tanpa adanya kesalahan atau penundaan. RTC juga dapat digunakan untuk menghasilkan peristiwa atau event berdasarkan waktu tertentu, seperti alarm, pengingat, jadwal, atau timer.
Cara kerja RTC :
RTC biasanya terdiri dari beberapa komponen, termasuk osilator kristal yang digunakan untuk menghasilkan sinyal getar yang stabil, perekam waktu (counter), dan penyimpanan non-volatile (biasanya dalam bentuk baterai) yang memungkinkan RTC tetap berfungsi bahkan ketika perangkat mati atau tidak ada sumber daya listrik.
Proses kerja RTC dapat dijelaskan sebagai berikut:
- Osilator Kristal: Osilator kristal menghasilkan pulsa getaran yang sangat stabil. Frekuensi getaran ini digunakan sebagai dasar penghitungan waktu.
- Perekam Waktu: Perekam waktu adalah sebuah counter yang terus diinkrementasi (ditambahkan) oleh osilator kristal. Setiap kali counter mencapai nilai tertentu, waktu dihitung dalam satuan detik, menit, jam, tanggal, dan tahun.
- Penyimpanan Non-Volatile: Informasi waktu yang dihitung oleh RTC disimpan dalam penyimpanan non-volatile, seperti baterai cadangan atau memori EEPROM. Ini memastikan bahwa waktu tetap terjaga bahkan ketika perangkat mati atau baterai utama habis.
- Akses dan Sinkronisasi: Ketika perangkat dinyalakan atau dalam kondisi operasional, mikrokontroler atau mikroprosesor dalam perangkat dapat mengakses informasi waktu dari RTC. Dalam beberapa kasus, waktu dapat disinkronkan dengan sumber waktu eksternal, seperti sinyal waktu dari satelit GPS.
5.2.
Sensor MQ-2
MQ-2
adalah sensor gas yang dirancang untuk mendeteksi keberadaan berbagai jenis gas
mudah terbakar, seperti LPG, asap, metana, butana, dan hidrogen. Sensor ini
sering digunakan dalam sistem pendeteksi kebocoran gas atau sistem keamanan
rumah dan laboratorium. MQ-2 memiliki sensitivitas yang tinggi dan waktu respon
yang cepat terhadap konsentrasi gas di lingkungan sekitarnya. Sensor ini
terdiri dari elemen pemanas (heater) dan sensor resistif (SnO₂) yang
resistansinya berubah seiring dengan konsentrasi gas yang terdeteksi. Sensor
MQ-2 tersedia dalam bentuk modul yang sudah dilengkapi pembagi tegangan serta dua
jenis output, yaitu analog (berupa tegangan yang proporsional terhadap
konsentrasi gas) dan digital (HIGH atau LOW tergantung ambang batas yang
disetel melalui potensiometer).
Cara kerja sensor MQ-2:
Sensor MQ-2 bekerja dengan prinsip perubahan resistansi pada material semikonduktor akibat paparan gas. Saat sensor dinyalakan, elemen pemanas dalam sensor akan memanaskan permukaan semikonduktor SnO₂. Ketika tidak ada gas, resistansi sensor cukup tinggi. Namun, saat ada gas mudah terbakar di sekitarnya, gas akan bereaksi dengan oksigen yang diserap pada permukaan semikonduktor dan menyebabkan penurunan resistansi. Penurunan resistansi ini menghasilkan peningkatan tegangan pada output analog. Output ini kemudian dapat dibaca oleh ADC (Analog-to-Digital Converter) pada mikrokontroler seperti Raspberry Pi Pico. Jika menggunakan output digital, maka sensor akan memberikan sinyal LOW ketika konsentrasi gas melebihi batas yang telah ditentukan oleh pengguna melalui potensiometer di modul sensor.
Grafik
respon sensor MQ-2:
5.3. Loadcell
Sensor loadcell merupakan jenis sensor yang digunakan untuk mengubah ukuran beban menjadi sebuah tegangan listrik perubahan tegangan listrik. Perubahan yang terjadi pada tegangan listrik akan bergantung dari besarnya tekanan yang dirasakan atau yang diberikan beban. Untuk sensor loadcell terdapat komponen bernama Strain Gauge didalamnya yang dimana strain gauge adalah komponen elektronika yang berfungsi untuk mengukur sebuah tekanan. Strain gauge menggunakan konfigurasi dari rangkaian jembatan wheatstone. Wheatsetone terangkai dari 4 buah resistor yang dirangkai dengan jenis rangkain kombinasi yaitu paralel dan seri
Cara kerja loadcell:
Secara umum, cara kerja load cells mirip dengan sensor tekanan yaitu untuk mengukur tekanan suatu zat. Beban yang diberikan akan mengakibatkan reaksi terhadap elemen logam pada load cells sehingga mengakibatkan perubahan bentuk secara elastis. Sedangkan, gaya yang ditimbulkan oleh regangan tersebut kemudian dikonversikan ke dalam sinyal listrik oleh strain gauge.
Grafik respon sensor Loadcell:
5.4.
LCD
LCD (Liquid-Crystal Display) atau Penampil
Kristal Cair adalah layar panel datar atau perangkat optik elektronik
termodulasi yang menggunakan sifat modulasi cahaya dari kristal cair (liquid
crystal) yang dikombinasikan dengan polarizer. Kristal cair tidak memancarkan
cahaya secara langsung, melainkan menggunakan lampu latar atau reflektor untuk
menghasilkan gambar berwarna atau monokrom.
Spesifikasi
:
•
Format tampilan : 16 x 2
karakter
•
Pengontrol bawaan : ST
7066 (atau setara)
•
Siklus kerja : 1/16
•
5 x 8 titik termasuk
kursor
•
Supply + 5 V (juga
tersedia untuk + 3 V)
•
LED dapat digerakkan oleh
pin 1, pin 2, pin 15, pin 16 atau A dan K
•
N.V. opsional untuk
supply + 3 V
5.5. DHT11
Sensor DHT11 bekerja dengan mengukur suhu dan kelembaban udara menggunakan dua komponen utama: sensor suhu dan sensor kelembaban. Sensor suhu, biasanya menggunakan termistor, mendeteksi perubahan resistansi yang sebanding dengan suhu. Sementara sensor kelembaban menggunakan bahan yang peka terhadap kelembaban, yang juga mengubah resistansi seiring perubahan kelembaban. Data yang diperoleh dalam bentuk sinyal analog, kemudian diubah menjadi sinyal digital oleh chip konverter internal, dan dikirimkan ke mikrokontroler untuk diproses dan ditampilkan.
Cara Kerja :
Sensor DHT11 terdiri dari elemen penginderaan kelembapan kapasitif dan termistor untuk penginderaan suhu. Kapasitor penginderaan kelembapan memiliki dua elektroda dengan substrat penahan kelembapan sebagai dielektrik di antara keduanya. Perubahan nilai kapasitansi terjadi seiring dengan perubahan tingkat kelembapan. IC mengukur, memproses nilai resistansi yang berubah ini, dan mengubahnya menjadi bentuk digital.
Untuk mengukur suhu, sensor ini menggunakan termistor koefisien suhu negatif, yang menyebabkan penurunan nilai resistansinya seiring dengan peningkatan suhu. Untuk mendapatkan nilai resistansi yang lebih besar bahkan untuk perubahan suhu terkecil, sensor ini biasanya terbuat dari keramik semikonduktor atau polimer.
Kisaran suhu DHT11 adalah dari 0 hingga 50 derajat Celsius dengan akurasi 2 derajat. Kisaran kelembapan sensor ini adalah dari 20 hingga 80% dengan akurasi 5%. Laju pengambilan sampel sensor ini adalah 1Hz, yaitu memberikan satu pembacaan untuk setiap detik. DHT11 berukuran kecil dengan tegangan operasi dari 3 hingga 5 volt. Arus maksimum yang digunakan saat pengukuran adalah 2,5mA.
Grafik Respon Dht11 :
5.6 Motor DC
Motor DC (Direct Current) adalah mesin yang mengubah energi listrik searah menjadi energi mekanik putar. Cara kerjanya didasarkan pada prinsip gaya Lorentz, yaitu ketika sebuah konduktor berarus listrik ditempatkan dalam medan magnet, maka akan timbul gaya yang menyebabkan konduktor tersebut bergerak. Pada motor DC, gaya ini dimanfaatkan untuk menghasilkan putaran pada rotor.
Cara Kerja :
Pembentukan Medan Magnet Stator:
- Ketika motor dihidupkan, magnet permanen pada stator sudah menghasilkan medan magnet yang stabil, dari kutub utara ke kutub selatan.
-
Aliran Arus pada Kumparan Armatur:
- Arus listrik DC dari sumber daya (misalnya baterai) dialirkan melalui sikat, kemudian menuju segmen komutator, dan akhirnya masuk ke kumparan armatur.
- Karena komutator, arus listrik akan masuk ke kumparan armatur dengan arah tertentu di satu sisi kumparan, dan arah berlawanan di sisi lainnya.
-
Terjadinya Gaya Lorentz:
- Berdasarkan hukum Lorentz, ketika konduktor berarus (kumparan armatur) berada dalam medan magnet stator, maka akan timbul gaya magnetik pada kumparan tersebut.
- Arah gaya ini ditentukan oleh arah arus dan arah medan magnet (kaidah tangan kiri Fleming). Pada satu sisi kumparan, gaya akan mendorongnya ke atas, sementara di sisi lain, gaya akan mendorongnya ke bawah.
-
Pembentukan Torsi dan Putaran:
- Kedua gaya yang berlawanan arah namun sejajar ini menghasilkan torsi (gaya putar) pada armatur. Torsi inilah yang menyebabkan rotor mulai berputar.
-
Peran Komutator dalam Putaran Berkelanjutan:
- Jika tidak ada komutator, armatur akan berputar hingga kutub magnetnya sejajar dengan kutub stator, lalu berhenti.
- Namun, saat armatur berputar dan mendekati posisi sejajar, komutator akan membalikkan arah aliran arus pada kumparan armatur.
- Dengan dibaliknya arah arus, arah gaya Lorentz pada kumparan juga akan terbalik. Hal ini memastikan bahwa gaya putar selalu bekerja ke satu arah, mendorong armatur untuk terus berputar. Proses pembalikan arus ini disebut komutasi.
-
Putaran Berkelanjutan:
- Proses komutasi yang terjadi secara terus-menerus memungkinkan motor DC untuk menghasilkan torsi dan putaran yang berkelanjutan selama arus listrik masih dialirkan.
Secara sederhana, motor DC mengubah energi listrik menjadi energi gerak putar melalui interaksi antara medan magnet yang dihasilkan oleh stator dan medan magnet sementara yang dihasilkan oleh kumparan armatur yang dialiri arus listrik, dengan bantuan komutator untuk menjaga putaran berkelanjutan.
Spesifikasi :
5.7. Motor Servo
Motor servo adalah servomekanisme loop tertutup yang menggunakan umpan balik posisi untuk secara tepat mengontrol gerakan dan posisi akhirnya. Secara sederhana, motor servo itu seperti "motor pintar" yang bisa kita perintahkan untuk bergerak ke sudut tertentu dan dia akan memastikan untuk sampai di sana dan bertahan di posisi tersebut, bahkan jika ada gangguan.
Cara Kerja :
Prinsip kerja motor servo didasarkan pada sistem kontrol loop tertutup (closed-loop control system), yang memastikan akurasi dan presisi gerakan. Berikut adalah langkah-langkah cara kerjanya:
-
Menerima Sinyal Perintah:
- Motor servo menerima sinyal perintah (biasanya sinyal Pulse Width Modulation/PWM untuk servo hobi) dari kontroler eksternal (misalnya Arduino atau PLC). Lebar pulsa (duty cycle) dari sinyal PWM ini akan menentukan posisi sudut yang diinginkan untuk poros output. Misalnya, pulsa 1.5ms mungkin memerintahkan posisi 90 derajat.
-
Perbandingan Posisi (Error Detection):
- Rangkaian kontrol internal (servo driver) membandingkan sinyal posisi yang diperintahkan (dari sinyal PWM) dengan posisi aktual poros yang dilaporkan oleh sensor umpan balik (misalnya potensiometer).
- Jika ada perbedaan antara posisi yang diinginkan dan posisi aktual, ini disebut sinyal kesalahan (error signal).
-
Penggerakan Motor:
- Berdasarkan sinyal kesalahan ini, rangkaian kontrol akan mengirimkan daya listrik ke motor DC/AC. Motor akan mulai berputar untuk mengurangi sinyal kesalahan, yaitu, untuk menggerakkan poros ke posisi yang diinginkan.
- Roda gigi akan membantu mentransfer gerakan dari motor ke poros output dengan torsi yang lebih tinggi.
-
Umpan Balik Berkelanjutan:
- Saat motor berputar, sensor umpan balik terus-menerus melaporkan posisi aktual poros ke rangkaian kontrol. Proses perbandingan dan penyesuaian ini terjadi secara real-time dan berkelanjutan.
-
Mencapai dan Mempertahankan Posisi:
- Ketika posisi aktual poros sesuai dengan posisi yang diperintahkan (sinyal kesalahan mendekati nol), rangkaian kontrol akan mengurangi atau menghentikan daya ke motor, membuatnya berhenti pada posisi tersebut.
- Jika ada gaya eksternal yang mencoba menggeser poros dari posisi yang diperintahkan, sensor umpan balik akan mendeteksi pergeseran tersebut, menciptakan sinyal kesalahan baru, dan motor akan kembali aktif untuk mengoreksi posisi dan mempertahankan posisi yang diperintahkan.
Singkatnya, motor servo secara terus-menerus memantau posisinya sendiri dan menyesuaikan dayanya untuk mencapai dan mempertahankan posisi yang sangat spesifik, membuatnya ideal untuk aplikasi yang memerlukan kontrol gerakan yang presisi seperti robotika, mesin CNC, drone, dan banyak lagi.
Spesifikasi :
Sistem pemberi pakan dan pemantau lingkungan ini beroperasi sebagai satu unit terkoordinasi yang dikendalikan oleh dua otak komputasi, yaitu Raspberry Pi Pico dan STM32, yang berkomunikasi secara serial melalui protokol UART. Saat sistem dinyalakan, Raspberry Pi Pico selaku unit kontrol utama akan menginisialisasi semua perangkat yang terhubung dengannya, seperti layar LCD, sensor suhu DHT, dan jam digital (RTC). Pico akan langsung menampilkan waktu dan suhu terkini pada layar LCD. Sementara itu, STM32 yang berfungsi sebagai unit kerja presisi akan menyiapkan sensor berat (load cell), sensor gas, dan motor servo. Tugas utama Pico adalah mengatur jadwal; ia terus-menerus memeriksa waktu dari RTC. Tepat pada pukul 8 pagi dan 8 malam, Pico akan mengirimkan perintah melalui UART ke STM32 untuk mulai mengeluarkan pakan. STM32 yang menerima perintah ini akan menggerakkan motor servo untuk membuka wadah pakan sambil terus menimbang berat pakan yang keluar menggunakan load cell. Ketika berat pakan telah mencapai 15 gram, STM32 akan otomatis menutup kembali wadah pakan dan mengirim laporan penyelesaian tugas kembali ke Pico. Selain penjadwalan, Pico juga aktif memantau lingkungan. Jika sensor suhu mendeteksi suhu di bawah 18°C atau di atas 25°C, Pico akan menampilkan peringatan "suhu dingin" atau "suhu panas" pada LCD. Untuk memantau kualitas udara, Pico secara berkala meminta data konsentrasi gas amonia dari STM32. STM32 akan membaca data dari sensor gas, mengolahnya menjadi satuan PPM, dan mengirimkannya ke Pico. Apabila Pico menerima data bahwa konsentrasi gas amonia melebihi 25 PPM, ia akan segera mengaktifkan motor DC (kipas) untuk mengeluarkan gas berbahaya dari area kandang hingga kondisinya kembali normal.
- Listing Program
A. Sender
#include "main.h" #include "string.h" #include "hx711.h" // tambahkan RTC_HandleTypeDef hrtc; ADC_HandleTypeDef hadc1; I2C_HandleTypeDef hi2c1; UART_HandleTypeDef huart1; … // initialization functions dari CubeMX int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART1_UART_Init(); MX_I2C1_Init(); MX_ADC1_Init(); MX_RTC_Init(); HX711_Init(&hadc1, GPIOA, GPIO_PIN_1, GPIOA, GPIO_PIN_0); HX711_Calibrate(2280.0f); uint8_t targetReached = 0; bool sudahPagi = false, sudahSore = false; char txbuf[80]; DateTime now; float berat; while (1) { HAL_RTC_GetTime(&hrtc, (RTC_TimeTypeDef*)&now, RTC_FORMAT_BIN); HAL_RTC_GetDate(&hrtc, (RTC_TimeTypeDef*)&now.DateFormat, RTC_FORMAT_BIN); sprintf(txbuf, "Waktu: %02u:%02u\r\n", now.tm_hour, now.tm_min); HAL_UART_Transmit(&huart1, (uint8_t*)txbuf, strlen(txbuf), HAL_MAX_DELAY); if (now.tm_hour == 0 && now.tm_min == 0) { sudahPagi = sudahSore = false; } if (now.tm_hour == 7 && now.tm_min == 0 && !sudahPagi) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET); HAL_UART_Transmit(&huart1,(uint8_t*)"Pakan Pagi\r\n",12,HAL_MAX_DELAY); HAL_Delay(5000); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); sudahPagi = true; } if (now.tm_hour == 17 && now.tm_min == 0 && !sudahSore) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET); HAL_UART_Transmit(&huart1,(uint8_t*)"Pakan Sore\r\n",12,HAL_MAX_DELAY); HAL_Delay(5000); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); sudahSore = true; } berat = HX711_ReadAverage(10); sprintf(txbuf, "Berat: %.2f g\r\n", berat); HAL_UART_Transmit(&huart1,(uint8_t*)txbuf,strlen(txbuf),HAL_MAX_DELAY); if (berat >= 15.0f) { HAL_UART_Transmit(&huart1,(uint8_t*)"Berat >= 15g!\r\n",16,HAL_MAX_DELAY); } else { HAL_UART_Transmit(&huart1,(uint8_t*)"Berat < 15g\r\n",14,HAL_MAX_DELAY); } HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY); uint32_t gas = HAL_ADC_GetValue(&hadc1); HAL_ADC_Stop(&hadc1); sprintf(txbuf, "AMONIA: %lu\r\n", gas); HAL_UART_Transmit(&huart1,(uint8_t*)txbuf,strlen(txbuf),HAL_MAX_DELAY); HAL_Delay(1000); } } |
B. Receiver
from machine import Pin, I2C import time from lcd_api import LcdApi from pico_i2c_lcd import I2cLcd # --- Konfigurasi LCD I2C --- I2C_ADDR = 0x27 I2C_NUM_ROWS = 4 I2C_NUM_COLS = 20 i2c = I2C(1, sda=Pin(18), scl=Pin(19), freq=400000) lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS) # Inisialisasi LCD lcd.clear() lcd.putstr("Menunggu PIR...") # --- Konfigurasi Sensor dan LED --- pir = Pin(27, Pin.IN) led_merah = Pin(15, Pin.OUT) # Menyala saat ada gerakan led_kuning = Pin(14, Pin.OUT) # Menyala saat tidak ada gerakan print("Menunggu gerakan...") # --- Loop Utama --- while True: if pir.value(): # Jika sensor PIR mendeteksi gerakan led_merah.value(1) led_kuning.value(0) print("Gerakan terdeteksi!") lcd.clear() lcd.putstr("Gerakan TERDETEKSI") else: led_merah.value(0) led_kuning.value(1) print("Tidak ada gerakan.") lcd.clear() lcd.putstr("Tidak ada gerakan") time.sleep(0.5) # Delay kecil untuk menghindari flicker LCD |
- Dapatkan link
- X
- Aplikasi Lainnya
Komentar
Posting Komentar