สารบัญ:
- ขั้นตอนที่ 1: เลือก Sigal Wire
- ขั้นตอนที่ 2: ขยายสายไปยังบอร์ด Arduino
- ขั้นตอนที่ 3: การวิเคราะห์สัญญาณ
- ขั้นตอนที่ 4: เขียนโค้ดการวิเคราะห์สัญญาณของคุณ
- ขั้นตอนที่ 5: ระบุตัวกรอง
- ขั้นตอนที่ 6: การกรอง: ตอนที่ 1
- ขั้นตอนที่ 7: การกรอง: ตอนที่ 2
- ขั้นตอนที่ 8: การกรอง: ตอนที่ 3
- ขั้นตอนที่ 9: การกรอง: ตอนที่ 4
- ขั้นตอนที่ 10: แสดงความเร็วของเครื่องยนต์ที่กรองแล้ว
วีดีโอ: ใช้ Arduino เพื่อแสดง Engine RPM: 10 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
คู่มือนี้จะสรุปวิธีที่ฉันใช้ Arduino UNO R3, หน้าจอ LCD ขนาด 16x2 พร้อม I2C และแถบ LED ที่จะใช้เป็นมาตรวัดความเร็วเครื่องยนต์และไฟเปลี่ยนเกียร์ในรถแทร็ก Acura Integra ของฉัน มันถูกเขียนขึ้นในแง่ของผู้ที่มีประสบการณ์หรือสัมผัสกับซอฟต์แวร์ Arduino หรือการเข้ารหัสโดยทั่วไป, ซอฟต์แวร์คณิตศาสตร์ MATLAB และการสร้างหรือปรับเปลี่ยนวงจรไฟฟ้า ในอนาคตอาจมีการแก้ไขเพื่อให้เข้าใจได้ง่ายขึ้นสำหรับผู้ที่มีประสบการณ์น้อยหรือไม่มีเลยในหัวข้อเหล่านี้
ขั้นตอนที่ 1: เลือก Sigal Wire
คุณจะต้องได้รับสัญญาณที่สัมพันธ์กับความเร็วของเครื่องยนต์ คุณสามารถเพิ่มระบบที่วัดความเร็วของเครื่องยนต์ได้ แต่จะมีประโยชน์มากกว่ามากหากใช้สายไฟที่มีอยู่ซึ่งมีข้อมูลความเร็วของเครื่องยนต์ รถยนต์คันเดียวอาจมีหลายแหล่งสำหรับเรื่องนี้ และอาจแตกต่างกันอย่างมากถึงแม้จะเป็นปีต่อปีในรถยนต์รุ่นเดียว เพื่อประโยชน์ของบทช่วยสอนนี้ ฉันจะใช้ตัวอย่างรถของฉัน แทร็กที่ดัดแปลง 2000 Acura Integra LS ฉันพบในเครื่องยนต์ของฉัน (B18B1 ที่มี OBD2) มีแรงดันไฟฟ้าที่ไม่ได้ใช้ซึ่งสูง 12V และลดลงเหลือ 0V เมื่อเสร็จสิ้นการปฏิวัติเต็มรูปแบบ
สิ่งที่จะช่วยระบุสัญญาณความเร็วรอบเครื่องยนต์ที่อาจเกิดขึ้น:
- แผนภาพการเดินสายไฟสำหรับรถของคุณ
- ค้นหาฟอรัมสำหรับรถของคุณที่เกี่ยวข้องกับสัญญาณเครื่องยนต์/ECU
- ช่างยนต์ที่เป็นมิตรหรือผู้ที่ชื่นชอบรถ
ขั้นตอนที่ 2: ขยายสายไปยังบอร์ด Arduino
เมื่อคุณเลือกสัญญาณที่เหมาะสมแล้ว คุณจะต้องขยายสัญญาณไปยังตำแหน่งที่คุณวางบอร์ด Arduino ฉันตัดสินใจวางของฉันไว้ในรถที่วิทยุเคยใช้ ฉันจึงเดินสายไฟใหม่จากเครื่องยนต์ ผ่านวงแหวนยางในกำแพงกันไฟ และไปทางขวาไปยังพื้นที่วิทยุ เนื่องจากมีคำแนะนำวิธีการปอก การบัดกรี และการป้องกันสายไฟจำนวนมากอยู่แล้ว ฉันจะไม่อธิบายกระบวนการนี้
ขั้นตอนที่ 3: การวิเคราะห์สัญญาณ
นี่คือสิ่งที่อาจซับซ้อนได้ การมีความเข้าใจทั่วไปเกี่ยวกับการวิเคราะห์สัญญาณและการควบคุมจะช่วยคุณได้มาก แต่สามารถทำได้ด้วยความรู้เพียงเล็กน้อย
สายสัญญาณที่เลือกมักจะไม่คายค่าที่แน่นอนของความเร็วเครื่องยนต์ มันจะต้องมีรูปร่างและปรับเปลี่ยนเพื่อให้จำนวนรอบต่อนาทีของเครื่องยนต์ที่แน่นอนที่คุณต้องการ เนื่องจากรถยนต์แต่ละคันและสายสัญญาณที่เลือกอาจแตกต่างกัน จากจุดนี้เป็นต้นไป ฉันจะอธิบายวิธีที่ฉันใช้สัญญาณบอกตำแหน่งจากผู้จัดจำหน่ายใน Integra ของฉัน
ปกติสัญญาณของฉันคือ 12V และลดลงเหลือ 0V เมื่อหมุนครบหนึ่งรอบ หากคุณทราบเวลาที่จะหมุนให้ครบหนึ่งรอบ หรือครบหนึ่งรอบ ก็สามารถแปลเป็นรอบ/นาทีได้ง่ายๆ โดยใช้แนวคิดพื้นฐานบางประการ
1 / (วินาทีต่อรอบ) = รอบต่อวินาที หรือ Hz
รอบต่อนาที = Hz * 60
ขั้นตอนที่ 4: เขียนโค้ดการวิเคราะห์สัญญาณของคุณ
วิธีนี้ต้องใช้เวลาสำหรับสัญญาณอินพุตเพื่อให้ครบหนึ่งรอบ โชคดีที่ซอฟต์แวร์ Arduino IDE มีคำสั่งที่ทำอย่างนั้นได้ นั่นคือ PulseIn
คำสั่งนี้จะรอให้สัญญาณข้ามขีดจำกัด เริ่มนับ และหยุดนับเมื่อข้ามขีดจำกัดอีกครั้ง มีรายละเอียดบางอย่างที่ควรสังเกตเมื่อใช้คำสั่ง ดังนั้นฉันจะรวมลิงก์ไปยังข้อมูลของ PulseIn ที่นี่:
PulseIn จะคืนค่าเป็นไมโครวินาที และเพื่อให้คณิตศาสตร์ง่าย ค่านี้ควรแปลงเป็นวินาทีปกติทันที จากการคำนวณในขั้นตอนที่แล้ว ระยะเวลานี้สามารถเทียบเป็น RPM ได้โดยตรง
หมายเหตุ: หลังจากการลองผิดลองถูก ฉันพบว่าผู้จัดจำหน่ายทำการหมุนสองครั้งสำหรับการหมุนรอบเพลาข้อเหวี่ยงของเครื่องยนต์ทุกๆ ครั้ง ดังนั้นฉันจึงแบ่งคำตอบเป็น 2 เพื่อพิจารณา
ขั้นตอนที่ 5: ระบุตัวกรอง
หากคุณโชคดี สัญญาณของคุณจะไม่มี 'เสียง' (ความผันผวน) และความเร็วของเครื่องยนต์จะแน่นอน ในกรณีของฉัน มีเสียงรบกวนมากมายจากผู้จัดจำหน่ายซึ่งมักจะให้แรงดันไฟฟ้าที่ไกลจากที่คาดไว้ สิ่งนี้จะเปลี่ยนเป็นการอ่านค่าความเร็วของเครื่องยนต์จริงที่ผิดพลาด เสียงรบกวนนี้จะต้องถูกกรองออก
หลังจากการวิเคราะห์สัญญาณแล้ว สัญญาณรบกวนเกือบทั้งหมดมาที่ความถี่ (Hz) สูงกว่าที่เครื่องยนต์กำลังส่งออก (ซึ่งเป็นความจริงสำหรับระบบไดนามิกส่วนใหญ่) ซึ่งหมายความว่าฟิลเตอร์กรองความถี่ต่ำเป็นตัวเลือกในอุดมคติที่จะดูแลเรื่องนี้
ตัวกรองความถี่ต่ำช่วยให้ความถี่ต่ำ (ที่ต้องการ) ผ่านและลดทอนความถี่สูง (ที่ไม่ต้องการ)
ขั้นตอนที่ 6: การกรอง: ตอนที่ 1
การออกแบบตัวกรองสามารถทำได้ด้วยมือ อย่างไรก็ตาม การใช้ MATLAB จะช่วยเร่งความเร็วได้อย่างมากหากคุณมีสิทธิ์เข้าถึงซอฟต์แวร์
ตัวกรองสัญญาณความถี่ต่ำสามารถนำมาประกอบกับฟังก์ชันการถ่ายโอน (หรือเศษส่วน) ในโดเมน Laplace (โดเมนความถี่) ความถี่อินพุตจะถูกคูณด้วยเศษส่วนนี้ และเอาต์พุตเป็นสัญญาณกรองที่มีเฉพาะข้อมูลที่คุณต้องการใช้
ตัวแปรเดียวในฟังก์ชันคือเอกภาพ Tau เท่ากับ 1 / Omega โดยที่ Omega คือความถี่ตัดที่คุณต้องการ (ต้องเป็นเรเดียนต่อวินาที) ความถี่ตัดคือขีดจำกัดที่ความถี่ที่สูงกว่าจะถูกลบออกและความถี่ที่ต่ำกว่าจะถูกเก็บไว้
ฉันตั้งค่าความถี่ตัดให้เท่ากับ RPM เครื่องยนต์ของฉันจะไม่ไปถึง (990 RPM หรือ 165 Hz) กราฟ FFT แสดงความถี่คร่าวๆ ที่สัญญาณดิบของฉันถืออยู่และความถี่ที่ออกมาจากตัวกรอง
ขั้นตอนที่ 7: การกรอง: ตอนที่ 2
ที่นี่ MATLAB ถูกนำมาใช้อีกครั้งเพื่อเห็นแก่เวลา มีการกำหนดความถี่ตัด จากนั้นฟังก์ชันการถ่ายโอนผลลัพธ์จะปรากฏขึ้น โปรดทราบว่าเศษส่วนนี้ใช้กับโดเมน Laplace เท่านั้น และไม่สามารถใช้กับไมโครคอนโทรลเลอร์ตามเวลาโดยตรง เช่น Arduino UNO R3 ได้
ขั้นตอนที่ 8: การกรอง: ตอนที่ 3
MATLAB มีคำสั่งที่จะแปลงฟังก์ชันต่อเนื่อง (โดเมนความถี่) เป็นฟังก์ชันที่ไม่ต่อเนื่อง (โดเมนเวลา) ผลลัพธ์ของคำสั่งนี้จะให้สมการที่สามารถรวมเข้ากับโค้ด Arduino IDE ได้อย่างง่ายดาย
ขั้นตอนที่ 9: การกรอง: ตอนที่ 4
ในภาพร่าง Arduino ให้รวมตัวแปร u และ y ก่อนการตั้งค่า คำสั่ง float กำหนดวิธีที่ตัวแปรจะเก็บข้อมูล (เช่น ค่าสูงสุด ทศนิยม ฯลฯ…) และลิงก์ไปยังข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้จะมีให้ที่นี่: https://www.arduino.cc/reference/en/language /varia…
ในลูปที่เกิดการแปลงสัญญาณดิบเป็นความเร็วเครื่องยนต์ ให้ใส่ตัวแปร u และสมการพหุคูณ y มีหลายวิธีในการใช้สิ่งนี้ แต่ควรตั้งค่าตัวแปร u ให้เท่ากับสัญญาณอินพุตดิบที่กำลังวัด และตัวแปร y จะเป็นค่าที่กรอง
ขั้นตอนที่ 10: แสดงความเร็วของเครื่องยนต์ที่กรองแล้ว
แนะนำ:
เกม DIY Steampunk Operation ของฉัน ใช้ Arduino: 9 ขั้นตอน (พร้อมรูปภาพ)
เกม DIY Steampunk Operation ของฉันที่ใช้ Arduino: โครงการนี้ค่อนข้างกว้างขวางในขอบเขต ไม่ต้องใช้เครื่องมือหรือความรู้เดิมมากนัก แต่จะสอนใครก็ได้ (รวมถึงฉันด้วย) ในแผนกต่างๆ มากมาย เช่น Captive-sensing กับ Arduino การทำงานหลายอย่างพร้อมกันกับ Arduino
ใช้ Cortana และ Arduino เพื่อควบคุม RGB Leds หรือ Ledstrips ด้วยเสียงของคุณ!: 4 ขั้นตอน (พร้อมรูปภาพ)
ใช้ Cortana และ Arduino เพื่อควบคุม RGB Leds หรือ Ledstrips ด้วยเสียงของคุณ!: ในคำแนะนำนี้ฉันจะแสดงให้คุณเห็นว่าคุณสามารถควบคุม RGB led หรือ led strip ด้วยเสียงของคุณได้อย่างไร ทำได้โดยแอป CoRGB ซึ่งมีให้ใช้งานฟรีใน Windows App Store แอพนี้เป็นส่วนหนึ่งของโครงการ CortanaRoom ของฉัน เมื่อคุณทำปัญญา
ATmega8 ในฐานะ Arduino (ใช้ Internal 8Mhz Crystal): 7 ขั้นตอน (พร้อมรูปภาพ)
ATmega8 ในฐานะ Arduino (ใช้ Internal 8Mhz Crystal): ทุกวันนี้ อุปกรณ์อย่าง Arduino ได้รับความนิยมอย่างมาก สามารถใช้เพื่อสร้างโครงการได้มากมาย อย่างไรก็ตาม พวกเขาใช้พื้นที่มากและมีราคาแพงสำหรับพวกเราบางคน (รวมถึงฉันด้วย) เพื่อแก้ปัญหานี้ ผมขอนำเสนอคำแนะนำนี้แก่คุณ
เครื่อง ATM ใช้ Arduino (พิมพ์ลายนิ้วมือ+บัตร RFID) : 4 ขั้นตอน (พร้อมรูปภาพ)
เครื่อง ATM ที่ใช้ Arduino (พิมพ์ลายนิ้วมือ+บัตร RFID): สวัสดีเพื่อน ๆ ฉันกลับมาพร้อมกับแนวคิดใหม่เกี่ยวกับเครื่อง ATM โดยใช้ Arduino ซึ่งมีประโยชน์ในพื้นที่ชนบทที่ไม่สามารถให้บริการเงินสดได้ มันเป็นความคิดเล็กน้อย ฉันหวังว่า คุณสนุกกับมัน มาเริ่มกันเลย
ใช่ - ไม่ใช่: กล่องจดหมายที่ขับเคลื่อนด้วย Arduino: 4 ขั้นตอน (พร้อมรูปภาพ)
ใช่ - ไม่ใช่: กล่องจดหมายที่ขับเคลื่อนด้วย Arduino: ในโครงการนี้ เราจะแสดงวิธีทำให้กล่องจดหมายของคุณสนุกและมีประโยชน์มากขึ้น ด้วยกล่องจดหมายนี้ หากมีจดหมายอยู่ในจดหมายของคุณ แสดงว่าคุณมีไฟส่องสว่างที่แสดงว่าคุณมีจดหมาย และคุณสามารถควบคุมกล่องจดหมายนี้ด้วยบลูทูธโดยอัตโนมัติ