โวลต์มิเตอร์ AC แบบโมดูลาร์อย่างง่ายบน PIC16F676 แอมแปร์โวลต์มิเตอร์ในตัวอย่างง่ายบน PIC16F676 โวลต์มิเตอร์เครือข่ายที่ต้องทำด้วยตัวเองบนไมโครคอนโทรลเลอร์

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

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

วงจรนี้ใช้ไมโครคอนโทรลเลอร์ PIC16F676 และไฟแสดงสถานะ LCD เนื่องจากทั้งหมดนี้ใช้งานได้เฉพาะในฤดูร้อน จึงสามารถซื้อตัวบ่งชี้และตัวควบคุมได้ในราคาถูกที่สุด แอมพลิฟายเออร์สำหรับการปฏิบัติงานที่เลือกก็เหมาะสมเช่นกัน - LM358N ราคาถูกและมีช่วงอุณหภูมิการทำงานตั้งแต่ 0 ถึง +70
ในการแปลงค่าอนาล็อก (ดิจิทัล) แรงดันและกระแส จะต้องเลือกแรงดันไฟฟ้าของไมโครคอนโทรลเลอร์ที่เสถียรที่ +5V ซึ่งหมายความว่าด้วยการแปลงสัญญาณอนาล็อกเป็นดิจิทัลสิบบิต แต่ละบิตจะสอดคล้องกับ - 5V = 5,000 mV = 5,000/1024 = 4.8828125 mV ค่านี้คูณด้วย 2 ในโปรแกรม และเราจะได้ 9.765625 mV ต่อรหัสไบนารี่หนึ่งบิต และสำหรับการแสดงข้อมูลที่ถูกต้องบนหน้าจอ LCD เราต้องมีตัวเลขหนึ่งหลักที่มีค่าเท่ากับ 10 mV หรือ 0.01 V ดังนั้นจึงมีวงจรสเกลอยู่ในวงจร สำหรับแรงดันไฟฟ้า นี่คือตัวแบ่งที่ปรับได้ซึ่งประกอบด้วยตัวต้านทาน R5 และ R7 เพื่อแก้ไขการอ่านปัจจุบันจะใช้แอมพลิฟายเออร์สเกลซึ่งประกอบเข้ากับหนึ่งในแอมพลิฟายเออร์ปฏิบัติการของไมโครวงจร DA1 - DA1.2 ค่าสัมประสิทธิ์การส่งผ่านของแอมพลิฟายเออร์นี้ปรับโดยใช้ตัวต้านทาน 33k R3 จะดีกว่าถ้าตัวต้านทานปรับค่าทั้งสองเป็นแบบหลายรอบ ดังนั้นเมื่อใช้แรงดันไฟฟ้า +5 V อย่างแน่นอนสำหรับการแปลงเป็นดิจิทัล ห้ามเชื่อมต่อสัญญาณโดยตรงกับอินพุตไมโครคอนโทรลเลอร์ ออปแอมป์ที่เหลือซึ่งเชื่อมต่อระหว่าง R5 และ R7 และอินพุต RA1 ของชิป DD1 เป็นตัวทวนสัญญาณ ทำหน้าที่ลดผลกระทบของเสียงรบกวนและการรบกวนแบบอิมพัลส์ต่อการแปลงเป็นดิจิทัล เนื่องจากการตอบรับเชิงลบที่ไม่ขึ้นกับความถี่หนึ่งร้อยเปอร์เซ็นต์ เพื่อลดเสียงรบกวนและการรบกวนเมื่อแปลงค่าปัจจุบันจะใช้ตัวกรองรูปตัว U ประกอบด้วย C1, C2 และ R4 ในกรณีส่วนใหญ่ ไม่จำเป็นต้องติดตั้ง C2

ในฐานะที่เป็นเซ็นเซอร์ปัจจุบันตัวต้านทาน R2 จะใช้การแบ่งโรงงานในประเทศที่ 20A - 75ShSU3-20-0.5 ด้วยกระแสที่ไหลผ่านตัวแบ่ง 20A แรงดันไฟฟ้า 0.075 V จะลดลง (ตามแผ่นข้อมูลสำหรับตัวแบ่ง) ซึ่งหมายความว่า เพื่อให้อินพุตของตัวควบคุมมีโวลต์ 2 โวลต์ อัตราขยายของเครื่องขยายเสียงควรอยู่ที่ประมาณ 2V/0.075 = 26 โดยประมาณ นี่เป็นเพราะความละเอียดในการแปลงเป็นดิจิทัลของเราไม่ใช่ 0.01 V แต่เป็น 0.09765625 V แน่นอนว่าเป็น เป็นไปได้ที่จะใช้การสับเปลี่ยนแบบโฮมเมดโดยการปรับอัตราขยายของแอมพลิฟายเออร์ DA1.2 อัตราขยายของแอมพลิฟายเออร์นี้เท่ากับอัตราส่วนของค่าของตัวต้านทาน R1 และ R3, Kus = R3/R1
จากข้อมูลข้างต้น โวลต์มิเตอร์มีขีดจำกัดบนที่ 50 โวลต์ และแอมมิเตอร์มีขีดจำกัดบนที่ 20 แอมแปร์ แม้ว่าจะมีวงจรแบ่งที่ออกแบบมาสำหรับ 50 แอมแปร์ แต่จะวัดได้ 50A ดังนั้นจึงสามารถติดตั้งกับอุปกรณ์อื่นได้สำเร็จ
ตอนนี้เกี่ยวกับการปรับเปลี่ยนซึ่งรวมถึงการเพิ่มไฟ LED แสดงสถานะ มีการเปลี่ยนแปลงเล็กน้อยกับโปรแกรม และตอนนี้ในขณะที่คอนโทรลเลอร์ทำงาน ไฟ LED จะกะพริบที่ความถี่ประมาณ 2 Hz เวลาเรืองแสงของ LED ถูกเลือกเป็น 25ms เพื่อประหยัดเงิน เป็นไปได้ที่จะแสดงเคอร์เซอร์กะพริบบนหน้าจอ แต่พวกเขาบอกว่าด้วย LED มันจะชัดเจนและมีประสิทธิภาพมากขึ้น ดูเป็นอันนั้นแหละ.. ขอให้โชคดี. เค.วี.ยู.


.

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


อุปกรณ์นี้ใช้งานบน PIC16F676 โดยใช้ ADC สิบบิตในตัว โวลต์มิเตอร์สามารถวัดแรงดันไฟฟ้าได้สูงสุด 30V DC และสามารถใช้กับแหล่งจ่ายไฟแบบตั้งโต๊ะหรือแผงหน้าปัดต่างๆ
ตัวบ่งชี้เจ็ดส่วนสามตัวที่มีขั้วบวกทั่วไปใช้เพื่อแสดงแรงดันไฟฟ้า ข้อมูลจะแสดงบนตัวบ่งชี้แบบไดนามิก (มัลติเพล็กซ์) อัตราการรีเฟรชประมาณ 50 Hz

วงจรโวลต์มิเตอร์:

แรงดันไฟขาออกของตัวแบ่ง
ตามค่าเริ่มต้น บนไมโครคอนโทรลเลอร์ PIC แรงดันอ้างอิง ADC จะถูกตั้งค่าเป็น VCC (+5 V ในกรณีนี้)
จำเป็นต้องสร้างตัวแบ่งแรงดันไฟฟ้าที่จะลดแรงดันไฟฟ้าจาก 30V เป็น 5V ง่ายต่อการคำนวณ Vin / 6 ==> 30/6 = 5 ตัวหารคือ 6 นอกจากนี้ตัวแบ่งจะต้องมีความต้านทานสูงเพื่อที่จะมีอิทธิพลต่อแรงดันไฟฟ้าที่วัดได้น้อยที่สุดเท่าที่จะเป็นไปได้

การคำนวณ
ADC - 10 บิตหมายถึงจำนวนตัวอย่างสูงสุดคือ 1,023
ค่าแรงดันไฟฟ้าสูงสุดคือ 5V จากนั้นเราจะได้ 5/1023 = 0.0048878 V/Count ในกรณีนี้หากจำนวนจุด ADC คือ 188 แรงดันไฟฟ้าขาเข้าจะเป็น 188 * 0.0048878 = 0.918 โวลต์

เมื่อใช้ตัวแบ่งแรงดันไฟฟ้า แรงดันไฟฟ้าสูงสุดคือ 30V จากนั้น 30/1023 = 0.02932 V/นับ
และถ้าจำนวนจุด ADC คือ 188 แรงดันไฟฟ้าขาเข้าจะเป็น 188 * 0.02932 = 5.5 V

ตัวเก็บประจุ 0.1uF ทำให้ ADC มีเสถียรภาพมากขึ้น เนื่องจาก ADC 10 บิตค่อนข้างไว
ซีเนอร์ไดโอด 5.1V ได้รับการออกแบบมาเพื่อปกป้อง ADC จากแรงดันไฟฟ้าเกินที่อนุญาต

แผงวงจรพิมพ์:

รูปถ่ายของอุปกรณ์ที่เสร็จแล้ว:

ความแม่นยำและการสอบเทียบ
ความแม่นยำโดยรวมของวงจรค่อนข้างสูงขึ้นอยู่กับค่าความต้านทานของตัวต้านทาน 47 kOhm และ 10 kOhm โดยสมบูรณ์ดังนั้นยิ่งเลือกส่วนประกอบได้แม่นยำมากเท่าใดการอ่านก็จะยิ่งแม่นยำมากขึ้นเท่านั้น
โวลต์มิเตอร์ถูกปรับเทียบโดยใช้ตัวต้านทานทริมเมอร์ 10 kOhm ตั้งค่าความต้านทานเป็นประมาณ 7.5 kOhm และตรวจสอบการอ่านด้วยอุปกรณ์อื่น
คุณยังสามารถใช้แหล่งจ่ายไฟ 5 หรือ 12 โวลต์ที่มีความเสถียรในการปรับได้ ในกรณีนี้ ให้หมุนตัวต้านทานทริมจนกว่าคุณจะได้ค่าที่ถูกต้องบนจอแสดงผล

โครงการในโพรทูส:

โวลแทมมิเตอร์บน PIC16F676

โครงการนี้เป็น DC แอมแปร์-โวลต์มิเตอร์ (หรือโวลแทมมิเตอร์ หากคุณต้องการ) ช่วง - สูงถึง 99.9V และ 9.9A (หรือ 99.9A ขึ้นอยู่กับเฟิร์มแวร์)


ลักษณะเฉพาะของมันคือมันถูกสร้างขึ้นบนไมโครคอนโทรลเลอร์ PIC16F676 ที่แพร่หลายอย่างไรก็ตามถึงแม้จะมีสิ่งนี้ แต่ก็มีความสามารถในการแสดงแรงดันไฟฟ้าและกระแสไฟฟ้าที่วัดได้พร้อมกันบนตัวบ่งชี้เจ็ดเซกเมนต์สี่อักขระ (หรือสามอักขระ) โดยทั้งคู่มีขั้วบวกทั่วไป และแคโทดร่วม (ตั้งตัวต้านทาน 1 ตัว) เมื่อใช้ตัวบ่งชี้สี่ตัวอักษร ส่วนสุดท้ายจะแสดงสัญลักษณ์ "U" สำหรับแรงดันไฟฟ้าและ "A" สำหรับกระแสไฟฟ้า แอมแปร์โวลต์มิเตอร์ยังสามารถทำงานร่วมกับตัวบ่งชี้เดียวได้และด้วยปุ่ม "B" คุณสามารถเลือกสิ่งที่จะแสดงบนนั้นได้ - แรงดันหรือกระแส หากติดตั้งตัวบ่งชี้ทั้งสองแล้ว คุณสามารถใช้ปุ่มนี้เพื่อสลับการกำหนดได้ ปุ่ม "H" ใช้เพื่อแก้ไขการอ่านค่าของแอมป์มิเตอร์และปรับค่าความเป็นเชิงเส้นของการอ่านเหล่านี้ให้เท่ากัน หากจำเป็น

ขึ้นในเดือนกุมภาพันธ์ 2557:สามารถดูการพัฒนาได้ที่:

แผนภาพของโวลแทมมิเตอร์แสดงอยู่ด้านล่าง ดังที่ได้กล่าวไปแล้วมันถูกสร้างขึ้นบนไมโครคอนโทรลเลอร์ PIC16F676 ที่แพร่หลายซึ่งมีการประกอบโวลต์มิเตอร์และแอมป์มิเตอร์แบบธรรมดาโดยเฉพาะ


คลิกที่แผนภาพเพื่อขยาย
เนื่องจากหมุด MK นี้มีจำนวนจำกัด จึงมีการใช้รีจิสเตอร์ 74HC595 วงจรไมโครนี้ไม่มีอะนาล็อกที่มีพินเอาท์เดียวกัน แต่ไม่ได้ขาดแคลนและมักใช้ในวงจรที่คล้ายกันเพื่อเชื่อมต่อตัวบ่งชี้กับ MK เพื่อป้องกันเอาต์พุต MK จากการโอเวอร์โหลดและเพิ่มความสว่างของตัวบ่งชี้จึงใช้สวิตช์ทรานซิสเตอร์ เมื่อใช้ตัวบ่งชี้ที่มีแคโทดทั่วไป จำเป็นต้องใช้ทรานซิสเตอร์ที่มีโครงสร้างแตกต่างกัน โดยเชื่อมต่อตัวสะสมของพวกมันไม่ให้อยู่ที่ +5V แต่ไปที่กราวด์ ในขณะที่ตัวต้านทานที่พิน 11 ของไมโครคอนโทรลเลอร์จะต้องถูกย้ายไปยังตำแหน่งอื่น คุณอาจต้องเลือกตัวต้านทานที่เอาต์พุตรีจิสเตอร์และในฐานทรานซิสเตอร์เพื่อให้ตรงกับตัวบ่งชี้และทรานซิสเตอร์ของคุณ

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

หลังจากเปิดเครื่องแล้ว ไฟแสดงสถานะจะไม่สว่างขึ้นทันที แต่จะเกิดความล่าช้าหลายวินาที ความถี่ในการอ่านการเปลี่ยนแปลงคือประมาณ 9Hz

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


ไฟล์สำหรับโครงการ


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

หากคุณต้องการติดตั้งตัวบ่งชี้ขนาดใหญ่ คุณจะต้องแก้ไขปัญหาการจำกัดการใช้กระแสไฟผ่านพอร์ต MK ในกรณีนี้ จำเป็นต้องติดตั้งทรานซิสเตอร์บัฟเฟอร์ในแต่ละหลักของตัวบ่งชี้

ตัวบ่งชี้ขนาดใหญ่


ดังนั้นวงจรที่กล่าวถึงก่อนหน้านี้จะอยู่ในรูปแบบที่แสดงในรูปที่ 1 2. เพิ่มทรานซิสเตอร์ VT1-VT3 สามตัวของระยะบัฟเฟอร์สำหรับแต่ละหลักของตัวบ่งชี้ ระยะบัฟเฟอร์ที่ติดตั้งจะกลับสัญญาณเอาท์พุตของ MK ดังนั้นแรงดันไฟฟ้าขาเข้าตาม VT2 จึงเป็นค่าผกผันกับตัวสะสมของทรานซิสเตอร์ที่ระบุ ดังนั้นจึงเหมาะสำหรับการจ่ายเอาต์พุตที่มีรูปลูกน้ำไปยังเอาต์พุต ทำให้สามารถถอดทรานซิสเตอร์ VT1 ซึ่งก่อนหน้านี้อยู่ในวงจรในรูป 1 แทนที่อันหลังด้วยตัวต้านทานแบบแยกส่วน R12 อย่าลืมว่าค่าตัวต้านทานในวงจรฐานของทรานซิสเตอร์ VT1-VT3 ก็เปลี่ยนไปเช่นกัน
หากคุณต้องการติดตั้งตัวบ่งชี้ที่มีขนาดใหญ่ผิดปกติ คุณจะต้องติดตั้งตัวต้านทานความต้านทานต่ำ (1 - 10 โอห์ม) ในวงจรตัวรวบรวมของทรานซิสเตอร์ที่ระบุเพื่อจำกัดกระแสไฟกระชากเมื่อเปิดเครื่อง

ตรรกะการทำงานของ MK สำหรับตัวเลือกนี้ต้องการเพียงการเปลี่ยนแปลงเล็กน้อยในโปรแกรมในแง่ของการกลับสัญญาณเอาต์พุตเพื่อควบคุมบิต ได้แก่ พอร์ต RA0, RA1, RA5
พิจารณาเฉพาะสิ่งที่จะเปลี่ยนแปลงคือรูทีนย่อยที่เรารู้จักอยู่แล้วภายใต้ชื่อรหัส "ฟังก์ชันการสร้างตัวบ่งชี้แบบไดนามิก" ใน รายการหมายเลข 2(ดูโฟลเดอร์ “tr_OE_30V” ในไฟล์เก็บถาวรหรือส่วนแรกของบทความ):

16. ตัวบ่งชี้ที่เป็นโมฆะ ()( 17. ในขณะที่ (show_digit< 3) { 18. portc = 0b111111; // 1 ->C 19. if (show_digit == 2)(delay_ms(1); ) 20. porta = 0b100111; 21. show_digit = show_digit + 1; 22. switch (show_digit) ( 23. กรณีที่ 1: ( 24. if (digit1 == 0) ( ) else ( 25. Cod_to_PORT(DIGIT1); 26. PORTA &= (~(1<<0)); //0 ->A0 27. ) ตัวหยุด;) 28. กรณีที่ 2: ( 29. Cod_to_PORT(DIGIT2); 30. PORTA &= (~(1<<1)); //0 ->A1 31. ตัวแบ่ง;) 32. กรณีที่ 3: ( 33. Cod_to_PORT(DIGIT3); 34. PORTA &= (~(1<<5)); //0 ->A5 35. พัง;) ) 36. Delay_ms(6); 37. ถ้า (RA2_bit==0) (PORTA |= (1<<2);// 1 ->A2 38. Delay_ms(1);) 39. ถ้า ((show_digit >= 3)!= 0) พัง; 40. ) show_digit = 0;)


เปรียบเทียบทั้งสองตัวเลือก การผกผันของสัญญาณบนพอร์ต RA (บรรทัดที่ 20 ของรายการหมายเลข 2) นั้นง่ายต่อการอ่าน เนื่องจากมันถูกเขียนในรูปแบบไบนารี ก็เพียงพอที่จะรวมเอาต์พุตของ MK และเลขฐานสองเข้าด้วยกัน ในบรรทัดที่ 19 และ 37 มีเงื่อนไขแปลก ๆ เล็กน้อยปรากฏขึ้นซึ่งไม่มีอยู่ตั้งแต่แรก ในกรณีแรก: “หน่วงเวลาสัญญาณลอจิคัลศูนย์ที่พอร์ต RA1 ในระหว่างการบ่งชี้ตัวเลขหลักที่สอง” ประการที่สอง: “หากมีตรรกะเป็นศูนย์บนพอร์ต RA2 การผกผัน” เมื่อคุณคอมไพล์เวอร์ชันสุดท้ายของโปรแกรม คุณสามารถลบออกได้ แต่สำหรับการจำลองใน PROTEUS จำเป็นต้องใช้ หากไม่มีเครื่องหมายจุลภาคและส่วน "G" จะไม่สามารถแสดงได้ตามปกติ
ทำไม - คุณถามเพราะตัวเลือกแรกใช้งานได้ดี

โดยสรุป จำคำพูดของช่างตีเหล็กจากภาพยนตร์เรื่อง “สูตรแห่งความรัก” ที่ว่า “...ถ้าคนหนึ่งสร้างมันขึ้นมา อีกคนก็จะแยกมันออกจากกัน!”
ขอให้โชคดี!

โหวตผู้อ่านครับ

บทความนี้ได้รับการอนุมัติจากผู้อ่าน 27 คน

หากต้องการมีส่วนร่วมในการลงคะแนน ให้ลงทะเบียนและเข้าสู่เว็บไซต์ด้วยชื่อผู้ใช้และรหัสผ่านของคุณ

อุปกรณ์ที่นำเสนอนี้จะมีประโยชน์หากคุณมีแหล่งจ่ายไฟที่มีแรงดันเอาต์พุต 0-10 V นี่คือขีด จำกัด การวัดที่ "รวม" เข้ากับวงจรดังแสดงในรูป มีพื้นฐานมาจากไมโครคอนโทรลเลอร์ Atmega8 (U1) ในแพ็คเกจ DIP มาตรฐาน อาจดูยุ่งยาก แต่ได้รับเลือกเนื่องจากได้รับความนิยมอย่างกว้างขวาง และเนื่องจากโปรแกรมเมอร์สำหรับไมโครคอนโทรลเลอร์นี้เป็นเรื่องธรรมดามาก นักวิทยุสมัครเล่นส่วนใหญ่ใช้ Atmega8 และบนอินเทอร์เน็ตคุณสามารถค้นหาวงจรจำนวนมากด้วยไมโครคอนโทรลเลอร์นี้ ดังนั้นหากคุณไม่ชอบโวลต์มิเตอร์นี้ Atmega8 จะไม่นิ่งเฉย

โวลต์มิเตอร์แบบดิจิตอลบน Atmega8 โครงการนี้เป็นพื้นฐาน

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

ไฟ LED แสดงสถานะดิจิตอล 7 ส่วนเป็นตัวบ่งชี้ที่ประกอบด้วยไฟ LED เจ็ดดวงที่ติดตั้งในรูปของหมายเลข 8 ด้วยการเปิดหรือปิดไฟ LED (ส่วน) ที่เกี่ยวข้องคุณสามารถแสดงตัวเลขตั้งแต่ศูนย์ถึงเก้ารวมถึงตัวอักษรบางตัวได้ โดยทั่วไปแล้ว ตัวบ่งชี้ดิจิทัลหลายตัวจะใช้เพื่อสร้างตัวเลขหลายหลัก - สำหรับสิ่งนี้ ตัวบ่งชี้จะติดตั้งส่วนเครื่องหมายจุลภาค (จุด) - dp ด้วยเหตุนี้ ตัวบ่งชี้ตัวหนึ่งจึงมี 8 ส่วน แม้ว่าจะเรียกว่า 7 ส่วนตามจำนวนส่วนดิจิทัลก็ตาม

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


การออกแบบใช้ตัวบ่งชี้เรืองแสงสีแดง GNT-2831BD-11 พร้อมขั้วบวกทั่วไป ตัวต้านทาน R1-R8 จะกำหนดกระแสในตัวบ่งชี้และความสว่างของมัน ความต้านทานไม่ควรเกินกระแสไฟขาออกสูงสุด (40 mA) แม้ว่าไฟ LED ทั้ง 8 ดวงจะติดสว่างพร้อมกันก็ตาม วงจรนี้ใช้ ADC 10 บิตปลายเดียว (ตัวแปลงแอนะล็อกเป็นดิจิทัล) ที่อยู่ใน AVR ช่วงค่าเอาต์พุตคือ 0-999 เมื่อถึงขีดจำกัดของค่าเหล่านี้ สัญลักษณ์ "---" จะปรากฏขึ้น

ที่อินพุตของโวลต์มิเตอร์ (in) มีการติดตั้งตัวแบ่งแรงดันไฟฟ้าจากตัวต้านทาน R9, R10 และ R11 โดยมีช่วงการวัดสูงถึง 10 V โดยมีข้อผิดพลาด 0.01 V ที่พิน 23 ของไมโครคอนโทรลเลอร์ U1 ตัวแบ่งจะสร้าง แรงดันไฟฟ้าที่ไม่ควรเกิน 2.5 V. โวลต์มิเตอร์ความต้านทานขาเข้าอยู่ใกล้ 1mOhm ในการปรับเทียบโวลต์มิเตอร์ ให้ใช้แรงดันไฟฟ้าที่ทราบแน่ชัดกับอินพุต และเลื่อนตัวต้านทานทริมเมอร์ R11 เพื่อให้ได้ค่าที่อ่านได้เหมือนกันบนตัวบ่งชี้

อัตราการอัพเดตโวลต์มิเตอร์อยู่ที่ประมาณ 4 Hz วงจรนี้ใช้พลังงานจากแหล่งกำเนิด 5 V ที่เสถียร ปริมาณการใช้กระแสไฟฟ้าของอุปกรณ์อยู่ที่ประมาณ 25 mA (ปริมาณการใช้ส่วนใหญ่อยู่ในตัวบ่งชี้) วางส่วนประกอบ C1 และ C2 ให้ใกล้กับไมโครคอนโทรลเลอร์มากที่สุด

บิตที่ตั้งค่าอย่างถูกต้องจะแสดงในรูปด้านล่าง


หากคุณต้องการขีดจำกัดการวัดสูงสุด 100 V ให้เปลี่ยนค่า R10 เป็น 9.1 mOhm และ R11 เป็น 2.2 mOhm จากนั้นคุณจะได้ช่วงการวัดที่ต้องการโดยมีข้อผิดพลาด 0.1 V และความต้านทานอินพุตประมาณ 10 mOhm ในกรณีนี้ คุณจะต้องเปลี่ยนตำแหน่งของจุดตัวบ่งชี้เพื่อให้แสดงอยู่ด้านหลังสัญลักษณ์สองตัว และไม่อยู่ด้านหลังสัญลักษณ์แรกดังในแผนภาพ ในการดำเนินการนี้ให้ปล่อยพิน 28 ของชิป U1 ว่างแล้วเชื่อมต่อพิน 27 เข้ากับสายทั่วไป ตอนนี้ 00.0 จะแสดงแทนอักขระในรูปแบบ 0.00

กำลังโหลด...กำลังโหลด...