1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế bộ kit thực hành arduino ứng dụng điều khiển thiết bị, giao tiếp với các cảm biến thông dụng và truyền thông với máy tính

77 32 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 3,49 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1. Lý do chọn đề tài (10)
  • 2. Mục tiêu nghiên cứu (10)
  • 3. Nhiệm vụ nghiên cứu (11)
  • 4. Đối tƣợng và phạm vi nghiên cứu (11)
  • 5. Phương pháp nghiên cứu (11)
  • CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ BỘ KIT ARDUINO VÀ PHẦN MỀM LABVIEW (12)
    • 1.1. Tổng quan về bộ kit Arduino (12)
      • 1.1.1. Thành phần của board Arduino Mega 2560 (12)
      • 1.1.2. Thông số kỹ thuật (13)
      • 1.1.3. Chi tiết về board mạch (14)
      • 1.1.4. Chức năng của mỗi khối (15)
      • 1.1.5. Chương trình cơ bản của Arduino (17)
    • 1.2. Tổng quan về phần mềm LabView (18)
      • 1.2.1. Chức năng chính của phần mềm LabVIEW (18)
      • 1.2.2. Những khái niệm cơ bản đƣợc sử dụng trong phần mềm LabVIEW (18)
      • 1.2.3. Các kỹ thuật lập trình trên LabVIEW (20)
      • 1.2.4. Chức năng của từng khối (24)
    • 1.3. Truyền thông với máy tính thông qua firmware Linx và phần mềm LabVIEW . 18 1. Nhân LIFA (27)
      • 1.3.2. Nhân LINX (29)
  • CHƯƠNG 2:MỘT SỐ BÀI THÍ NGHIỆM THIẾT KẾ TRÊN BỘ KIT ARDUINO SỬ DỤNG CÁC CẢM BIẾN THÔNG DỤNG (0)
    • 2.1. Sơ lƣợc về các linh kiện điện tử (34)
      • 2.1.1. Điện trở (thường) (34)
      • 2.1.2. LED siêu sáng 5mm (LED đơn) (34)
      • 2.1.3. Nút nhấn (Botton) (35)
      • 2.1.4. Tụ gốm (35)
      • 2.1.5. LCD 20x4 (36)
      • 2.1.6. Cảm biến DHT 21 (AM2301) (36)
      • 2.1.7. Cảm biến siêu âm HY-SRF05 (đo khoảng cách) (37)
      • 2.1.8. PIR sensor alarm. Cảm biến phát hiện chuyển động (38)
      • 2.1.9 Module cảm biến mƣa (39)
      • 2.1.10. Cảm biến dò line đơn TCRT5000 (41)
      • 2.1.11. Module đo thời gian thực (Realtime-clock) DS3231 (42)
    • 2.2. Một số bài thí nghiệm thực hiện trên bộ kit Arduino (43)
      • 2.2.1. Chương trình LED nhấp nháy theo yêu cầu (43)
      • 2.2.2. Chương trình thay đổi độ sáng của đèn LED (43)
      • 2.2.3. Điều khiển 8 LED bằng 8 chân Digital của Arduino (43)
      • 2.2.4. Xác định trạng thái của nút nhấn (44)
      • 2.2.5. Dùng nút nhấn để điều khiển một đèn LED (45)
      • 2.2.6. Đo khoảng cách trong không gian với cảm biến SRF05 (45)
      • 2.2.7. Lập trình Arduino với cảm biến phát hiện chuyển động PIR (47)
      • 2.2.8. Lập trình Arduino với cảm biến mƣa (47)
      • 2.2.9. Chương trình phát hiện line trắng và đen nhờ cảm biến dò line đơn (48)
      • 2.2.10. Xem thời gian bằng module đo thời gian thực DS3231 (49)
      • 2.2.11. Chương trình giám sát nhiệt độ, độ ẩm môi trường sử dụng cảm biến DHT (52)
    • 2.3. Các bài thí nghiệm giao tiếp giữa Arduino và LabVIEW thông qua nhân LINX . 45 1. Ví dụ về chương trình giao tiếp với cảm biến nhiệt độ và truyền về máy tính 45 2. Chương trình đo nhiệt độ môi trường hiển thị trên LCD (54)
  • CHƯƠNG 3: BÀI THÍ NGHIỆM ĐIỀU KHIỂN ĐỘNG CƠ, GIAO TIẾP CẢM BIẾN VÀ TRUYỀN THÔNG VỚI MÁY TÍNH (59)
    • 3.1. Giới thiệu sơ lƣợc về bộ điều khiển (59)
    • 3.2. Giới thiệu các linh kiện sử dụng trong bộ điều khiển (59)
      • 3.2.1. Động cơ DC 12 V (59)
      • 3.2.2. Bóng đèn 6.2 V (61)
      • 3.2.3. Cảm biến dòng điện MAX471-3A (61)
      • 3.2.4. Module điều khiển động cơ DC BTS7960 43A (62)
      • 3.2.5. Cảm biến đo nhiệt độ DS18B20 (-55°C đến +125°C) (64)
    • 3.3. Nguyên lý hoạt động của bộ điều khiển tốc độ động cơ (65)
    • 3.4. Sơ đồ khối toàn mạch (66)
    • 3.5. Sơ đồ nguyên lý của toàn mạch (67)
      • 3.5.1. Khối điều khiển trung tâm (68)
      • 3.5.2. Khối điều khiển động cơ (68)
      • 3.5.3. Động cơ và máy phát (68)
      • 3.5.4. Khối nguồn (68)
      • 3.5.5. Khối hiển thị (68)
      • 3.5.6. Khối phím nhấn (68)
      • 3.5.7. Các cảm biến (69)
    • 3.6. Công thức tính điện áp (69)
    • 3.7. Code chương trình trên Arduino (70)
    • 3.8. Code trên LabView (73)
  • TÀI LIỆU THAM KHẢO (76)

Nội dung

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA VẬT LÝ LÊ THỊ MỸ HẠNH THIẾT KẾ BỘ KIT THỰC HÀNH ARDUINO ỨNG DỤNG ĐIỀU KHIỂN THIẾT BỊ, GIAO TIẾP VỚI CÁC CẢM BIẾN THÔNG DỤNG VÀ TRUYỀN THÔ

Mục tiêu nghiên cứu

Với mục đích tạo ra các bài thí nghiệm ghép nối, giao tiếp thiết bị và điều khiển tự động hóa trong các phép đo vật lý sử dụng kit Arduino, nghiên cứu này đặt ra mục tiêu: Thiết kế, chế tạo và chạy demo bộ thí nghiệm dựa trên bộ kit Arduino nhằm mô phỏng việc điều khiển các thiết bị, giao tiếp với các cảm biến thông dụng và truyền thông với máy tính

Nhiệm vụ nghiên cứu

- Nghiên cứu bộ vi xử lí và kit Arduino

- Nghiên cứu lập trình trên bộ kit Arduino và các ứng dụng của nó

- Nghiên cứu nhân firmware LINX trên Arduino và phần mềm Labview trên máy tính để giao tiếp Arduino với máy tính

- Thiết kế bộ thí nghiệm dùng bộ kit Arduino ứng dụng để điều khiển các thiết bị, cảm biến

- Thực nghiệm trên mô hình bộ kit cụ thể.

Đối tƣợng và phạm vi nghiên cứu

Bộ kit Arduino và cách thức giao tiếp trong điều khiển thiết bị, các cảm biến thông dụng và truyền thông với máy tính

- Nghiên cứu cách thức bộ vi xử lý Arduino điều khiển thiết bị, giao tiếp cảm biến và truyền thông với máy tính

- Nghiên cứu thiết kế mô hình thí nghiệm cụ thể bao gồm các linh kiện điện tử, các cảm biến thông dụng nhƣ: Cảm biến dòng điện, cảm biến phát hiện chuyển động, cảm biến siêu âm, cảm biến đo nhiệt độ… hay các module điều khiển tốc độ động cơ, module đo thời gian thực… trên bộ kit Arduino, hiển thị và giao tiếp với máy tính.

Phương pháp nghiên cứu

- Nghiên cứu và khảo sát các tài liệu về nguyên lý hoạt động và cách lập trình bộ kit Arduino cùng với các thiết bị kèm theo

- Nghiên cứu thực nghiệm phương thức truyền thông với máy tính thông qua phần mềm LabView và các nhân firmware

GIỚI THIỆU TỔNG QUAN VỀ BỘ KIT ARDUINO VÀ PHẦN MỀM LABVIEW

Tổng quan về bộ kit Arduino

Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn Nói rõ hơn Arduino là một board mạch vi xử lý được dùng để lập trình tương tác với các thiết bị phần cứng như cảm biến, động cơ, đèn và các thiết bị khác

Phần cứng bao gồm một board mạch nguồn mở đƣợc thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit Những Model hiện tại đƣợc trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau Ở đề tài khóa luận này, em sử dụng board mạch Arduino Mega2560 là một vi điều khiển sử dụng dòng vi xử lý 8-bit mega AVR của Atmel với chip ATmega2560

1.1.1 Thành phần của board Arduino Mega 2560

Arduino Mega 2560 là board mạch vi điều khiển, xây dựng dựa trên Atmega

2560 Nó có 54 chân I/O (trong đó có 15 chân có thể sử dụng làm chân ouput với chức năng PWM), 16 chân đầu vào Analog, 4 UART, 1 thạch anh 16MHz, 1 cổng USB, 1 jack nguồn, 1 header, 1 nút nhấn reset Nó chứa mọi thứ cần thiết hỗ trợ cho người lập trình vi điều khiển, đơn giản chỉ việc kết nối nó với máy tính bằng cable USB là có thể bắt đầu học tập Mach Arduino 2560 sử dụng tương thích với phần lớn các Shield của Arduino UNO

 54 chân digital (trong đó có 15 chân có thể đƣợc sủ dụng nhƣ những chân

PWM là từ chân số 2 → 13 và chân 44, 45, 46)

 6 ngắt ngoài: chân 2 (interrupt 0), chân 3 (interrupt 1), chân 18 (interrupt 5), chân 19 (interrupt 4), chân 20 (interrupt 3), and chân 21 (interrupt 2)

 16 chân vào analog (từ A0 đến A15).

 4 cổng Serial giao tiếp với phần cứng:

CỔNG SERIAL CHÂN RX CHÂN TX

Bảng 1.1: 4 cổng Serial giao tiếp với phần cứng

 1 thạch anh với tần số dao động 16 MHz

Arduino Mega2560 khác với tất cả các vi xử lý trước vì không sử dụng FTDI- chip điều khiển chuyển tín hiệu từ USB để xử lý Thay vào đó, nó sử dụng ATmega16U2 lập trình nhƣ là một công cụ chuyển đổi tín hiệu từ USB

Chip xử lý ATmega2560 Điện áp hoạt động 5V Điện áp đầu vào (đƣợc đề nghị) 7-12V Điện áp đầu vào (giới hạn) 6-20V

Số lƣợng chân I / O 54 (trong đó có 15 cung cấp sản lƣợng PWM)

Số lƣợng chân Input Analog 16

Dòng điện DC mỗi I / O 20 mA

Dòng điện DC với chân 3.3V 50 mA

Bộ nhớ flash 256 KB, trong đó có 8 KB sử dụng bởi bộ nạp khởi động

Tốc độ đồng hồ 16 MHz

Bảng 1.2: Thông số kỹ thuật của board Arduino

1.1.3 Chi tiết về board mạch

Hình 1.1: Mặt trước và mặt sau của board mạch Arduino

Hình 1.2b Hình 1.2: Chi tiết board mạch

1.1.4 Chức năng của mỗi khối:

Các dòng vi xử lý này cho phép lập trình các ứng dụng điều khiển phức tạp do đƣợc trang bị cấu hình mạnh với các loại bộ nhớ ROM, RAM và Flash, các ngõ vào ra digital I/O trong đó có nhiều ngõ có khả năng xuất tín hiệu PWM, các ngõ đọc tín hiệu analog và các chuẩn giao tiếp đa dạng nhƣ UART, SPI, TWI (I2C)

1.1.4.1 Đọc tín hiệu cảm biến cổng vào

Các board mạch Arduino đều có các cổng digital có thể cấu hình làm ngõ vào hoặc ngõ ra bằng phần mềm Do đó người dùng có thể linh hoạt quyết định số lượng ngõ vào và ngõ ra Tổng số lƣợng cổng digital trên mạch dùng Atmega2560 là 54

Các board mạch Arduino đều có trang bị các ngõ vào analog với độ phân giải 10- bit (1024 phân mức, ví dụ với điện áp chuẩn là 5V thì độ phân giải khoảng 0.5mV) Số lượng cổng vào analog là 16 đối với Atmega2560 Với tính năng đọc analog, người dùng có thể đọc nhiều loại cảm biến nhƣ nhiệt độ, áp suất, độ ẩm, ánh sáng, …

1.1.4.2 Xuất tín hiệu điều khiển cổng ra

Tương tự như các cổng vào digital, người dùng có thể cấu hình trên phần mềm để quyết định dùng ngõ digital nào là ngõ ra Tổng số lƣợng cổng digital trên mạch dùng Atmega2560 là 54

Trong số các cổng digital, người dùng có thể chọn một số cổng dùng để xuất tín hiệu điều chế xung PWM Độ phân giải của các tín hiệu PWM này là 8-bit Số lƣợng cổng PWM đối với các board dùng Atmega2560 là 14 PWM có nhiều ứng dụng trong viễn thông, xử lý âm thanh hoặc điều khiển động cơ.

1.1.4.3.1 Serial Đây là chuẩn giao tiếp nối tiếp đƣợc dùng rất phổ biến trên các board mạch Arduino Mỗi board có trang bị một số cổng Serial cứng (việc giao tiếp do phần cứng trong chip thực hiện) Bên cạnh đó, tất cả các cổng digital còn lại đều có thể thực hiện giao tiếp nối tiếp bằng phần mềm (có thư viện chuẩn, người dùng không cần phải viết code) Mức tín hiệu của các cổng này là TTL 5V Lưu ý cổng nối tiếp RS-232 trên các thiết bị hoặc PC có mức tín hiệu là UART 12V Để giao tiếp đƣợc giữa hai mức tín hiệu, cần phải có bộ chuyển mức, ví dụ nhƣ chip MAX232 Số lƣợng cổng Serial cứng của Atmega2560 là 4 Với tính năng giao tiếp nối tiếp, các board Arduino có thể giao tiếp đƣợc với rất nhiều thiết bị nhƣ PC, touchscreen,…

Các board Arduino tiêu chuẩn đều có trang bị một cổng USB để thực hiện kết nối với máy tính dùng cho việc tải chương trình Tuy nhiên các chip AVR không có cổng USB, do đó các bo Ardunino phải trang bị thêm phần chuyển đổi từ USB thành tín hiệu UART Do đó máy tính nhận diện cổng USB này là cổng COM chứ không phải là cổng USB tiêu chuẩn.

1.1.4.3.3 SPI Đây là một chuẩn giao tiếp nối tiếp đồng bộ có bus gồm có 4 dây Với tính năng này các board Arduino có thể kết nối với các thiết bị nhƣ LCD, bộ điều khiển video game, bộ điều khiển cảm biến các loại, đọc thẻ nhớ SD và MMC…

1.1.4.3.4 TWI (I2C) Đây là một chuẩn giao tiếp đồng bộ khác nhƣng bus chỉ có hai dây Với tính năng này, các board Arduino có thể giao tiếp với một số loại cảm biến nhƣ thermostat của CPU, tốc độ quạt, một số màn hình OLED/LCD, đọc real-time clock, chỉnh âm lƣợng cho một số loại loa…

1.1.4.3.5 Môi trường lập trình board mạch Arduino

Thiết kế board mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại nhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm Ngôn ngữ lập trình của Arduino chính là C/C++, nhƣng so với lập trình lập trình trực tiếp với vi điều khiển, lập trình với Arduino đơn giản hơn nhiều vì bạn chỉ phải giao tiếp với phần cứng thông qua các thƣ viện Và quan trọng là số lƣợng thƣ viện code đƣợc viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn Có khá nhiều các library viết sẵn để điều khiển ngoại vi: LCD, sensor, motor nên việc bạn cần làm chỉ là kết hợp chúng với nhau để tạo ứng dụng cho riêng bạn

1.1.5 Chương trình cơ bản của Arduino

Chương trình Arduino có thể được chia làm 3 phần: cấu trúc (structure), biến số (variable) và hằng số (constant), hàm và thủ tục (function)

Một chương trình cơ bản bao gồm hai phần chính đó là setup() và loop()

- setup() là nơi bạn có thể khai báo các giá trị biến, khai báo thƣ viện, thiết đặt thông số Nó sẽ chạy một lần duy nhất sau bạn cấp nguồn cho arduino, cho đến khi bạn reset lại hệ thống

Tổng quan về phần mềm LabView

– LabVIEW là ngôn ngữ lập trình rất khác với các ngôn ngữ lập trình khác nhƣ C, Java Bằng cách diễn đạt cú pháp thông qua hình ảnh, LabVIEW đã đƣợc gọi với tên là lập trình G- tức là lập trình đồ họa (viết tắt của Graphical: đồ họa)

– LabVIEW đƣợc ứng dụng trong nhiều lĩnh vực nhƣ tự động hóa, điều khiển, điện tử , điện tử y sinh, cơ điện tử ,…

1.2.1 Chức năng chính của phần mềm LabVIEW

 Thu thập tín hiệu từ các thiết bị bên ngoài nhƣ cảm biến nhiệt độ, hình ảnh từ webcam, vận tốc của động cơ,…

 Giao tiếp với các thiết bị ngoại vi thông qua nhiều chuẩn giao tiếp thông qua các cổng giao tiếp: RS232, RS485, USB, PCI, Ethernet

 Mô phỏng và xử lý các tín hiệu thu nhận đƣợc để phục vụ các mục đích nghiên cứu hay mục đích của hệ thống mà người lập trình mong muốn

 Xây dựng các giao diện người dùng một cách nhanh chóng và thẩm mỹ hơn nhiều so với các ngôn ngữ khác nhƣ Visual Basic, Matlab,

 Cho phép thực hiện các thuật toán điều khiển nhƣ PID, Logic mờ (Fuzzy

Logic), một cách nhanh chóng thông qua các chức năng tích hợp sẵn trong LabVIEW

 Cho phép kết hợp với nhiều ngôn ngữ lập trình truyền thống nhƣ C, C++,…

1.2.2 Những khái niệm cơ bản đƣợc sử dụng trong phần mềm LabVIEW

1.2.2.1 VI (Vitual Instrument) – Thiết bị ảo

Lập trình LabVIEW đƣợc thực hiện trên cơ sở là các thiết bị ảo (VI) Các đối tƣợng tỏng các thiết bị ảo đƣợc sử dụng để mô phỏng các thiết bị thực, nhƣng chúng được thêm vào bởi phần mềm Các VI tương tự như các hàm trong lập trình bằng ngôn ngữ

1.2.2.2 Front Panel và Block Diagram

Một chương trình trong LabVIEW gồm 2 phần chính: một là giao diện với người sử dụng (Front Panel), hai là giao diện dạng sơ đồ khối cung cấp mã nguồn (Block Diagram) và các biểu tƣợng kết nối (Icon/Connector)

Front panel là một panel tương tự như panel của thiết bị thực tế Ví dụ các nút bấm, nút bật, các đồ thị và các bộ điều khiển Từ Front Panel người dùng chạy và

10 quan sát kết quả có thể dùng chuột, bàn phím để đƣa dữ liệu vào sau đó cho chương trình chạy và quan sát Front Panel thường gồm các bộ điều khiển (Control) và các bộ hiển thị (Indicator)

Control là các đối tƣợng đƣợc đặt trên Front Panel để cung cấp dữ liệu cho chương trình Nó tương tự như đầu vào cung cấp dữ liệu

Indicator là đối tƣợng đƣợc đặt trên Front Panel dùng để hiện thị kết quả, nó tương tự như bộ phận đầu ra của chương trình

Hình 1.3: Giao diện Front Panel của phần mềm LabVIEW

Block diagram của một VI là một sơ đồ được xây dựng trong môi trường LabVIEW, nó có thể gồm nhiều đối tƣợng và các hàm khác nhau để tạo các cấu trúc lệnh để chương trình thực hiện Block Diagram là một mã nguồn đồ họa của một VI Các đối tƣợng trên Front Panel đƣợc thể hiện bằng các thiết bị đầu cuối trên Block Diagram, không thể loại bỏ các thiết bị đầu cuối trên Block Diagram Các thiết bị đầu cuối chỉ mất đi sau khi loại bỏ đối tượng tương ứng trên Front panel Cấu trúc của một Block Diagram gồm các thiết bị đầu cuối (Terminal), nút (Node) và các dây nối (wire)

Hình 1.4: Block Diagram của phần mềm LabVIEW

Icon (biểu tƣợng): là biểu tƣợng của VI, đƣợc sử dụng khi từ một VI muốn sử dụng chức năng của một VI khác Khi đó VI đó được gọi là SubVI, nó tương đương như một chương trình con trong các ngôn ngữ khác

Connector (đầu nối): là một phần tử của Terminal dùng để nối các đầu vào và đầu ra của các VI với nhau khi sử dụng Mỗi VI có một Icon mặc định hiển thị trong bảng Icon ở góc trên bên phải cửa sổ Front Palette và Block Diagram

Khi các VI đƣợc phân cấp và module hóa thì ta có thể dùng chúng nhƣ các chương trình con Do đó để xây dựng một VI ta có thể chia thành nhiều VI thực hiện các chức năng đơn giản và cuối cùng kết hợp chúng lại với nhau thành một khối để thực thi những công việc cụ thể trong một chương trình

1.2.3 Các kỹ thuật lập trình trên LabVIEW

Khác với những ngôn ngữ lập trình khác, ngôn ngữ lập trình LabVIEW ngoài những menu quen thuộc giống nhƣ những ngôn ngữ khác LabVIEW còn sử dụng các bảng: Tools Palette, Controls Palette, Function Palette, chính những bảng này làm cho LabVIEW khác với các ngôn ngữ sử dụng những câu lệnh rườm rà khó nhớ Các bảng đó cung cấp các chức năng để người sử dụng có thể tạo và thay đổi trên Front Panel và Block Diagram bằng các biểu tƣợng, các hình ảnh trực quan giúp cho việc sử dụng trở nên dễ dàng, linh động hơn

Tool Panel xuất hiện trên cả Font Panel và Block Diagram Bảng này cho phép người sử dụng có thể xác lập các chế độ làm việc đặc biệt của con trỏ chuột Khi lựa chọn một công cụ, biểu tƣợng của con trỏ sẽ đƣợc thay đổi theo biểu tƣợng của công cụ đó Nếu thiết lập chế độ tự động lựa chọn công cụ và người sử dụng di chuyển con trỏ qua các đối tƣợng trên Front Panel hoặc Block Diagram, LabVIEW sẽ tự động lựa chọn công cụ phù hợp trên bảng Tool Palette

1.2.3.2 Controls Palette (bảng điều khiển)

Bảng điều khiển chỉ duy nhất xuất hiện trên Front panel Bảng điều khiển chứa các bộ điều khiển (control) và các bộ hiển thị (Indicator) Bảng điều khiển đầy đủ được minh họa như hình bên đưới Để mở bảng controls palette ta vào menu View, chọn controls palette

Bảng điều khiển được sử dụng để người sử dụng thiết kế cấu trúc mặt hiển thị gồm các thiết bị ví dụ: các công tắc, các loại đèn, các loại màn hình hiển thị… Với bảng điều khiển này, người sử dụng có thể chọn các bộ thiết bị chuẩn do hãng sản xuất cung cấp ví dụ công tắc nhưng cũng có thể chọn các thiết bị do người sử dụng tự xây dựng Bảng điều khiển dùng để cung cấp dữ liệu đầu vào và hiển thị kết quả đầu ra

Hình dưới đây là một số bộ điều khiển điển hình của LabVIEW

Bộ công cụ này dùng để hiện thị và điều khiển dữ liệu dạng số trong chương trình LabVIEW

Bộ công cụ này cung cấp hai giá trị là True và False Khi thực hiện chương trình người sử dụng sử dụng chuột để điều khiển giá trị của thiết bị Việc thay đổi giá trị của các thiết bị chỉ có tác dụng khi các thiết bị đó đƣợc xác lập ở chế độ là các Control Còn nếu ở chế độ là các Indicator thì giá trị không thay đổi vì chúng chỉ là các thiết bị hiển thị

Truyền thông với máy tính thông qua firmware Linx và phần mềm LabVIEW 18 1 Nhân LIFA

Bằng phần mềm LabVIEW, ta có thể dễ dàng viết giao diện và truyền thông với board arduino thông qua 2 nhân LIFA (LabVIEW Interface for Arduino) hoặc LINX.

- Đây là một module trong gói phần mềm mở rộng VI Package Manager của LabVIEW Với module này, ta có thể biến arduino thành một I/O mở rộng của máy tính

1.3.1.1 Cài đặt phần mềm VIPM

- Khi máy tính đã cài sẵn phần mền LabVIEW, thì tiếp sau đó ta cài đặt phần mềm

VI Package Manager (VIPM) Đây là phần mềm quản lý cũng nhƣ giúp chúng ta download các gói module VI của LabVIEW

- Sau khi cài đặt xong ta vào VIPM và tìm giao diện Arduino cho LabVIEW với từ khóa “LabVIEW Interface for Arduino” Sau đó cài đặt LabVIEW Interface for Arduino cho LabVIEW

Hình 1.14: Giao diện của phần mềm VIPM

- Tiếp đến ta kết nối Arduino với máy tính qua cổng USB

- Nạp mã nguồn cho Arduino để có thể giao tiếp với LabVIEW theo đường dẫn sau:

C:\ProgramFiles(x86)\NationalInstruments\LabVIEW2017\vi.lib\LabVIEW interface for Arduino\Firmware\ LIFA_Base

Ngay sau đó, Trình dịch IDE Arduino sẽ tự hiển thị:

Hình 1.15 : Giao diện IDE Arduino hiển thị ngau sau khi được nạp mã nguồn để giao tiếp với LabVIEW

1.3.1.2 Demo điều khiển LED trong Example làm ví dụ

Mở ví dụ "Arduino BlinkM.vi" trong thƣ mục "LabVIEW Interface for

Arduino" Có 4 đèn hiện thị trên board Arduino:

 Đèn báo Nguồn (Power LED)

 Đèn báo ở chân Led số 13 Khi giao tiếp với máy tính thành công thì đèn TX và

 Bấm nút "RUN" để chạy chương trình

Ta có thể thấy với nhân LIFA này, ta có thể giao tiếp với một số cảm biến thông dụng thông qua khối chương trình có sẵn trong LabView Toàn bộ hoạt động của Arduino đều là do máy tính điều khiển Hay nói cách khác, Arduino chỉ là một card mở rộng I/O cho máy tính Do đó nhân LIFA này chƣa tận dụng đƣợc hết sức mạnh của bộ thƣ viện riêng trên Arduino và Arduino chỉ có thể hoạt động khi đƣợc điều khiển bằng máy tính chứ không chạy độc lập nhƣ một realtime-target Do đó ta sẽ không đề cập đến nhân này

1.3.2 Nhân LINX Đây cũng là module mở rộng của LabView do bên thứ ba là Digilent viết, dùng để giao tiếp, truyền thông với Arduino một cách dễ dàng Nhƣng với nhân này, ta tận dụng đƣợc các khối truyền thông có sẵn trên LabView để truyền số liệu cũng nhƣ điều khiển arduino, mặt khác vẫn có thể tùy chỉnh nhân LINX trên arduino bằng cách lập trình bằng chương trình Arduino IDE như thông thường Do đó ta có thể tận dụng đƣợc nguồn thƣ viện dồi dào của arduino, có thể làm Arduino này chạy độc lập hoàn toàn và cũng có thể giao tiếp với máy tính một cách dễ dàng

Cách cài module này cũng tương tự như LIFA: Ta có thể tải thông qua gói cài đặt VI Package Manager

1.3.2.1 Đối với các ứng dụng cơ bản

Với các ứng dụng không cần đòi hỏi phải dùng với các cảm biến phức tạp không có trong khối lập trình Labview, ta có thể lập trình trực tiếp trên Labview và nạp nhân firmware LINX gốc xuống cho arduino

- Trước hết, ta nạp nhân firmware LINX gốc xuống cho arduino

- Mở phần mềm Labview lên, chọn Tool\Maker Hub\LINX\LINX Firmware Wizard

- Ta chọn các thông số nhƣ sau rồi nhấn tiếp tục

Hình 1.16: Các thông số cần chọn khi cài đặt nhân LINX

- Tiếp tục chọn cổng Com kết nối với arduino

- Ta để mặc định nhƣ hình rồi chọn Next để nạp firm ware này xuống arduino Sau khi nạp firmware xong, ta chọn Launch Example để mở các bài tập mẫu

Hình 1.17: Bài tập ví dụ tự điều khiển nhấp nháy LED

- Ta phải chọn Serial Port:COM3, chọn chân Digital Output Channel : 13

- Kích chuột vào nút màu xanh LED Control, nếu nút đó sáng thì LED sáng và ngƣợc lại Từ đó ta sẽ tự điều khiển LED nhấp nháy, sáng tắt nhƣ ý muốn

Hình 1.18: Đoạn code của chương trình Manual Blink

1.3.2.2 Đối với các ứng dụng nâng cao Đối với các ứng dụng nâng cao, cần tận dụng thƣ viện của Arduino IDE để giao tiếp với các cảm biến và truyền số liệu về, ta làm nhƣ sau:

Mở chương trình lập trình Arduino IDE, mở thư viện của Arduino và chọn file Arduino_Mega_2560_Serial trong mục LINX Một chương trình mẫu sẽ đươc mở ra với nội dung nhƣ sau:

** This is example LINX firmware for use with the Arduino Mega 2560 with the serial

** For more information see: www.labviewmakerhub.com/linx

** For support visit the forums at: www.labviewmakerhub.com/forums/linx

//Đính kèm tất cả các thƣ viện ngoại vi đƣợc sử dụng bởi LINX

//Đính kèm thƣ viện board đang dùng (LinxArduinoMega2560.h)

//Đính kèm thƣ viện serial ( LinxSerialListener.h)

//Trỏ tới thiết bị đang dùng

//Khởi tạo thiết bị và cài đặt kết nối truyền thông void setup()

//Kết nối đến các hàm truyền tin

//Đặt code của chương trình điều khiển ở đây

} Để tùy biến, truyền số liệu về, ta thêm các hàm với cú pháp sau:

//Đính kèm tất cả các thƣ viện ngoại vi đƣợc sử dụng bởi LINX

//Thêm dòng lệnh này để khai báo hàm tùy biến

//0 là ID của hàm, myCustomCommand là tên của hàm

//Kết nối đến các hàm truyền tin

//Đặt code của chương trình điều khiển ở đây

// Viết code cho hàm tùy biến: myCustomCommand int myCustomCommand(unsigned char numInputBytes, unsigned char* input, unsigned char* numResponseBytes, unsigned char* response)

//numInputBytes là số byte truyền từ máy tính xuống

//input là mảng 1 chiều chứa các byte truyền từ máy tính xuống

//numResponseBytes là số byte truyền lên máy tính

//response là mảng một chiều truyền lên máy tính

*numResponseBytes = numInputBytes; return 0; // hàm này có ý nghĩa lấy các số nhận được từ máy tính truyền xuống cộng thêm

Hình 1.19: Kết quả thu được khi thực hiện chương trình hàm tùy biến

Ta có thể đặt hàm giao tiếp với cảm biến để đọc giá trị ở vòng lặp loop(), sau đó thông qua các hàm myCustomCommand để truyền số liệu lên máy tính hoặc nhận số liệu từ máy tính xuống.

SỐ BÀI THÍ NGHIỆM THIẾT KẾ TRÊN BỘ KIT ARDUINO SỬ DỤNG CÁC CẢM BIẾN THÔNG DỤNG

Sơ lƣợc về các linh kiện điện tử

Hình 2.1: Hình ảnh điện trở 10k Ω và ký hiệu về điện trở

2.1.2 LED siêu sáng 5mm (LED đơn)

Hình 2.2: Hình ảnh và ký hiệu về LED siêu sáng 5mm

Hình 2.3: Hình ảnh và ký hiệu của nút nhấn 4 chân

Hình 2.4: Hình ảnh của nút nhấn 2 chân

Hình 2.5: Hình ảnh tụ gốm 104

* Thông số kỹ thuật: Điện dung: 0.1àf Điện áp: 50V

Loại: tụ điện cố định

* Mô tả: Tụ gốm 104 là tụ điện có điện môi đƣợc chế tạo theo công nghệ gốm, 2 chân cắm của linh kiện đƣợc mạ thiếc Tụ gốm 104 là tụ không phân cực có giá trị nhỏ thường được dùng trong các mạch cao tần hoặc mạch lọc nhiễu

Hình 2.7: Mặt trước và mặt sau của cảm biến DHT21

- Kích thước sản phẩm : 13.8x26.7x58.8mm

- Dải đo nhiệt độ: -40-80 độ C

- Sai số nhiệt độ: +-0.3 độ C

- Chuẩn giao tiếp: 1 dây (1 wire)

- Dây vàng: dây truyền dữ liệu (DATA)

Hình 2.8: Sơ đồ nối chân của cảm biến

- Cảm biến DHT21 là cảm biến dùng để đo nhiệt độ và độ ẩm

- DHT21/AM2301 là mạch tích hợp đo nhiệt độ và độ ẩm Sản phẩm có độ chống nhiễu và độ chính xác cao, ngõ ra tín hiệu số và đƣợc giao tiếp với Vi điều khiển 8-bit thông qua 1 dây duy nhất (SDA) giúp tiết kiệm chân Vi điều khiển Thiết kế nhỏ gọn, tiêu thụ điện năng thấp, khoảng cách truyền dẫn tín hiệu lên đến 20m giúp việc lắp đặt dễ dàng hơn.

2.1.7 Cảm biến siêu âm HY-SRF05 (đo khoảng cách)

Hình 2.9: Mặt trước và mặt sau của cảm biến HY-SRF05

Dùng đo khoảng cách, đo mực chất lỏng, robot dò đường, phát hiện các vết đứt gãy trong dây cáp

- Tín hiệu đầu ra: xung HIGH(5V) và LOW(0V)

- Khoảng cách đo : 2cm – 450cm

 Sơ đồ chân: có 5 chân

 Chức năng của các chân:

1 Vcc: cấp nguồn cho cảm biến

2 Trigger: kích hoạt quá trình phát sóng âm Quá trình kích hoạt khi một chu kì điện cao / thấp diễn ra

3 Echo: bình thường sẽ ở trạng thái 0V, được kích hoạt lên 5V ngay khi có tín hiệu trả về, sau đó trở về 0V

4 Gnd: nối với cực âm của mạch

2.1.8 PIR sensor alarm Cảm biến phát hiện chuyển động

Hình 2.10: Mặt trước và mặt sau của cảm biến PIR

- Sử dụng điện áp: 4.5V - 20V DC

- Điện áp đầu ra: 0V - 3.3V DC

- Có 2 chế độ hoạt động:

- (L) không lặp lại kích hoạt

- Thời gian trễ: điều chỉnh trong khoảng 0.5-200S

- Sử dụng cảm biến: 500BP

- Kích thước PCB: 32mmx24mm

- Thứ tự chân: Vcc OUT GND

GND – kết nối với mặt đất

OUT – kết nối đến một Arduino kỹ thuật số pin

Trên cảm biến có hai chiết áp để điều chỉnh thời gian trễ và độ nhạy của cảm biến Bình thường cảm biến hoạt động với điện áp 5VDC, nhưng nếu cần sử dụng với điện áp 3.3V, bạn có thể đổi chân jump nếu trên board mạch có chân jump hoặc nếu không có bạn có thể sửa lại mạch điện 1 chút

Hình 2.11: Sơ đồ chân của cảm biến PIR

 Bộ cảm biến mƣa bao gồm

- Raindrops và bộ điều khiển riêng biệt, dễ dàng nối dây

- Tấm cảm biến mƣa lớn, thuận lợi để phát hiện mƣa

- Board có lỗ định vị dễ dàng lắp đặt

- LM393 khoảng so sánh điện áp rộng

Hình 2.12: Hình ảnh về module cảm biến mưa FC-37

- Kích thước tấm cảm biến mưa: 54 x 40mm

- Kích thước board PCB: 30 x 16mm

- Đầu ra: đầu ra kỹ thuật số (0 và 1) và đầu ra tương tự điện áp A0 ;

- Lỗ cố định bu lông dễ dàng để cài đặt

- Có đèn báo hiệu nguồn và đầu ra

- Đầu ra TTL, tín hiệu đầu ra TTL có giá trị thấp Có thể điều khiển trực tiếp relay, buzzer, a small fan

- Độ nhạy có thể đƣợc điều chỉnh thông qua biến trở xanh

Thứ tự chân Tên gọi Mô tả

3 A0 tín hiệu đầu ra analog

4 D0 tín hiệu đầu ra digital

Bảng 2.1: Sơ đồ chân cảm biến mưa

2.1.10 Cảm biến dò line đơn TCRT5000

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ị 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 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ình 2.13: Mặt trước và mặt sau của cảm biến hồng ngoại TCRT5000

- Mạch sử dụng chip so sánh LM393

- Dòng điện tiêu thụ: thấy đèn sáng được 1 giây digitalWrite(led, LOW); // tắt đèn led delay(1000); // dừng chương trình trong 1 giây => thấy đèn tối được 1 giây

2.2.2 Chương trình thay đổi độ sáng của đèn LED int led = 6; // cổng digital mà LED đƣợc nối vào int brightness = 0; // mặc định độ sáng của đèn là int fadeAmount = 5; // mỗi lần thay đổi độ sáng thì thay đổi với giá trị là bao nhiêu void setup() {

// pinMode đèn led là OUTPUT pinMode(led, OUTPUT);

//xuất giá trị độ sáng đèn LED analogWrite(led, brightness);

// thay đổi giá trị là đèn LED brightness = brightness + fadeAmount;

// Đoạn code này có nghĩa nếu độ sáng == 0 hoặc bằng == 255 thì sẽ đổi chiều của biến thay đổi độ sáng Ví dụ, nếu đèn từ sáng yếu > sáng mạnh thì fadeAmount dương Còn nếu đèn sáng mạnh > sáng yếu thì fadeAmmount lúc này sẽ có giá trị âm if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ;

//đợi 30 mili giây để thấy sự thay đổi của đèn delay(30);

2.2.3 Điều khiển 8 LED bằng 8 chân Digital của Arduino byte ledPin[] = {2,3,4,5,6,7,8,9}; // Mảng lưu vị trí các chân Digital mà các đèn LED sử dụng theo thứ tự từ 1->8

35 byte pinCount; // Khai báo biến pinCount dùng cho việc lưu tổng số chân LED void setup() { pinCount = sizeof(ledPin); for (int i=0;i 1000){ time2=millis(); lcd.setCursor(0, 1); lcd.print("Nhiet Do: "); lcd.print(sn/100); lcd.print(","); lcd.print(sn%100); lcd.write(0xDF); lcd.write(0x43); lcd.setCursor(0, 2); lcd.print("Do Am: "); lcd.print(tp/100); lcd.print(","); lcd.print(tp%100);

Hình 2.22: Kết quả chương trình giám sát nhiệt độ, độ ẩm từ môi trường thông qua cảm biến DHT21 được hiển thị trên LCD 20x4

Các bài thí nghiệm giao tiếp giữa Arduino và LabVIEW thông qua nhân LINX 45 1 Ví dụ về chương trình giao tiếp với cảm biến nhiệt độ và truyền về máy tính 45 2 Chương trình đo nhiệt độ môi trường hiển thị trên LCD

2.3.1 Ví dụ về chương trình giao tiếp với cảm biến nhiệt độ và truyền về máy tính

OneWire oneWire(ONE_WIRE_BUS);

46 sensors.isParasitePowerMode(); sensors.getAddress(cb0, 0); sensors.setResolution(cb0, TEMPERATURE_PRECISION);

} int nhietdo(unsigned char numInputBytes, unsigned char* input, unsigned char* numResponseBytes, unsigned char* response)

{ unsigned int nguyen,thapphan; sensors.requestTemperatures(); t = sensors.getTempC(cb0); nguyen=t; thapphan=(t-nguyen)*10; response[0] = nguyen; response[1] = thapphan;

Hình 2.23: Kết quả chương trình đọc nhiệt độ

2.3.2 Chương trình đo nhiệt độ môi trường hiển thị trên LCD Ở bài toán này, ta có thể đọc nhiệt độ đo đƣợc từ cảm biến đo nhiệt độ thông qua LCD một cách độc lập không cần đến LabVIEW Hoặc ta vẫn có thể đọc song song cùng lúc nhiệt độ môi trường từ màn hình LCD và trên giao diện của LabVIEW Đây chính là ƣu điểm của nhân LINX

#include const int rs = 12, en = 11, d4 = 6, d5 = 5, d6 = 4, d7 = 3;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7); float t; float t_lcd,t_cb; unsigned int nguyen,thapphan;

OneWire oneWire(ONE_WIRE_BUS);

{ t_lcd=millis(); t_cb=millis(); lcd.begin(20, 4); lcd.print("CT do nhiet do"); sensors.begin(); sensors.getDeviceCount(); sensors.isParasitePowerMode(); sensors.getAddress(cb0, 0); sensors.setResolution(cb0, TEMPERATURE_PRECISION);

LinxSerialConnection.AttachCustomCommand(0, nhietdo); lcd.setCursor(0,1); lcd.print("Hien thi LCD");

LinxSerialConnection.CheckForCommands(); if (millis()-t_cb>1000){ sensors.requestTemperatures(); t = sensors.getTempC(cb0); nguyen=t; thapphan=(t-nguyen)*10; t_cb=millis();

} if (millis()-t_lcd>1000){ lcd.setCursor(0,2); lcd.print("Nhiet Do: "); lcd.print(nguyen); lcd.print(","); lcd.print(thapphan); lcd.write(0xDF); lcd.write(0x43); t_lcd=millis();

//Your Code Here, But It will Slow Down The Connection With LabVIEW }

49 int nhietdo(unsigned char numInputBytes, unsigned char* input, unsigned char* numResponseBytes, unsigned char* response)

* Code trên LabView: Ở bài toán này code trên LabView cũng tương tự như ở ví dụ về chương trình giao tiếp với cảm biến nhiệt độ và truyền về máy tính Chỉ khác là ta sẽ có thể đọc đƣợc nhiệt độ thông qua sự hiển thị của màn hình LCD

Dưới đây là kết quả hiển thị trên LCD:

Hình 2.24: Kết quả chương trình đọc nhiệt đọ hiển thị trên LCD

BÀI THÍ NGHIỆM ĐIỀU KHIỂN ĐỘNG CƠ, GIAO TIẾP CẢM BIẾN VÀ TRUYỀN THÔNG VỚI MÁY TÍNH

Giới thiệu sơ lƣợc về bộ điều khiển

Tận dụng ƣu điểm của board mạch Arduino khi kết hợp với LabVIEW sử dụng nhân LINX, do đó ta có thể điều khiển 2 động cơ DC để tăng hoặc giảm tốc độ động cơ đó đồng thời xem động cơ còn lại nhƣ một máy phát điện để làm thay đổi độ sáng của bóng đèn, từ đó ta đo đƣợc dòng điện và hiệu điện thế đƣợc tạo ra Bằng việc sử dụng các cảm biến ta sẽ nhận đƣợc các thông số về nhiệt độ, tốc độ động cơ, hay giá trị của dòng điện, hiệu điện thế sẽ đƣợc hiển thị trên màn hình LCD 20x4 hoặc hiển thị trên máy tính thông qua phần mềm LabVIEW Ta cũng có thể tùy chọn tốc độ động cơ khi thực hiện trên máy tính để truyền về màn hình hiển thị của LCD.

Giới thiệu các linh kiện sử dụng trong bộ điều khiển

Hình 3.1: Động cơ DC 12V được sử dụng trong mô hình

* Mô tả sơ lƣợc về động cơ DC Động cơ một chiều DC (Direct Current Motors) là động cơ điều khiển trực tiếp có cấu tạo gồm hai dây (dây nguồn và dây tiếp đất) DC motor là một động cơ một chiều với cơ năng quay liên tục

Khi bạn cung cấp năng lƣợng, động cơ DC sẽ bắt đầu quay, chuyển điện năng thành cơ năng Hầu hết các động cơ DC sẽ quay với cường độ RPM rất cao (số vòng

51 quay/ phút), và các động cơ DC đều đƣợc ứng dụng để làm quạt làm mát máy tính, hoặc kiểm soát tốc độ quay của bánh xe

Hình 3.2: Cấu tạo chi tiết về động cơ DC Để điều khiển tốc độ quay của động cơ DC, người ta dùng điều biến độ rộng xung (kí hiệu là PWM), đây là kỹ thuật điều khiển tốc độ vận hành bằng việc bật và tắt các xung điện Tỷ lệ phần trăm vận tốc với thời gian của thiết bị đƣợc điều khiển bằng cơ chế bật tắt một mức độ cơ số vòng quay xác định của động cơ

Ví dụ, một động cơ có nguồn điện xoay chiều ở mức 50% ( tức 50% tắt và 50% bật), thì mô tơ sẽ quay một nửa số vòng quay ở mức 100% (tổng số) Mục đích là để khi các xung nối tiếp nhau với tốc độ rất nhanh thì động cơ vẫn có thể quay liên tục với tần số cao mà không bị vấp lỗi Đây cũng sẽ là nguyên lý hoạt động của mô hình thí nghiệm sẽ đƣợc trình bày ở phần sau

- Động cơ 1: Động Cơ DC 12V RS 555-PH

- Động cơ 2: Động Cơ DC 12V RS 550 High

* Chức năng: Hai động cơ sẽ đƣợc gắn cố định trên trục quay và đƣợc nối với nhau bằng dây xích Khi nạp điện, động cơ 1 quay thì động cơ 2 cũng quay và lúc này động cơ 2 đóng vai trò là một máy phát điện tạo ra điện áp

* Chức năng: Khi động cơ quay tạo ra dòng điện, bóng đèn phát sáng và độ sáng thay đổi tùy thuộc vào tốc độ động cơ

3.2.3 Cảm biến dòng điện MAX471-3A

Hình 3.4: Hình ảnh của cảm biến dòng điện MAX471-3A

Cảm biến dòng điện MAX471 3A sử dụng phương pháp đo dòng bằng điện trở nên có độ chính xác cao, ứng dụng trong việc đo dòng điện của các thiết bị nhỏ sử dụng pin, module, mạch điện, , cảm biến có tín hiệu trả về theo dạng điện áp với hệ quy chiếu 1V~1A nên rất dễ sử dụng qua việc đọc bằng chân Analog của vi điều khiển

 Điện áp sử dụng: không lớn hơn 5 lần điện áp định mức Analog của vi điều khiển, ví dụ vi điều khiển 3.3VDC max là 3.3x5VDC, vi điều khiển 5VDC tối đa là 25VDC

 Dòng đo đƣợc tối đa: 3A

 Tín hiệu trả về: Analog

* Sơ đồ chân cảm biến MAX471:

Hình 3.5: Sơ đồ chân của cảm biến MAX471

* Chức năng: Ở bài thí nghiệm này, cảm biến dòng điện MAX471-3A đƣợc sử dụng để đo dòng điện của máy phát điện chạy qua dây dẫn Khi tốc độ động cơ tăng, điện áp tăng và giá trị cường độ dòng điện cũng tăng theo

3.2.4 Module điều khiển động cơ DC BTS7960 43A

Hình 3.6: Mặt trước và mặt bên của module điều khiển động cơ

Mạch cầu H IBT-2 dễ dàng giao tiếp với vi điều khiển với driver tích hợp sẵn trong IC với đầy đủ các tính năng current sense (kết hợp với điện trở đo dòng), tạo dead time (thời gian trễ), chống quá nhiệt, quá áp, quá dòng, sụt áp và ngắn mạch

- Tín hiệu logic điều khiển: 3.3 ~ 5V

- Tần số điều khiển tối đa: 25KHz

- Tự động shutdown khi sụt áp : để tránh điều khiển động cơ ở mức điện áp thấp thiết bị sẽ tự shutdown Nếu điện áp < 5.5V, driver sẽ tự ngắt điện và sẽ mở lại sau khi điện áp > 5.5V

- Bảo vệ quá nhiệt : BTS7960 bảo vệ chống quá nhiệt bằng cảm biến nhiệt tích hợp bên trong Đầu ra sẽ bị ngắt khi có hiện tƣợng quá nhiệt

 VCC : Nguồn tạo mức logic điều khiển ( 5V - 3V3 )

 R_EN = 0 Disable nửa cầu H phải R_EN = 1 : Enable nửa cầu H phải

 L_EN = 0 Disable nửa cầu H trái L_EN = 1 : Enable nửa cầu H trái

 RPWM và LPWM : chân điều khiển đảo chiều và tốc độ động cơ

+ RPWM = 1 và LPWM = 0 : Mô tơ quay thuận

+ RPWM = 0 và LPWM = 1 : Mô tơ quay nghịch

+ RPWM = 1 và LPWM = 1 hoặc RPWM = 0 và LPWM = 0 : Dừng

 R_IS và L_IS : kết hợp với điện trở để giới hạn dòng qua cầu H

Với ứng dụng bình thường RPWM,LPWM nối với GPIO (VD : chân digital 2,3) để điều khiển chiều quay của động cơ

Chân R_EN , L_EN nối chung lại rồi nối với PWM (VD chân digital 5) để điều khiển tốc độ động cơ

* Chức năng: Đúng nhƣ tên gọi của nó, module này có nhiệm vụ điều khiển tốc độ động cơ thông qua chân băm xung PWM số 2 Cùng với 2 nút nhấn tăng và giảm tốc độ động cơ ta sẽ điều khiển đƣợc tốc độ động cơ theo ý muốn

3.2.5 Cảm biến đo nhiệt độ DS18B20 (-55°C đến +125°C)

Hình 3.7: Hình ảnh cảm biến đo nhiệt độ DS18B20

DS18B20 là cảm biến (loại digital) đo nhiệt độ với độ phân giải cao (12bit) IC sử dụng giao tiếp 1 dây rất gọn gàng, dễ lập trình IC còn có chức năng cảnh báo nhiệt độ khi vƣợt ngƣỡng và đặc biệt hơn là có thể cấp nguồn từ chân data (parasite power)

Cảm biến có thể hoạt động ở 125 độ C nhưng cáp bọc PVC => nên giữ nó dưới

100 độ C Đây cảm biến kỹ thuật số, nên không bị suy hao tín hiệu đường dây dài

 Dải đo nhiệt độ : -55 - 125 độ C ( -67 - 257 độ F)

 Sai số : 0.5 độ C khi đo ở dải -10 - 85 độ C

 Độ phân giải : người dùng có thể chọn từ 9 - 12 bits

 Chuẩn giao tiếp : 1-Wire ( 1 dây )

 Có cảnh báo nhiệt khi vƣợt ngƣỡng cho phép và cấp nguồn từ chân data

 Thời gian chuyển đổi nhiệt độ tối đa : 750ms ( khi chọn độ phân giải 12bit )

 Mỗi IC có một mã riêng (lưu trên EEPROM của IC) nên có thể giao tiếp nhiều DS18B20 trên cùng 1 dây

 Ống thép không gỉ (chống ẩm , nước) đường kính 6mm, dài 50mm

 Đường kính đầu dò: 6mm

Bảng 3.1: Sơ đồ nối chân của cảm biến đo nhiệt độ DS18B20

* Lưu ý: Để đo đƣợc nhiệt độ ta cần thêm 1 điện trở 4.7k Ohm nối từ chân DQ lên VCC

Nguyên lý hoạt động của bộ điều khiển tốc độ động cơ

Hệ thống hoạt động theo nguyên lý:

Khi nạp điện cho động cơ 1 quay, lúc này động cơ 2 sẽ đóng vai trò nhƣ 1 máy phát điện và tạo ra điện áp Ta sẽ nối bóng đèn để xem độ sáng của bóng đèn thay đổi nhƣ thế nào tùy thuộc vào việc điều khiển tốc độ động cơ

Có 3 nút nhấn SW1 (chân digital 22), SW2 (chân digital 23), SW3 (chân digital

53), tương ứng với 3 chương trình được cài đặt sẵn để điều khiển tốc độ động cơ Khi nhấn SW1, tốc độ động cơ sẽ tăng Khi nhấn SW2, tốc độ động cơ sẽ giảm Nút nhấn SW3 là nút nhấn Resert Đồng thời, khi điều khiển tốc độ động cơ tăng hoặc giảm thì ta sẽ đo điện áp và dòng ra của hệ thống lúc này

Cảm biến nhiệt độ lúc này sẽ hoạt động và đo nhiệt độ của động cơ

Các thông số: Tốc độ động cơ (%), điện áp (V), dòng điện (A), và nhiệt độ động cơ ( 0 C) sẽ lần lƣợt đƣợc hiển thị trên màn hình LCD 20x4

Khi giao tiếp với máy tính thông qua phần mềm LabView ta cũng có thể tùy chọn tốc độ động cơ theo mong muốn, rồi nhấn nút, hệ thống sẽ thực hiện chạy chương trình một cách độc lập và hiển thị trên LCD

Sơ đồ khối toàn mạch

Hình 3.8: Sơ đồ khối toàn mạch

- Hệ thống đƣợc lập trình trên bộ kit Arduino Mega 2560 đồng kết hợp với nhân firmware LINX và phần mềm Labview, ta có thể dễ dàng truyền thông Arduino với máy tính thông qua cổng USB, thay thế đƣợc cho các card điều khiển logic phức tạp khi muốn điều khiển thiết bị bằng máy tính

- Do đó, ta có thể điều khiển đƣợc tốc độ của động cơ một cách trực tiếp bằng việc nhấn các nút nhấn hoặc điều khiển tốc độ động cơ trên phần mềm LabVIEW với nhân firmeware LINX một cách độc lập

KHỐI ĐIỀU KHIỂN ĐỘNG CƠ

KHỐI ĐIỀU KHIỂN TRUNG TÂM

Sơ đồ nguyên lý của toàn mạch

Hình 3.9: Sơ đồ nguyên lý toàn mạch

3.5.1 Khối điều khiển trung tâm

Khối điều khiển trung tâm bao gồm:

Vi xử lý ATMega 2560 dùng để xử lý thuật toán, nhận tín hiệu từ các phím nhấn để điều khiển hiển thị trên LCD…

Code lập trình sẽ đƣợc nạp vào vi điều khiển để điều khiển cho mạch hoạt động

3.5.2 Khối điều khiển động cơ

Bao gồm: Module điều khiển động cơ DC BTS7960 43A

Module này sẽ thực hiện việc điều khiển tốc độ của động cơ 1, làm cho động cơ

2 quay và lúc này động cơ 2 đóng vai trò là 1 máy phát điện

3.5.3 Động cơ và máy phát Động cơ 1 hoạt động nhờ module điều khiển tốc độ, từ đó làm động cơ 2 quay và tạo ra điện áp nối đến bóng đèn làm thay đổi độ sáng của bóng đèn

Dùng để cấp nguồn VDC = 5V cho vi điều khiển cùng các linh kiện và nguồn

V DC = 12V để cấp nguồn cho động cơ quay

- Khối hiển thị đƣợc hiển thị trên màn hình LCD 20x4

Gồm 3 phím nhấn SW1, SW2, SW3

- Khi nhấn SW1: tốc độ động cơ tăng

- Khi nhấn SW2: tốc độ động cơ giảm

- Khi nhấn SW3: Nút nhấn Resert

* Cảm biến đo dòng ACS712 5A

* Cảm biến đo nhiệt độ DS18B20

Chức năng của các linh kiện trong mỗi khối đã được trình bày rõ ở phần trước

Công thức tính điện áp

Để tính toán điện áp thu đƣợc từ động cơ phát ra, ta phải sử dụng mạch cầu phân áp Vì nguồn của động cơ là 12V trong khi đó board mạch Arduino chỉ là 5V Nên nếu ta không phân áp cho đoạn mạch sẽ gây hƣ hỏng board mạch

Hình 3.10: Mạch cầu phân áp Ở mạch cầu phân áp nàyta sử dụng 2 điện trở R1= 10kΩ và R2=6k8 Ω

(3.1) sẽ chính là giá trị mà analog (A0) đọc đƣợc trong công thức này chính là điện áp mà ta càn đo để hiển thị lên màn hình LCD

Do đó để tính điện áp của động cơ, ta sử dụng công thức sau:

Thay giá trị điện trở vào công thức (3.2) ta đƣợc công thức tính điện áp:

* Lưu ý : Ta áp dụng công thức (3.3) để viết code trên Arduino.

Code chương trình trên Arduino

#include const int rs = 24, en = 25, d4 = 26, d5 = 27, d6 = 28, d7 = 29; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); float t; byte tocdo; int toc_do; float t_lcd,t_cb; float i ; float u; unsigned int nguyen,thapphan; unsigned int ing,itp; unsigned int ung, utp;

OneWire oneWire(ONE_WIRE_BUS);

{ tocdo=0; toc_do=0; t_lcd=millis(); t_cb=millis();

62 lcd.begin(20, 4); lcd.print(" KIT MAY PHAT DIEN "); lcd.setCursor(0,1); lcd.print("GVHD:CAO XUAN HUU"); lcd.setCursor(0,2); lcd.print("SVTH: L.T.MY HANH"); lcd.setCursor(0,3); lcd.print("*****************"); delay(1000); lcd.clear(); sensors.begin(); sensors.getDeviceCount(); sensors.isParasitePowerMode(); sensors.getAddress(cb0, 0); sensors.setResolution(cb0, TEMPERATURE_PRECISION); LinxDevice = new LinxArduinoMega2560();

LinxSerialConnection.AttachCustomCommand(0, nhietdo); pinMode(22, INPUT_PULLUP); pinMode(23,INPUT_PULLUP); pinMode(53,INPUT_PULLUP); } void loop()

{ LinxSerialConnection.CheckForCommands(); if(digitalRead(22)==LOW)

{tocdo=tocdo+10; if (tocdo>100) tocdo0; while (digitalRead(22)==LOW); } if(digitalRead(23)==LOW)

{if (tocdo1000){ sensors.requestTemperatures(); t = sensors.getTempC(cb0); nguyen=t; thapphan=(t-nguyen)*10; i=analogRead(A0)*5.0/1023.0; ing=word(i); itp=(i-ing)*100.0; t_cb=millis(); u=(analogRead(A1)/1023.0)*5.0*2.471;

63 ung=word(u); utp=(u-ung)*10.0; t_cb=millis();} if (millis()-t_lcd>500||tocdo!=toc_do||digitalRead(53)==LOW){ lcd.begin(20,4); lcd.clear(); toc_do=tocdo; lcd.setCursor(0,0); lcd.print("Toc Do: "); lcd.print(tocdo); lcd.print("%"); lcd.setCursor(0,1); lcd.print("Nhiet Do: "); lcd.print(nguyen); lcd.print(","); lcd.print(thapphan); lcd.write(0xDF); lcd.write(0x43); lcd.setCursor(0,2); lcd.print("Dong: "); lcd.print(ing); lcd.print(","); lcd.print(itp); lcd.print(" (A)"); lcd.setCursor(0,3); lcd.print("Ap: "); lcd.print(ung); lcd.print(","); lcd.print(utp); lcd.print(" (V)"); analogWrite(2,tocdo*2.55); t_lcd=millis(); }} int nhietdo(unsigned char numInputBytes, unsigned char* input, unsigned char* numResponseBytes, unsigned char* response)

{if (input[0]==1) {tocdo=input[1]; analogWrite(2,tocdo*2.55);} response[0] = nguyen; response[1] = thapphan; response[2] = tocdo; response[3] = ing; response[4] = itp; response[5] = ung;

*numResponseBytes = 7; return 0 ; } int tocdo_pc(unsigned char numInputBytes, unsigned char* input, unsigned char* numResponseBytes, unsigned char* response)

Code trên LabView

Hình 3.11: Kết quả trên giao diện Front Panel

Hình 3.12: Kết quả thu được hiển thị trên LCD

KẾT LUẬN VÀ KIẾN NGHỊ

1 Kết luận Đề tài này có thể đƣợc xem nhƣ một tài liệu giới thiệu về Arduino và cách thức giao tiếp của Arduino với máy tính thông qua phần mềm LabView Qua đó sinh viên các ngành học thực nghiệm sẽ học đƣợc thêm một cách giao tiếp mới, giúp sinh viên tiếp cận việc thực hành điền khiển các thiết bị hay thực hiện một ứng dụng nào đó một cách dễ dàng hơn Khóa luận này giới thiệu về bộ kit Arduino gồm nhiều bài thí nghiệm sử dụng các linh kiện, thiết bị và một số cảm biến thông dụng, hướng dẫn cách sử dụng phần mềm LabView một cách cơ bản nhất Vì thời gian nghiên cứu còn hạn chế nên khóa luận này chƣa thể đầy đủ các bài tập mà chỉ đƣa ra một số ví dụ điển hình Mặc dù vậy, sinh viên vẫn có thể phát triển thêm ý tưởng thiết kế mạch cho riêng mình mà không cần phụ thuộc quá nhiều vào các ví dụ đã trình bày trong khóa luận này

Arduino không chỉ hướng đến một đối tượng là người dùng có kiến thức điện tử mà nó hướng đến mọi người cùng với những ưu điểm nổi trội như: phổ biến trên thị trường, chi phí không cao, có nhiều thư viện hỗ trợ cho người dùng do đó có thể dễ dàng viết code của chương trình để điều khiển khiển bất kì một ứng dụng nào như mong muốn Trên board cũng có đầy đủ những thứ cần thiết cho người dùng như bộ chỉnh áp, các đèn led, bộ tạo dao động,…Việc duy nhất cần làm là mua một board mạch Arduino, cắm vào cổng USB trên máy tính và viết một vài dòng code để tạo ra những ứng dụng thiết thực

Với những ƣu điểm vƣợt trội nhƣ vậy, thiết nghĩ, Khoa Vật lý nên đƣa ra một kế hoạch học tập mới cho sinh viên, áp dụng Arduino vào chuyên ngành điện tử hoặc các bài thực hành ghép nối, giao tiếp thiết bị trong chương trình đào tạo của Khoa để sinh viên có thể phát huy đƣợc tính tích cực, sáng tạo của mình trong việc nghiên cứu, chế tạo các mô hình, ứng dụng thực tiễn hơn vào cuộc sống và đặc biệt là trong lĩnh vực điện tử, đo lường và tự động hóa

Ngày đăng: 10/05/2021, 16:07

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w