ការប្រើប្រាស់ Arduino នៅក្នុងវិស័យមនុស្សយន្ត (Robotics) ឫប្រព័ន្ធបញ្ជារផ្សេងៗតែងតែផ្តោតលើការបញ្ចារទៅលើម៉ូទ័រទាំងខ្នាតតូច និងខ្នាតធំ។
នៅក្នុងអត្ថបទនេះ យើងនឹងទៅសិក្សារពីមូលដ្ឋានគ្រឹះនៅក្នុងការបញ្ជារម៉ូទ័រទាំងទិសដៅ(Direction) និងល្បឿន(Speed) ដោយផ្នែកទៅលើការប្រើប្រាស់ PWM។
ឧបករណ៍ប្រើប្រាស់៖
- Arduino UNO ប្រើប្រាស់ជាអ្នកគ្រប់គ្រងបញ្ជារ។
- L298N ប្រើប្រាស់ក្នុងការបញ្ជារមូទ័រ អាចប្រើម៉ូទ័របាន២ដាច់ដោយលែកពីគ្នាក្នុងពេលតែមួយ។
- 9V Battery ជាថាមពលសម្រាប់ផ្គត់ផ្គង់ម៉ូទ័រ។
- Mini DC Motor សម្រាប់សាកល្បង។
- Jumper Wire សម្រាប់ភ្ជាប់សៀគ្វី។
ការប្រើប្រាស់ L298N៖
L298N ជាប្រភេទ Driver ដែលមានពីរផ្នែក(2 channels)អាចអោយបញ្ជារម៉ូទ័របាន២ដាច់ដោយលែកពីរគ្នានៅលើ Driver តែមួយ។ តង់ស្យុងសម្រាប់បញ្ជារម៉ូទ័រប្រើបានចន្លោះ 5V-35V និងចរន្តអិបរមា 2A។
Image credit to howtomechatronics.com |
ជាទូទៅយើងប្រើប្រាស់ជើងបញ្ជារដូចខាងក្រោម៖
- ENA: ជាសញ្ញា PWM សម្រាប់ល្បឿនម៉ូទូ័រ A (OUT1, OUT2)។
- IN1: ជាជើងបញ្ជារទិសដៅរង្វិលរបស់ម៉ូទ័រ A។
- IN2: ជាជើងបញ្ជារទិសដៅរង្វិលរបស់ម៉ូទ័រ A។
- IN3: ជាជើងបញ្ជារទិសដៅរង្វិលរបស់ម៉ូទ័រ B។
- IN4: ជាជើងបញ្ជារទិសដៅរង្វិលរបស់ម៉ូទ័រ B។
ការរៀបសៀគ្វី៖
ការសរសេរកូដ៖
កូដខាងក្រោមនឹងធ្វើការបញ្ជារម៉ូទ័រទៅមុខ ទៅក្រោយ និងឈប់ដើម្បីសាកល្បងក្នុងការប្រើប្រាស់ L298N ជាមួយ Arduino។ កូដខាងក្រោមមាន២ ដោយទី១ ជាការសរសេរដោយមិនប្រើ Library (ការសរសរផ្ទាល់) និងទី២ប្រើប្រាស់ Library មួយដើម្បីអោយកូដសរសេរតិចជាងមុននិងងាយស្រួលមើល។
១. សរសេរមិនប្រើ Library
២.ប្រើប្រាស់ Library
Download Library: https://github.com/eTRONICSKH/L298N-Driver-Arduino-Library
កូដខាងក្រោមនឹងធ្វើការបញ្ជារម៉ូទ័រទៅមុខ ទៅក្រោយ និងឈប់ដើម្បីសាកល្បងក្នុងការប្រើប្រាស់ L298N ជាមួយ Arduino។ កូដខាងក្រោមមាន២ ដោយទី១ ជាការសរសេរដោយមិនប្រើ Library (ការសរសរផ្ទាល់) និងទី២ប្រើប្រាស់ Library មួយដើម្បីអោយកូដសរសេរតិចជាងមុននិងងាយស្រួលមើល។
១. សរសេរមិនប្រើ Library
- #define ENA 9
- #define IN1 7
- #define IN2 6
- void setup() {
- pinMode(ENA, OUTPUT);
- pinMode(IN1, OUTPUT);
- pinMode(IN2, OUTPUT);
- }
- void loop() {
- //Forward for 100pwm
- analogWrite(ENA, 100);
- digitalWrite(IN1, 1);
- digitalWrite(IN2, 0);
- delay(3000);
- //Stop motor
- analogWrite(ENA, 0);
- digitalWrite(IN1, 0);
- digitalWrite(IN2, 0);
- delay(3000);
- //Backward for 100pwm
- analogWrite(ENA, 100);
- digitalWrite(IN1, 0);
- digitalWrite(IN2, 1);
- delay(3000);
- }
២.ប្រើប្រាស់ Library
Download Library: https://github.com/eTRONICSKH/L298N-Driver-Arduino-Library
- /*
- * L298N Dual Channel driver library
- * Version : 1.0
- * Status : Simple Library
- * web: https://www.etronicskh.com/
- *
- */
- #include <L298N.h>
- #define ENA 9
- #define IN1 7
- #define IN2 6
- L298N motorA(IN1, IN2, ENA);
- void setup() {
- motorA.init();
- }
- void loop() {
- motorA.setPWM(150); //Rotate forward with 150 PWM value
- delay(5000);
- motorA.setPWM(0); //Stop
- delay(3000);
- motorA.setPWM(-200); //Rotate backward with 200 PWM value
- delay(3000);
- }