การใช้ Arduino UNO R3 กับ L298N ควบคุมมอเตอร์

Microcontroller

จุดประสงค์

  1. นักเรียนสามารถต่อวงจรในการใช้ Motor Driver ได้
  2. นักเรียนสามารถเขียนโปรแกรมเพื่อใช้   Motor Driver ควบคุม DC Moter ได้
  3. นักเรียนสามารถนำความรู้ที่ได้ไปใช้ในการแก้ปัญหาในชีวิตประจำวันได้

เครื่องมือและอุปกรณ์ในการต่อวงจร ควบคุม DC Motor ด้วย Motor Driver L298N

Arduino Uno R3

Arduino อ่านว่า (อา-ดู-อิ-โน่ หรือ อาดุยโน่) เป็นบอร์ดไมโครคอนโทรเลอร์ตระกูล AVR ที่มีการพัฒนาแบบ Open Sourceคือมีการเปิดเผยข้อมูลทั้งด้าน Hardware และ Software ตัว บอร์ด Arduino ถูกออกแบบมาให้ใช้งานได้ง่าย ดังนั้นจึงเหมาะสำหรับผู้เริ่มต้นศึกษา ทั้งนี้ผู้ใช้งานยังสามารถดัดแปลง เพิ่มเติม พัฒนาต่อยอดทั้งตัวบอร์ด หรือโปรแกรมต่อได้อีกด้วย

  VCC เป็นจุดต่อไฟแรงสูงสำหรับขับมอเตอร์ รองรับตั้งแต่ 5 – 35V (แนะนำให้ใช้สูงสุดแค่ 35V)
GND เป็นจุดต่อกราวด์ร่วม
5V เป็นจุดต่อไฟเลี้ยงวงจร โดยจะต่อมาจาก 5V ของบอร์ด Arduino
          *** ให้สังเกตด้านหลังจะมีจุดจั๊ม 5VEN เราจะใช้ประโยชน์ได้คือหากเราจั๊มจุดนี้ไว้โมดูลจะดึงไฟจาก VCC ไปผ่านไอซี 5V Regulator สำหรับใช้เลี้ยงวงจร ทำให้เราไม่ต้องต่อ 5V มาจาก Arduino แต่หากเราต่อไว้ 5V ของโมดูลจะส่งไฟออกไปเลี้ยงบอร์ด Arduino แทน ทำให้เราไม่ต้องจ่ายไฟให้ Arduino อีก ซึ่งมีจุดที่ควรระวังคือหากเราจั๊มไว้แล้วจะต้องจ่าย VCC ให้มากกว่าที่ใช้งาน 2V สมมติมอเตอร์ 12V จั๊ม 5VEN ไว้ ก็จะต้องจ่ายไฟเข้าที่ VCC เป็น 14V เนื่องจาก L298 เป็น Transistor Dual Full-Bridge ซึ่งทรานซิสเตอร์จะทำให้แรงดันดรอปลง 2V เป็นปกติ
ENA เป็นขาสำหรับควบคุมความเร็วของมอเตอร์ชุด A (ในรูปพิมพ์ OUT1) หากเราจั๊มกับ 5V ด้านหลังไว้จะทำให้มอเตอร์หมุนที่ความเร็วคงที่ แต่หากต้องการควบคุมความเร็วของมอเตอร์ให้หมุนช้าเร็วก็ต้องถอดจั๊มออกแล้วดึงสัญญาณ PWM มาควบคุม ENA แทน
IN1 และ IN2 ใช้ควบคุมทิศการหมุนของมอเตอร์ เหมือนกับที่เราเล่นตอนเด็ก ๆ เลยครับ ถ้าไฟไหลจาก 1 ไป 2 ก็จะหมุนทิศนึง ถ้าไฟไหลจาก 2 มา 1 ก็จะหมุนกลับอีกทิศ
ENB, IN3 และ IN4 ก็มีหน้าที่เหมือนกัน แต่จะเป็นการควบคุมมอเตอร์ชุด B (ในรูปพิมพ์ OUT2) แทนOUT1 และ OUT2, OUT3 และ OUT4 สำหรับต่อสายไฟไปควบคุมมอเตอร์ A และมอเตอร์ B ตามลำดับ

L298N Motor Driver

มอเตอร์ไฟฟ้ากระแสตรง (DC Motor)

เป็นมอเตอร์ที่ต้องใช้ไฟฟ้ากระแสตรง ผ่านเข้าไปในขดลวดเพื่อทำให้เกิดการดูดและผลักกันของแม่เหล็กถาวรกับแม่เหล็กไฟฟ้าที่เกิดจากขดลวดมอเตอร์จึงหมุนได้

การใช้งานกับ Arduino ควบคุมทิศทางของมอเตอร์

การใช้งานเพื่อควบคุมทิศทางของมอเตอร์นั้นก็แสนง่ายดายครับ เมื่อเรารู้แล้วว่าไฟไหลทางนึงมอเตอร์ก็หมุนทิศนึง พอไฟกลับทางมอเตอร์ก็หมุนกลับอีกทาง ฉะนั้นเราก็เขียนโค้ดควบคุมไปตามนั้นเลยครับ โดยวิธีจ่ายไฟแบบไหนได้ผลอย่างไรก็ดังตารางที่ Datasheet บอกไว้ครับ

Inputผลที่ได้
EN = HIGH1 = HIGH ; 2 = LOWมอเตอร์หมุนตามเข็มนาฬิกา
1 = LOW ; 2 = HIGHมอเตอร์หมุนทวนเข็มนาฬิกา
1 = 2หยุดมอเตอร์อย่างรวดเร็ว (เบรกนั่นเอง)
EN = LOW1 = X ; 2 = Xปล่อยให้มอเตอร์ไหลแล้วหยุดเอง

          ก็ตามว่าเลยครับ กลับทิศไฟมอเตอร์ก็หมุนกลับทิศกันไป ทีนี้เมื่อเราจ่ายสัญญาณที่เหมือนกันไป HIGH ทั้งคู่ หรือ LOW ทั้งคู่ก็จะทำให้มอเตอร์เบรกเอี๊ยด ลดความเร็วลงอย่างรวดเร็ว และเมื่อ EN เป็น LOW ก็จะปลดการทำงานทั้งหมด ทีนี้สัญญาณจะเป็นอะไรก็ไม่สนแล้วครับ มอเตอร์จะหมุนตามแรงเฉื่อยค่อย ๆ ลดความเร็วจนหยุดไปเองเหมือนการใส่เกียร์ว่างให้ไหลไป แต่เราจะไม่สนใจครับเนื่องจากเราจะจั๊ม EN ไว้กับ 5V ตลอดเวลา จึงจะมีแค่เดินหน้า ถอยหลัง และเบรก เท่านั้น

คำสั่งในการควบคุม DC Motor โดยใช้ Motor Driver L298N

int l298n_ena=6;
int l298n_in1=2;
int l298n_in2=3;
int l298n_in3=4;
int l298n_in4=5;
int l298n_enb=9;
void setup()
{
pinMode(6, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(9, OUTPUT);
}
void loop()
{
digitalWrite(l298n_in1,LOW);
digitalWrite(l298n_in2,HIGH);
analogWrite(l298n_ena,(255));
digitalWrite(l298n_in3,LOW);
digitalWrite(l298n_in4,HIGH);
analogWrite(l298n_enb,(255));
}

Arduino Block ควบคุม DC Motor ด้วย Motor Driver L298N

การต่อวงจรควบคุม DC Motor ด้วย Motor Driver L298N

การต่อ 2WD Smart Robot Car