สารบัญ:
- ขั้นตอนที่ 1: อุปกรณ์
- ขั้นตอนที่ 2: การตั้งค่าไมโครคอนโทรลเลอร์
- ขั้นตอนที่ 3: ตั้งค่า MATLAB
- ขั้นตอนที่ 4: ฟังก์ชั่น
- ขั้นตอนที่ 5: การทดสอบ
- ขั้นตอนที่ 6: บทสรุป
วีดีโอ: เครื่องปรับอากาศ Arduino รุ่น: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ในการสาธิตความสามารถของทีมงานของเราในการสร้างแบบจำลองของอุปกรณ์รถไฟอัจฉริยะเพื่อวัตถุประสงค์ทางการตลาด วัตถุประสงค์คือเพื่อสร้างระบบที่เซ็นเซอร์อุณหภูมิอ่านข้อมูลจากวงจรและแปลงข้อมูลเป็นค่าอุณหภูมิที่เป็นทั้ง แสดงบนหน้าจอที่สว่างและเน้นว่าพัดลมเปิดหรือปิด จุดประสงค์คือเพื่อช่วยปรับให้เข้ากับสภาพการขับขี่ของผู้โดยสารโดยใช้ระบบอัตโนมัติที่ทำหน้าที่แสดงอุณหภูมิในบริเวณใกล้เคียง
ด้วยการใช้ชุดไมโครคอนโทรลเลอร์ 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 เวอร์ชันที่อัปเดตมากขึ้น (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 และสูงกว่า หากใช้เซ็นเซอร์อุณหภูมิและความชื้น โมเดลสุดท้ายจะซับซ้อนกว่าแต่แสดงค่าที่สม่ำเสมอมากกว่า อย่างไรก็ตาม นี่เป็นประสบการณ์ที่แสดงให้เห็นว่าเครื่องจักรที่ซับซ้อนสามารถทำหน้าที่เป็นส่วนประกอบง่ายๆ ร่วมกันได้
แนะนำ:
วงจร ECG อัตโนมัติ รุ่น: 4 ขั้นตอน
Automated ECG Circuit Model: เป้าหมายของโครงการนี้คือการสร้างแบบจำลองวงจรที่มีส่วนประกอบหลายอย่างที่สามารถขยายและกรองสัญญาณ ECG ขาเข้าได้อย่างเพียงพอ ส่วนประกอบสามส่วนจะได้รับการสร้างแบบจำลองแยกกัน: แอมพลิฟายเออร์เครื่องมือวัด, ฟิลเตอร์แอคทีฟบาก และ
Homemade Combat Robot รุ่น 2: 6 ขั้นตอน
Homemade Combat Robot Version 2: ดังนั้น… นี่คือหุ่นยนต์ต่อสู้รุ่นที่สองของฉัน! ฉันอยากจะแนะนำให้คุณรู้จักกับ "Sidewinder" สำหรับโครงการนี้ ฉันใช้ชิ้นส่วนที่พิมพ์ 3 มิติ (ออกแบบโดยฉัน) และชิ้นส่วนอิเล็กทรอนิกส์บางชิ้นที่ฉันซื้อด้วยราคาต่ำกว่า 100 ดอลลาร์ ฉันใช้ CAD ดังนั้น
R5-D4 รุ่น: 6 ขั้นตอน
รุ่น R5-D4: รุ่นนี้ของ R5-D4 ประกอบด้วยไฟ LED สีฟ้า 3 ดวงเป็นดวงตาและสเต็ปมอเตอร์เพื่อหันศีรษะ ไฟ LED จะกะพริบในรูปแบบที่กำหนดซึ่งแสดง “R5D4” ในรหัสมอร์ส: di-dah-dit di-di-di-di-dit dah-di-dit di-di-di-di-dah สำหรับ “di” และ “dit” ไฟ LED ข
รุ่น Litwick: 6 ขั้นตอน
Litwick Model: ใช้ LED และ Arduino เพื่อออกแบบกล่องแสดงผล ฉันใช้รหัสไฟหายใจเพื่อสร้าง LED ภายใต้โมเดล มันสามารถแสดงสถานะของแสงเทียนได้
เคสสำหรับ Raspberry Pi 3 รุ่น B: 5 ขั้นตอน
เคสสำหรับ Raspberry Pi 3 Model B: รายละเอียด