การใช้มอเตอร์กับ Arduino
LOGIN   |   REGISTER    
commandronestore.com         แจ้งชำระเงิน
 
 
 
  STORE  
  PRODUCT  
  LEARNING  
  MEMBER  
  CONTACT  
    0   CART  
 
  0   ORDER
 
Untitled Document
 
เลือกหมวดหมู่สินค้า
 เครื่องกล / หุ่นยนต์
 อิเล็กทรอนิกส์ / ไฟฟ้า
 บอร์ด / คอนโทรลเลอร์
 เครื่องมือช่าง
 Package / ชุด KIT
 
   
     
 
#1
 Motor และ Arduino
Last Update  5 March 2016  
 
 Motor และ Arduino 
 
 
บทบาทของทรานซิสเตอร์
ในบทเรียนนี้ เราจะได้เรียนรู้การต่อวงจรมอเตอร์กับ Arduino อย่างพื้นฐาน ยังไม่พูดถึงการปรับทิศทางและความเร็วรอบ และจะได้รู้ว่า ทำไมถึงต้องนำทรานซิสเตอร์มาใช้ในวงจรด้วยนะ?
 
• มอเตอร์ไฟฟ้ากระแสตรง เป็นหนึ่งในอุปกรณ์ไฟฟ้าที่ปฏิเสธไม่ได้เลยว่า เราต้องใช้มันไม่วันใดก็วันนึง แต่ถ้าเราจับมันมาใช้กับ Arduino ขอเตือนไว้ก่อนนะครับ ว่าอย่าเอามาต่อเข้าด้วยกันโดยตรง ไม่เช่นนั้นบอร์ด Arduino อาจพังได้! ทำไมถึงเป็นเช่นนั้น มาหาคำตอบในบทเรียนนี้กันเลยครับ
 
    SPONSORs
 
 
 
 
     
0
CART
 
0
ORDER
 อุปกรณ์ที่ใช้ในบทเรียนนี้ 
 
  รายการสินค้า     *สามารถเปลี่ยนจำนวนสั่งซื้อได้ที่รถเข็น
 
Arduino UNO R3 +USB
บอร์ด UNO R3 Design in Italy
• ATmega328P
• 14 Pins
฿  310.00 THB
ต่อ 1 ชิ้น
 
DC Motor 130
มอเตอร์กระแสตรง ขนาด 130
• Forward Voltage 3 - 6 V
• Stall Current 0.8 A
• ความเร็วรอบประมาณ 9600 RPM
฿  25.00 THB
ต่อ 1 ชิ้น
 
Untitled Document
TIP120 NPN
NPN Transistor TIP120
• Max Vce 60 Volts
• Max Ic 5 A
• hFE 250 (Saturate)
• hFE 1000
Untitled Document
฿  20.00 THB
ต่อ 1 ชิ้น
Untitled Document
BD139 NPN
NPN Transistor BD139
• Max Vce 80 Volts
• Max Ic 1.5 A
• hFE 10 - 20 (Saturate)
• hFE 25 - 250
Untitled Document
฿  8.00 THB
ต่อ 1 ชิ้น
       
 
     
 
   
Motor และ Arduino  
   
ปัญหาของการต่อวงจร!
เริ่มบทเรียนด้วยปัญหาในการต่อวงจรเลย เพราะปัญหาจะเกิดขึ้นได้ง่ายๆถ้านำมอเตอร์ไปต่อใช้กับ Arduino โดยตรง เพราะอะไรล่ะ?
เนื่องจากคนที่เคยอ่านบทเรียนอื่นๆก่อนหน้านี้ของทางเว็บแล้ว จะทราบดีว่า Digital Pin ของ Arduino โดยเฉพาะรุ่น UNO จะสามารถจ่ายกระแสไฟฟ้าได้เพียง 20 ถึง 40 mA, ซึ่งมันก็โอเคถ้าเรานำไปควบคุมหลอด LED เล็กๆ 1 ถึง 2 หลอด แต่ถ้ามากกว่านั้นเช่นควบคุมไฟเป็นสิบหลอด หรือมอเตอร์ซักตัว คงไม่เวริคแน่ครับ เพราะ Arduino มันจ่ายไฟไม่เพียงพอนั่นเอง
 
อันตรายจากการจ่ายไฟไม่เพียงพอ
อันตรายจะเกิดขึ้นกับตัว Arduino เอง เพราะการที่เรานำ Digital Pin ของ Arduino ไปเป็นทั้งตัวคอนโทรลและแหล่งจ่ายให้กับ LOAD ที่ต้องใช้กระแสสูงๆ จะทำให้มันจ่ายกระแสไม่เพียงพอ หรือที่เรียกว่าไฟตก ซึ่งอาจทำให้บอร์ดพังเสียหายได้ และนอกเหนือจากนั้น ตัวมอเตอร์เอง อาจหมุนได้ไม่เต็มที่ และอาจเกิดความร้อนจนเสียหายได้เหมือนกัน
 
การแก้ปัญหา
ถึงอย่างไร เราก็ยังต้องการใช้ Digital PIN ของ Arduino มาเป็นตัวคอนโทรลมอเตอร์อยู่ดี แต่ปัญหาอยู่ที่มันจ่ายกระแสไม่เพียงพอ เพราะฉะนั้นเราจะต้องมีการขยายกระแส และสิ่งที่เราจะนำมาใช้เป็นตัวขยายกระแสก็คือ "ทรานซิสเตอร์" นั่นเอง
*คำว่าขยายกระแสนี้ ไม่ได้หมายถึง ทำให้ Arduino มีความสามารถในการจ่ายกระแสได้มากขึ้น แต่คือการนำกระแสน้อยๆเหมือนเดิมของ Arduino ไปควบคุมทรานซิสเตอร์ เพื่อให้ทรานซิสเตอร์ไปควบคุมมอเตอร์หรือ LOAD อื่นๆ ที่ต้องการใช้กระแสมากกว่าอีกที โดยแยกแหล่งจ่ายให้กับมอเตอร์ต่างหากด้วย ซึ่งนี่คือหลักการพื้นฐานของทรานซิสเตอร์
 
 
  สิ่งที่ควรรู้ก่อนเริ่มอ่านบทเรียนนี้    
บทเรียนนี้เป็นการสรุปเนื้อหาไม่ให้ยาวจนเกินไป จึงไม่ได้มีการอธิบายเรื่องพื้นฐานของอุปกรณ์ต่างๆอย่างละเอียดนัก เพราะฉะนั้นก่อนที่จะอ่านบทเรียนนี้ต่อ คุณควรมีพื้นฐานเรื่องอุปกรณ์ต่างๆที่ใช้ในบทเรียนนี้ ที่เราเคยเขียนไว้แล้ว ไม่เช่นนั้นคุณอาจจะไม่เข้าใจเนื้อหาโดยรวมของบทเรียนก็ได้ ขอแนะนำให้อ่าน...
 
• ทรานซิสเตอร์คืออะไร และวิธีการคำนวณค่าต่างๆของทรานซิสเตอร์ ต้องรู้จักทรานซิสเตอร์พอสมควรก่อน ไม่เช่นนั้นจะไม่เข้าใจหลักการทำงานของมัน และจะไม่สามารถควบคุมมันได้
 ทรานซิสเตอร์คืออะไร 
 
 การอ่านค่าอัตราขยาย 
 
 การคำนวณทรานซิสเตอร์ 
 
• การคำนวณตัวต้านทานเบื้องต้น ต้องรู้วิธีการคำนวณค่าตัวต้านทานที่จะนำมาใช้กับวงจร ซึ่งเรามีตัวอย่างการคำนวณค่าตัวต้านทานให้กับหลอด LED ซึ่งที่เป็นพื้นฐานที่นำมาประยุกต์กับเรื่องนี้ได้
 ตัวอย่างการคำนวณตัวต้านทาน 
 
 
  LET'S GET STARTED!    
เอาล่ะ ถ้ามีพื้นฐานพอสมควรแล้ว ก็สามารถเริ่มกันได้เลยครับ เริ่มจากต้องเลือกมอเตอร์ก่อน ว่าจะใช้รุ่นไหน แรงดันเท่าไหร่ กระแสเท่าไหร่ (ในบทเรียนนี้ยังไม่เน้นเรื่องเครื่องกล เพราะฉะนั้นจะยังไม่พูดถึงเรื่องแรงบิดและอื่นๆ)
 
 
 STEP#1 เลือกมอเตอร์   
ในที่นี้เราจะใช้มอเตอร์ไฟฟ้ากระแสตรง DC Motor 130 ซึ่งเป็นมอเตอร์พื้นฐาน เหมาะกับบทเรียนนี้ สิ่งที่เราต้องรู้คือ มอเตอร์นี้ใช้แรงดันและกระแสสูงสุดเท่าไหร่?
• แรงดัน (Forward Voltage) คือแรงดันที่มอเตอร์ต้องใช้ในการทำงาน สำหรับมอเตอร์ 130 นี้ จะใช้แรงดันแนะนำอยู่ที่ 3-6 V ซึ่งจริงๆแล้วสามารถใช้ได้ถึง 12 V
• กระแสสูงสุด (Stall Current) การใช้กระแสสูงสุด อาจเกิดตอนที่มอเตอร์เริ่มทำงาน มันจะเกิดการกระชากกระแสในเวลาสั้นๆเท่านั้น เราจึงนิยมหาค่ากระแสสูงสุดจากค่า Stall Current แทน มันคือค่าการใช้กระแสในขณะที่เรานำ LOAD ต่างๆมาติดที่เพลามอเตอร์แล้ว ,LOAD ในที่นี้คืออุปกรณ์ทางกลต่างๆเช่น ใบพัด เฟือง ล้อ เป็นต้น มอเตอร์จะต้องใช้กระแสเพิ่มขึ้นเพื่อเอาชนะภาระที่เพิ่มขึ้นมา สำหรับ Stall Current ของมอเตอร์ 130 นี้ อยู่ที่ประมาณ 0.8 A หรือ 800 mA
 
 
 STEP#2 เลือกทรานซิสเตอร์   
ในที่นี้ จะขอยกตัวอย่างทรานซิสเตอร์ 2 รุ่น เป็นรุ่น BD139 NPN และ TIP120 NPN แล้วเราจะรู้ได้อย่างไรว่าทรานซิสเตอร์ตัวนี้หรือตัวไหน ที่สามารถนำมาใช้กับวงจรนี้ได
วิธีการเลือก
เราจะพิจารณาเลือกทรานซิสเตอร์จาก 3 สิ่งนี้
1.แรงดันสูงสุดที่มันทนได้ ให้ดูจากค่า VCE max ใน Datasheet แรงดัน VCE เป็นแรงดันระหว่างขา CE เป็นแรงดันที่จะต่อต้านแรงดันจากแหล่งจ่าย พิจารณาโดยให้ค่า VCE max > Vcc ซึ่ง ทั้ง BD139 และ TIP120 สามารถทนแรงดันได้หลายสิบโวลต์
2.กระแสสูงสุดที่มันทนได้ ซึ่งเรารู้แล้วว่า มอเตอร์ต้องการใช้กระแสสูงสุดประมาณ 1 A ดังนั้นเราจึงต้องเลือกทรานซิสเตอร์ที่ทนกระแส Ic ได้มากกว่า 0.8 A ขึ้นไป ไม่เช่นนั้นตอนที่มอเตอร์ใช้กระแสสูงสุด ทรานซิสเตอร์อาจจะทนไม่ไหว และเสียหายได้ ซึ่ง BD139 สามารถทนกระแสสูงสุด (Ic Max) ได้ประมาณ 1.5 A ในขณะที่ TIP120 ทนได้ถึง 5 A ซึ่งมากเหลือเฟือ
3.อัตราการขยายต้องมากพอ ทรานซิสเตอร์ทุกตัวมีอัตราขยายหรือที่เรียกว่า Current Gain (hFE หรือ β) ซึ่งทรานซิสเตอร์แต่ละรุ่น β ก็จะไม่เท่ากัน ซึ่งเราสามารถคำนวณค่า β ได้จากสูตร...
 
IC = IB x β
 
สาเหตุที่เรายกตัวอย่างทรานซิสเตอร์ 2 แบบนี้ ก็เพราะจะแสดงให้เห็นเรื่องอัตราขยายของมันนั่นเอง หากใครที่เคยอ่านบทเรียน การอ่านค่าอัตราขยาย มาแล้ว จะพอทราบว่าเรามีวิธีอ่านค่า β 2 แบบ คืออ่านจากตาราง และอ่านจากกราฟ ดังนี้
การอ่านค่า β
1. อ่านจากตาราง ค่า β ที่ได้ จะไม่ใช่ในช่วงอิ่มตัว เพราะฉะนั้น VCE จะยังคงมีค่ามากอยู่ แต่ค่า β ในช่วงนี้ (Active Mode) จะสูงด้วย
2. อ่านจากกราฟ ค่า β ที่ได้จะเป็นค่าในช่วงอิ่มตัว (Saturation) ค่า β จะเหลือน้อย แต่ VCE ก็จะเหลือน้อยที่สุดด้วย
 
  BD139 NPN    
จาก DATASHEET ของมัน ระบุค่า hFE หรือ β ในช่วง 2 โหมดดังนี้
• Active Mode : hFE = 40 ที่กระแส Ic = 150 mA ขึ้้นไป
• Saturation : hFE sat = 20
ถ้าต้องการให้มอเตอร์มีประสิทธิภาพสูงสุด เราจะต้องคิดใน Saturation Mode ซึ่ง hFE หรือ β = 20 ดังนั้น IB ที่เราต้องใช้ = (Ic / β) = (800 / 20) = 40 mA แต่ Arduino จ่ายไฟได้แค่ 20 mA ดังนั้น ถ้าใช้ทรานซิสเตอร์ตัวนี้ เราจะต้องไปคิดช่วง Active Mode แทน
ใน Active Mode ค่า β = 40 ดังนั้น IB ที่ต้องใช้ = (800 / 40) = 20 mA ซึ่ง Arduino สามารถจ่ายได้พอดี ดังนั้นเราสามารถเลือกใช้ BD139 NPN ได้ โดยให้ยึดค่า β = 40 แต่มอเตอร์อาจจะหมุนได้ไม่เต็มที่ เพราทรานซิสเตอร์ยังไม่อิ่มตัว
 
 
 
Mode ของทรานซิสเตอร์ >> อ่านเพิ่มเติม
ทรานซิสเตอร์มีอยู่ 4 โหมดหรือสถานะการทำงาน แต่ในที่นี้จะขอพูดถึง 2 โหมดดังนี้
1.Active Mode คือโหมดพื้นฐานทั่วๆไปของทรานซิสเตอร์ การคำนวณจะค่อนข้างทำได้ยาก เพราะค่าต่างๆไม่คงที่
2.Saturation Mode หรือโหมดอิ่มตัว คือโหมดที่แรงดัน VCE จะเหลือน้อยที่สุด ทำให้อุปกรณ์ที่ต่อกับขา C ได้รับแรงดันมากที่สุด และเรานิยมคำนวณค่าต่างๆจากโหมดนี้ เพราะคำนวณได้ง่ายกว่า Active Mode
 
อย่าเข้าใจผิด!
บางคนเข้าใจว่า VCE คือแรงดันที่จ่ายให้กับขา C แต่จริงๆแล้ว VCE คือแรงดันระหว่างขา C กับ E ซึ่งถ้ามีค่ามากจะทำให้ขา C ได้รับแรงดันจากแหล่งจ่ายน้อย เพราะมันหมายถึงความต่างศักย์ระหว่างแหล่งจ่าย กับขา CE มีน้อย (มาก - มาก = น้อย)
แต่ถ้าแรงดัน CE มีค่าน้อยๆหรือเข้าใกล้ 0 จะทำให้ขา C ได้รับแรงดันจากแหล่งจ่ายมากขึ้น (มาก - น้อย = มาก)
ซึ่งในโหมดอิ่มตัว VCE จะมีค่าน้อยที่สุด ทำให้อุปกรณ์ที่ต่อเข้ากับขา C ได้รับแรงดันสูงสุด ดังนั้นเวลาที่เราอยากจะคำนวณประสิทธิภาพสูงสุด เราจึงนิยมคำนวณจากโหมดอิ่มตัว
 
  TIP120 NPN    
จาก DATASHEET ของมัน ระบุค่า hFE หรือ β ในช่วง 2 โหมดดังนี้
• Active Mode : hFE = 1000 ที่กระแส Ic = 500 mA ขึ้้นไป
• Saturation : hFE sat = 250
และสำหรับทรานซิสเตอร์ตัวนี้ เราสามารถเลือกใช้ค่า β ในช่วง Saturation ได้ เพราะตอนอิ่มตัว มันจะมี β = 250 ดังนั้นต้องการใช้ IB = (800 / 250) = 3.2 mA ซึ่ง Arduino สามารถจ่ายให้ได้สบายๆ ดังนั้นเพื่อประสิทธิภาพการหมุนของมอเตอร์ที่ดี เราจะเลือกใช้ β = 250 ในช่วงอิ่มตัว
 
 1# ตารางค่า β ของ TIP120 NPN 
ตารางจะบอกค่า β ตอนไม่อิ่มตัว ซึ่งหากเราเลือกใช้ค่า β จากตาราง มอเตอร์อาจจะหมุนไม่แรงเท่ากับใช้ค่าจากกราฟ เพราะทรานซิสเตอร์ยังไม่อิ่มตัวนั่นเอง
 
 กราฟค่า β ของ TIP120 NPN 
จากภาพ เป็นกราฟที่แสดงค่า β โหมดอิ่มตัว (Saturate Mode) ซึ่งค่า β = 250 และมากเพียงพอที่จะใช้ค่านี้ ดังนั้นเราจึงเลือกใช้ค่านี้ เพราะจะทำให้มอเตอร์หมุนได้อย่างมีประสิทธิภาพ
 
สรุปได้ว่า เราสามารถใช้ทรานซิสเตอร์ได้ทั้ง 2 ตัว โดยที่ถ้าใช้ BD139 จะต้องกำหนดให้มอเตอร์ทำงานใน Active mode ส่วนถ้าใช้ TIP120 จะสามารถใช้ทรานซิสเตอร์ใน Saturation mode
 
 
 
 STEP#3 เลือกตัวต้านทาน   
ในวงจรนี้เราจะใช้ตัวต้านทานแค่ตัวเดียว คือใช้ต่อกับขาเบส (B) ของทรานซิสเตอร์เท่านั้น ส่วนที่มอเตอร์ เราจะไม่ต่อตัวต้านทานกัน เพราะจะทำให้มอเตอร์ได้กระแสไม่เพียงพอ
วิธีการคำนวณค่าความต้านทาน
RB คือตัวต้านทานที่เอาไว้จำกัดกระแสที่ขาเบส มีสูตรคำนวณคือ...
 
RB = (Vpin - VBE sat) / Ipin
 
• Vpin คือ แรงดันจากPin Arduino ประมาณ 5 V
• VBE sat คือ แรงดันตกคร่อมขา BE ของทรานซิสเตอร์ ณ จุดอิ่มตัว
• Ipin คือ กระแสที่ Pin Arduino จ่ายออกมา ซึ่งควรเผื่อเป็น 20 mA ตามความสามารถในการจ่ายสูงสุดของมัน เพราะจะได้มั่นใจว่ามอเตอร์จะได้รับกระแสเพียงพอตอลดเวลา
 
  BD139 NPN    
VBE sat ของ BD139 NPN มีค่าประมาณ 0.7 Volts
ดังนั้น RB = (5 - 0.7) / 0.02 = 215 Ω
 
  TIP120 NPN    
VBE sat ของ BD139 NPN มีค่าประมาณ 1.5 Volts (ดูจากกราฟ)
ดังนั้น RB = (5 - 1.5) / 0.02 = 175 Ω
 
   
 
 
 
 การต่อวงจรมอเตอร์กับ Arduino 
การต่อวงจรของทั้ง 2 ทรานซิสเตอร์ก็จะคล้ายๆกัน แต่ต่างกันตรงตำแหน่งขาของทรานซิสเตอร์ เพราะตำแหน่งขาของมันต่างกัน
 
 
 
 
 
   
 
Untitled Document
  COMMENTS   0  
 
Your Name
Your Comments...
 
   
   
 
 
     
 
 
MAIN MENU
Yor are going to visit...
 
STORE
Homepage & News
PRODUCT
Shopping at our store
LEARNING
Tutorials & How to
MEMBER
Become our client
CONTACT
Getting more information
 
 
 
 
CONTACT
Contact Commandrone
 
083-0121146
Bangsue, Bangkok
Commandrone Page
Commandrone Channel
thai.commandrone@gmail.com
commandronestore.com
 
 
 
 
  1581 Pageviews today (Approximately)
 
 
     
 
www.commandronestore.com
© 2016 Commandrone All Rights Reserved