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 |
Tidak ada komentar:
Posting Komentar