DC Motor adalah motor elektrik yang menggunakan arus terus (DC – Direct Current). DC Motor mempunyai dua terminal sahaja. Motor akan berpusing apabila dua terminal tersebut diberikan voltan mengikut keperluannya misalnya 12V. Arah pusingannya pula bergantung kepada polarity bekalan.

Bagi mengawal DC Motor menggunakan microcontroller, H-bridge driver digunakan. H-bridge driver contohnya L293 atau L298. L298 adalah untuk kegunaan arus motor yang lebih tinggi. Dengan driver ini, terdapat dua input yang membolehkan mengawal arah pusingan motor sama ada pusingan jam ataupun lawan pusingan jam. Juga terdapat input enable yang membolehkan mengawal kelajuan motor dengan memberikan PWM kepada pin tersebut. Di bawah adalah litar DC Motor menggunakan L298.

Kelajuan motor diukur dalam revolutions perminute (rpm) ataupun bilangan pusingan dalam satu minit. Bagi mengira pusingan per minit, encoder bersama dengan infrared sensor digunakan. Encoder adalah plate yang mempunyai bilah yang diletakkan supaya berpusing bersama shaft motor. Infrared akan membaca bilah-bilah tersebut untuk menghasilkan pulse. Ianya bergantung kepada bilangan bilah encoder tersebut.
Misalnya, saya menggunakan encoder yang mempunyai 8 bilah. Oleh itu, 1 pusingan motor akan menghasilkan 8 pulse. Bagaimana ingin menukarkan kepada unit rpm.
Di dalam program PIC, tetapkan jangka masa untuk mengira bilangan pulse. Misalnya dalam jangka masa 0.5 saat. Di dalam masa 0.5s, apabila motor berpusing akan menghasilkan x bilangan pulse. Pengiraan rpm adalah seperti rumus di bawah.

Contoh program mengawal dua DC Motor adalah seperti di bawah. Menggunakan program PWM PIC Lesson, mengawal arah pusingan motor dan kelajuan motor.
Berikut adalah videonya.
w/salam, ashraf. Program tu untuk motor, boleh je la. Tambah dgn program LCD.
Assalam en shahrul,
Project saya memerlukan pengawalan 2 motor Dc oleh button yang berlainan.
2 LCD juga digunakan untuk paparan putaran / hasil keluaran setiap motor Dc.
Soalan saya,
Boleh xprogram yang en sertakan diatas dimasukkan dalam program pic saya ini?
TERIMA KASIH MR.SHAHRULNIZAM..
daniel, boleh guna litar dan program di atas. Lebih baik guna PIC16F887 drpd PIC16F877A.
dengan menggunakan motor 12v ni,boleh bagi litar penuh dan programmernya skali?untuk kawal pic16f877a.
ws, configuration PIC16F877A berbeza. Guna je la PIC16F887, lebih baru drpd PIC16F877A.
ws, configuration PIC16F877A berbeza. Guna je la PIC16F887, lebih baru berbanding PIC16F877A.
salam en shahrul,kalau sy nak buat mcm project ni,tp guna PIC 16F877A, coding yg digunakan sama x dengan PIC yg en pakai ni ??
wong, saya dah compile source code ni berkali2, ok je. Kalau source code ni error, semua source code lain dalam blog ini juga error.
kenapa i tak boleh buid ur syntax??? izzit ur syntax right ??