2013年5月3日 星期五

Ardunio範例04:使用Arduino產生PWM 驅動直流小馬達

之前有一篇"使用555產生PWM 驅動馬達"是我們用手去控制可變電阻,來調整duty time。然後這次我們想更進一步在電腦上直接控制馬達的速度,所以就結合目前正在練習的Ardunio,產生PWM的訊號,去控制馬達。也請參閱"Ardunio範例三" 裡面就是說明如何從Ardunio丟出PWM訊號的。

Video
註:為了可以更明顯地表達速度變化,我分成五段的速度,每段各停留3秒鐘。
       等上升到最高的速度之後,再降回來。


接線


Code:

-----------------------------
相關文章:
單H橋式電路控制IC應用 (TA7257P 控制直流馬達的轉向)
雙H橋式電路控制IC應用 (TA7279P 可同時控制兩顆直流馬達的轉向)

70 則留言:

  1. 您好!想請問如果我的馬達是12V,我一樣使用1815與1384兩顆電晶體嗎?

    回覆刪除
    回覆
    1. 我會建議用ULN2003可耐的電壓流比較好,不過要注意他是sink的 (也就是電流是流入pin腳的)。

      刪除
  2. 您好,請問你上面的接線圖中,紅色的"+"號是指給馬達的額外電源嗎?
    謝謝

    回覆刪除
    回覆
    1. 是的,看您的馬達要吃的電源要幾伏

      刪除
  3. 請問...我想知道您馬達正電的部分是外接電源還是arduino上的5V??
    我們目前需要用到這東西,可是試不出來,我的電容用陶瓷電容OK嗎還是需要你那種的呢??
    我們的馬達我試過沒接馬達輸出電壓是5V,接了之後變3V,這樣是不是代表馬達吃2V電壓?

    麻煩您幫忙解答了

    回覆刪除
    回覆
    1. 馬達要的電力應該是要外接,電容種類應該沒差,我記得當初好像用10uF,看馬達。
      至於接了之後,電壓會下降,應該就是電源不夠力了 (阻抗問題),所以用外接的。Arduino只負責訊號,而非電源。

      刪除
  4. 你好,想請問為什麼要同時用兩個電晶體呢?

    回覆刪除
    回覆
    1. 這是所謂典型達靈頓電路,經第一個電晶體放大的電流可以進一步再放大,以得到極大的電流增益。不過當然也有現成的達靈頓電路的晶片!

      刪除
  5. 請問如何讀取可變電阻的電壓,驅動LED
    如,電壓2.3V,則亮LED1及LED2,電壓3.7V,則亮LED1,LED2,LED3及LED4,電壓0.3V,則都不亮

    回覆刪除
    回覆
    1. 同學 在考試嗎

      刪除
    2. 同學,我離開需要考試的日子已經許多年囉!
      你的問題我不是很清楚,你是想要用可變電阻控制某些指定的LED亮嗎?如果是這樣的話,你需要直接寫Code,利用 analogWrite 取得可變電阻的壓差,再用比大小的方式定義出不同的Case,最後指定各別Case需要亮那幾顆LED燈。希望這樣有解答您的問題。

      刪除
  6. 您好
    若我要再進一步控制馬達的正反轉的話
    L298N接在馬達端可行嗎?
    謝謝

    回覆刪除
  7. 請問如果直接把馬達正極接Arduino13腳,負極接地然後沒有接達靈頓電路的話可以有同樣的效果嗎???

    回覆刪除
    回覆
    1. 應該推不動,因為這種小馬達起動電流都要蠻大的。你還是要用達靈頓電路外加電流來驅動。

      刪除
  8. 您好,除了接H橋之外,可以在加達靈頓電路以增加輸出至馬達的電流嗎??
    要麼接??
    感謝

    回覆刪除
    回覆
    1. 通常H橋就有電流放大的功能了,如果真的不夠用,的確可以再加放大電路,ULN2003很好用。查一下型錄就有說明怎麼接了!

      刪除
  9. 請問上面那影片的接線方式是跟接線圖一樣的嗎
    怎麼好像看起來有點不一樣
    接線上面馬達並接的電容跟二極體是要用什麼樣的規格呢
    問題有點多不好意思
    可以幫我解答嗎
    感謝

    回覆刪除
    回覆
    1. 接線應該沒有問題,電容用10u或100u試試看,太久了,我有點忘了 (我是當下直接抓來試的)
      二極體,你用4001就可以了

      刪除
  10. 你好,我想請問...
    我用的馬達:
    工作電壓:DC6-12V(推薦9V1A /12V1A)
    工作電流:0.5-0.7A
    請問二極體跟電容要怎麼選呢?
    感謝!!!

    回覆刪除
  11. 你好
    我所使用的arduino 是uno r3
    和L9110S H橋
    可是卻無法調速
    不曉得是否在接線方面有接錯?

    回覆刪除
  12. 請問一下,上面的轉速0~250是RPS還是RPMㄚ?看起來都不太像

    回覆刪除
    回覆
    1. 都不是也,那是digital 0~255 (256-1) 的分割。也就是說 arduino pwm 輸出可以細到8 bits

      刪除
  13. 您好
    我想請問 我記得電動機跟馬達構造都是一樣
    只是電生磁 磁生電的問題
    那當通電馬達轉動時是否會產生輸出電流呢?
    謝謝

    回覆刪除
    回覆
    1. 的確會產生反電動勢,但這些反電動勢的操作跟運用,可以請教一些馬達的專家。

      刪除
  14. 想請問一下這個電路如果不用電容和電晶體可已達成嗎

    回覆刪除
  15. 電容倒是可以不必,不過總是會需要電晶體,不論是文章上的這一種,或是達靈頓電晶體(如ul2003),還是H橋式電路等等。

    回覆刪除
  16. 我想請問一下我沒有用電晶體結果馬達只會一直轉這是因為沒有電晶體的關係嗎

    回覆刪除
  17. 想問大哥
    有沒有simulink的接法圖呢???
    小的要用simulinlk做控制

    回覆刪除
  18. 想請問一下24V的馬達 一樣可以使用Ardunio給的PWM訊號嗎?

    回覆刪除
    回覆
    1. 如果是這樣的話,PWM只能用來控制閘門,控制達靈頓電晶體來決定 開或關 電流的速度。Arduino的板子無法供應24V

      刪除
  19. 請問
    這電路馬達由外接電源供電,arduino應該是類似開關的功能(這樣解釋不知對/錯),可是你前面還放了個放大電路,是不是通知訊號太小也無法驅動電路,為什麼呢?

    回覆刪除
    回覆
    1. 是的,arduino做為訊號的控制者,不會供應主要電源。

      刪除
  20. 請問
    1.馬達上方二極體,及下方電容是什麼功用呢?我有隻充電式電動起子的電池,原來有三個接腳,2隻是正/負極,第三隻跟電池負極接了一個長的像陶瓷電容的東西,被我自己換成18650電池時不會接拆掉了。現在只要遇大負載(鎖緊一點時)就跳電,要等一下才能用。想接回第三腳怎麼選電容。起子是12v,1.3Ah

    回覆刪除
    回覆
    1. 抱歉我不懂電子,又想修復家中幾隻電動工具
      麻煩你費心了 謝謝

      刪除
    2. 電池的電容與馬達上的電容功能不太一樣

      電池上的電容,是預備來給突然需要大電流時預備的能量空間。
      而馬達上的電容是為了提供相差用的,讓啟動順利。
      所以您提出的觀察是對的,沒有電容,你瞬間大電流輸出時,輸出會不足。

      至於怎麼挑選,我就不是很有把握,因為跟原始設計有關
      你可以拿幾個來試,反正不是太危險,

      刪除
    3. thanks
      電容大小有個大概值嗎?還是有什麼依據,要挑那種電容呢?
      你比較懂先給的大概,我再來試。放心爆炸了我不會找你的,應該没那麼誇張吧?

      刪除
  21. 我不太會接電路 紅紅那個是什麼 電容旁邊那個

    回覆刪除
  22. 請問arduino可以直接接達靈頓驅動小馬達嗎 我只需要控制轉速部分的功能

    回覆刪除
    回覆
    1. 不太懂您的意思,原本的圖,您還要再刪掉那一個部分嗎?

      刪除
  23. 作者已經移除這則留言。

    回覆刪除
  24. 請問如果需要控制兩顆馬達(速度一樣)的話,
    能夠直接用並聯或串聯的方式加在原先的馬達旁邊(加上二極體和電容)嗎

    回覆刪除
    回覆
    1. 這樣做馬達是會跑沒錯,理論上若並聯的兩顆馬達是完全一樣的東西,速度理應一樣。但真實世界不是這麼美滿的,你最後會發現,速度很接近,但一定有些微的差別。就看你的要求要多準了!

      刪除
  25. 您好,請問一片Arduino能在馬達電源外接的情況下輸6組PWM信號控制6組伺服馬達嗎?因為我要做能行走的機械手臂,機械手臂要4顆伺服馬達,另外兩顆下面輪子要用的~謝謝

    回覆刪除
    回覆
    1. 可以啊,買有至少 6 個PWM輸出的arduino板子就可以了。

      刪除
  26. 請問 如果是已經模組化的DC風扇 只有INA INB GND VCC 這4隻腳 可以做PWM控制嗎

    回覆刪除
  27. 請問和馬達並聯二極體的功能是甚麼?

    回覆刪除
  28. 獲益良多! 感謝你的分享與回覆

    回覆刪除
  29. 請問一下,如果我想讓我的Arduino車循跡行走並計算距離要怎麼做?可以給我一個方向嗎?

    回覆刪除
  30. 您好,由於學校的專題需要使用到以PWM控制直流馬達轉速的技術
    礙於Arduino的電流無法驅動,所幸看到您的教學並實作成功
    在此跟您說聲謝謝了:D

    回覆刪除
  31. 您好請問..能不能加您FB好友 我有一些專題藍芽控制的部分想請問您..跟這個類似 但是是12V馬達.燈條 要控制轉速.亮到滅

    回覆刪除
  32. 7個PWM輸出的arduino板子,要去哪買。

    回覆刪除
    回覆
    1. 作者已經移除這則留言。

      刪除
    2. 抱歉再問一個,要控制7個12V的直流馬達,Arduino板子可以嗎?

      刪除
  33. 您好我有些問題想問,可不可以跟您要你的gmail方便跟您聯絡?

    回覆刪除
  34. 想向您請教一下,我想用一個pwm腳位控制一組3v,1.4A的led燈條,請問電路圖要怎麼配置比較安全?
    謝謝

    回覆刪除
  35. 不想用8051或Arduino驅動.有什方式可以直接驅動5V步進馬達正反轉?

    回覆刪除
  36. 請問使用12V DC 風扇 pwm 控制轉速,當我analogWrite(FAN_OUT, 0);風扇為什麼還是會轉動呢

    回覆刪除
  37. 請問要如何利用薄膜按鍵控制多個步進馬達呢?)))

    回覆刪除