กลับไปหน้ารวมไฟล์
finally-a-way-to-sort-out-your-resistors-33cfd4.md

ชื่อโปรเจกต์: ในที่สุดก็ได้วิธีจัดเรียง Resistor ของคุณแล้ว

ปัญหาที่ผมต้องการแก้ไขด้วยโปรเจกต์นี้คือ การอ่านค่าของ Resistor ด้วยวิธีง่ายๆ เพื่อจัดเรียงพวกมันกลับเข้าลิ้นชักที่ถูกต้อง และรักษาสภาพโต๊ะให้เป็นระเบียบ ใช่ มีรหัสสีอยู่ แต่ว่า... ;-( ใช่ มี Multimeter พร้อมอุปกรณ์เสริมที่เหมาะสม แต่ว่า...

มันจะไม่ดีกว่าหรือ ถ้าแค่อ่านค่ามันออกมาตรงๆ?

16x2 LCD ที่เพิ่งแกะจากชุดคิทก็เพียงพอต่อความต้องการด้านการแสดงผลอย่างครบถ้วน

ผมเริ่มต้นโปรเจกต์แรกนี้เพื่อเรียนรู้ให้ดียิ่งขึ้น และแบ่งปันแนวคิดดีๆ นี้ให้กับผู้ที่เพิ่งเริ่มต้นด้วยชุดคิทพื้นฐาน

ดังนั้นผมจึงเริ่มต้นโปรเจกต์แรกนี้เพื่อเรียนรู้ให้ดียิ่งขึ้น และแบ่งปันแนวคิดดีๆ (ของ Federico - ดูส่วน Credit) ให้กับผู้ที่เพิ่งเริ่มต้นด้วยชุดคิทพื้นฐานและบอร์ด UNO

หลักการทางทฤษฎีที่นำมาใช้ที่นี่ (และในหลายๆ โปรเจกต์อื่น) คือ "Voltage divider equation" (ดู Wikipedia https://en.wikipedia.org/wiki/Voltage_divider) - เพื่อให้สิ่งที่ซับซ้อนกลายเป็นเรื่องง่าย มันคือวิธีคำนวณค่า Resistor ที่คุณไม่ทราบค่า โดยการนำ Resistor สองตัวมาต่ออนุกรมกัน และอ่านค่าแรงดันไฟฟ้าที่ตกคร่อม Resistor ที่ทราบค่า เมื่อเทียบกับแรงดันไฟฟ้ารวม ยิ่ง Resistor ทั้งสองมีค่าใกล้เคียงกันมากเท่าไหร่ ผลลัพธ์ก็จะยิ่งแม่นยำมากขึ้นเท่านั้น ดังนั้น เพื่อให้ได้ค่าที่สมดุล เราจึงใช้ Resistor ตัวอย่างที่ทราบค่าห้าค่าที่แตกต่างกัน

มาเริ่มกันเลย!!!

คุณต้องเตรียมส่วนประกอบต่างๆ ให้พร้อม แผนภาพด้านล่างจะช่วยให้คุณสามารถต่อวงจรบน breadboard ได้อย่างง่ายดาย ผมใช้ breadboard สองอันที่แตกต่างกัน - เพื่อให้ฟังก์ชันการแสดงผลของ 16x2 LED display คล้ายคลึงกับในบทเรียนมากที่สุด (คุณควรลองต่อจอแสดงผลแยกต่างหากก่อน หากคุณยังไม่เคยทำมาก่อน!) และเพื่อให้มองเห็นส่วน 'การเพิ่ม' Resistor ได้ชัดเจนยิ่งขึ้น ยังมีพื้นที่เหลือเฟือบน breadboard หลักที่จะย้ายทุกอย่างไปรวมกันบนอันเดียว - คุณเพียงแค่ต้องเชื่อมต่อด้วยสายสีเขียว 5 เส้นและสายสีเหลืองอีกเส้นหนึ่งเหมือนเดิม

มุมมอง breadboard แบบเต็ม (จาก Fritzing)

เมื่อคุณจัดเรียงส่วนประกอบในลักษณะนี้แล้ว คุณสามารถลองปรับตำแหน่งและตรวจสอบกับ Schematics ด้านล่างได้:

Schematics

สุดท้ายแล้วมันควรจะมีลักษณะประมาณนี้...

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

ผมได้เพิ่ม FUNCTION เข้าไปในโปรเจกต์ต้นฉบับ - ซึ่งเป็นโค้ดส่วนหนึ่งที่แยกออกมาอยู่หลังส่วน "setup" และ "loop" ตามปกติ - ซึ่งสามารถ "เรียกใช้" เพื่อทำการคำนวณเฉพาะ หรือ - ในกรณีของการจัดรูปแบบ - ของตัวแปรหนึ่งตัวหรือมากกว่า ผมใช้มันเพื่อแปลงตัวเลข 1.000.121, 34 ให้เป็น String ที่สามารถอ่านได้ตามข้อกำหนดปกติสำหรับ Resistor - เช่น 1MOhm การปัดเศษและการจัดรูปแบบจะต้องมีการทดสอบเพิ่มเติมอย่างครอบคลุม เพื่อตรวจสอบข้อยกเว้นและความผิดปกติทั้งหมด... ช่วยผมในส่วนนี้ด้วย

String OhmFormattingFunction(float Input) {

//FS 20200223 v0 - Ohm values formatting function **

String Result;

if (Input < 80) {

valore = (String(round(Input)));

suffisso = " ";

}

....

ผมสารภาพว่าผมเก็บคำบางคำไว้ในโค้ดเป็นภาษาอิตาลี (ของ Leonardo!) แต่คุณจะใช้เวลาเพียงครู่เดียวในการแทนที่คำเหล่านั้นด้วย... สำนวนภาษาที่คุณคุ้นเคย หรือเป็นภาษาอังกฤษที่เราใช้ร่วมกัน มีการใส่โค้ดสำหรับ Debug จำนวนมากในรูปแบบข้อความ Serial ที่พิมพ์ออกมา เพื่อติดตามขั้นตอนการทำงานจากจอ Monitor

แนวทางการปรับปรุง:

  • ก่อนอื่น คุณควรปรับโปรเจกต์นี้ให้เข้ากับสไตล์และความต้องการของคุณ - แก้ไขข้อผิดพลาดที่หลีกเลี่ยงไม่ได้ และพยายามปรับปรุงการคำนวณและ/หรือการจัดรูปแบบ โดยแจ้งให้เราทราบผ่านการคอมเมนต์ (ยินดีเป็นอย่างยิ่ง)
  • ผมขอแนะนำอย่างยิ่งให้คุณซื้อ 0.96" OLED display และลองใช้งานดู - มันค่อนข้างไม่แพงและใช้งานง่าย (ดูโปรเจกต์ของ Federico)
  • อีกวิธีหนึ่งที่จะทำให้เข้าใกล้ "ผลิตภัณฑ์" ที่สำเร็จรูปมากขึ้นคือการพอร์ตโค้ดไปยัง Nano Every - ผมพบว่า Pin ต่างๆ เหมือนกัน ฯลฯ (สิ่งนี้ต้องใช้การบัดกรี และถึงแม้จะไม่ยาก แต่ก็ต้องอาศัยความเกี่ยวข้องในระดับที่แตกต่างออกไป)

รายละเอียดทางเทคนิคเพิ่มเติม

การจัดหมวดหมู่ชิ้นส่วนอัตโนมัติ

โปรเจกต์นี้มอบโซลูชันระดับมืออาชีพสำหรับ "ลิ้นชักแห่งหายนะ" (Drawer of Doom)—การคัดแยก Resistor จำนวนมากที่กระจัดกระจายตามค่า Ohm ที่แม่นยำของพวกมัน

  • วงจร Voltage Divider ความแม่นยำสูง: Arduino ใช้ Reference Resistor ที่ทราบค่าและ 10-bit Analog-to-Digital Converter (ADC) เพื่อคำนวณค่าความต้านทานของส่วนประกอบ "Unknown" โดยใช้ Ohm's Law
  • ลอจิกการปรับช่วงอัตโนมัติ: ระบบจะสลับระหว่าง Reference Resistor ที่แตกต่างกัน (เช่น 220Ω, 10kΩ, 1MΩ) โดยอัตโนมัติโดยใช้ Internal Relay หรือ Transistor Bank เพื่อรักษาความแม่นยำในการวัดสูงตลอดช่วงกว้าง (1Ω ถึง 10MΩ)

การคัดแยกเชิงกล

  • การจัดลงถังด้วย Servo: หลังจากวัดค่าแล้ว Arduino จะขับเคลื่อน Micro Servo เพื่อจัดตำแหน่งรางเลื่อนให้อยู่เหนือถังเก็บหนึ่งในหลายๆ ถัง ซึ่งเป็นการ "ปล่อย" Resistor เข้าไปในหมวดหมู่ที่ถูกต้องโดยพิจารณาจากค่า E12 หรือ E24 ของมันอย่างมีประสิทธิภาพ

ข้อมูล Frontmatter ดั้งเดิม

title: "Finally a way to sort out your resistors"
description: "OK! There's the color codes but small as they are we can use a simple \"ohmmeter\" that just gives us the value with a single move."
author: "flavios"
category: "Lab Stuff"
tags:
  - "debugging tools"
views: 7119
likes: 6
price: 2450
difficulty: "Intermediate"
components:
  - "1x Resistor 100 ohm"
  - "1x Resistor 1k ohm"
  - "1x Resistor 1M ohm"
  - "1x Jumper wires (generic)"
  - "1x Resistor 100k ohm"
  - "1x Alphanumeric LCD, 16 x 2"
  - "1x Resistor 10k ohm"
  - "1x Arduino UNO"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/bd22d76c-b68c-4dd9-bf05-7460f3580280.ino"
documentationLinks: []
passwordHash: "e5e72a6bd26a019c6a34df7beb04f4e6eaf11ba270435739a78761d984729e3a"
encryptedPayload: "U2FsdGVkX193cA6/Uixrh6VlGGmrHfdxHIQLfI30zhOrtMZv3kRWVeSirlOjQvzg3D4ED9hkDrPzUa1VLvHtu0Hmv4JaBtXy42hheVo6Z3Q="
seoDescription: "Easily sort resistors with a DIY Arduino ohmmeter. Get instant values without struggling to read tiny color codes."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/finally-a-way-to-sort-out-your-resistors-33cfd4_cover.jpg"
lang: "th"