Mục lục:

Mô hình điều hòa Arduino: 6 bước
Mô hình điều hòa Arduino: 6 bước

Video: Mô hình điều hòa Arduino: 6 bước

Video: Mô hình điều hòa Arduino: 6 bước
Video: Điều khiển 6 motor bước dùng RAMPS 1.5 - Arduino Mega | Control 6 motors by shiled RAMPS 1.5 2024, Tháng bảy
Anonim
Mô hình điều hòa không khí Arduino
Mô hình điều hòa không khí Arduino

Là một phần của cuộc chứng minh khả năng của nhóm chúng tôi trong việc tạo ra một mô hình thiết bị xe lửa thông minh cho mục đích tiếp thị, mục tiêu là tạo ra một hệ thống trong đó cảm biến nhiệt độ đọc dữ liệu từ mạch và chuyển đổi thông tin thành giá trị nhiệt độ. hiển thị trên màn hình sáng và tập trung vào việc quạt bật hay tắt. Mục đích là để giúp điều chỉnh các điều kiện đi xe của hành khách bằng cách sử dụng một hệ thống tự động cũng hoạt động để hiển thị nhiệt độ ở khu vực lân cận.

Bằng cách sử dụng bộ vi điều khiển Arduino và MATLAB phiên bản 2016b và 2017b, chúng tôi đã có thể chứng minh những kết quả này tương đối thành công.

Bước 1: Thiết bị

Trang thiết bị
Trang thiết bị

Bộ vi điều khiển với những thứ sau:

-Bảng đỏ Parkfun

-Sparkfun Breadboard

-Ban CD

-Chiết áp

-Cảm biến nhiệt độ

-Servo

-Bộ chuyển đổi USB / Arduino

-Dây chấn lưu (25, tối thiểu)

Máy tính xách tay (Windows 10) với đầu vào USB

Đối tượng in 3D (tùy chọn)

Bước 2: Thiết lập bộ vi điều khiển

Thiết lập vi điều khiển
Thiết lập vi điều khiển
Thiết lập vi điều khiển
Thiết lập vi điều khiển
Thiết lập vi điều khiển
Thiết lập vi điều khiển
Thiết lập vi điều khiển
Thiết lập vi điều khiển

Hãy xem xét điều này: toàn bộ hệ thống bao gồm các đơn vị đơn lẻ mà mỗi đơn vị áp dụng một yếu tố quan trọng cho kết quả cuối cùng. Vì lý do này, chúng tôi khuyên bạn nên thiết lập hình ảnh của mạch trước khi gắn dây trong một mớ hỗn độn.

Hình ảnh của từng mô hình riêng lẻ có thể được tìm thấy trong sách hướng dẫn của bộ công cụ Vi điều khiển hoặc tại trang web của nó tại

Bắt đầu với việc gắn cảm biến nhiệt độ, chiết áp, đầu nối servo và màn hình LCD lên bo mạch. Khuyến cáo rằng do kích thước của màn hình LCD và yêu cầu về số lượng dây cho nó, nó nên được đặt trên một nửa của bảng mạch chính với các miếng khác ở nửa còn lại và để chiết áp nằm trong khu vực cho ai đó dễ dàng xoay núm của nó.

Để tham khảo:

LCD: c1-16

Servo: i1-3 (GND + -)

Cảm biến nhiệt độ: i13-15 (- GND +)

Chiết áp: g24-26 (- GND +)

Tiếp theo, bắt đầu kết nối dây jumper với mỗi chân của bộ vi điều khiển; mặc dù tùy ý trong sơ đồ tổng thể, thiết kế đã được tạo ra với những kết nối quan trọng sau:

Kết nối chiết áp với màn hình LCD: f25 - e3

Dây Servo GND: j1 - Đầu vào Kỹ thuật số 9

Cảm biến nhiệt độ GND: j14 - Đầu vào tương tự 0

Đầu vào LCD: e11-e15 - Đầu vào kỹ thuật số 2-5

e4 - Đầu vào kỹ thuật số 7

e6 - Đầu vào kỹ thuật số 6

(Lưu ý: Nếu thành công, cả hai đèn trên cạnh màn hình LCD sẽ bật sáng và chiết áp có thể giúp điều chỉnh độ sáng của nó sau khi được cấp nguồn từ bộ chuyển đổi.)

Tùy chọn: Đối tượng in 3D được sử dụng như một phần của yêu cầu. Để tránh hư hỏng có thể xảy ra đối với các bộ phận dễ vỡ hơn, một hộp đựng mở rộng đã được đặt làm ống bọc xung quanh màn hình LCD. Các phép đo của màn hình LCD được chứng minh là xấp xỉ 2-13/16 "x 1-1 / 16" x 1/4 "và do đó chỉ có chiều cao bị thay đổi đáng kể. Nếu có sẵn máy in 3D, hãy cân nhắc thêm một đối tượng cá nhân, mặc dù không cần thiết. Ngoài ra, hãy lưu ý rằng các phép đo có thể khác nhau.

Bước 3: Thiết lập MATLAB

Thiết lập MATLAB
Thiết lập MATLAB
Thiết lập MATLAB
Thiết lập MATLAB

Cài đặt phiên bản cập nhật hơn của MATLAB (2016a trở đi), có tại trang web MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Sau khi mở, hãy chuyển đến Phần bổ trợ trên tab Trang chủ và tải xuống "Gói Hỗ trợ MATLAB cho Phần cứng Arduino" để có thể truy cập các lệnh của bộ vi điều khiển.

Sau khi hoàn thành, một bài kiểm tra có thể được thực hiện để tìm kết nối của bộ vi điều khiển với máy tính / máy tính xách tay của một người. Sau khi kết nối chúng với bộ điều hợp USB từ bộ công cụ, hãy chèn lệnh "fopen (serial ('nada'))."

Một thông báo lỗi sẽ bật lên cho biết trình kết nối là "COM #", cần thiết để tạo một đối tượng arduino miễn là nó luôn là cùng một đầu vào.

Do màn hình LCD không có kết nối trực tiếp đến thư viện Arduino, nên một thư viện mới phải được tạo để hiển thị thông báo. Một khuyến nghị là tạo tệp LCDAddon.m từ ví dụ LCD được tìm thấy trong cửa sổ trợ giúp MATLAB sau khi tìm kiếm "Arduino LCD" và đặt nó vào thư mục + arduinoioaddons hoặc sử dụng thư mục nén được đính kèm và sao chép tất cả nội dung của nó vào phần nói trên thư mục.

Nếu thành công, thì mã để tạo một đối tượng Arduino trong MATLAB như hình dưới đây.

a = arduino ('com #', 'una', 'Thư viện', 'Ví dụLCD / LCDAddon');

Bước 4: Chức năng

Chức năng
Chức năng
Chức năng
Chức năng

Tạo một hàm MATLAB. Đối với các đầu vào, chúng tôi sử dụng các biến "eff" và "T_min"; đối với đầu ra, mặc dù không cần thiết trong thiết kế tổng thể, chúng tôi đã sử dụng biến "B" như một cách để chứa dữ liệu từ kết quả. Đầu vào "eff" cho phép quản lý tốc độ tối đa của servo và đầu vào "T_min" kiểm soát nhiệt độ tối thiểu mong muốn. Do đó, giá trị "B" sẽ tạo ra một ma trận chứa ba cột cho thời gian, nhiệt độ và hiệu suất của quạt. Ngoài ra, như một phần thưởng cho chi tiết, đoạn mã được liệt kê bên dưới cũng có câu lệnh if sao cho tốc độ quạt sẽ giảm 50 phần trăm khi nó gần đạt đến nhiệt độ tối thiểu mong muốn.

Nếu tất cả các đầu vào và dây jumper được đặt chính xác và giả sử cổng kết nối arduino là COM4 và tên chức năng là "fanread", thì mã sau là đủ:

function [B] = fanread (Tmin, eff)

rõ ràng a; clear lcd; a = arduino ('com4', 'una', 'Libraries', 'ExampleLCD / LCDAddon');

t = 0; t_max = 15; % thời gian tính bằng giây

lcd = addon (a, 'ExampleLCD / LCDAddon', {'D7', 'D6', 'D5', 'D4', 'D3', 'D2'});

khởi tạoLCD (lcd, 'Hàng', 2, 'Cột', 2);

nếu eff> = 1 || e <0

lỗi ('Quạt sẽ không kích hoạt trừ khi hiệu lực được đặt từ 0 đến 1.')

kết thúc

đối với t = 1: 10% số vòng / khoảng

rõ ràng c; % ngăn lỗi lặp lại

v = readVoltage (a, 'A0');

TempC = (v-0,5) * 100; % ước tính cho dải điện áp 2,7-5,5 V

nếu TempC> Tmin nếu TempC

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff / 2); % bật servo ở tốc độ một nửa

spd = 50;

khác

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff); % bật servo ở tốc độ đã cho

spd = 100;

kết thúc

khác

c = ['Temp', num2str (TempC, 3), 'C Off'];

writePWMDutyCycle (a, 'D9', 0); % tắt nếu đã bật

spd = 0;

kết thúc

printLCD (LCD, c);

tạm dừng (3); % ba giây trôi qua mỗi vòng lặp

thời gian (t) = t. * 3;

tempplot (t) = TempC;

act (t) = spd;

subplot (2, 1, 1)

đồ thị đường kẻ (thời gian, tempplot, 'b-o')%

trục ([0 33 0 40])

xlabel ('Thời gian (giây)')

ylabel ('Nhiệt độ (C)')

Giữ lấy

âm mưu ([0 33], [Tmin Tmin], 'r-')

Giữ lấy

âm mưu ([0 33], [Tmin + 2 Tmin + 2], 'g-')

subplot (2, 1, 2)

bar (thời gian, hành động)% bar graph

xlabel ('Thời gian (giây)')

ylabel ('Hiệu quả (%)')

kết thúc

B = transpose ([time; tempplot; act]);

kết thúc

Bây giờ chức năng đã hoàn thành, đã đến lúc kiểm tra.

Bước 5: Kiểm tra

Thử nghiệm
Thử nghiệm
Thử nghiệm
Thử nghiệm

Bây giờ hãy kiểm tra chức năng trong cửa sổ lệnh bằng cách chèn "function_name (input_value_1, input_value_2)" và quan sát. Đảm bảo rằng không có đối tượng Arduino nào đã tồn tại; nếu vậy, hãy sử dụng lệnh "clear a" để loại bỏ nó. Nếu lỗi xảy ra, hãy kiểm tra và xem có bất kỳ đầu nối nào được đặt sai vị trí hoặc đầu vào kỹ thuật số hoặc tương tự có được sử dụng sai hay không. Kết quả dự kiến sẽ khác nhau, mặc dù điều này có thể được gây ra bởi vị trí của một số dây nhảy và cảm biến nhiệt độ.

Những kỳ vọng về kết quả sẽ tạo ra những thay đổi trong hiệu suất của servo và dữ liệu trên màn hình LCD. Với mỗi khoảng thời gian ba giây, một dòng văn bản sẽ hiển thị nhiệt độ theo độ C và quạt có hoạt động hay không trong khi quạt chạy ở tốc độ tối đa, nửa tốc độ hoặc không tốc độ. Dữ liệu hầu như không được nhất quán, mặc dù nếu muốn có nhiều kết quả khác nhau, hãy đặt giá trị "Tmin" gần với nhiệt độ trung bình do mạch tạo ra.

Bước 6: Kết luận

Phần kết luận
Phần kết luận

Mặc dù một nhiệm vụ khó khăn để hoàn thành bằng cách thử và sai, kết quả cuối cùng tỏ ra khá thú vị và hài lòng. Một hệ thống như vậy giúp minh họa có bao nhiêu máy móc phức tạp, hoặc thậm chí một số bộ phận của chúng, có thể được xem như một tập hợp các bộ phận độc lập được đặt cùng nhau để hoàn thành một mục tiêu cụ thể.

Do thiết kế khá đơn giản của dự án cuối cùng, những người quan tâm đến việc cải thiện hiệu suất của nó có thể thực hiện các chỉnh sửa và thay đổi trong sản phẩm cuối cùng để có thể làm cho dự án tốt hơn và công phu hơn. Tuy nhiên, nó bộc lộ những điểm yếu trong mạch như sự kích hoạt của servo dẫn đến sự dao động lẻ tẻ trong việc đọc điện áp của mạch, điều này có thể khiến hệ thống không bao giờ tạo ra kết quả giống hệt nhau. Ngoài ra, đã có vấn đề với việc nhìn thấy sự thay đổi trong tốc độ servo khi "eff" được đặt 0,4 trở lên. Nếu sử dụng cảm biến nhiệt độ và độ ẩm, mô hình cuối cùng sẽ phức tạp hơn nhưng hiển thị các giá trị nhất quán hơn. Tuy nhiên, đây là một trải nghiệm cho thấy một cỗ máy phức tạp có thể hoạt động như một tổ hợp các bộ phận đơn giản của nó.

Đề xuất: