สารบัญ:
วีดีโอ: เครื่องวัดโวลต์มิเตอร์ที่แม่นยำและแม่นยำของ Arduino (0-90V DC): 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
ในคำแนะนำนี้ ฉันได้สร้างโวลต์มิเตอร์เพื่อวัดแรงดันสูง DC (0-90v) ด้วยความแม่นยำและความแม่นยำสัมพัทธ์โดยใช้ Arduino Nano
การวัดการทดสอบที่ฉันทำนั้นแม่นยำเพียงพอ โดยส่วนใหญ่อยู่ภายใน 0.3v ของแรงดันไฟฟ้าจริงที่วัดด้วยโวลต์มิเตอร์มาตรฐาน (ฉันใช้ Astro AI DM6000AR) นี่ใกล้เพียงพอสำหรับการใช้งานอุปกรณ์ที่ฉันตั้งใจไว้
ในการเก็บถาวรนี้ ฉันใช้การอ้างอิงแรงดันไฟฟ้า (4.096v) และตัวแบ่งแรงดันไฟฟ้า
ทางด้านโค้ด แน่นอนว่าฉันใช้ตัวเลือก "การอ้างอิงภายนอก" สำหรับ Arduino Nano และตัวอย่าง "Smoothing" ในบทช่วยสอน Arduino
เสบียง
1 x Arduino Nano - ลิงค์
1 x Oled แสดงผล (SSD 1306) - ลิงค์
1 x 1/4W ตัวต้านทาน 1% - 1k ohm - Link
1 x 1/4W ตัวต้านทาน 1% - 220k ohm - Link
1 x 1/4W ตัวต้านทาน 1% - 10k ohm - Link
1 x 4.096v LM4040DIZ-4.1 แรงดันอ้างอิง - Link
เขียงหั่นขนมและสายไฟ - Link
Astro AI DM6000AR - ลิงค์
USB Power Bank - ลิงค์
แบตเตอรี่ 9V - ลิงค์
CanadianWinters เป็นผู้มีส่วนร่วมในโปรแกรม Amazon Services LLC Associates ซึ่งเป็นโปรแกรมโฆษณาในเครือที่ออกแบบมาเพื่อให้เว็บไซต์ได้รับค่าธรรมเนียมโดยการลิงก์ไปยัง Amazon.com และเว็บไซต์ในเครือ ด้วยการใช้ลิงก์เหล่านี้ ในฐานะที่เป็น Amazon Associate ฉันจะได้รับรายได้จากการซื้อที่เข้าเงื่อนไข แม้ว่าคุณจะซื้ออย่างอื่น และจะไม่เสียค่าใช้จ่ายใดๆ
ขั้นตอนที่ 1: แผนผัง
ฉันเชื่อมต่อทุกส่วนตามแผนผังด้านบน โดยเฉพาะอย่างยิ่งฉันเลือกการอ้างอิงแรงดันไฟฟ้า 4.096 ให้อยู่ใกล้เครื่องหมาย 5v มากที่สุดเพื่อหลีกเลี่ยงการสูญเสียความละเอียด
ตามแผ่นข้อมูล ฉันเลือกตัวต้านทาน 1K โอห์มสำหรับการอ้างอิงแรงดันไฟฟ้า แม้ว่าจะสามารถใช้ค่าอื่นได้ แรงดันไฟฟ้าสำหรับอ้างอิงมาจากพิน Nano 5v
แนวคิดของวงจรคือแรงดันไฟตรงที่จะวัดต้องผ่านตัวต้านทานแรงดันไฟ แรงดันไฟฟ้าที่ปรับขนาดแล้วจะเข้าสู่ขาอะนาล็อกของ Arduino เพื่อสุ่มตัวอย่าง ปรับให้เรียบ ปรับขนาดใหม่ และแสดงบนจอแสดงผล OLed
ฉันพยายามทำให้ทุกอย่างเรียบง่าย:)
ขั้นตอนที่ 2: การคำนวณรหัสและตัวต้านทาน
ค่าตัวต้านทานถูกเลือกตามที่แนะนำ (ถ้าฉันจำไม่ผิดนี่คือในแผ่นข้อมูล Arduino/Atmega) เพื่อให้อิมพีแดนซ์ต่ำกว่า 10k โอห์ม
เพื่อลดความซับซ้อนของสิ่งต่าง ๆ ฉันสร้างสเปรดชีตที่คำนวณโดยอัตโนมัติในกรณีที่คุณต้องการใช้ค่าความต้านทานที่แตกต่างกัน: ลิงก์ไปยัง Google ชีต
นี่คือรหัสที่ฉันใช้สำหรับโครงการนี้:
#รวม
#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);// (หมุน, [รีเซ็ต]) แรงดันลอย =0; // ใช้สำหรับเก็บค่าแรงดัน float Radjust = 0.043459459; //ตัวแบ่งแรงดัน (R2 / R1+R2) float vbat =0; // แรงดันไฟสุดท้ายหลัง calcs- แรงดันของแบตเตอรีลอย Vref = 4.113; //แรงดันอ้างอิง - ค่าจริงที่วัดได้ ค่าที่กำหนด 4.096v const int numReadings = 50; // จำนวนตัวอย่างการอ่าน - เพิ่มเพื่อให้เรียบยิ่งขึ้น ลดลงเพื่อให้อ่านเร็วขึ้น การอ่าน int[numReadings]; // การอ่านจากอินพุทอนาล็อก int readIndex = 0; // ดัชนีของการอ่านปัจจุบันที่ไม่ได้ลงนามรวมแบบยาว = 0; // ยอดรวม int เฉลี่ย = 0; //ตัวแปรสำหรับการรีเฟรชหน้าจอโดยไม่ใช้การหน่วงเวลา unsigned long PreviousMillis = 0; // จะเก็บครั้งสุดท้ายที่หน้าจอถูกอัพเดต // ค่าคงที่จะไม่เปลี่ยนแปลง: const long interval = 50; // ช่วงเวลาที่รีเฟรชหน้าจอ (มิลลิวินาที) ถือเป็นโมฆะ การตั้งค่า (เป็นโมฆะ) { analogReference (ภายนอก); // ใช้ AREF สำหรับแรงดันอ้างอิง 4.096 แรงดันไฟฟ้าจริงอ้างอิงของฉันคือ 4.113v u8g2.begin(); สำหรับ (int thisReading = 0; thisReading = numReadings) { // …วนรอบจุดเริ่มต้น: readIndex = 0; } // คำนวณค่าเฉลี่ย: ค่าเฉลี่ย = (ผลรวม / numReadings); แรงดันไฟฟ้า = เฉลี่ย * (Vref / 1023.0); //4.113 คือ Vref vbat = แรงดัน/Radjust; // การตั้งค่าการหน่วงเวลาสำหรับการรีเฟรชหน้าจอโดยใช้ Millis if (currentMillis - PreviousMillis >= ช่วงเวลา) { // บันทึกครั้งสุดท้ายที่หน้าจอได้รับการอัพเดต PreviousMillis = currentMillis; u8g2.clearBuffer(); // ล้าง menory ภายใน // แสดงแพ็คแรงดัน u8g2.setFont(u8g2_font_fub20_tr); // 20px แบบอักษร u8g2.setCursor (1, 20); u8g2.print(vbat, 2); u8g2.setFont(u8g2_font_8x13B_mr); // แบบอักษร 10 px u8g2.setCursor (76, 20); u8g2.print("โวลต์"); u8g2.setCursor (1, 40); u8g2.print("CanadianWinters'"); u8g2.setCursor (1, 60); u8g2.print("แรงดันไฟฟ้าที่แม่นยำ"); } u8g2.sendBuffer(); // ถ่ายโอนหน่วยความจำภายในไปยังการแสดงผลล่าช้า (1); }
โปรดทราบว่าฉันค่อนข้างจะขึ้นสนิมกับการเข้ารหัส Arduino ดังนั้นหากคุณพบข้อผิดพลาดหรือวิธีปรับปรุงโค้ด ฉันยินดีรับฟังข้อเสนอแนะ:)
ขั้นตอนที่ 3: มาทดสอบกัน
เพื่อทดสอบโวลต์มิเตอร์นี้ ฉันใช้แบตเตอรี่ 8x 9v ที่ซื้อมาจากร้านค้าในพื้นที่ ฉันวางแผนที่จะใช้โวลต์มิเตอร์นี้เพื่อวัดแรงดันไฟฟ้าของชุดแบตเตอรี่รถจักรยานไฟฟ้าของฉัน (มีแรงดันไฟฟ้าตั้งแต่ 24-60v กับ 72v เป็นครั้งคราว)
เมื่อบรรจุอุปกรณ์อิเล็กทรอนิกส์ลงใน pcb และกล่องเล็กๆ แล้ว จะทำให้เป็นเครื่องวัดแบตเตอรี่แบบพกพาที่ดีและสวยงาม กราฟิกและแบบอักษรบน OLED สามารถปรับแต่งให้เหมาะกับความต้องการของคุณได้ (เช่น แบบอักษรที่ใหญ่ขึ้นเพื่อให้อ่านง่าย)
เป้าหมายของฉันคือการอ่านค่าแรงดันไฟฟ้าบนมิเตอร์ Oled/Arduino ซึ่งอยู่ไม่ไกลจาก Digital Multi Meter ของฉันมากนัก ฉันตั้งเป้าไปที่ +/-0, 3v max delta ดังที่คุณเห็นจากวิดีโอ ฉันสามารถเก็บถาวรสิ่งนี้ได้ ยกเว้นที่ปลายบนสุดของการวัด
ฉันหวังว่าคุณจะสนุกกับคำแนะนำนี้และแจ้งให้เราทราบความคิดของคุณ!
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
Arduino ที่ถูกที่สุด -- Arduino ที่เล็กที่สุด -- Arduino Pro Mini -- การเขียนโปรแกรม -- Arduino Neno: 6 ขั้นตอน (พร้อมรูปภาพ)
Arduino ที่ถูกที่สุด || Arduino ที่เล็กที่สุด || Arduino Pro Mini || การเขียนโปรแกรม || Arduino Neno:…………………………… โปรดสมัครสมาชิกช่อง YouTube ของฉันสำหรับวิดีโอเพิ่มเติม……. โปรเจ็กต์นี้เกี่ยวกับวิธีเชื่อมต่อ Arduino ที่เล็กที่สุดและถูกที่สุดเท่าที่เคยมีมา Arduino ที่เล็กที่สุดและถูกที่สุดคือ arduino pro mini คล้ายกับ Arduino