สารบัญ:

เครื่องปรับอากาศ Arduino รุ่น: 6 ขั้นตอน
เครื่องปรับอากาศ Arduino รุ่น: 6 ขั้นตอน

วีดีโอ: เครื่องปรับอากาศ Arduino รุ่น: 6 ขั้นตอน

วีดีโอ: เครื่องปรับอากาศ Arduino รุ่น: 6 ขั้นตอน
วีดีโอ: ARDUINO #6 การใช้งานเบื้องต้น เเบบละเอียด บอร์ดวงจร ARDUINO UNO R3 HOW TO USE. IOREF AREF. POWER 2024, พฤศจิกายน
Anonim
เครื่องปรับอากาศ Arduino รุ่น
เครื่องปรับอากาศ Arduino รุ่น

ในการสาธิตความสามารถของทีมงานของเราในการสร้างแบบจำลองของอุปกรณ์รถไฟอัจฉริยะเพื่อวัตถุประสงค์ทางการตลาด วัตถุประสงค์คือเพื่อสร้างระบบที่เซ็นเซอร์อุณหภูมิอ่านข้อมูลจากวงจรและแปลงข้อมูลเป็นค่าอุณหภูมิที่เป็นทั้ง แสดงบนหน้าจอที่สว่างและเน้นว่าพัดลมเปิดหรือปิด จุดประสงค์คือเพื่อช่วยปรับให้เข้ากับสภาพการขับขี่ของผู้โดยสารโดยใช้ระบบอัตโนมัติที่ทำหน้าที่แสดงอุณหภูมิในบริเวณใกล้เคียง

ด้วยการใช้ชุดไมโครคอนโทรลเลอร์ Arduino และ MATLAB เวอร์ชัน 2016b และ 2017b เราสามารถแสดงผลลัพธ์เหล่านี้ด้วยความสำเร็จที่เกี่ยวข้อง

ขั้นตอนที่ 1: อุปกรณ์

อุปกรณ์
อุปกรณ์

ชุดไมโครคอนโทรลเลอร์ดังต่อไปนี้:

-Sparkfun กระดานสีแดง

-Sparkfun เขียงหั่นขนม

-LCD บอร์ด

-โพเทนชิออมิเตอร์

-เซ็นเซอร์อุณหภูมิ

-เซอร์โว

- อะแดปเตอร์ USB/Arduino

- สายจัมเปอร์ (25 ขั้นต่ำ)

แล็ปท็อป (Windows 10) พร้อมอินพุต USB

วัตถุที่พิมพ์ 3 มิติ (ตัวเลือก)

ขั้นตอนที่ 2: การตั้งค่าไมโครคอนโทรลเลอร์

การตั้งค่าไมโครคอนโทรลเลอร์
การตั้งค่าไมโครคอนโทรลเลอร์
การตั้งค่าไมโครคอนโทรลเลอร์
การตั้งค่าไมโครคอนโทรลเลอร์
การตั้งค่าไมโครคอนโทรลเลอร์
การตั้งค่าไมโครคอนโทรลเลอร์
การตั้งค่าไมโครคอนโทรลเลอร์
การตั้งค่าไมโครคอนโทรลเลอร์

พิจารณาสิ่งนี้: ระบบทั้งหมดประกอบด้วยหน่วยเดียวซึ่งแต่ละส่วนใช้ปัจจัยที่มีนัยสำคัญต่อผลลัพธ์สุดท้าย ด้วยเหตุผลนี้ ขอแนะนำอย่างยิ่งให้ตั้งค่าภาพของวงจรก่อนที่จะต่อสายไฟในลักษณะที่ยุ่งเหยิง

รูปภาพของแต่ละรุ่นสามารถดูได้ในคู่มือของชุดเครื่องมือไมโครคอนโทรลเลอร์หรือที่เว็บไซต์ของชุดเครื่องมือที่

เริ่มด้วยการติดเซ็นเซอร์อุณหภูมิ โพเทนชิออมิเตอร์ ขั้วต่อเซอร์โว และ LCD เข้ากับบอร์ด ขอแนะนำว่าเนื่องจากขนาดของ LCD และข้อกำหนดสำหรับจำนวนสายไฟจึงควรวางไว้บนเขียงหั่นขนมครึ่งหนึ่งของตัวเองกับอีกชิ้นหนึ่งในอีกครึ่งหนึ่งและเพื่อให้โพเทนชิออมิเตอร์อยู่ในพื้นที่สำหรับใครบางคน หมุนปุ่มได้อย่างง่ายดาย

สำหรับการอ้างอิง:

จอแอลซีดี: c1-16

เซอร์โว: i1-3 (GND + -)

เซ็นเซอร์อุณหภูมิ: i13-15 (- GND +)

โพเทนชิออมิเตอร์: g24-26 (- GND +)

ถัดไป เริ่มการเชื่อมต่อสายจัมเปอร์กับพินแต่ละพินของไมโครคอนโทรลเลอร์ แม้ว่าจะเป็นไปตามอำเภอใจในโครงการใหญ่โดยรวม แต่การออกแบบถูกสร้างขึ้นด้วยการเชื่อมต่อที่สำคัญเหล่านี้:

การเชื่อมต่อโพเทนชิออมิเตอร์กับ LCD: f25 -- e3

สายเซอร์โว GND: j1 -- อินพุตดิจิตอล 9

เซ็นเซอร์อุณหภูมิ GND: j14 -- อินพุตอนาล็อก 0

อินพุต LCD: e11-e15 -- อินพุตดิจิตอล 2-5

e4 - อินพุตดิจิตอล 7

e6 - อินพุตดิจิตอล 6

(หมายเหตุ: หากสำเร็จ ไฟทั้งสองดวงที่ขอบของ LCD ควรกะพริบ และโพเทนชิออมิเตอร์สามารถช่วยปรับความสว่างได้เมื่อได้รับพลังงานจากอะแดปเตอร์)

ไม่บังคับ: ใช้วัตถุที่พิมพ์ 3 มิติเป็นส่วนหนึ่งของข้อกำหนด เพื่อหลีกเลี่ยงความเสียหายที่อาจเกิดขึ้นกับชิ้นส่วนที่เปราะบางมากขึ้น จึงมีการวางเคสแบบขยายเป็นปลอกหุ้มรอบ LCD ขนาดของหน้าจอ LCD พิสูจน์แล้วว่ามีประมาณ 2-13/16" x 1-1/16" x 1/4" ดังนั้นจึงเปลี่ยนเฉพาะส่วนสูงเท่านั้น หากเครื่องพิมพ์ 3D พร้อมใช้งาน ให้พิจารณาเพิ่มวัตถุส่วนบุคคล แม้ว่าจะไม่จำเป็นก็ตาม นอกจากนี้ โปรดทราบว่าการวัดอาจแตกต่างกัน

ขั้นตอนที่ 3: ตั้งค่า MATLAB

ตั้งค่า MATLAB
ตั้งค่า MATLAB
ตั้งค่า MATLAB
ตั้งค่า MATLAB

ติดตั้ง MATLAB เวอร์ชันที่อัปเดตมากขึ้น (2016a ขึ้นไป) ได้ที่เว็บไซต์ MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle เมื่อเปิดแล้ว ให้ไปที่ Add-Ons บนแท็บ Home และดาวน์โหลด "MATLAB Support Package for Arduino Hardware" เพื่อให้สามารถเข้าถึงคำสั่งไมโครคอนโทรลเลอร์ได้

เมื่อเสร็จแล้ว สามารถทำการทดสอบเพื่อค้นหาการเชื่อมต่อของไมโครคอนโทรลเลอร์กับคอมพิวเตอร์/แล็ปท็อป หลังจากเชื่อมต่อกับอะแดปเตอร์ USB จากชุดเครื่องมือแล้ว ให้ใส่คำสั่ง "fopen(serial('nada'))"

ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้นโดยระบุตัวเชื่อมต่อเป็น "COM#" ซึ่งจำเป็นสำหรับการสร้างอ็อบเจ็กต์ Arduino ตราบใดที่เป็นอินพุตเดียวกันตลอดเวลา

เนื่องจาก LCD ไม่มีการเชื่อมต่อโดยตรงกับไลบรารี Arduino จึงต้องสร้างไลบรารีใหม่เพื่อแสดงข้อความ คำแนะนำคือให้สร้างไฟล์ LCDAddon.m จากตัวอย่าง LCD ที่พบในหน้าต่างวิธีใช้ MATLAB หลังจากค้นหา "Arduino LCD" แล้ววางไว้ในโฟลเดอร์ +arduinoioaddons หรือใช้โฟลเดอร์บีบอัดที่แนบมาและคัดลอกเนื้อหาทั้งหมดลงในไฟล์ดังกล่าว โฟลเดอร์

หากสำเร็จแล้ว โค้ดสำหรับสร้างวัตถุ Arduino ใน MATLAB ดังแสดงด้านล่าง

a=arduino('com#', 'uno', 'Libraries', 'ExampleLCD/LCDAddon');

ขั้นตอนที่ 4: ฟังก์ชั่น

ฟังก์ชั่น
ฟังก์ชั่น
ฟังก์ชั่น
ฟังก์ชั่น

สร้างฟังก์ชัน MATLAB สำหรับอินพุต เราใช้ตัวแปร "eff" และ "T_min"; สำหรับผลลัพธ์ แม้ว่าไม่จำเป็นในการออกแบบโดยรวม เราใช้ตัวแปร "B" เป็นวิธีการเก็บข้อมูลจากผลลัพธ์ อินพุต "eff" ช่วยให้สามารถจัดการความเร็วสูงสุดของเซอร์โว และอินพุต "T_min" จะควบคุมอุณหภูมิต่ำสุดที่ต้องการ ค่า "B" จึงควรสร้างเมทริกซ์ที่มีสามคอลัมน์สำหรับเวลา อุณหภูมิ และประสิทธิภาพของพัดลม นอกจากนี้ เพื่อเป็นโบนัสสำหรับรายละเอียด โค้ดด้านล่างยังมีคำสั่ง if ซึ่งความเร็วพัดลมจะลดลงห้าสิบเปอร์เซ็นต์เมื่อเข้าใกล้อุณหภูมิต่ำสุดที่ต้องการ

หากอินพุตและสายจัมเปอร์ทั้งหมดถูกวางไว้อย่างถูกต้องและสมมติว่าพอร์ตของการเชื่อมต่อ Arduino คือ COM4 และชื่อฟังก์ชันคือ "fanread" รหัสต่อไปนี้ควรเพียงพอ:

ฟังก์ชัน [B] = fanread(Tmin, eff)

ล้าง; clear lcd;a=arduino('com4', 'uno', 'Libraries', 'ExampleLCD/LCDAddon');

เสื้อ=0; t_max=15; % เวลาในหน่วยวินาที

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

initializeLCD(lcd, 'Rows', 2, 'Columns', 2);

ถ้า eff>=1 || อี<0

error('พัดลมจะไม่เปิดใช้งานเว้นแต่จะตั้งค่า eff ไว้ระหว่าง 0 ถึง 1.')

จบ

สำหรับ t=1:10 % จำนวนลูป/ช่วงเวลา

ชัดเจนค; % ป้องกันข้อผิดพลาดซ้ำ

v=readVoltage(a, 'A0');

TempC=(v-0.5)*100; % การประมาณค่าสำหรับช่วงแรงดันไฟฟ้า 2.7-5.5 V

ถ้า TempC>Tmin ถ้า TempC

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

writePWMDutyCycle(a, 'D9', eff/2); % เปิดเซอร์โวที่ความเร็วครึ่งหนึ่ง

spd=50;

อื่น

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

writePWMDutyCycle(a, 'D9', เอฟเอฟ); % เปิดเซอร์โวด้วยความเร็วที่กำหนด

spd=100;

จบ

อื่น

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

writePWMDutyCycle(a, 'D9', 0); % ปิดตัวลงหากเปิดอยู่แล้ว

spd=0;

จบ

printLCD(lcd, c);

หยุดชั่วคราว(3); % ผ่านไปสามวินาทีต่อลูป

เวลา(t)=t.*3;

tempplot(t)=TempC;

กระทำ(t)=spd;

แผนย่อย(2, 1, 1)

พล็อต (เวลา tempplot 'b-o') % กราฟเส้น

แกน([0 33 0 40])

xlabel('เวลา (วินาที)')

ylabel('อุณหภูมิ (C)')

เดี๋ยว

พล็อต([0 33], [Tmin Tmin], 'r-')

เดี๋ยว

พล็อต([0 33], [Tmin+2 Tmin+2], 'g-')

แผนย่อย(2, 1, 2)

bar(time,act) % กราฟแท่ง

xlabel('เวลา (วินาที)')

ylabel('ประสิทธิภาพ (%)')

จบ

B=transpose([เวลา;tempplot;act]);

จบ

เมื่อฟังก์ชั่นเสร็จสมบูรณ์ก็ถึงเวลาทดสอบ

ขั้นตอนที่ 5: การทดสอบ

การทดสอบ
การทดสอบ
การทดสอบ
การทดสอบ

ตอนนี้ทดสอบฟังก์ชันในหน้าต่างคำสั่งโดยใส่ "function_name(input_value_1, input_value_2)" แล้วดู ตรวจสอบให้แน่ใจว่าไม่มีวัตถุ Arduino อยู่แล้ว ถ้าใช่ ให้ใช้คำสั่ง "clear a" เพื่อลบออก หากเกิดข้อผิดพลาด ให้ตรวจสอบและดูว่าขั้วต่อใดอยู่ในตำแหน่งที่ไม่ถูกต้อง หรือใช้อินพุตดิจิตอลหรืออนาล็อกที่ไม่ถูกต้อง ผลลัพธ์คาดว่าจะแตกต่างกันไป แม้ว่าอาจเกิดจากตำแหน่งของสายจัมเปอร์และเซ็นเซอร์อุณหภูมิ

ความคาดหวังของผลลัพธ์ควรทำให้เกิดการเปลี่ยนแปลงในประสิทธิภาพของเซอร์โวและข้อมูลบน LCD ในแต่ละช่วงเวลาสามวินาที บรรทัดของข้อความควรแสดงอุณหภูมิเป็นเซลเซียส และไม่ว่าพัดลมจะทำงานหรือไม่ในขณะที่พัดลมทำงานที่ความเร็วเต็มที่ ความเร็วครึ่งหนึ่ง หรือไม่มีความเร็วเลย ข้อมูลไม่ควรมีความสอดคล้องกัน แม้ว่าหากต้องการผลลัพธ์ที่หลากหลายมากขึ้น ให้วางค่า "Tmin" ไว้ใกล้กับอุณหภูมิเฉลี่ยที่สร้างโดยวงจร

ขั้นตอนที่ 6: บทสรุป

บทสรุป
บทสรุป

แม้ว่างานยากจะสำเร็จได้ด้วยการลองผิดลองถูก แต่ผลลัพธ์สุดท้ายกลับกลายเป็นว่าน่าสนใจและน่าพอใจทีเดียว ระบบดังกล่าวช่วยแสดงให้เห็นว่าเครื่องจักรที่ซับซ้อนมากน้อยเพียงใด หรือแม้แต่บางส่วนของเครื่องจักรนั้น สามารถมองเห็นได้ว่าเป็นชุดของชิ้นส่วนอิสระที่ประกอบเข้าด้วยกันเพื่อบรรลุเป้าหมายเฉพาะ

เนื่องจากการออกแบบที่ค่อนข้างเรียบง่ายของโปรเจ็กต์สุดท้าย ผู้ที่มีความสนใจในการปรับปรุงประสิทธิภาพสามารถปรับเปลี่ยนและแก้ไขในผลิตภัณฑ์ขั้นสุดท้ายที่สามารถทำให้โปรเจ็กต์ดีขึ้นและซับซ้อนยิ่งขึ้นได้ อย่างไรก็ตาม มันเผยให้เห็นจุดอ่อนในวงจร เช่น การเปิดใช้งานของเซอร์โวทำให้เกิดความผันผวนเป็นระยะๆ ในการอ่านค่าแรงดันไฟฟ้าของวงจร ซึ่งอาจทำให้ระบบไม่สามารถให้ผลลัพธ์ที่เหมือนกันได้ นอกจากนี้ยังมีปัญหาในการเห็นการเปลี่ยนแปลงของความเร็วเซอร์โวเมื่อ "eff" ตั้งไว้ที่ 0.4 และสูงกว่า หากใช้เซ็นเซอร์อุณหภูมิและความชื้น โมเดลสุดท้ายจะซับซ้อนกว่าแต่แสดงค่าที่สม่ำเสมอมากกว่า อย่างไรก็ตาม นี่เป็นประสบการณ์ที่แสดงให้เห็นว่าเครื่องจักรที่ซับซ้อนสามารถทำหน้าที่เป็นส่วนประกอบง่ายๆ ร่วมกันได้

แนะนำ: