Hướng dẫn làm robot dò line dùng arduino

-Trái tim của robot là ic Opam Lm393, ic chịu trách nhiệm so sánh tín hiệu đầu vào từ 2 quang trở, từ đó quyết định robot sẽ đi về hướng nào.

-Đầu robot được gắn 2 bóng led rọi thẳng xuống dưới nền, kèm theo đó là 2 cảm biến (quang trở) để đọc tín hiệu phản hồi từ bề mặt và chuyển về ic Lm393. Khi robot hoạt động, 2 bóng led luôn cách vạch đen của nền khoảng 2-3mm, nếu robot đi sai vạch, nó sẽ khiếnled sẽ chiếu vào vạch đen, điều này khiến cho ánh sáng hắt về sensor bị mất, làm mất tín hiệu về ic, lúc này, ic sẽ điều khiển để robot quay lại đúng vạch đen.

Line giao tiếp Arduino là dùng Cảm biến dò line có thể dùng để phát hiện line trắng và đen. Mạch sử dụng cảm biến hồng ngoại TCRT5000 với khoảng cách phát hiện từ 1~25mm giúp dễ dàng trong quá trình cài đặt module lên thiết bị. Mạch cảm biến dò line thích hợp dùng cho các thiết bị cần di chuyển theo line, thiết bị phát hiện màu trắng, đen,… Có thể dễ dàng điều chỉnh độ nhạy của cảm biến qua biến trở được thiết kế sẵn trên board. Mạch cảm biến dò line 4 chân hoặc 3 chân đối với loại đơn và 8 chân đối với loại 5 line thích hợp dùng cho các thiết bị cần di chuyển theo line, thiết bị phát hiện màu trắng, đen,…

Liên hệ làm Đồ án và Mạch điện tử Phone : 0967.551.477 Zalo : 0967.551.477 FB : Huỳnh Nhật Tùng Email : [email protected] Địa Chỉ: 171/25 Lê Văn Thọ, P8, Gò Vấp, Tp HCM Chi tiết: Nhận làm mạch và đồ án Điện tử

Table of Contents

1. Linh kiện cần thiết làm mạch cảm biến Line giao tiếp Arduino

1.1 Vi điều khiển Arduino Uno Line giao tiếp Arduino

a. Giới thiệu

Arduino Uno R3 (Dip) có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối).

Các chức năng khác

Arduino Uno R3 là một bảng mạch vi điều khiển nguồn mở dựa trên vi điều khiển Microchip ATmega328 được phát triển bởi Arduino.cc. Bảng mạch được trang bị các bộ chân đầu vào/ đầu ra Digital và Analog có thể giao tiếp với các bảng mạch mở rộng khác nhau. Mạch Arduino Uno thích hợp cho những bạn mới tiếp cận và đam mê về điện tử, lập trình…Dựa trên nền tảng mở do Arduino.cc cung cấp các bạn dễ dàng xây dựng cho mình một dự án nhanh nhất ( lập trình Robot, xe tự hành, điều khiển bật tắt led…).

Hướng dẫn làm robot dò line dùng arduino
Vi xử lý có rất nhiều loại bắt đầu từ 4 bit cho đến 32 bit, vi xử lý 4 bit hiện nay không còn nhưng vi xử lý 8 bit vẫn còn mặc dù đã có vi xử lý 64 bit. Lý do sự tồn tại của vi xử lý 8 bit là phù hợp với một số yêu cầu điều khiển trong công nghiệp. Các vi xử lý 32 bit, 64 bit thường sử dụng cho các máy tính vì khối lượng dữ liệu của máy tính rất lớn nên cần các vi xử lý càng mạnh càng tốt. Các hệ thống điều khiển trong công nghiệp sử dụng các vi xử lý 8 bit hay 16 bit như hệ thống điện của xe hơi, hệ thống điều hòa, hệ thống điều khiển các dây chuyền sản xuất, …
Hướng dẫn làm robot dò line dùng arduino

b. Chức năng của Arduino R3:

  • 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
  • Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.

Các chức năng khác

  • Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.
  • LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
  • Arduino Uno R3 có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit. Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.

Hướng dẫn làm robot dò line dùng arduino

c.Thông số kỹ thuật Arduino Uno R3 (Dip)

DatasheetsAtmega328Standard Package27CategoryIntegrated Circuits (ICs)FamilyEmbedded – AtmelSeriesAtmegaPackagingTubeCore ProcessorAVRCore Size8-BitSpeed16MHzConnectivityI²C, SPI, UART / USART, USBPeripheralsBrown-out Detec t/ Reset, HLVD, POR, PWM, WDTNumber of I /O14Program Memory Size32KBProgram Memory TypeFLASHEEPROM Size1KBRAM Size2KVoltage – Supply (Vcc/Vdd)4.2 V ~ 5.5 VData ConvertersA/D 6 x 10bitOscillator TypeInternalOperating Temperature-40°C ~ 85°CPackage / Case28-SOIC (0.295″, 7.50mm Width)Other NamesAtmega328

d. Power

  • LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D13. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).
  • VIN: Chân này dùng để cấp nguồn ngoài (điện áp cấp từ 7-12VDC).
  • 5V: Điện áp ra 5V (dòng điện trên mỗi chân này tối đa là 500mA).
  • 3V3: Điện áp ra 3.3V (dòng điện trên mỗi chân này tối đa là 50mA).
  • GND: Là chân mang điện cực âm trên board.
  • IOREF: Điệp áp hoạt động của vi điều khiển trên Arduino UNO và có thể đọc điện áp trên chân IOREF. Chân IOREF không dùng để làm chân cấp nguồn.

e.Bộ nhớ

Vi điều khiển ATmega328:

  • 32 KB bộ nhớ Plash: trong đó bootloader chiếm 0.5KB.
  • 2 KB cho SRAM: (Static Random Access Menory): giá trị các biến khai báo sẽ được lưu ở đây. Khai báo càng nhiều biến thì càng tốn nhiều bộ nhớ RAM. Khi mất nguồn dữ liệu trên SRAM sẽ bị mất.
  • 1 KB cho EEPROM: (Electrically Eraseble Programmable Read Only Memory): Là nơi có thể đọc và ghi dữ liệu vào đây và không bị mất dữ liệu khi mất nguồn.

f. Các chân đầu vào và đầu ra

Trên Board Arduino Uno có 14 chân Digital được sử dụng để làm chân đầu vào và đầu ra và chúng sử dụng các hàm pinMode(), digitalWrite(), digitalRead(). Giá trị điện áp trên mỗi chân là 5V, dòng trên mỗi chân là 20mA và bên trong có điện trở kéo lên là 20-50 ohm. Dòng tối đa trên mỗi chân I/O không vượt quá 40mA để tránh trường hợp gây hỏng board mạch. Ngoài ra, một số chân Digital có chức năng đặt biệt:

  • Serial: 0 (RX) và 1 (TX): Được sử dụng để nhận dữ liệu (RX) và truyền dữ liệu (TX) TTL.
  • Ngắt ngoài: Chân 2 và 3.
  • PWM: 3, 5, 6, 9 và 11 Cung cấp đầu ra xung PWM với độ phân giải 8 bit bằng hàm analogWrite ().
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Các chân này hỗ trợ giao tiếp SPI bằng thư viện SPI.
  • LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D13. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).
  • TWI/I2C: A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.

1.2 Cảm biến Line giao tiếp Arduino

a. Giới thiệu

Line giao tiếp Arduino là dùng Cảm biến dò line có thể dùng để phát hiện line trắng và đen. Mạch sử dụng cảm biến hồng ngoại TCRT5000 với khoảng cách phát hiện từ 1~25mm giúp dễ dàng trong quá trình cài đặt module lên thiết bị. Mạch cảm biến dò line thích hợp dùng cho các thiết bị cần di chuyển theo line, thiết bị phát hiện màu trắng, đen,… Có thể dễ dàng điều chỉnh độ nhạy của cảm biến qua biến trở được thiết kế sẵn trên board. Mạch cảm biến dò line 4 chân hoặc 3 chân đối với loại đơn và 8 chân đối với loại 5 line thích hợp dùng cho các thiết bị cần di chuyển theo line, thiết bị phát hiện màu trắng, đen,…

Hướng dẫn làm robot dò line dùng arduino

b. Thông số kỹ thuật

  • Nguồn cung cấp: 5VDC.
  • Mạch sử dụng chip so sánh LM393.
  • Dòng điện tiêu thụ: <10mA.
  • Dải nhiệt độ hoạt động: 0oC ~ 50oC.
  • Ngõ giao tiếp: 3 dây VCC, GND, DO
  • Mức tín hiệu ngõ ra: TTL.
  • Kích thước: 3.2 x 1.4mm.

c. Nguyên lý hoạt động

  • Kết nối GND với GND, VCC đến 2.4-5VDC.
  • Để có hiệu suất tốt nhất, hãy sử dụng nguồn cung cấp ổn định nhất (trên Arduino, đây sẽ là nguồn cung cấp 3.3V).
  • Dạng nhận biết màu trắng hoặc đen thông qua xuất hiện từ chân OUT.
  • Các đầu ra sẽ có tín hiệu logic khác nhau phù hợp cho màu trắng hoặc đen.

d. Ứng dụng

Cảm biến này có thể được sử dụng để xây dựng các mạch điện tử khác nhau

  • Hệ thống phân biệt màu sản phẩm trắng và đen
  • Mạch gián điệp
  • Tự động hóa trong gia đình
  • Người máy
  • Mạch xe vận chuyển dò line
  • Nhận biết trời sáng hoặc tối
  • Nhận diện phát hiện bật cản

1.3 Module l298 điều khiển động cơ dc dùng Line giao tiếp Arduino

a. Giới thiệu

Module điều khiển động cơ L298 ( mạch cầu H L298) là một module hưu ích, phổ biến với chức năng thông dụng và giá thành cực kỳ rẻ là lựa chọn của các bạn học sinh, sinh viên. Mạch này có thể điều khiển được 2 động cơ. Ứng dụng rất nhiều vào các đề tài: điều khiển xe robot, điều khiển cánh tay robot (Cánh tay robot 3 bậc bạn phải sử dụng tới 2 mô đun này), Arduino để điều khiển động cơ sử dụng mô đun điều khiển động cơ… Module l298 điều khiển được các động cơ như motor giảm tốc, motor mini, động cơ bước, động cơ servo, động cơ dc

Hướng dẫn làm robot dò line dùng arduino

b. Thông số kỹ thuật

  • Driver: L298N tích hợp hai mạch cầu H.
  • Điện áp điều khiển: +5 V ~ +35 V
  • Dòng tối đa cho mỗi cầu H là: 2A
  • Điện áp của tín hiệu điều khiển: +5 V ~ +7 V
  • Dòng của tín hiệu điều khiển: 0 ~ 36mA
  • Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃)
  • Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃

c. Sơ đồ chân module L298

  • 12V power, 5V power: là 2 chân cấp nguồn trực tiếp đến động cơ .
  • Power GND : là chân GND cấp nguồn cho động cơ
  • 2 Jump A enable và B enable dùng cho phép động cơ chạy hoặc dừng
  • IN1, IN2, IN3, IN4: Là 4 chân input , chức năng nhận tín hiệu từ vi điều khiển hoặc Arduino để điều khiển động cơ
  • Output A: nối với động cơ A. bạn chú ý chân +, -. Nếu bạn nối ngược thì động cơ sẽ chạy ngược. Và chú ý nếu bạn nối động cơ bước, bạn phải đấu nối các pha cho phù hợp

1.4 Động cơ dc 12v giảm tốc V1 dùng Line giao tiếp Arduino

a. Giới thiệu

  • Động cơ DC giảm tốc V1 là loại được lựa chọn và sử dụng nhiều nhất hiện nay cho các thiết kế Robot đơn giản, động cơ DC giảm tốc V1 có chất lượng và giá thành vừa phải cùng với khả năng dễ lắp ráp của nó đem đến chi phí tiết kiệm và sự tiện dụng cho người sử dụng, các bạn khi mua động cơ giàm tốc V1 có thể mua thêm gá bắt động cơ vào thân Robot cũng như bánh xe tương thích.
  • Động cơ DC giảm tốc V1 1:48 hộp số kim loại có trục quay và bánh răng của hộp số được làm bằng kim loại cho tuổi thọ và độ bền cao hơn các loại bằng nhựa (các loại bằng nhựa khi chạy 1 thời gian sẽ bị tình trạng các bánh răng nhựa bị rơ, kẹt khiến cho vận tốc động cơ thay đổi theo thời gian), thích hợp để lắp ráp các mô hình Robot, Cơ khí đơn giản.
    Hướng dẫn làm robot dò line dùng arduino

b. Thông số kỹ thuật

  • Điện áp hoạt động: 3V~ 9V DC (Hoạt động tốt nhất từ 6 – 8V)
  • Dòng không tải: 70mA (250mA MAX)
  • Mômen xoắn cực đại: 800gf cm min 1:48 (3V)
  • Tốc độ không tải: 125 Vòng/ 1 Phút (3V) (Với bánh 66mm: 26m/1p) 208 Vòng/ 1 Phút (5V) (Với bánh 66mm: 44m/1p)

1.5 Khung xe dùng Line giao tiếp Arduino

a. Giới thiệu

Khung xe robot 3 bánh được thiết kế phù hợp với các yêu cầu chế tạo robot dò đường, robot do thám, robot tránh vật cản, có thể lắp ghép với cánh tay robot để điều khiển. Là sản phẩm để làm robot mô hình, đặc biệt phù hợp với Arduino. Xe được thiết kế rất đẹp, chắc chắn có thể hoạt động linh hoạt, các bánh xe được lắp ghép đối xứng, giữ cân bằng và chính xác trong di chuyển. Trọn bộ khung xe robot 3 bánh bao gồm đầy đủ các chi tiết được lắp ghép gọn gàng.

Hướng dẫn làm robot dò line dùng arduino

b. BÁNH XE

Có 2 bánh cố định được gắn chặt với động cơ làm nhiệm vụ truyền lực cho xe chạy: được làm bằng nhựa, lốp xe làm bằng cao su mềm, có độ bám đường tốt, chắc chắn. Kích thước đường kính bánh xe 65mm. 1 bánh xe dẫn động giúp xe chạy đa hướng. Vật liệu từ nhựa và thép, có vòng bi xoay.

c. ĐỘNG CƠ

2 Động cơ có hộp giảm tốc, có thể lập trình băm xung để điều chỉnh tốc độ của động cơ. Sử dụng nguồn nuôi có mức điện áp hoạt động 3 – 6V.

d. KHUNG XE ROBOT 3 BÁNH

Được làm bằng nhựa có nhiều lỗ sẵn để bắt ốc vào những vị trí cần thiết để gắn board mạch Arduino, đế pin, công tắc, động cơ, bánh trước để gắn các board mạch gắn cảm biến. Kích thước của khung là 220×150mm.

2. Hướng dẫn đồ án Line giao tiếp Arduino điều khiển xe dò line

Phần cứng

Hướng dẫn làm robot dò line dùng arduino

Phần mềm

// Định nghĩa các chân int ENA = 3; int IN1 = 1; int IN2 = 2; int ENB = 6; int IN3 = 4; int IN4 = 5; // tốc độ động cơ là 80

define ENASpeed 80

define ENBSpeed 80

// khai báo tất cả các cảm biến điều không tín hiệu) int Sensor1 = 0; int Sensor2 = 0; int Sensor3 = 0; int Sensor4 = 0; void setup() {   pinMode(ENA, OUTPUT);   pinMode(IN1, OUTPUT);   pinMode(IN2, OUTPUT);   pinMode(ENB, OUTPUT);   pinMode(IN3, OUTPUT);   pinMode(IN4, OUTPUT);   pinMode(Sensor1, INPUT);   pinMode(Sensor2, INPUT);   pinMode(Sensor3, INPUT);   pinMode(Sensor4, INPUT); } void loop(){   //đọc giá trị các chân   analogWrite(ENA, ENASpeed);   analogWrite(ENB, ENBSpeed); // đọc cảm biến là sáng nếu vào đường đen, đèn cảm biến tắt khi lệch đường   Sensor1 = digitalRead(8);   Sensor2 = digitalRead(9);   Sensor3 = digitalRead(10);   Sensor4 = digitalRead(11);   if(Sensor4 == HIGH && Sensor3 == HIGH && Sensor2 == LOW && Sensor1 == LOW){ // rẻ trái nếu cảm biến 3 và 4 lệch đường //động cơ trái dừng     digitalWrite(IN1, LOW);     digitalWrite(IN2, LOW);     //motor B Forward // động cơ phải tiến     digitalWrite(IN3, LOW);     digitalWrite(IN4, HIGH);

  }   else if (Sensor4 == LOW && Sensor3 == LOW && Sensor2 == HIGH && Sensor1 == HIGH){ // rẻ trái nếu cảm biến 1 và 2 lệch đường // động cơ trái tiến     digitalWrite(IN1, LOW);     digitalWrite(IN2, HIGH);

//động cơ phải dừng     digitalWrite(IN3, LOW);     digitalWrite(IN4, LOW);   }   else if (Sensor4 == LOW && Sensor3 == LOW && Sensor2 == LOW && Sensor1 == LOW){ //tất cả động cơ dừng lại nếu xe hoàn toàn lệch khỏi đường     digitalWrite(IN1, LOW);     digitalWrite(IN2, LOW);     digitalWrite(IN3, LOW);     digitalWrite(IN4, LOW);

  }    else if (Sensor4 == HIGH && Sensor3 == HIGH && Sensor2 == HIGH && Sensor1 == HIGH){ //tất cả động cơ dừng lại nếu tất cả cá cảm biến điều trên đường     digitalWrite(IN1, LOW);     digitalWrite(IN2, LOW);     digitalWrite(IN3, LOW);     digitalWrite(IN4, LOW);   }   else{     //if(Sensor4 == LOW && Sensor3 == HIGH && Sensor2 == HIGH && Sensor1 == LOW // nếu cảm biến 4 và 1 nằm ngoài đường đen, cảm biến 2,3 trên đường đen thì xe chạy tới     digitalWrite(IN1, LOW);     digitalWrite(IN2, HIGH);     digitalWrite(IN3, LOW);     digitalWrite(IN4, HIGH);   } }

3. Hoạt động của mạch cảm biến line giao tiếp Arduino

Khi cấp điện hệ thống hoạt động, vi điều khiển hiển thị thông tin ban đầu. lúc này vi điều khiển chờ tín hiệu từ module cảm biến line gửi vào. Khi nhận tín hiệu từ cảm biến dò line giao tiếp arduino thì kích xe hoạt động theo line đã được lập trình quy định.