0% menganggap dokumen ini bermanfaat (0 suara)
21 tayangan16 halaman

Modul 3

Diunggah oleh

liburansingmalay
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
21 tayangan16 halaman

Modul 3

Diunggah oleh

liburansingmalay
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 16

BAB IV

CONTROLLED ROVER

4.1. Tujuan Praktikum


1. Praktikan mampu memahami pergerakan Robot Rover.
2. Praktikan mampu memahami Invers Kinematic.
3. Praktikan mampu memahami penggunaan Simulink.

4.2. Alat dan Bahan

1. Komputer
2. Mathlab
3. Arduino Nano 33IoT
4. Arduino Board Nano Motor Carrier
5. DC Motors
6. Servo Motor
7. Battery & Holder
8. Rover Robot

4.3. Dasar Teori


4.3.1. Controlled Rover Robot

Controlled Rover Robot terdiri dari robot yang dapat deprogram yang dapat dikendalikan
dengan MATLAB untuk melakukan operasi menggunakan algoritma pemrosesan gambar. Rover
dibuat menggunakan Arduino Nano 33 IoT, Arduino Nano Motor Carrier, dua motor DC dengan
encoder dan motor mikro-servo. Di atas Rover, terdapat stiker berkode warna yang berfungsi
sebagai penanda untuk membantu algoritma pemrosesan gambar yang menggunakan webcam
untuk mendeteksi lokasi dan orientasi robot.

4.3.2. Matlab

MATLAB (Matrix Laboratory) adalah sebuah bahasa pemrograman tingkat tinggi yang
secara khusus digunakan untuk komputasi numerik, pemrograman, dan visualisasi. Perusahaan
yang bertanggung jawab atas produk hasil pengembangan dari MATLAB ialah MathWorks.
Fungsi utama dari MATLAB ialah untuk melakukan analisis data, mengembangkan algoritma,
serta membuat model dan aplikasi. Kinerja MATLAB lebih tinggi dibandingkan bahasa
pemrograman konvensional. Standar variabel elemen pada MATLAB menggunakan konsep larik
yang tidak memerlukan proses deklarasi. MATLAB juga dapat mengadakan integrasi dengan
bahasa pemrograman dan aplikasi lain seperti C, Java, .NET Framework, dan Microsoft Excel.

MATLAB memungkinkan manipulasi matriks, pem-plot-an fungsi dan data, implementasi


algoritma, pembuatan antarmuka pengguna, dan peng-antarmuka-an dengan program dalam
bahasa lainnya. Meskipun hanya bernuansa numerik, sebuah kotak perkakas (toolbox) yang
menggunakan mesin simbolik MuPAD, memungkinkan akses terhadap kemampuan aljabar
komputer. Sebuah paket tambahan, Simulink menambahkan simulasi grafis multiranah dan
Desain Berdasar-Model untuk sistem terlekat dan dinamik.

4.3.3. Simulink

Simulink merupakan salah satu komponen dari MATLAB yang berperan sebagai
pemrograman grafis. Kegunaan utama dari Simulink adalah untuk membuat simulasi sistem
dinamik. Proses simulasi dilakukan menggunakan diagram fungsional yang meliputi blok yang
terhubung dengan fungsinya masing-masing secara ekuivalen. Simulink dapat digunakan sebagai
sarana pemodelan, simulasi dan analisis dari sistem dinamik dengan menggunakan antarmuka
pengguna grafis.

Simulink terdiri dari beberapa kumpulan kotak perkakas yang dapat digunakan untuk
analisis sistem linier dan non-linier. Beberapa pustaka yang sering digunakan dalam sistem
kontrol antara lain math, sinks, dan sources.

4.3.4. Arduino IDE

Arduino IDE adalah software yang digunakan untuk membuat sketch pemrogaman atau
dengan kata lain arduino IDE sebagai media untuk pemrogaman pada board yang ingin
diprogram. Arduino IDE ini berguna untuk mengedit, membuat, meng-upload ke board yang
ditentukan, dan meng-coding program tertentu. Arduino IDE dibuat dari bahasa pemrogaman
JAVA, yang dilengkapi dengan library C/C++(wiring), yang membuat operasi input/output lebih
mudah.

4.3.5. Arduino Nano 33 IoT


Arduino Nano 33 IoT merupakan development board buatan dari Arduino yang
menggunakan mikrokontroller Arm® Cortex®-M0 32-bit SAMD21 yang terkenal dengan
konsumsi daya yang cukup rendah.

Arduino Nano 33 IoT juga sudah dilengkapi dengan modul u-blox, the NINA-W10 yang
membuat dev board ini memiliki konektivitas WiFi dan Bluetooth yang dapat dioperasikan
sampai range 2.4GHz sehingga board ini sangat cocok sekali digunakan untuk keperluan Internet
of Things atau IoT.

Selain sudah dilengkapi dengan konektivitas WiFi dan Bluetooth, Arduino Nano 33 IoT ini
juga sudah dilengkapi dengan sensor IMU 6 sumbu sehingga bisa digunakan untuk sistem
getaran untuk memprediksi gempa ataupun sistem posisi terbang pada pesawat terbang/drone.

4.3.6. DC Motors

Motor DC (Direct Current) adalah jenis motor yang akan menyebabkan poros motor
berputar di sekitar sumbu longitudinalnya ketika menerapkan arus listrik di antara pin
terminalnya. Dengan demikian, motor DC adalah jenis aktuator yang mengubah arus listrik
menjadi gerak rotasi.

Ada dua bagian di dalam motor: rotor (poros adalah bagian dari ini) dan stator. Ketika
melihat penampang motor maka dapat dilihat bahwa rotor adalah bagian yang bergerak dan
stator adalah bagian yang statis. Stator dan rotor menggunakan magnet permanen dan
elektromagnet. Tergantung pada jenis motornya, stator bisa menjadi magnet permanen
sedangkan rotor adalah elektromagnet, atau sebaliknya. Menyalakan elektromagnet menciptakan
gaya tarik-menarik dan gaya tolak menolak yang membuat motor berputar.

Motor DC bekerja dengan cara berputar ketika diterapkan tegangan DC melalui dua pin
terminalnya. Variasi kecepatan motor dapat diatur dengan mengubah level tegangan. Selain itu,
motor dapat berjalan bebas di kedua arah hanya dengan membalikkan arah arus. Motor DC saja
tidak terlalu bagus untuk pergerakan yang presisi, tetapi dapat memberikan kecepatan rotasi yang
sangat tinggi.

4.3.7. PWM (Pulse Width Modulation) Microcontrollers


Kebanyakan mikrokontroler memiliki kemampuan untuk menghasilkan sinyal PWM
(Pulse Width Modulation) khusus. Biasanya, tidak semua pin digital memiliki opsi sekunder ini,
jadi Anda harus memeriksa lembar data jika Anda memerlukan sinyal PWM untuk melihat pin
mana yang memiliki kemampuan ini. Ada juga perpustakaan yang dapat Anda gunakan untuk
menghasilkan sinyal PWM "perangkat lunak" di pin GPIO (General Purpose Input/Output).
Pada papan Arduino, pin PWM dilambangkan dengan simbol “tilde” ~ disebelah nomor
pin. Pada Arduino Nano 33 IoT, pinnya adalah 2, 3, 5, 6, 9, 10, 11 dan 12. Dalam modul ini
sinyal PWM digunakan untuk mengontrol kecepatan semua motor DC.

4.3.8. Closed-Loop Control


Sistem kontrol loop tertutup adalah perangkat mekanis atau elektronik yang secara
otomatis mengatur sistem untuk mempertahankan keadaan yang diinginkan atau titik setel tanpa
interaksi manusia. Ini menggunakan sistem umpan balik atau sensor. Kontrol loop tertutup
kontras dengan kontrol loop terbuka, di mana tidak ada mekanisme pengaturan sendiri dan
interaksi manusia biasanya diperlukan.

4.3.9. Invers Kinematic


Inverse kinematics merupakan salah satu metode yang digunakan untuk menentukan
setiap pergerakan suatu sistem dari posisi yang ingin dicapai. Kinematik dalam robot merupakan
suatu bentuk pernyataan yang berisi tentang deskripsi matematik geometri dari suatu struktur
robot. Dari persamaan kinematic dapat diperoleh hubungan antara konsep geometri ruang sendi
(joint) pada robot dengan konsep koordinat yang biasa dipakai untuk menentukan kedudukan
dari suatu obyek. Dengan model kinematik, programmer dapat menentukan konfigurasi referensi
input yang harus diumpankan ke tiap aktuator agar robot dapat melakukan gerakan simultan
(seluruh sendi) untuk mencapai posisi yang dikehendaki. Sebaliknya, informasi kedudukan
(sudut) yang dinyatakan oleh tiap sendi ketika robot sedang melakukan suatu gerakan, dengan
analisa kinematik programmer dapat menentukan dimana posisi bagian robot yang bergerak itu
dalam koordinat ruang.

4.3.10. Servo Motor


Motor servo adalah aktuator yang memungkinkan kontrol posisi (sudut) atau kecepatan
sudut yang tepat dari mikrokontroler. Mereka memiliki sirkuit control tertanam di dalam
motornya. Sirkuit kontrol ini bisa analog atau digital, dan ini ditentukan oleh jenis fungsi yang
dirancang untuk dilakukan oleh motor. Dari perspektif fungsional, ada dua jenis motor servo:
servo standar dan servo rotasi kontinu. Dalam modul ini hanya akan menggunakan motor Servo
standar untuk berputar dalam kisaran 0 - 180.
Servo standar tidak dapat terus berputar seperti motor DC, sehingga tidak dapat digunakan
untuk menggerakkan roda. Namun, ini dapat digunakan untuk memindahkan sesuatu ke depan
dan ke belakang pada sudut tertentu dengan akurasi tinggi. Misalnya, jika digunakan pada tutup
kotak, dapat membuka tutupnya dengan memutar ke posisi 90°. Kemudian dapat menutup
tutupnya dengan kembali ke posisi 0°.
4.3.11. Battery & Holder
Battery adalah sebuah komponen yang akan memberi arus listrik dari rangkaian yang akan
kita buat selanjutnya, baterai yang akan kita gunakan pada praktikum kali ini adalah baterai
Lithium ion (Li-ion). Baterai Li-ion adalah jenis baterai yang lebih baru yang populer untuk
aplikasi yang berat dan bentuknya sangat penting, seperti pada tablet dan ponsel. Baterai ini
didasarkan pada teknologi lithium-ion, yang menggunakan elektrolit polimer semipadat, bukan
elektrolit cair. Hal ini memungkinkan baterai ini dibuat dalam berbagai ukuran atau bentuk dan
menjadi jauh lebih ringan daripada baterai lithium lainnya. Namun, bahan kimia sensitif di dalam
baterai Li-ion membuatnya lebih rapuh dan dapat menyebabkan kebakaran jika baterai bocor.
Battery Holder adalah tempat baterai diletakkan disaat baterai dirangkai dalam rangkaian

4.4. Langkah Kerja


4.4.1. Experiment 1 (Code)

To communicate between MATLAB and Arduino, you need to know the port number
your Arduino is connected to. Remember that the port names differ between operating systems;
in other words, they are different for Windows (where they are named COM## with the ## being
a unique single or two digit numeric identifier), OSX (/dev/tty.usbmodem##), and Linux
(/dev/ttyACM##).
Once you know the port number, enter the following commands with the appropriate port
number to create (a) an Arduino object with the necessary libraries and (b) a separate object for
the Motor Carrier:
a = arduino('COM##', 'Nano33IoT', 'Libraries', 'MotorCarrier');

carrier = motorCarrier(a);

Control the Rover From MATLAB


Drive in a straight line
Let's spin the Rover's DC motors at the same speed, but opposite polarities and observe
whether it goes in a straight line as expected. Enter the following commands to connect the DC
motors to MATLAB (note that the orientation perspective is observing from the back of the
rover towards the front):
dcmLeft = dcmotor(carrier,'M2');

dcmRight = dcmotor(carrier,'M1');

Now specify that you want the DC motors to spin at 25% of the maximum speed:
dcmLeft.Speed = 0.25;

dcmRight.Speed = -0.25;

Once you've specified how fast the motors must spin, the next step is to spin them! Enter
the following commands to run the motors for 5 seconds at this speed:

start(dcmLeft);

start(dcmRight);

pause(5);

stop(dcmLeft);

stop(dcmRight);

Drive in a circle

If you were asked how to drive the Rover in a circle, your answer might be a) to spin one
wheel but not the other, or b) spin both wheels with the same speed but in opposite directions.
Both answers are correct, though the way the Rover will move will differ. Let's analyze the first
case:

Spin one wheel but not the other. Try the following commands with the Rover, You
should observe that the Rover spins in a circle around its left wheel.:

dcmLeft.Speed = 0;

dcmRight.Speed = 0.25;

start(dcmLeft)

start(dcmRight)

pause(5)

stop(dcmLeft)

stop(dcmRight)

The other case required you to spin both wheels with the same speed but opposite
directions. Now as discussed earlier, if we provide same polarities to both the motors, they will
move in opposite directions due to their opposite alignment with respect to one another and vice
versa. Let's try spinning the wheels with equal speeds by running the following code in
MATLAB:

You should observe that the Rover spins in a circle about its centre.
dcmLeft.Speed = 0.25;

dcmRight.Speed = 0.25;

start(dcmLeft)

start(dcmRight)

pause(5)

stop(dcmLeft)

stop(dcmRight)

Control the Forklift of the Rover


The Rover's forklift is controlled by a standard servo motor connected to the Arduino
Nano Motor Carrier board; this means you can control the angle at which the motor will turn.
Typically, standard servos can turn between 0 and 180 degrees, but there might be other types. In
this section, first, you will move the servo to the Up position. This corresponds to the forklift
(attached to the servo motor) being in the vertical position (90 degrees counter-clockwise from
the horizontal plane). This is the highest achievable lift position of the forklift mechanism.

The function writePosition accepts an input between 0 and 1 where 0 corresponds to 0


degrees and 1 corresponds to 180 degrees on the servo motor. You will use the command
writePosition(s,1) to move the servo in the Up position. Similarly, the lowest position on the
servo will be 0 degrees (90 degrees clockwise from the horizontal plane). However due to the
geometrical limitations of the forklift mechanism, its not possible to achieve 0 degrees with the
Rover. Hence the lowest achievable position will be higher than this value, and for the Rover, it
turns out to be around 80 degrees on the servo (10 degrees clockwise from the horizontal plane).
This corresponds to the Down position of the forklift mechanism, thus providing a range of 100
degrees for movement between the Up and Down positions (180 degrees Up position to 80
degrees Down Position on the servo). Enter the following commands to connect to the servo and
move the forklift between the Up and Down positions:

s = servo(carrier,3);

writePosition(s,1) % Up Position (180 degrees on the servo) || 1 ke kiri


atau ke bawah

pause(5)

writePosition(s,0.45) % Down Position (80 degrees on the servo) || 0 ke


kanan atau ke atas

clear a;

clear carrier;

clear s;

4.4.2. Experiment 2: Simulating the Rover's Motion (Simulink)


Start by opening the kinEq_sim model from MATLAB:
In this model, you see that instead of simple constant inputs that were used in the
previous model, there are now Signal builder blocks labeled v (cm/s) and w (deg/s). These
provide signals that change over time to the convToWheelVel subsystem. Instead of simply
displaying the results, they will be passed on as inputs to the Rover Simulation subsystem, which
mathematically models the Rover's behavior and creates a visual simulation of the Rover moving
in a 100 cm x 100 cm arena.

Double-click on the v (cm/s) and w block to see what the signal looks like.
The signal looks like a step input that has a magnitude of 10 cm/s for the first five
seconds and then drops down to 0 cm/s.

The signal for w (deg/s) is a rectangular signal that has a magnitude of 72 deg/s between
5 to 10 seconds and zero at all other times.
Since the input signals are both zero after 10 seconds, the simulation stop time is set to 11
seconds as shown below.

Click Run and see what’s happen.


4.4.3. Experiment 3: Driving the Rover using Open-Loop Control (Simulink)
Open the roverOpenloop_hw model in MATLAB:
Check the port numbers specified by the DC motor blocks in the LeftMotor and
RightMotor subsystems to ensure that the connections for the right and left motors of
your Rover match the ones specified in these blocks. The image below shows the M1 M2
DC motors block inside the LeftMotor subsystem.
Press the Build, Deploy & Start button in the model from the Hardware toolstrip.
This will generate the code equivalent of your model and upload it to the Arduino Nano
33 IoT board, which will ensure that the Rover can run the code on the board even when
it is detached from the computer.

Disconnect the USB cable from the Rover and place the Rover on the floor or
some other surface where it has enough space to move around. The Rover is fragile, and
it could get damaged if it falls from your desk.

Anda mungkin juga menyukai