Cara Kontrol Kecepatan Motor DC di Raspberry Pi Menggunakan Python 3


Aditya Suranata 08 Jun 2016 Pemrograman

Mulai Baca

Raspberry Pi Smart Home Controller Dengan Antarmuka Web Moderen

Selain interfacing sensor, di Raspberry Pi kita juga dapat melakukan kontrol terhadap aktuator. Aktuator disini tidak hanya berupa saklar atau relai seperti yang sudah kita lakukan sebelumnya, namun kali ini kita akan mencoba untuk mengontrol kecepatan sebuah motor DC menggunakan Raspberry Pi dan Python 3.

Selanjutnya, kita bisa mengembangkan tutorial ini sehingga dapat menjadi satu kesatuan yang lebih besar. Misalnya, kita dapat membuat sebuah robot dengan remote kontrol menggunakan teknik ini. Jadi nantinya kita bisa membuat sebuah robot, atau sekedar mainan yang dapat dikendalikan melalui perangkat mobile kita, atau komputer menggunakan Wi-Fi. Dengan Raspberry Pi sebagai perangkat pemrosesnya, semua itu sangatlah mungkin. Maka dari itu, pada tulisan ini kita akan mencoba melakukan kontrol motor DC, karena motor DC adalah komponen utama untuk dapat membuat sebuah perangkat bergerak.

Kebutuhan Perangkat Untuk Mengontrol Motor DC Dengan Raspberry Pi

Agar dapat mengontrol motor DC menggunakan Raspberry Pi, kita memerlukan sebuah modul tambahan. Itu karena kita tidak akan bisa langsung menggunakan Raspberry untuk mengontrolnya dikarenakan Raspi tidak memiliki cukup sumber daya untuk diberikan kepada sebuah motor. Motor memerlukan cukup banyak daya, khususnya arus listrik yang besar. Maka dari itu, kita perlum modul tambahan sebagai penengah antara Raspi dan motor DC, dan memberikan motor sumber daya yang lebih besar dari luar.

Modul tambahan itu dikenal dengan sebutan driver, sesuai dengan namanya, driver ini akan berfungsi sebagai pengemudi, atau pengendali dari si motor. Modul driver DC motor untuk Raspberry Pi ada banyak tersedia di pasaran. Pada tulisan ini, saya menggunakan tipe yang menggunakan chip L298N, tipe ini sangatlah umum, murah, dan mudah di dapatkan di toko-toko komponen robotika dan RC. Driver ini bekerja dengan menggunakan teknik H-Bridge.

Pengkabelan Driver Motor L298N di GPIO Raspberry Pi

Proses pengkabelan modul driver motor L298N di Raspberry Pi cukup mudah. Kita hanya perlu menghubungkan 3 kabel ke GPIO Raspi, dari ketiga pin itu, satu untuk PWM (GPIO25), dua lagi sebagai kontrol arah gerak motor (22 & 27). Jadi untuk nomer 22 & 27, jika 22 LOW dan 27 HIGH maka motor akan bergerak maju, dan sebaliknya motor akan mundur. Sedangkan PWM (Pulse Width Modulator) digunakan untuk mengontrol kecepatan motor.

Perlu diperhatikan pada proses ini, harus dilakukan dengan sangat hati-hati. Karena jika melakukan kesalahan, Raspberry Pi tidak akan mau memaafkan kita. Ya, dia akan keburu mati karena hangus terbakar sebelum sempat melakukan hal lainnya. Pin GPIO Raspi tidak memiliki pengaman apapun sebagai tolerasi kesalahan pemasangan. Jadi, ketika memasang kabel ke pin GPIO Raspi harap berahati-hati dan teliti.

Sumber daya dari motor juga harus menggunakan sumber daya eksternal, pada contoh ini saya menggunakan batre 6V untuk menyalakan motor. Jangan sampai mengambil daya untuk motor langsung dari Raspi, karena dapat merusak Raspi. Dan ketika menggunakan sumber daya eksternal, ingat bahwa Ground / negatifnya harus di hubungkan ke Ground Raspi, atau yang disebut dengan common ground agar kedua perangakat dapat berkomunikasi.

Ini adalah foto punya saya, yang terhubung ke Raspi yang menjalankan Salamigal Smart Home Controller.

Kode Program Kontrol Motor DC di Python 3

Setelah proses pengkabelan selesai, kita dapat melanjutkan ke tahap uji coba kode program. Kode progamnya sebagai berikut:

#Import modul time
import time  
#Import modul RPi.GPIO
import RPi.GPIO as GPIO

#Set penomeran pin dengan standar Broadcom  
GPIO.setmode(GPIO.BCM)
#Setup Pin PWM
GPIO.setup(25, GPIO.OUT)  
#Setup Pin kontrol maju mundur
GPIO.setup(22, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)

#Maju
GPIO.output(22, GPIO.HIGH)
GPIO.output(27, GPIO.LOW)  

#Mundur
#GPIO.output(22, GPIO.LOW)
#GPIO.output(27, GPIO.HIGH)  

#Buat instansiasi pin PWM, jika menggunakan dua motor
#namannya bisa diubah menjadi p1 atau p2, bisa juga motor1 dan motor2
p = GPIO.PWM(25, 50)

#Lakukan perulangan dengan menaikan dan menurunkan nilai PWM motor
#sehingga motor bergerak bertambah cepat lalu melambat dan seterusnya
try:
    p.start(50)         
    while 1:
        for dc in range(0, 101, 5):
            #Perintah untuk mengubah kecepatan motor, dc bisa bernilai 0 - 100
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
        for dc in range(100, -1, -5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)

except KeyboardInterrupt:
    #Stop penggunaan pwm
    p.stop()
    #Reset gpio dan keluar dari program
    GPIO.cleanup()       

Simpan dengan nama motor.py, kemudian masuk ke folder tempat filenya disimpan dengan perintah cd , lalu eksekusi dengan perintah:

$ sudo python3 ./motor.py

Motornya akan mulai berputar, dan untuk menghentikannya tekan CTRL+C.

Kode program tersebut adalah kode dasar yang dapat dikembangkan tanpa batas. Disana dapat diatur arah putar motor apakah maju atau mundur. Selanjutnya, saya akan membuat antarmuka dari program ini agar bisa mengontrol motor DC melalui antarmuka web, kan keren kalau kita bisa kontrol kecepatannya menggunakan web, tinggal digeser-geser seperti main game. Kodenya akan saya merge ke Salamigal Smart Home Controller, so ini hanyalah awal untuk kesenangan lainnya yang akan segera saya publish segera... stay tune vrohh...

Aditya Suranata

Tentang Penulis, Aditya Suranata

Aditya suka menulis, bukan hanya sekedar hobi, menulis menjadi medianya untuk mencurahkan pikiran dan perasaan. Di Miarana DIY kebanyakan menyumbang tulisan sesuai dengan minat dan keahliannya yaitu pada kategori pemrograman dan elektronika. Selain itu juga gemar menulis mengenai hal-hal umum, seperti ilmu alam, sosial dan beberapa pengalamannya yang mungkin bisa berguna untuk orang lain.

lihat artikel lain oleh Aditya Suranata

Artikel Lainnya

Kategori Tulisan

E-Book Terbaru

Teknik Antarmuka MATLAB dan Arduino

Teknik Antarmuka MATLAB dan Arduino - Cover.jpg
Pelajari konsep yang sangat luar biasa antara visualisasi, analisis dan komputasi yang ditawarkan MATLAB dengan Platform Arduino sebagai perangkat...
Jumlah Halaman:
411 Halaman

Video Terbaru

Belum Puas ? Mari Kita Saling Bicara


Join Forum Diskusi MiaranaDIY untuk berdiskusi dengan respon cepat mengenai berbagai macam tutorial hingga ulasan yang terdapat di blog ini. Untuk berlangganan artikel terbaru silahkan Like & Follow Facebook Page MiaranaDIY dan Follow Twitter @MiaranaDIY