PIC Lesson: DC Motor

August 30th, 2010  Posted at   Lesson PIC
, arrow   |   80 Commentsarrow

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.

Berikut adalah videonya.

PIC Source Code

80 Responses to “PIC Lesson: DC Motor”

  1. bukhari says:

    salam,nizam saya nak buat projek mengunakan dua motor.blh tlg x dri segi program n litar skematik..

  2. ashraf says:

    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?

  3. DANIEL says:

    TERIMA KASIH MR.SHAHRULNIZAM..

  4. daniel says:

    dengan menggunakan motor 12v ni,boleh bagi litar penuh dan programmernya skali?untuk kawal pic16f877a.

  5. laxmana says:

    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 ??

  6. wong says:

    kenapa i tak boleh buid ur syntax??? izzit ur syntax right ??

    • Shahrul says:

      wong, saya dah compile source code ni berkali2, ok je. Kalau source code ni error, semua source code lain dalam blog ini juga error.

  7. mtaufiq23 says:

    slm…selepas da kira pwm iaitu freq n duty cyclenya, mcm mane plak nak hantar signal pwm digital tu ke kaki pic sbg output…output ini saya akan guna untuk on-off mosfet untuk drive on-off solenoid…harap saudara dpt explain ckit…sy x dpt figure persoalan ini kerana x nampak pun dlm source code saudara…klau saudara sudi kongsi, bleh emailkan sy source code(.c; .h) tersebut ke ‘mtaufiq23@gmail.com’

  8. FDH says:

    Salam,En.Shahrul. Info yg diberikan sgt berguna. Saya akan memanfaatkannya sebaik mungkin. But I want to ask sumthing here. Sy meggunakan rotary encoder produk dr Cytron dan telahpun sambungkn encoder ini pada PIC. tetapi saya xdapat generated pulses yg sebetulnya. Blh bantu saya dalam masalah ini? saya meggunakan software MicroC.

  9. ummi says:

    assalam en shahrul, boleh saya tahu apa kegunaan KBP306G itu?

  10. Andric says:

    wanna asking, my project is lawn mover controlled by RF module. can U help me in source code. I used PIC16F877A connect to L293D to relay then motor, because my motor use high current, U can see my project block diagram at here>> http://www.electronic-circuits-diagrams.com/forum/viewtopic.php?t=4962&sid=90d50542ab44bbc451b4127e4c29c51b

Leave a Reply

What is 13 + 6 ?
Please leave these two fields as-is:
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)