สารบัญ:

Arduino Portable Workbench ตอนที่ 3: 11 ขั้นตอน
Arduino Portable Workbench ตอนที่ 3: 11 ขั้นตอน

วีดีโอ: Arduino Portable Workbench ตอนที่ 3: 11 ขั้นตอน

วีดีโอ: Arduino Portable Workbench ตอนที่ 3: 11 ขั้นตอน
วีดีโอ: สอนการใช้งาน Arduino UNO & DHT11 To lcd @ AIC ผู้นำด้านอุปกรณ์ทางวิศวกรรม 2024, กรกฎาคม
Anonim
โต๊ะทำงานแบบพกพา Arduino ตอนที่ 3
โต๊ะทำงานแบบพกพา Arduino ตอนที่ 3
โต๊ะทำงานแบบพกพา Arduino ตอนที่ 3
โต๊ะทำงานแบบพกพา Arduino ตอนที่ 3

หากคุณเคยดูส่วนที่ 1, 2 และ 2B มาแล้ว จนถึงตอนนี้ยังไม่มี Arduino มากนักในโครงการนี้ แต่มีเพียงไม่กี่สายของบอร์ด ฯลฯ ที่ไม่ได้เป็นเรื่องเกี่ยวกับและส่วนโครงสร้างพื้นฐานจะต้องถูกสร้างขึ้นก่อน ส่วนที่เหลือทำงาน

นี่คือรหัสอิเล็กทรอนิกส์และ Arduino คำแนะนำ 2B ก่อนหน้าแสดงรายการรายละเอียดของแหล่งจ่ายไฟ

ส่วนนี้ประกอบด้วยโต๊ะทำงานแบบพกพาที่มีคุณสมบัติดังต่อไปนี้

หน้าจอสัมผัส TFT ให้การแสดงผลที่ขับเคลื่อนโดย Arduino Mega เพื่อให้สิ่งต่อไปนี้

  1. 8 จอแสดงผลดิจิตอล, ปิด/เปิด/สั่น
  2. จอแสดงผล 4 แรงดันไฟฟ้า
  3. แสดงกระแส/แรงดัน 3 ตัว
  4. เครื่องวัดความต้านทาน E24 (เพราะอ่านแถบสีไม่ได้แล้ว)

มีอย่างอื่นที่ฉันจะเพิ่ม แต่นี่เป็นเป้าหมายเริ่มต้นของฉัน รหัส Arduino ยังแสดงรายการจอแสดงผลแบบอนุกรม, จอแสดงผล I2C, เครื่องวัดความจุ, สวิตช์ดิจิตอลและออสซิลโลสโคปซึ่งฉันจะเพิ่มเมื่อเวลาผ่านไป นอกจากนี้ ฉันยังไม่ได้ตัดสินใจว่ามันคุ้มค่าที่จะเพิ่มแหล่งจ่ายไฟ 3V3, แหล่งจ่ายไฟแบบแปรผัน หรือการตรวจสอบแรงดันไฟ/กระแสของแหล่งจ่ายไฟหรือไม่ จนถึงตอนนี้ถูกสร้างขึ้นโดยใช้ Mega แต่ฉันยังต้องการย้ายฟังก์ชั่นบางอย่างเพื่อแยกวงจรที่เข้าถึง I2C ไม่ว่าจะเป็นชิปเฉพาะหรือ Atmel 328 ที่ตั้งโปรแกรมไว้ซึ่งจะรองรับคอนโทรลเลอร์อื่นได้ง่ายขึ้น

เสบียง

ซ็อกเก็ตส่วนหัว 5 x 16 ทาง

ซ็อกเก็ตดูปองต์ 5 x 8 ทาง จริง ๆ แล้วทำจากซ็อกเก็ตบรรทัดเดียวยาว 40 ทางตัดตามความยาวที่ต้องการ

1 x 3.5 ILI9486 หน้าจอสัมผัส TFT

1 x Arduino Mega 2650

ส่วนประกอบส่วนบุคคล

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

อินพุตดิจิตอล

ตัวต้านทาน 16 x 10K

อินพุตแบบอะนาล็อก

1 x TL074 a quad jfet opamp นี่คือสิ่งที่ฉันมีเป็นอะไหล่ สิ่งที่คล้ายกันจะทำ:)

ตัวต้านทาน 4 x 68K และ 4 x 430k ใช้เป็นตัวแบ่งแรงดันไฟฟ้า

4 x 1N4001 หรือเทียบเท่า

เครื่องวัดความต้านทาน

1 x TL072 a dual jfet opamp นี่คือสิ่งที่ฉันมีเป็นอะไหล่ สิ่งที่คล้ายกันจะทำ:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (หากค่าเหล่านี้เปลี่ยนแปลง จะต้องอัปเดตโค้ด Arduino)

ขั้นตอนที่ 1: ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์

ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์
ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์
ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์
ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์
ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์
ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์
ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์
ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์

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

ข้อกำหนดหลักสำหรับอุปกรณ์อิเล็กทรอนิกส์ของโครงการคือการจ่ายไฟให้กับวงจรใหม่โดยใช้ Arduino หรือ Raspberry PI ดังนั้น 5V จึงเป็นสิ่งจำเป็นเช่นเดียวกับซ็อกเก็ต USB สวิตช์ที่ส่องสว่างจะบอกฉันว่าเปิดเครื่องอยู่หรือไม่ และเมื่อทำการทดสอบ ฉันต้องสร้างวงจรเสริมขนาดเล็กเป็นประจำเพื่อแสดงสถานะชั่วคราว ฉันมีกล่องเมตรขนาดใหญ่ซึ่งใช้พื้นที่บนโต๊ะเป็นจำนวนมาก และที่สำคัญที่สุด ฉันต้องการจอแสดงผลที่สามารถอ่านได้ง่ายเมื่อสายตาของฉันเสื่อมลง บางอย่างที่มีตัวอักษรขนาดใหญ่ที่สว่างจ้า ดังนั้นฉันจึงต้องการจอแสดงผลดิจิตอล เครื่องวัดแรงดันไฟฟ้า เครื่องวัดกระแสไฟฟ้า และในกรณีนี้ มีความหรูหราเล็กน้อยในรูปแบบของเครื่องวัดความต้านทานเพื่อระบุตัวต้านทานซีรีส์ E24 อย่างรวดเร็ว โดยทั้งหมดอยู่ภายใน 15 ซม. จากเขียงหั่นขนมของโครงการและในเคสแบบพกพาขนาดกะทัดรัด

PSU หลักที่อธิบายในบทความก่อนหน้านี้ จ่ายไฟให้กับฝาโดยใช้สายแพ 40 ทาง ทำให้สามารถเชื่อมต่อทั้งสองได้ในขณะที่ปิดฝา มีอุปกรณ์จ่ายไฟ 5v และ 12V แบบสวิตช์สำหรับอุปกรณ์อิเล็กทรอนิกส์ของแผงควบคุมและเพื่อจัดหาเขียงหั่นขนม

อินพุตไฟและสัญญาณทั้งหมดมีให้โดยซ็อกเก็ตส่วนหัว PCB 2x8way ขนานกับซ็อกเก็ตดูปองต์ 8 ทาง นี่อาจจะเกินความสามารถ เขียงหั่นขนมส่วนใหญ่มีรางไฟ แต่มันง่ายที่จะทำ

บนปลั๊กไฟ ราง 0V หลักของแหล่งจ่ายไฟนั้นใช้ร่วมกันได้กับอุปกรณ์สิ้นเปลืองทั้งหมดและมีจำหน่าย ด้านบนนี้เป็นแหล่งจ่ายไฟ 5V ซึ่งเปิดอยู่บนยูนิตพื้นฐาน และด้านบนนี้เป็นอุปกรณ์จ่าย +12V และ -12V ที่ให้มาสองชุด ซึ่งขณะนี้ได้รับการแก้ไขแล้ว แม้ว่าฉันจะมีความคิดที่จะแฮ็คแหล่งจ่ายไฟเพื่อให้เป็นตัวแปรและให้แรงดันไฟ 3.3-20V อุปทานตัวแปร

ขั้นตอนที่ 2: อุปกรณ์อิเล็กทรอนิกส์

เครื่องใช้ไฟฟ้า
เครื่องใช้ไฟฟ้า
เครื่องใช้ไฟฟ้า
เครื่องใช้ไฟฟ้า
เครื่องใช้ไฟฟ้า
เครื่องใช้ไฟฟ้า

ฉันได้โพสต์ภาพพิมพ์หน้าจอของเลย์เอาต์เขียงหั่นขนม ลักษณะของวงจรเมื่อสร้างบนบอร์ดเมทริกซ์ แผนผังเป็น PDF และไฟล์ Fritzing ดั้งเดิม อุปกรณ์นี้ไม่ใช่อุปกรณ์อิเล็กทรอนิกส์ที่ซับซ้อนเป็นพิเศษ และมีไว้เพื่อติดตั้งตัวต้านทานจำกัด บัฟเฟอร์แอมพลิฟายเออร์ และการเชื่อมต่อพัดลมสำหรับบอร์ด Arduino แต่มีภาพหลายภาพให้เห็นความเชื่อมโยงต่างๆ มากมายให้ชัดเจนขึ้นอีกหน่อย การเดินสายส่วนใหญ่ประกอบขึ้นจากความยาวมาตรฐานของสายแพแบบดูปองท์แบบ pre-crimped ที่ประกอบขึ้นใหม่เป็นตัวเรือนแบบหลายทางเพื่อให้เสียบซ้ำได้ง่ายและเชื่อถือได้มากขึ้น

Arduino Mega 2650 ติดตั้งอยู่ที่ฝาพร้อมช่องเสียบ USB สำหรับตั้งโปรแกรม ขับเคลื่อนหน้าจอสัมผัส TFT ที่ใช้ในการแสดงผลและอินพุตทั้งหมด

มีอินพุตดิจิตอล 8 ช่องผ่านส่วนหัว PCB 2 x 8 ทาง และสถานะจะแสดงบนหน้าจอหากเลือกฟังก์ชันนั้น นี่คือหน้าจอเปิด/ปิดอย่างง่าย ปิดสีแดง เปิดสีเขียว ฉันอาจเพิ่มการสั่นเป็นการเปลี่ยนแปลงในอนาคต

อินพุตแรงดันไฟฟ้า 4 อินพุตยังมีให้เลือกใช้ผ่านส่วนหัวของ PCB และตัวแบ่งแรงดันไฟฟ้า แรงดันไฟฟ้าที่แสดงบนหน้าจอ แรงดันไฟฟ้าอินพุตแต่ละอันที่แผงด้านหน้า โดยอ้างอิงถึงพื้นทั่วไป จะถูกส่งผ่านไปยังตัวแบ่งแรงดันไฟฟ้าที่หารด้วย 7 จากนั้นบัฟเฟอร์โดยหนึ่งในสี่ของออปแอมป์ใน TL074 ที่กำหนดค่าเป็นแอมพลิฟายเออร์สำหรับแก้ไข เพื่อหลีกเลี่ยงอุบัติเหตุที่มีแรงดันไฟฟ้าติดลบ. เป็นการดีที่จะเพิ่มตัวบ่งชี้ขั้วในบางช่วง แต่ไม่ใช่รอบนี้ เอาต์พุตจาก op-amp แต่ละตัวคืออินพุต ADC ตัวใดตัวหนึ่งของ Arduino

ส่วนหัว PCB เพิ่มเติมแสดงการเชื่อมต่อทั้งแบบอนุกรมและ I2C สิ่งนี้ทำขึ้นเพื่อให้สามารถใช้งานคอนโซลแสดงผลแบบอนุกรมและฟังก์ชันการระบุ I2C พื้นฐานได้

อินพุตแรงดันไฟฟ้า/ดิจิตอลอาจพิสูจน์ได้ว่าไม่จำเป็นทั้งหมด ดังนั้นจึงอาจได้รับการกำหนดค่าใหม่เพื่อให้เอาต์พุตสวิตชิ่งดิจิตอล

Arduino จ่ายพลังงานให้กับอาร์เรย์ความต้านทานบนตัวแบ่งแรงดันไฟฟ้าเพื่อให้มีฟังก์ชันมิเตอร์วัดความต้านทาน เอาต์พุตของสิ่งนี้ถูกบัฟเฟอร์โดย op-amp (ครึ่ง TL072) ก่อนที่ Arduino จะอ่านและคำนวณความต้านทาน จุดประสงค์ของการดำเนินการนี้ไม่ใช่การวัดความต้านทานที่แม่นยำ แต่เพื่อระบุค่าซีรีส์ E24 อย่างรวดเร็ว แม้ว่าการสอบเทียบบางส่วนจะสามารถใช้เป็นเครื่องวัดพื้นฐานได้ การทำงานคือการตรวจจับเมื่อมีความต้านทานน้อยกว่า 9M9 บนสปริงสองตัวที่ติดตั้งบนแผงด้านหน้า แล้วเลือกสลับ 5V ไปที่ตัวต้านทานแต่ละตัวในอาเรย์ตัวแบ่งจนกว่าจะวัดค่าที่ใกล้เคียงที่สุดที่ 2.5V หรือตัวต้านทานสุดท้ายที่เลือก จากนั้นทำการคำนวณและเปรียบเทียบเพื่อกำหนดค่า E24 ที่ใกล้เคียงที่สุด 5V นั้นมาจากเอาต์พุตดิจิตอล 3-10 บน Arduino ซึ่งได้รับการกำหนดค่าใหม่เป็นอินพุตอิมพีแดนซ์สูงระหว่างการวัดแต่ละครั้งเพื่อลดข้อผิดพลาด หมุด Arduino D3-10 ถูกใช้โดยเจตนาเพื่อเพิ่มในอนาคตอาจเป็นเครื่องวัดความจุโดยใช้ความสามารถ PWM ของเอาต์พุตเหล่านี้ซึ่งอาจเป็นเพียงการเปลี่ยนแปลงซอฟต์แวร์เท่านั้น

บอร์ด INA3221 ที่ได้รับการดัดแปลงให้การวัดแรงดันและกระแสเพิ่มเติมผ่านอินเทอร์เฟซ I2C พร้อมอินพุตจากแผงด้านหน้า ทุกอย่างมีสายโดยใช้สายจัมเปอร์เพื่อให้การกำหนดฟังก์ชันใหม่ทำได้ง่ายในอนาคต

ขั้นตอนที่ 3: INA3221 อินพุตแรงดัน/กระแส

INA3221 อินพุตแรงดัน/กระแส
INA3221 อินพุตแรงดัน/กระแส

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

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

จากนั้นทำการเชื่อมต่อกับบอร์ดจากแผงด้านหน้าโดยใช้จัมเปอร์ข้ามตัวต้านทานการวัด

พลังงานสำหรับบอร์ดถูกนำมาจากพิน Arduino 5V เช่นเดียวกับกราวด์ โดยการเชื่อมต่อ I2C ไปที่ PCB อิเล็กทรอนิกส์

ขั้นตอนที่ 4: หน้าจอแสดงผล

หน้าจอแสดงผล
หน้าจอแสดงผล

นี่เป็นการซื้อจาก eBay และหาได้จากหลายแหล่งและเป็นจอแสดงผลที่ขับเคลื่อนด้วย ILI9486 ฉันพบว่ามันทำงานได้ดีที่สุดกับไลบรารี MCUFRIEND ของ David Prentice แต่ต้องมีการปรับเทียบก่อนใช้งาน ซึ่งเพียงแค่ต้องการให้ตัวอย่างไลบรารีตัวใดตัวหนึ่งที่ David จัดเตรียมไว้ให้ทำงานโดยเชื่อมต่อกับหน้าจอ ทำตามคำแนะนำบนหน้าจอและจดบันทึก พารามิเตอร์ที่แสดง แทรกลงในไฟล์โค้ด Arduino_Workstation_v01 หากต่างกัน

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

ขั้นตอนที่ 5: เชื่อมต่อเข้าด้วยกัน

เชื่อมต่อเข้าด้วยกัน
เชื่อมต่อเข้าด้วยกัน
เชื่อมต่อเข้าด้วยกัน
เชื่อมต่อเข้าด้วยกัน
เชื่อมต่อเข้าด้วยกัน
เชื่อมต่อเข้าด้วยกัน

Arduino Mega ตั้งอยู่ที่ LHS ของฝาปิด โดยมีพอร์ต USB และพอร์ตจ่ายไฟที่สามารถเข้าถึงได้จากภายนอกเคส บน RHS ถัดจาก Arduino คืออุปกรณ์อิเล็กทรอนิกส์ที่ติดตั้งบนบอร์ดเมทริกซ์ และด้านบนนี้ติดตั้งบอร์ด INA3221 ที่ด้านหลังของฝา

นอกจากนี้ ที่ด้านหลังของฝาปิดที่ LHS เหนือ Arduino ยังเป็นบอร์ดเชื่อมต่อกราวด์ทั่วไปที่ต่อกราวด์ทั้งหมด

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

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

ขั้นตอนที่ 6: ลูกค้าเป้าหมายรวม

รวมลูกค้าเป้าหมาย
รวมลูกค้าเป้าหมาย
  1. อินพุตแรงดันไฟฟ้าและความต้านทานไปยังพอร์ต Arduino ADC สายไฟยาว 20 ซม. ห้าตัวพร้อมขั้วต่อตัวผู้แต่ละตัวที่ปลายด้านหนึ่งรวมกันเป็นตัวเรือนหกทางพร้อมช่องว่างเพื่อรองรับช่องว่างในส่วนหัวของ Arduino
  2. สายเคเบิล 4 ทาง 10 ซม. จากตัวเรือนสี่ทางไปยังตัวเรือน 2 ทาง 2 ทางเพื่อเชื่อมต่อพินแรงดันไฟฟ้าที่แผงด้านหน้าเข้ากับแผงวงจร
  3. สายเคเบิล 8 ทาง 10 ซม. จากเฮดเดอร์ตัวผู้ 2x4 ทางไปยังเฮดเดอร์ตัวเมีย 8 ทาง
  4. สายเคเบิล 4 ทาง 10 ซม. จากตัวเรือนตัวเมีย 4 ทางไปยังตัวเรือนตัวเมีย 4 ทางเพื่อเชื่อมต่อ Serial และ I2C กับแผงด้านหน้า
  5. สายเคเบิล 4 ทาง 10 ซม. จากตัวเรือน 4 ทางถึงตัวเชื่อมต่อเดี่ยวสี่ตัวเพื่อเชื่อมต่อ INA3221 กับแผงด้านหน้า
  6. สายเคเบิล 4 ทาง 20 ซม. เพื่อเชื่อมต่อตัวเรือนตัวเมียสี่ทางกับตัวเรือนตัวผู้สี่ทางเพื่อต่อ Serial และ I2C จาก Arduino ไปยังแผงวงจรพัดลม
  7. สายเคเบิล 8 ทาง 10 ซม. จากเคสตัวเมีย 8 ทางไปยังเคสตัวเมีย 8 ทางเพื่อนำอินพุตดิจิตอลจากแผงด้านหน้าไปยังแผงวงจร
  8. สายเคเบิล 8 ทาง 10 ซม. เพื่อนำตัวเรือนตัวเมีย 8 ทางไปยังตัวเรือนตัวผู้ 3 ทางหนึ่งตัวและตัวเรือนตัวผู้ 5 ทางหนึ่งตัวเพื่อเชื่อมต่อตัวแบ่งความต้านทานกับแผงวงจร ตัวเรือนทั้งสองนี้ใช้เพื่อรองรับช่องว่างที่ไม่ได้มาตรฐานในส่วนหัวของบอร์ด Arduino
  9. สายเคเบิล 2 ทาง 20 ซม. เพื่อต่อตัวเรือนตัวเมีย 2 ทางกับขั้วต่อตัวผู้สองตัวสำหรับแหล่งจ่ายไฟ INA3221
  10. สายเคเบิล 2 ทาง 10 ซม. เพื่อนำตัวเรือนตัวเมีย 2 ทางไปยังตัวเรือนตัวเมียสองตัวเพื่อเชื่อมต่อการเชื่อมต่อจอภาพ INA3221 ตัวที่สามกับแผงด้านหน้า
  11. สายเคเบิล 2 ทาง 10 ซม. เพื่อนำตัวเรือนตัวเมีย 2 ทางไปยังตัวเรือนตัวเมีย 2 ทางเพื่อเชื่อมต่อ INA3221 กับการเชื่อมต่อ fanout I2C

ขั้นตอนที่ 7: รหัส Arduino

รหัส Arduino
รหัส Arduino
รหัส Arduino
รหัส Arduino

โปรเจ็กต์นี้มีพื้นฐานมาจาก Arduino Mega 2650 ด้วยเหตุผลง่ายๆ ว่าทำไมฉันจึงต้องการพอร์ต I/O จำนวนมากที่ทุ่มเทให้กับงานในรูปแบบที่เรียบง่าย ไลบรารีสำหรับหน้าจอสัมผัส TFT มีค่าเริ่มต้นเพื่อรองรับ Arduino Uno และต้องได้รับการแก้ไขเพื่อรองรับ Mega การแก้ไขไลบรารีได้รับการสนับสนุนโดยผู้สร้างโค้ด TFT ดั้งเดิม ซึ่งทำได้ง่ายและอธิบายไว้ในขั้นตอนต่อไป

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

โค้ดเวอร์ชันที่ใช้งานได้จะรวมอยู่ที่นี่และจะได้รับการอัปเดต แต่การอัปเดตล่าสุดจะอยู่ใน github

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

องค์ประกอบเมนู - สิ่งเหล่านี้ไม่แสดงข้อมูล แต่เมื่อแตะต้องเรียกใช้งานรูทีนย่อยที่เกี่ยวข้องซึ่งระบุไว้ในพารามิเตอร์องค์ประกอบ

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

องค์ประกอบอะนาล็อก - แสดงแรงดันไฟฟ้าโดยประมาณตามที่วัดได้จากพินอะนาล็อกที่เกี่ยวข้อง สี่ถูกกำหนดไว้แต่แรก

องค์ประกอบที่มีความแม่นยำ - แสดงอินพุตจากโมดูลมาตรวัดโวลต์/กระแสที่มีความแม่นยำภายนอก มีเพียงสามโมดูลเท่านั้น แต่สามารถเพิ่มโมดูลที่สองหรือสามได้

องค์ประกอบความต้านทาน - เป็นองค์ประกอบเดียวที่แสดงอินพุตจากเครื่องวัดความต้านทาน

การสัมผัส - นี่เป็นกิจวัตรเดียวที่จะดำเนินการเพื่อตรวจจับว่ามีการแตะหน้าจอหรือไม่ จากนั้นจึงตัดสินใจตามสิ่งที่สัมผัส เช่น หากเป็นรายการเมนู สิ่งที่นำมาแสดงต่อไปคืออะไร

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

โหมดปกติ - แสดงอินพุตดิจิตอล 8 ช่อง, อินพุตแรงดันไฟฟ้าอะนาล็อก 4 ช่อง, องค์ประกอบความแม่นยำ 3 รายการ, องค์ประกอบความต้านทาน และองค์ประกอบเมนู 4 รายการ การเลือก Normal จากเมนูจะทำให้การแสดงผลเข้าสู่โหมดนี้

โหมดขนาดใหญ่ - เลือกได้โดยแตะที่องค์ประกอบใดๆ บนหน้าจอ ตามด้วยขนาดใหญ่ เมื่อเลือกแล้ว ประเภทองค์ประกอบนั้นเป็นประเภทเดียวที่เลือกและองค์ประกอบประเภทนั้นจะได้รับการจัดเรียงใหม่เพื่อให้เต็มทั้งหน้าจอ

โหมดเต็มหน้าจอ - เลือกได้โดยแตะองค์ประกอบใดๆ บนหน้าจอ ตามด้วยโหมดเต็มหน้าจอ เมื่อเลือก องค์ประกอบดังกล่าวจะเป็นองค์ประกอบเดียวที่แสดงและได้รับการจัดเรียงใหม่เพื่อให้เต็มทั้งหน้าจอ ทำให้มองเห็นรายการนั้นได้สูงสุด

หากต้องการเพิ่มฟังก์ชันเพิ่มเติม จำเป็นต้องเพิ่มกิจวัตรต่อไปนี้

รูทีน 'วาด' ซึ่งเรียกเพื่อรับข้อมูลสำหรับองค์ประกอบนั้น เรียกรูทีนการอัพเดตหน้าจอที่เหมาะสม และลงทะเบียนข้อมูลการสัมผัสที่ส่งคืน

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

รูทีน 'การตั้งค่า' ซึ่งเรียกว่าเป็นส่วนหนึ่งของการตั้งค่า Arduino

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

ขั้นตอนที่ 8: การแก้ไข Arduino Libraries

การแก้ไข Arduino Libraries
การแก้ไข Arduino Libraries
การแก้ไข Arduino Libraries
การแก้ไข Arduino Libraries

จอแสดงผลที่ฉันใช้ทำงานได้ดีมากกับ Arduino Uno และไลบรารีพื้นฐานที่เขียนขึ้น แต่จะทำงานได้ช้าเมื่อโอนไปยัง Arduino Mega โดยตรง ในการขับเคลื่อนจอแสดงผลอย่างถูกต้อง ต้องใช้ดาต้าพินชุดอื่น และการเปลี่ยนแปลงการใช้งานนี้จะต้องตั้งค่าในไลบรารี นี่เป็นการเปลี่ยนแปลงง่ายๆ และตั้งใจโดยผู้เขียน รูปภาพเน้นการเปลี่ยนแปลงที่ทำ

ทั้งสองไฟล์ถูกเก็บไว้ในโฟลเดอร์ MCUFRIEND_kbv\utility ในชื่อ mcufriend_shield.h และ mcufriend_special.h การเปลี่ยนแปลงที่จำเป็นเป็นอันดับแรกในไฟล์ส่วนหัว 'shield' เพื่อให้แน่ใจว่าบรรทัดแรกอ่าน

#define USE_SPECIAL

เพื่อให้แน่ใจว่าโหลดไฟล์ส่วนหัว 'พิเศษ'

ไฟล์ส่วนหัว 'พิเศษ' ต้องได้รับการอัปเดตด้วยเพื่อให้แน่ใจว่าบรรทัด

#define USE_MEGA_8BIT_PROTOSHIELD

ไม่มีการแสดงความคิดเห็น

การเปลี่ยนแปลงทั้งสองนี้หมายความว่ารหัสแสดงผลสำหรับจอแสดงผลนี้ทำงานโดยใช้หมุด 20-29 บน Arduino Mega แทนที่จะเป็นค่าเริ่มต้น 3-10 บน Uno

ขั้นตอนที่ 9: ภาพหน้าจอ

ภาพหน้าจอ
ภาพหน้าจอ
ภาพหน้าจอ
ภาพหน้าจอ
ภาพหน้าจอ
ภาพหน้าจอ

ฉันได้ใส่ภาพหน้าจอที่นี่เพื่อให้ง่ายต่อการดูว่าคอนโซลควรทำอะไร ส่วนถัดไปหมายถึงการโหลดโค้ดลงใน Arduino

หน้าจอแรกแสดงหน้าจอ 'ปกติ' โดยมีเมนูอยู่ด้านบน การวัดแรงดันไฟฟ้าบน LHS การวัดแรงดันและกระแสบน RHS และสถานะพินดิจิทัลที่ด้านล่าง สีแดงสำหรับ 'เท็จ/ต่ำ' สีเขียวสำหรับ 'จริง/สูง '. สุดท้ายตรงกลางคือการวัดความต้านทาน

หน้าจอที่สองแสดงอินพุตดิจิตอลที่เปิดใช้งานในโหมดขนาดใหญ่ แต่ละอินพุตจะแสดงอย่างชัดเจน

หน้าจอที่สามแสดงอินพุตแรงดันไฟฟ้าในโหมดขนาดใหญ่

ขั้นตอนที่ 10: กำลังโหลดรหัส Arduino

มีการแนบรหัส แต่ดังที่ได้กล่าวไว้ก่อนหน้านี้จะถูกนำไปไว้ที่ github ในบางครั้งและเพิ่มตำแหน่งที่นี่ ไฟล์ซอร์สโค้ดหลักคือ Arduino_Workbench_v01.ino และรูทีนอื่นๆ คือการจัดเตรียมคุณสมบัติต่างๆ

หากไลบรารีได้รับการแก้ไขแล้วและ Arduino Mega2650 ได้รับการตั้งค่าเป็นแพลตฟอร์มเป้าหมายใน Arduino IDE แล้วโค้ดควรคอมไพล์ในครั้งแรก

ไลบรารีที่ต้องโหลดคือไลบรารี Adafruit GFX และ Touchscreen ซึ่งควรมีให้ใช้งานจากตัวจัดการไลบรารี Arduino สำเนาของ MCUFRIEND_kbv ที่สามารถดาวน์โหลดได้จาก github และสำหรับ INA3221 ไลบรารี SwitchDocLabs SDL_Arduino_INA3221 ก็สามารถดาวน์โหลดได้จาก github ด้วยเช่นกัน การค้นหาของ Google

ขั้นตอนที่ 11: สัมผัสสุดท้าย

สัมผัสสุดท้าย
สัมผัสสุดท้าย
สัมผัสสุดท้าย
สัมผัสสุดท้าย
สัมผัสสุดท้าย
สัมผัสสุดท้าย
สัมผัสสุดท้าย
สัมผัสสุดท้าย

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

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

ตอนนี้ฉันกำลังจะเริ่มใช้งาน ฉันมีบางโครงการที่ต้องทำ!

แนะนำ: