04 October 2015

Tutorial 5 - Motor Control - Forward Reverse PART 2

ASSALAMUALAIKUM W.B.T & SALAM SEJAHTERA 


Pada kali ini, saya akan berkongsi cara atau tips yang ke-2 untuk membuat kawalan motor ( mara & songsang). Jika entry sebelum ini saya menggunakan litar geganti, di mana litar ini hanya boleh mengawal sama ada motor berputar mara atau songsang sahaja. MENGAWAL KELAJUAN ADALAH MUSTAHIL jika anda menggunakan litar geganti pada motor anda. Ini adalah satu daripada beberapa kelemahan yang ada pada litar geganti.

Namun begitu, cara kedua ini adalah lebih baik dan efficient jika dibandingkan dengan cara sebelum ini. Ianya adalah dengan menggunakan integrated - circuit (IC) L293D iaitu Dual H-Bridge Motor Control. Harga IC ini di pasaran adalah lebih kurang RM8 ke RM10.00. Dengan menggunakan IC ini, anda boleh:
  1. Membuat kawalan motor (forward & reverse)
  2. Mengawal kelajuan motor
  3. Maksimum 2 buah motor DC boleh digunakan dalam satu - satu masa.
HEBAT BUKAN??? 

IC L293D
Saya akan membincangkan secara ringkas tentang kaedah menyambung IC ini kepada papan Arduino anda.

IC ini mempunyai 16 pin. Jika anda ingin mengawal sebuah motor, anda hanya akan menggunakan hanya 8 pin (sebelah) sahaja. Jika 2 buah motor, anda perlu menggunakan kedua - dua belah IC ini (kiri & kanan).

Pin configuration untuk IC ini adalah seperti gambar di bawah:

L293D Pin Configuration
Untuk memutarkan satu motor, saya mudahkan dalam bentuk senarai:
  • Pin 1 - Enable Pin (Sambung pada mana - mana pin PWM Arduino)
  • Pin 2 - Rotation Pin (Sambung pada mana - mana pin Arduino)
  • Pin 3 - Motor A (Sambung pada motor A+)
  • Pin 4, 5, 12 & 13 -GND (Sambung pada GND Arduino dan GND bekalan kuasa motor)
  • Pin 6 - Motor A (Sambung pada motor A -)
  • Pin 7 - Rotation Pin (Sambung pada pin Arduino)
  • Pin 8 - DC Power (Sambung bahagian positive bateri @ bekalan kuasa untuk motor)
  • Pin 16 - DC Power (Sambung 5V dari Arduino untuk menghidupkan IC ini)
Dalam Proteus, sambungan litar akan kelihatan seperti berikut:

Litar Skematik Proteus untuk L293D
Jika anda perhatikan, saya menyambungkan kaki PWM (pin 11) Arduino pada Enable Pin (EN1) L293D. Ini bertujuan agar saya dapat mengubah kelajuan motor dengan menggunakan function analogWrite.

Untuk pin Input 1 (IN1) dan Input 2 (IN2) pula, saya hanya menggunakan pin digital biasa dari Arduino (pin 12 & pin 13). Ini kerana, pin ini hanya bertujuan untuk mengawal arah rotasi motor sama ada forward atau reverse. Sebagai contoh, jika saya membuat arahan:

digitalWrite (12, HIGH);
digitalWrite (13, LOW);
** motor akan berputar secara forward

digitalWrite (12, LOW);
digitalWrite (13, HIGH);
**motor akan berputar secara reverse

digitalWrite (12, LOW);
digitalWrite (13, LOW);
**motor berhenti berputar


digitalWrite (12, HIGH);
digitalWrite (13, HIGH);
**invalid situation. IC anda berkemungkinan akan rosak

Saya kongsikan program Arduino untuk kawalan rotasi dan kelajuan motor. Sambungan di antara IC, Arduino dan DC motor masih mengikut skematik di atas. Operasi motor adalah seperti berikut:
  1. Forward dalam masa 5 saat dengan kelajuan penuh (PWM = 255), kemudian;
  2. Stop dalam masa 3 saat, kemudian;
  3. Reverse dalam masa 5 saat dengan kelajuan 50% (PWM = 128), kemudian;
  4. Stop dalam masa 3 saat. Ulang operasi 1.

int enablePin = 11;
int motor_Out_A = 12;
int motor_Out_B = 13;

void setup() {

pinMode (enablePin, OUTPUT);
pinMode (motor_Out_A, OUTPUT);
pinMode (motor_Out_B, OUTPUT);
}

void loop() {

analogWrite(enablePin, 255);
digitalWrite(motor_Out_A, HIGH);
digitalWrite(motor_Out_B, LOW);
delay (5000);

analogWrite(enablePin, 0);
digitalWrite(motor_Out_A, LOW);
digitalWrite(motor_Out_B, LOW);
delay (3000);

analogWrite(enablePin, 128);
digitalWrite(motor_Out_A, LOW);
digitalWrite(motor_Out_B, HIGH);
delay (5000);

analogWrite(enablePin, 0);
digitalWrite(motor_Out_A, LOW);
digitalWrite(motor_Out_B, LOW);
delay (3000);

}

 SELAMAT MENCUBA...!!

Like Facebook kami di sini!

26 August 2015

Tutorial 4 - Motor Control - Forward & Reverse PART 1

Assalamualaikum wbt & Salam Sejahtera

Pada kali ini, saya akan menerangkan secara ringkas 2 kaedah yang biasa digunakan untuk mengawal motor. Yang dimaksudkan dengan mengawal di sini adalah motor membuat  rotasi hadapan (forward) dan juga rotasi ke belakang (reverse). Kaedah yang boleh digunakan adalah:
  1. Menggunakan 2 set litar geganti (relay)
  2. Menggunakan IC L293D (H-Bridge Motor Driver)
Untuk Bahagian 1 ini, saya akan menerangkan lebih lanjut cara kawalan motor menggunakan 2 set litar geganti. Terdapat beberapa kelemahan mengawal motor menggunakan litar geganti ini. Antaranya ialah:
  1. Kos litar geganti yang agak mahal.
  2. Hanya boleh mengawal arah rotasi sahaja, bukan kelajuan
 Ramai yang masih tidak faham tentang fungsi litar geganti. Litar geganti biasanya digunakan untuk menghidupkan satu litar yang lain (lebih dari 5V) apabila menerima isyarat dari Arduino.
Sebagai contoh, apabila saya ingin menghidupkan motor DC 12 Volt selepas sensor suhu (LM35) mengesan 40 darjah Celcius, saya memerlukan litar geganti. Ini kerana, Arduino hanya mengeluarkan isyarat 5V dan maksimum 40mA pada satu pin keluaran.

Mana mungkin dengan 5V dan current 40mA boleh menggerakkan satu motor 12V??!!

Dalam kes ini, litar geganti sangat sangat membantu. Isyarat yang dihantar oleh pin Arduino akan mengaktifkan litar geganti melalui transistor yang ada dalam litar tersebut.
Ramai juga yang bertanya pada saya, berapakah maksimum beban yang boleh diletakkan pada keluaran relay? Jawapannya mudah sahaja. Maksimum load yang boleh digunakan biasanya tertera pada badan komponen relay itu sendiri. Saya boleh katakan yang relay boleh menampung sehingga 240V AC / 10 A dan 30V DC / 10A. Besar tu.. Bukan setakat boleh nak hidupkan DC motor 12V,  nak hidupkan lampu pendaflour pun boleh!!

5V Relay
Terdapat beberapa jenis voltan untuk mengaktifkan coil yang ada pada relay. Ada 5VDC, 9VDC, 12VDC dan sebagainya.
Gambar di atas adalah komponen relay jenis 5VDC. Ramai pelajar yang terkeliru  dengan angka tersebut. Mereka ingatkan 5V adalah maksimum beban yang boleh digunakan. Tidak!! Ianya hanyalah nilai voltan yang perlu untuk mengaktifkan coil pada relay. Ini bermaksud, kita perlu letakkan +5VDC pada hujung terminal coil dan GROUND pada hujung yaang satu lagi. Itu sahaja.

Layout Pin Relay

Skematik Litar Geganti

Litar Kawalan Motor Mara Sonsang (Forward Reverse)

17 June 2015

SELAMAT BERPUASA

Mungkin hari-hari yang dilewati telah meninggalkan secuit kenangan yang tak terlupakan,
Ada salah dan khilaf,
Ada dosa yang mengikuti perjalanan hari-hari itu.
Agar tak ada sesal,
Tak ada dendam,
Mari kita sama-sama sucikan hati,diri dan jiwa kita.
Setulus hati memohon keampunan maaf,
 
Marhaban Yaa Ramadhan……

Selamat Menunaikan Ibadah Puasa.

15 June 2015

ANALOG OR DIGITAL INPUT??

Assalamualaikum wbt & Salam Sejahtera

Komponen pengesan (sensors)  atau suis terbahagi kepada 2 kategori iaitu analog dan digital. Adalah sangat penting bagi pengguna untuk mengenalpasti jenis jenis suis dan sensor yang akan digunakan. Ini akan memudahkan kita menulis aturcara pada micro-controller. Entry kali ini akan memberi sedikit tips jenis - jenis input yang ada di pasaran.

Analog Input.

Input jenis ini memberi nilai bacaan berbeza pada keadaan yang berlainan. sebagai contoh, temperature sensor. Semakin tinggi haba dikenakan pada sensor tersebut, bacaan pada sensor akan meningkat. Begitu juga PIR sensor dan ultrasonic sensor. Nilai analog sensor akan berubah jika jarak objek pada sensor tersebut semakin hampir. Ini membolehkan kita menggunakan sensor ini untuk mengukur jarak kerana bacaan analog ini berubah mengikut keadaan (walaupun perubahan kecil). Contoh mudah yang lain adalah variable resistor. Bacaan akan berubah jika VR berubah nilainya.

Digital Input

Digital input hanya boleh berlaku dalam 2 keadaan sahaja iaitu YA atau TIDAK. Tiada nilai selain itu. Contoh terbaik adalah push button switch. Kita hanya boleh tekan (ON) atau release (OFF). Tidak mungkin ada keadaan selain daripada itu. Contoh lain adalah water sensor. Water sensor digunakan untuk mengenalpasti kehadiran air. Oleh itu, hanya ada 2 keluaran bacaan sahaja sama ada ADA AIR atau TIADA AIR. Kita tidak boleh menggunakan water sensor untuk untuk mengukur kuantiti air.




Apabila anda dah membeli sensor, amalkan membuat analogread Serial sensor anda. Kaji bacaan yang dipaparkan pada PC anda. Dari situ, anda akan tahu bagaimana sensor anda beroperasi.

Analog Read Serial