ในการควบคุมรถ RC โดยใช้ Arduino และไดรเวอร์มอเตอร์ L298N จะต้องทำตามขั้นตอนเหล่านี้
รวบรวมวัสดุที่จำเป็น:
- BDMC04 บอร์ดอาดุยโน่ Arduino Uno R3 Compatible DIP IC CH340 USB Cable
- BDSP02 บอร์ดขับมอเตอร์ DC Motor Driver L298N
- DC Gear Motor พร้อมล้อ + โครงสร้างรถหรือตัวถังรถเพื่อประกอบฐานล้อ RC4401 โครงรถอลูมิเนียม Aluminum Frame Robot Car 65mm Wheel TT DC Gear Motor
- เครื่องมือช่างที่จำเป็นได้แก่หัวแร้งและตะกั่วบัดกรี
ตั้งค่าฮาร์ดแวร์:
- เชื่อมต่อแหล่งจ่ายไฟเข้ากับโมดูลไดรเวอร์มอเตอร์ L298N
- โมดูล L298N จะต้องมีแหล่งจ่ายไฟแยกต่างหากจาก Arduino เนื่องจากจะต้องขับมอเตอร์ซึ่งต้องใช้กระแสไฟมาก
- เชื่อมต่อมอเตอร์เข้ากับโมดูลไดรเวอร์มอเตอร์ L298N โมดูล L298N มีเอาต์พุตมอเตอร์สองตัวสำหรับมอเตอร์ด้านซ้ายขวาของรถ RC
- เชื่อมต่อมอเตอร์ด้านซ้าย เข้า กับขั้วต่อ M1
- เชื่อมต่อมอเตอร์ด้านขวา เข้า กับขั้วต่อ M2
- เชื่อมต่อโมดูลไดรเวอร์มอเตอร์ L298N เข้ากับ Arduino เชื่อมต่อพิน ENA และ ENB ของโมดูล L298N
- เชื่อมต่อโมดูลไดรเวอร์มอเตอร์ L298Nเข้ากับพินดิจิทัล PWM ของ Arduino
- เชื่อมต่อพิน IN1, IN2, IN3 และ IN4 เข้ากับพินดิจิทัลเอาต์พุตของ Arduino
แผนผังการต่อสายไฟ
https://oshwlab.com/s2insupply/arduino-l298n-rc-robot-car
เขียน Code: arduino
- เขียน Arduino Sketch เพื่อควบคุมมอเตอร์ ใช้ฟังก์ชัน digitalWrite() เพื่อตั้งค่าสถานะของพิน IN1, IN2, IN3 และ IN4 และใช้ฟังก์ชัน analogWrite() เพื่อตั้งค่าความเร็วของมอเตอร์โดยใช้พิน ENA และ ENB
- อัปโหลด Sketch ไปยัง Arduino และทดสอบรถ RC ใช้ฟังก์ชัน digitalWrite() และ analogWrite() ใน Sketch เพื่อควบคุมทิศทางและความเร็วของมอเตอร์ และใช้รีโมทคอนโทรลหรืออุปกรณ์อินพุตอื่นๆ เพื่อส่งคำสั่งไปยัง Arduino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
// Set up constants for the L298 control pins const int in1 = 4; // MOTOR1 DIR const int in2 = 5; // MOTOR1 DIR const int enA = 6; // MOTOR1 SPEED const int in3 = 7; // MOTOR2 DIR const int in4 = 8; // MOTOR2 DIR const int enB = 9; // MOTOR2 SPEED void setup() { // Set up the L298 control pins as outputs pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(enA, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(enB, OUTPUT); } void loop() { // Forward digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 255); // Full speed digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 255); // Full speed // Wait for 1 second delay(1000); // Backward digitalWrite(in1, LOW); digitalWrite(in2, HIGH); analogWrite(enA, 255); // Full speed digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enB, 255); // Full speed // Wait for 1 second delay(1000); // Stop digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); analogWrite(enA, 0); // 0% duty cycle analogWrite(enB, 0); // 0% duty cycle // Wait for 1 second delay(1000); } |