การใช้ Arduino UNO R3 กับ L298N ควบคุมมอเตอร์ อุปกรณ์ที่ต้องใช้ก็คือ1. Arduino UNO R3 - Made in italy2. Motor Drive Module L298N3. Jumper (M2M) cable wire 40pcs 2.54mm 20cm Male to MaleH-Bridge เป็นโมดูลที่ใช้ในการควบคุมความเร็วและทิศทางของมอเตอร์ และยังสามารถนำไปประยุกต์ใช้กับ Project อื่นได้อีกด้วย เช่น ตัวหรี่ไฟในบ้าน หรือที่หรี่ไฟในไฟฉายตีกบ แต่การใช้หลอดใส้ทำให้เราเห็นการกระพริบน้อยมากกว่าใน LedH-Bridge เป็นวงจรที่สามารถใช้ควบคุมกระแสได้ทั้งขั้วบวกและลบด้วยการควบคุม pulse width modulation (PWM) เป็นการควบคุมแบบ digital ที่มีการนำมาใช้กันมาก โดยส่วนมากเพื่อเป็นการประหยัดพลังงานและ สามารถควบคุม Out Put ได้ โดยมีการกระตุ้นอย่างต่อเนื่อง ซึ่งทำให้เกิดการสูญเสียพลังงานน้อยมาก กล่าวคือวงจรพวกนี้จะมีการปล่อยการสูญเสียพลังงานน้อยกว่าวงจรรุ่นเก่าๆ มาก โดยเฉพาะการควบคุมโวลต์หลอดกระแส out putPWM(Pulse Width Modulation) คืออะไรPWM คือเทคนิดการส่งสัญญาณแบบสวิต หรือ ส่งค่าดิจิตอล 0-1 โดยให้สัญญาณความถี่คงที่ การควบคุมระยะเวลาสัญญาณสูงและสัญญาณต่ำ ที่ต่างกัน ก็จะทำให้ค่าแรงดันเฉลี่ยของสัญญาณสวิต ต่างกันด้วย
สำหรับโมดุล PWM ของ Arduino มีความละเอียด 8 bit หรือ ปรับได้ 255 ระดับ ดังนั้นค่าสัญญาณ 0 โวลต์ถึง 5 โวลต์ จะถูกแสดงเป็นสัญญาณแบบดิจิตอล จะได้ 0 ถึง 255 ซึ่งเราสามารถเทียบสัดส่วนคำนวนจากเลขจริง เป็น เลขทางดิจิตอลได้ตัวอย่างถ้า 5V = 255 1.0v จะเท่ากับค่าเท่าไร = 255/5.0V*1.0V = 51L298N Dual Full-bridge motor driver module (Red PCB) และการต่อวงจร กับ Arduino UNO R3 (ขา ENA และ ENB ถ้ามี Jumper ต่ออยู่ให้ถอดออก)
ภาพรวมการต่อวงจร
หมายเหตุ : จากการทดลองการต่อวงจร ตามรูปด้านล่าง ทดสอบ กับ บอร์ด Arduino UNO R3 ต่อกับ คอมพิวเตอร์ ผ่านทางสาย USB มอเตอร์ ทั้ง 2 ตัว สามารถ ทำงานได้ โดยไม่ต้อง ต่อ แบตเตอรี่ 9 V และ เมื่อทดลองถอดสาย USB จากคอมพิวเตอร์ออก แล้ว ป้อนไฟเข้าทางพอร์ต Power Supply ของ บอร์ด Arduino UNO R3 ก็สามารถทำงานได้ตามปรกติเช่นเดียวกัน
โปรแกรมที่จะเขียนต่อไปนี้ แสดงการสั่งให้ Motor A และ Motor B หมุนขึ้นหน้า (Forward) เพื่อทดสอบการต่อวงจร และ เข้าใจคำสั่งในการควบคุม Motor โดย บอร์ด Arduino UNO ขา 2 , 3 , 6 จะควบคุมมอเตอร์ A และ ขา 4 , 5 , 7 จะควบคุมมอเตอร์ Bเปิดโปรแกรม Arduino (IDE) เขียน โค้ด และ Upload ไปยังบอร์ด Arduino UNO ดังนี้// Motor A
int dir1PinA = 2;
int dir2PinA = 3;
int speedPinA = 6; // เพื่อให้ PWM สามารถควบคุมความเร็วมอเตอร์
// Motor B
int dir1PinB = 4;
int dir2PinB = 5;
int speedPinB = 7; // เพื่อให้ PWM สามารถควบคุมความเร็วมอเตอร์
void setup(){ Serial.begin(9600);
//กำหนด ขา เพื่อใช้ในการควบคุมการทำงานของ Motor ผ่านทาง L298N
pinMode(dir1PinA,OUTPUT);
pinMode(dir2PinA,OUTPUT);
pinMode(speedPinA,OUTPUT);
pinMode(dir1PinB,OUTPUT);
pinMode(dir2PinB,OUTPUT);
pinMode(speedPinB,OUTPUT);}
void loop(){
// Motor A
analogWrite(speedPinA, 255); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง
digitalWrite(dir1PinA, LOW);
digitalWrite(dir2PinA, HIGH);
// Motor B
analogWrite(speedPinB, 255); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง
digitalWrite(dir1PinB, LOW);
digitalWrite(dir2PinB, HIGH);}