สารบัญ:

Arduino โวลต์มิเตอร์ (0-100V DC) - เวอร์ชัน 2 (ดีกว่า): 3 ขั้นตอน
Arduino โวลต์มิเตอร์ (0-100V DC) - เวอร์ชัน 2 (ดีกว่า): 3 ขั้นตอน

วีดีโอ: Arduino โวลต์มิเตอร์ (0-100V DC) - เวอร์ชัน 2 (ดีกว่า): 3 ขั้นตอน

วีดีโอ: Arduino โวลต์มิเตอร์ (0-100V DC) - เวอร์ชัน 2 (ดีกว่า): 3 ขั้นตอน
วีดีโอ: D.I.Y แหล่งจ่าย Switching ตัวเก่า..!! ใส่ที่วัด "Volt" วัด "Amp" มิเอตร์ (แรงดันสูงสุด 100V - 100A) 2024, พฤศจิกายน
Anonim
Image
Image
ขั้นตอนที่ 1: แผนผัง
ขั้นตอนที่ 1: แผนผัง

ในคำแนะนำนี้ ฉันได้สร้างโวลต์มิเตอร์เพื่อวัดแรงดันสูง DC (0-100v) ด้วยความแม่นยำและความแม่นยำสัมพัทธ์โดยใช้ Arduino Nano และ ADS 1115 ADC

นี่เป็นโวลต์มิเตอร์รุ่นที่สองที่ใช้คำสั่งก่อนหน้าของฉันที่นี่:

การวัดการทดสอบที่ฉันทำนั้นแม่นยำ ส่วนใหญ่อยู่ภายใน 0.1v ของแรงดันไฟฟ้าจริงที่วัดด้วยโวลต์มิเตอร์มาตรฐาน (ฉันใช้ Astro AI DM6000AR)

สิ่งนี้ดีกว่าและง่ายกว่าในความคิดของฉันมากกว่าการใช้แรงดันอ้างอิงภายนอกบน Arduino

เสบียง

1 x Arduino Nano - ลิงค์

1 x Oled แสดงผล (SSD 1306) - ลิงค์

1 x ADS 1115 - ADC 16 บิต - Link

1 x 1/4W (ฉันแนะนำให้ใช้ตัวต้านทาน 1W) ตัวต้านทาน 1% - 220k ohm - Link

1 x 1/4W (ฉันแนะนำให้ใช้ตัวต้านทาน 1W) ตัวต้านทาน 1% - 10k ohm - Link

เขียงหั่นขนมและสายไฟ - Link

Astro AI DM6000AR - ลิงค์

USB Power Bank - ลิงค์

แบตเตอรี่ 9V - ลิงค์

CanadianWinters เป็นผู้มีส่วนร่วมในโปรแกรม Amazon Services LLC Associates ซึ่งเป็นโปรแกรมโฆษณาในเครือที่ออกแบบมาเพื่อให้เว็บไซต์ได้รับค่าธรรมเนียมโดยการลิงก์ไปยัง Amazon.com และเว็บไซต์ในเครือ ด้วยการใช้ลิงก์เหล่านี้ ในฐานะที่เป็น Amazon Associate ฉันจะได้รับรายได้จากการซื้อที่เข้าเงื่อนไข แม้ว่าคุณจะซื้ออย่างอื่น และจะไม่เสียค่าใช้จ่ายใดๆ

ขั้นตอนที่ 1: ขั้นตอนที่ 1: แผนผัง

ขั้นตอนที่ 1: แผนผัง
ขั้นตอนที่ 1: แผนผัง

ฉันเชื่อมต่อทุกส่วนตามแผนผังด้านบน

ฉันผูกพิน ADDR ของ ADC1115 กับกราวด์ ตั้งค่าที่อยู่ของ ADC เป็น 0x48

ขั้นตอนที่ 2: ขั้นตอนที่ 2: การคำนวณรหัสและตัวต้านทาน

ขั้นตอนที่ 2: การคำนวณรหัสและตัวต้านทาน
ขั้นตอนที่ 2: การคำนวณรหัสและตัวต้านทาน

เช่นเดียวกับคำแนะนำก่อนหน้านี้ แนวคิดของวงจรคือแรงดันไฟตรงที่จะวัดต้องผ่านตัวต้านทานแรงดันไฟ แรงดันไฟฟ้าที่ปรับขนาดแล้วเข้าไปในขาอะนาล็อกของตัวแปลง ADC เพื่ออ่าน จากนั้นส่งผ่านไปยัง Arduino ผ่าน I2C จากนั้นปรับขนาดใหม่และแสดงบนจอแสดงผล OLed

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

สิ่งหนึ่งที่ฉันสังเกตเห็นคือมีเสียงรบกวนเล็กน้อยเมื่อไม่ได้เสียบแบตเตอรี่ (0 โวลต์) ฉันใช้มอนิเตอร์แบบอนุกรมของ Arduino เพื่อแสดงค่า ADC และแก้ไข/ปรับค่าผ่านโค้ด

ในคำแนะนำก่อนหน้านี้ฉันสร้างสเปรดชีตที่ทำการคำนวณโดยอัตโนมัติในกรณีที่คุณต้องการใช้ค่าตัวต้านทานที่แตกต่างกันในตัวแบ่งแรงดันไฟฟ้า: ลิงก์ไปยัง Google ชีต

นี่คือรหัสที่ฉันใช้สำหรับโครงการนี้:

#รวม

#รวม #รวม #รวม Adafruit_ADS1115 โฆษณา(0x48); //ที่อยู่ของ ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0); // (หมุน, [รีเซ็ต]) int calib = 7; // ค่าสอบเทียบ ADS1115 เพื่อลดความผิดพลาดของแรงดันลอย = 0; // ใช้สำหรับเก็บค่าแรงดัน float Radjust = 0.043421905; // ตัวแบ่งแรงดัน (R2 / R1+R2) float vbat = 0; // แรงดันไฟสุดท้ายหลัง calcs- แรงดันไฟของแบตเตอรี่ // ตัวแปรสำหรับการรีเฟรชหน้าจอโดยไม่ใช้การหน่วงเวลา unsigned long PreviousMillis = 0; // จะเก็บครั้งสุดท้ายที่หน้าจอถูกรีเฟรช // ค่าคงที่จะไม่เปลี่ยนแปลง: const long interval = 250; // ช่วงเวลาที่รีเฟรชหน้าจอ (มิลลิวินาที) ถือเป็นโมฆะการตั้งค่า (เป็นโมฆะ) { Serial.begin (9600); u8g2.begin(); ads.begin(); } วงเป็นโมฆะ (เป็นโมฆะ) { int16_t adc0; // 16 บิต ADC อ่านอินพุต A0 adc0 = ads.readADC_SingleEnded (0); แรงดันไฟฟ้า = ((adc0 + คาลิบ) * 0.1875)/1000; ไม่ได้ลงนามยาว currentMillis = millis(); vbat = แรงดันไฟ/ปรับ; // ป้องกันการแสดงแรงดันลบเมื่อแบตเตอรี่ถูกตัดการเชื่อมต่อหาก (vbat = ช่วงเวลา) { PreviousMillis = currentMillis; u8g2.clearBuffer(); // ล้าง menory ภายใน // จอแสดงผล Pack Voltage - แบบอักษรที่หน้านี้: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px แบบอักษร u8g2.setFont(u8g2_font_fub35_tr); // 35px แบบอักษร u8g2.setCursor (1, 42); u8g2.print(vbat, 2); u8g2.setFont(u8g2_font_8x13B_mr); // แบบอักษร 10 px u8g2.setCursor (1, 60); u8g2.print("โวลต์"); } u8g2.sendBuffer(); // ถ่ายโอนหน่วยความจำภายในไปยังการแสดงผลล่าช้า (1); }

ขั้นตอนที่ 3: ขั้นตอนที่ 3: มาทดสอบกัน

ขั้นตอนที่ 3: มาทดสอบกัน!
ขั้นตอนที่ 3: มาทดสอบกัน!

เพื่อทดสอบโวลต์มิเตอร์นี้ ฉันใช้แบตเตอรี่ 10x 9v ที่ซื้อมาจากร้านค้าในพื้นที่ คราวนี้ฉันสามารถวัดได้ถึง 97 โวลต์! ฉันวางแผนที่จะใช้โวลต์มิเตอร์นี้เพื่อวัดแรงดันไฟฟ้าของชุดแบตเตอรี่รถจักรยานไฟฟ้าของฉัน (มีแรงดันไฟฟ้าตั้งแต่ 24-60v กับ 72v เป็นครั้งคราว)

เมื่อบรรจุอุปกรณ์อิเล็กทรอนิกส์ลงใน pcb และกล่องเล็กๆ แล้ว จะทำให้เป็นเครื่องวัดแบตเตอรี่แบบพกพาที่ดีและสวยงาม กราฟิกและแบบอักษรบน OLED สามารถปรับแต่งให้เหมาะกับความต้องการของคุณได้ (เช่น แบบอักษรที่ใหญ่ขึ้นเพื่อให้อ่านง่าย) เป้าหมายของฉันคือการอ่านค่าแรงดันไฟฟ้าบนมิเตอร์ Oled/Arduino ซึ่งอยู่ไม่ไกลจาก Digital Multi Meter ของฉันมากนัก ฉันตั้งเป้าไปที่ +/-0, 3v max delta

ดังที่คุณเห็นจากวิดีโอในตอนต้นของ Instructable ฉันสามารถเก็บสิ่งนี้ได้! การอ่านส่วนใหญ่ตรงจุด!

ฉันหวังว่าคุณจะสนุกกับคำแนะนำนี้และแจ้งให้เราทราบความคิดของคุณ!

แนะนำ: