เครื่องวัดความถี่แบบโฮมเมดบน ATTINY2313 เครื่องวัดความถี่แบบโฮมเมดบนเครื่องวัดความถี่ ATTINY2313 พร้อมตัวบ่งชี้แบบไดนามิกโดยไม่ต้องใช้ไมโครคอนโทรลเลอร์

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

แผนผังของเครื่องวัดความถี่แสดงในรูปที่ 1

รูปที่ 1. แผนผังของอุปกรณ์

เครื่องวัดความถี่ถูกประกอบบนเขียงหั่นขนมโดยใช้ไมโครคอนโทรลเลอร์ ATmega16 จาก Atmel แหล่งกำเนิดนาฬิกาเป็นออสซิลเลเตอร์ RC ภายใน 8 MHz (ต้องจำไว้เมื่อตั้งโปรแกรมไมโครคอนโทรลเลอร์) นอกจากนี้ ส่วนอินพุตยังใช้ตัวนับ 4 บิต 74HC191 เป็นตัวแบ่งความถี่ที่วัดได้ 16 ก่อนที่จะนำไปใช้กับอินพุตไมโครคอนโทรลเลอร์ อย่างที่คุณเห็นใช้เฉพาะเอาต์พุตตัวนับ Q3 เท่านั้น ความถี่ที่เอาต์พุตนี้จะเท่ากับความถี่อินพุตหารด้วย 16

อินพุตของอุปกรณ์ (โพรบ) คือจุด W1 ซึ่งเชื่อมต่อโดยตรงกับพอร์ตไมโครคอนโทรลเลอร์ PB0 และไปยังพอร์ต PB1 ผ่านตัวแบ่ง

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

เค้าโครงและวัตถุประสงค์ของพินตัวบ่งชี้ที่ใช้แสดงในรูปที่ 2


รูปที่ 2. ตำแหน่งและวัตถุประสงค์ของหมุดของไฟ LED แสดงสถานะ 4 หลักที่ใช้.

พิน E1...E4 ใช้เพื่อเปิดบิตที่สอดคล้องกัน (E1 – เพื่อเปิดบิตลำดับต่ำด้านขวา)

แต่ละสาย I/O ของไมโครคอนโทรลเลอร์ ATmega16 สามารถจ่ายกระแสเอาต์พุตได้สูงสุด 40mA ดังนั้นเราจึงไม่จำเป็นต้องใช้ทรานซิสเตอร์ และสัญญาณควบคุมการแสดงผล (E1...E4) เชื่อมต่อโดยตรงกับพอร์ตไมโครคอนโทรลเลอร์

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

อัลกอริธึมการวัดความถี่

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

ความถี่สูงสุดที่สามารถประมวลผลโดยตัวนับไมโครคอนโทรลเลอร์ ATmega16 ต้องไม่เกินความถี่สัญญาณนาฬิกาหารด้วย 2.5 เรามาแสดงความถี่สูงสุดกันเถอะ - เอฟแม็กซ์. ความถี่สัญญาณนาฬิกาสำหรับไมโครคอนโทรลเลอร์ของเราคือ 8 MHz ดังนั้นเราจึงสามารถวัดสัญญาณได้โดยตรงด้วยความถี่สูงสุด 3.2 MHz ในการวัดความถี่ที่สูงกว่าระดับนี้ เราใช้ตัวนับ 4 บิตเป็นตัวแบ่งความถี่อินพุต ขณะนี้เราสามารถวัดความถี่ได้สูงขึ้น 16 เท่า เอฟแม็กซ์แต่ที่นี่ข้อจำกัดถูกกำหนดโดยตัวนับ 74191 และความถี่ที่วัดได้สูงสุดจริงจะต้องไม่เกิน 40 MHz

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

เอฟ โอ = 16 × F ;

แต่เมื่อเราเข้าใกล้กันมากขึ้น เอฟ โอถึง เอฟ สูงสุดจะต้องประมวลผลพัลส์มากขึ้นเรื่อยๆ และนิพจน์ด้านบนจะกลายเป็น:

เอฟ โอ < 16 × F ;

ดังนั้นจึงสามารถตรวจจับขีดจำกัดการวัดของไมโครคอนโทรลเลอร์ได้โดยอัตโนมัติ

เครื่องวัดความถี่เริ่มวัดความถี่ดั้งเดิม (ประมวลผลและแสดงค่าบนจอแสดงผล) และทันทีที่ตรวจพบการเข้าใกล้ความถี่สูงสุด เอฟ สูงสุด(โดยใช้วิธีการข้างต้น) เลือกความถี่หลังจากตัวแบ่งในการวัด

อัลกอริธึมสรุปไว้ในแผนภาพ (รูปที่ 3)

รูปที่ 3 อัลกอริทึมสำหรับการใช้งานเครื่องวัดความถี่บนไมโครคอนโทรลเลอร์

ซอฟต์แวร์ไมโครคอนโทรลเลอร์

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

  • รหัสได้รับการออกแบบเพื่อให้ค่าที่วัดได้แสดงบนตัวบ่งชี้เป็น "kHz" ตัวอย่างเช่น หากคุณเห็นค่า “325.8” บนจอแสดงผล หมายถึง 325.8 kHz ค่า “3983” หมายถึง 3983 kHz (หรือ 3.983 MHz)
  • ตัวจับเวลา/ตัวนับ 0 ของไมโครคอนโทรลเลอร์ใช้เพื่อนับพัลส์อินพุตโดยตรง
  • ตัวจับเวลา/ตัวนับ 1 ของไมโครคอนโทรลเลอร์ใช้เพื่อนับพัลส์อินพุตหลังตัวหารด้วย 16
  • ตัวจับเวลา/ตัวนับ 2 ได้รับการกำหนดค่าเป็นตัวจับเวลาด้วยพรีสเกลเลอร์ 1024 (ความถี่ CPU หารด้วย 1024) ใช้เพื่อเรียกอัลกอริธึมการคำนวณและการเลือกความถี่ทุก ๆ ช่วงตัวจับเวลา T ในโครงการของเรา ต = 1,024× ซีพียู 256/F
  • "แฟคเตอร์" คงที่ซึ่งกำหนดไว้ที่จุดเริ่มต้นของโปรแกรมด้วยค่า "31.78581" จะต้องได้รับการปรับเทียบโดยการวัดความถี่อ้างอิง คำนวณโดยนิพจน์:

ปัจจัย = F cpu /(1024× 256)=8.E6/(1024×256)=30.51757

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

บันทึก

ไมโครคอนโทรลเลอร์ ATmega16 มาพร้อมกับการตั้งค่าจากโรงงานที่กำหนดค่าให้ทำงานจากออสซิลเลเตอร์ RC ภายใน 1 MHz จำเป็นต้องใช้โปรแกรมเมอร์แบบอนุกรมเพื่อตั้งค่าบิตฟิวส์ CKSEL3..0 ให้เป็นค่า “0100” ซึ่งสอดคล้องกับการเปิดออสซิลเลเตอร์ RC 8 MHz ภายใน

การใช้งาน:

- ซอร์สโค้ดโปรแกรมไมโครคอนโทรลเลอร์

การแปล: วาดิม

การพัฒนาการออกแบบได้รับแจ้งจากข้อความที่อ่านในฟอรัม DDS ว่าควรมีตัวแบ่งความถี่สูงอื่นๆ นอกเหนือจากซีรีส์ 193 และ 500 รวมถึงไดอะแกรมของซินธิไซเซอร์ใหม่สำหรับ FM2006 ที่ฉันเห็นในเวลาที่เหมาะสม หลังการทดลอง เครื่องวัดความถี่อย่างง่ายถือกำเนิดขึ้นบนวงจรไมโคร LMX 2306, ATtiny 2313 และตัวบ่งชี้คริสตัลเหลวสังเคราะห์สัญญาณ BC 1602 โดยมีคุณสมบัติดังต่อไปนี้:

  • ช่วงความถี่ที่วัดได้ตั้งแต่ 300 Hz ถึง 450 MHz
  • ความไวตั้งแต่ 50 mV ถึง 200 mV
  • ขั้นตอนการวัดขั้นต่ำ:
  • ช่วง 300 Hz ถึง 4.5 MHz 1 Hz
  • ช่วง 4.5 MHz ถึง 80 MHz 25 Hz
  • ช่วง 80 MHz ถึง 450 MHz 100 Hz
  • เวลาในการวัด 0.1 วินาที / 1 วินาที
  • ความแม่นยำในการวัดไม่แย่ไปกว่า 0.007%
  • แรงดันไฟจ่าย 9V…15V
  • ปริมาณการใช้กระแสไฟ (ไม่มีไฟแบ็คไลท์) 20 mA

คำอธิบายและการกำหนดค่าของโครงร่าง (รูปที่ 1).

สัญญาณจากอินพุต F จะถูกป้อนไปยังสเตจแอมพลิฟายเออร์บนทรานซิสเตอร์ VT1 ซึ่งจะแยกไปยังตัวแบ่งความถี่สูงที่ตั้งโปรแกรมได้ซึ่งรวมอยู่ในชิป DD1 เช่นเดียวกับสวิตช์เลื่อน SA1 ซึ่งเลือกช่วงการวัด (สูงสุด 4.5 MHz / สูงกว่า 4.5 MHz) จากนั้น สัญญาณจะถูกขยายเพิ่มเติมและส่งไปยังชิป DD2 ซึ่งทำหน้าที่นับความถี่ ส่งข้อมูลออกไปยัง LCD และควบคุมชิป DD1 วงจรนี้ใช้พลังงานจากโคลง DA1

สวิตช์ SA2 จะเลือกเวลาในการนับและความแม่นยำในการวัดตามลำดับ ปุ่ม SB1 ใช้เพื่อปรับเทียบมิเตอร์ความถี่ ในการดำเนินการนี้ ให้ใช้ความถี่อ้างอิง 1 MHz เพื่ออินพุต F แล้วกด SB1 ค้างไว้จนกว่าจอ LCD จะแสดงค่าที่อ่านได้ใกล้เคียงกับ 1 MHz มากที่สุด ไม่จำเป็นต้องทำการสอบเทียบเพิ่มเติม

คุณยังสามารถใช้ขั้นตอนการตั้งค่ามาตรฐานได้โดยใช้ความถี่อ้างอิงใดๆ กับอินพุต F และเลือก C9 และ C10 เพื่อให้ได้ค่าการอ่าน LCD ที่ต้องการ

เชน D1, R5, R6, C7 ร่วมกับคาสเคดบนทรานซิสเตอร์ VT2 จะขยายเอาต์พุตพัลส์จากชิป DD1 เมื่อใช้ความถี่สูงสุดที่เป็นไปได้กับอินพุต F แต่ไม่เกิน 450 MHz โดยการเลือกตัวต้านทาน R5 การอ่าน LCD ที่เสถียรจะทำได้ (หากออสซิลโลสโคปเชื่อมต่อกับขาที่ 9 ของ DD2 ควรมีบางอย่างใกล้กับคลื่นสี่เหลี่ยม) . ตัวเก็บประจุ C7 ในโครงสร้างที่เราประกอบถูกย้ายไปที่ตัวสะสม VT2

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

รายละเอียด.

ตัวต้านทานแบบคงที่และตัวเก็บประจุแบบเซรามิก ขนาด 0805 (ติดตั้งบนพื้นผิว) เราจะแทนที่ทรานซิสเตอร์ VT1 KT368 ด้วย KT399, VT2 KT368 ด้วย KT315 ความถี่สูงที่ต่ำกว่า (พร้อมการปรับบอร์ด) ชิป DD2 ATtiny 2313-20 (ที่มีความถี่สัญญาณนาฬิกาสูงถึง 20 MHz) ในแพ็คเกจ DIP ได้รับการติดตั้งที่ด้านข้างของตัวนำที่พิมพ์ DA1 (ติดตั้งที่ด้านพิมพ์ด้วย) - โคลง 5 โวลต์ใด ๆ ที่มีกระแสมากกว่า 1 A แต่ถ้าคุณไม่ได้ใช้ไฟแบ็คไลท์ LCD คุณสามารถใช้ 78L05 กระแสต่ำได้ เครื่องสะท้อนเสียงควอตซ์ Q1 – 11.0592 MHz ในทุกการออกแบบ สวิตช์ SA1 และ SA2 - B1561(DPDT) หรือ SS21 ที่มีความยาวคันโยกมากกว่า 5 มม. ปุ่มสัมผัส SB1 – TS-A1PS (TS-A2PS, TS-A3PS, TS-A4PS, TS-A6PS) ตัวบ่งชี้ BC1602 หรือ BC1601, BC1604 รวมถึงตัวบ่งชี้ที่คล้ายกันกับคอนโทรลเลอร์ HD-44780 จากผู้ผลิตรายอื่น อย่าลืมตรวจสอบการปฏิบัติตามข้อสรุป!เราสามารถเปลี่ยนไดโอด VD2 1N4007 ด้วยอันใดก็ได้ที่มีกระแสไฟทำงานที่เหมาะสม ขั้วต่อสายไฟ - AUB ซีรีส์ สเตอริโอ 3.5 มม. หรือคล้ายกัน มีการปรับบอร์ดบางตัว อะแดปเตอร์เครือข่ายพลังงานต่ำที่มีแรงดันไฟฟ้าที่เหมาะสมจะใช้ในการจ่ายไฟ สัญญาณจะถูกส่งไปยังบอร์ดผ่านลวดแกนเดียวที่มีเส้นผ่านศูนย์กลางประมาณ 0.8 มม. และความยาว 5-8 ซม.

คุณสามารถแยก C4, R4 และสลับ SA1 ออกจากวงจรได้โดยเชื่อมต่อ C8 กับจัมเปอร์เข้ากับฐาน VT2 DD2 6 ขา ควรห้อยกลางอากาศ ในตัวเลือกนี้ ความถี่ขีดจำกัดล่างจะกลายเป็น 1.5 MHz

แผงวงจรพิมพ์วางในรูปแบบ Sprint-Layout และทำจากไฟเบอร์กลาสฟอยล์ด้านเดียว ( ข้าว. 2).

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

แผนภาพวงจรของอุปกรณ์ค่อนข้างง่ายและแสดงในรูปที่ 2 โปรเจ็กต์ในรูปแบบ Eagle (แผนภาพวงจรและแผงวงจรพิมพ์) พร้อมให้ดาวน์โหลดในส่วนดาวน์โหลด

งานที่ไมโครคอนโทรลเลอร์ทำนั้นเรียบง่ายและชัดเจน: นับจำนวนพัลส์อินพุตใน 1 วินาทีและแสดงผลบนตัวบ่งชี้ 7 บิต จุดที่สำคัญที่สุดคือความแม่นยำของออสซิลเลเตอร์หลัก (ฐานเวลา) ซึ่งมั่นใจได้ด้วยตัวจับเวลา 16 บิตในตัว Timer1 ในโหมด CTC ตัวจับเวลาตัวที่สอง 8 บิตทำงานในโหมดนับจำนวนพัลส์ที่อินพุต T0 ทุก ๆ 256 พัลส์ทำให้เกิดการขัดจังหวะ ซึ่งตัวจัดการจะเพิ่มค่าสัมประสิทธิ์ เมื่อตัวจับเวลา 16 บิตถึงระยะเวลา 1 วินาที การขัดจังหวะจะเกิดขึ้น แต่ในกรณีนี้ ตัวจัดการการขัดจังหวะจะคูณตัวประกอบด้วย 256 (กะซ้ายด้วย 8 บิต) จำนวนพัลส์ที่เหลือที่ลงทะเบียนโดยตัวนับจะถูกบวกเข้ากับผลลัพธ์ของการคูณ จากนั้นค่าผลลัพธ์จะถูกแบ่งออกเป็นตัวเลขแต่ละตัว ซึ่งจะแสดงบนตัวบ่งชี้แยกต่างหากในหลักที่เกี่ยวข้อง หลังจากนั้น ทันทีก่อนที่จะออกจากตัวจัดการการขัดจังหวะ ตัวนับทั้งสองจะถูกรีเซ็ตพร้อมกันและรอบการวัดจะถูกทำซ้ำ ใน "เวลาว่าง" ไมโครคอนโทรลเลอร์มีส่วนร่วมในการส่งข้อมูลไปยังตัวบ่งชี้โดยใช้วิธีมัลติเพล็กซ์ ในซอร์สโค้ดของโปรแกรมไมโครคอนโทรลเลอร์ผู้เขียนให้ความคิดเห็นเพิ่มเติมซึ่งจะช่วยให้คุณเข้าใจรายละเอียดเกี่ยวกับอัลกอริทึมของไมโครคอนโทรลเลอร์

ความละเอียดและความแม่นยำของการวัด

ความแม่นยำในการวัดขึ้นอยู่กับแหล่งสัญญาณนาฬิกาของไมโครคอนโทรลเลอร์ รหัสซอฟต์แวร์อาจทำให้เกิดข้อผิดพลาด (เพิ่มหนึ่งพัลส์) ที่ความถี่สูง แต่แทบไม่มีผลกระทบต่อผลการวัด เครื่องสะท้อนเสียงแบบควอตซ์ที่ใช้ในอุปกรณ์ต้องมีคุณภาพดีและมีข้อผิดพลาดน้อยที่สุด ตัวเลือกที่ดีที่สุดคือเครื่องสะท้อนเสียงซึ่งมีความถี่หารด้วย 1,024 ลงตัว เช่น 16 MHz หรือ 22.1184 MHz หากต้องการรับช่วงการวัดสูงสุด 10 MHz คุณต้องใช้เครื่องสะท้อนเสียงแบบควอตซ์ที่มีความถี่ 21 MHz ขึ้นไป (สำหรับ 16 MHz ดังในแผนภาพ ช่วงการวัดจะต่ำกว่า 8 MHz เล็กน้อย) เครื่องสะท้อนเสียงแบบควอตซ์ที่มีความถี่ 22.1184 MHz เหมาะสำหรับอุปกรณ์ของเรา แต่การซื้อเครื่องที่มีข้อผิดพลาดน้อยที่สุดจะเป็นงานที่ยากสำหรับนักวิทยุสมัครเล่นหลายคน ในกรณีนี้ คุณสามารถใช้เครื่องสะท้อนเสียงแบบควอตซ์ที่ความถี่อื่นได้ (เช่น 25 MHz) แต่จำเป็นต้องปรับเทียบออสซิลเลเตอร์หลักโดยใช้ออสซิลโลสโคปที่รองรับการวัดด้วยฮาร์ดแวร์และตัวเก็บประจุแบบทริมเมอร์ในวงจรเครื่องสะท้อนเสียงแบบควอตซ์ (รูปที่ 3 , 4)

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

สัญญาณอินพุต

โดยทั่วไปสัญญาณของรูปร่างใด ๆ ที่มีแอมพลิจูด 0 ... 5 V และไม่ใช่แค่พัลส์สี่เหลี่ยมเท่านั้นที่สามารถจ่ายให้กับอินพุตของอุปกรณ์ได้ คุณสามารถใช้สัญญาณไซน์หรือสามเหลี่ยมได้ พัลส์ถูกกำหนดโดยขอบตกที่ระดับ 0.8 V โปรดทราบ: อินพุตมิเตอร์ความถี่ไม่ได้รับการป้องกันจากไฟฟ้าแรงสูงและไม่ได้เชื่อมต่อกับแหล่งจ่ายไฟมันเป็นอินพุตที่มีความต้านทานสูงซึ่งไม่โหลดวงจร อยู่ระหว่างการทดสอบ ช่วงการวัดสามารถขยายได้ถึง 100 MHz ด้วยความละเอียด 10 Hz หากใช้ตัวแบ่งความถี่ความเร็วสูงที่เหมาะสมที่อินพุต

แสดง

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

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

PCB สองด้านมีขนาด 109 × 23 มม. สภาพแวดล้อมการออกแบบ Eagle PCB เวอร์ชันฟรีไม่มี LED เจ็ดส่วนในไลบรารีส่วนประกอบ ดังนั้นผู้เขียนจึงวาดด้วยมือ ดังที่เห็นในรูปถ่าย (รูปที่ 5, 6, 7) ของแผงวงจรพิมพ์ของผู้เขียนจำเป็นต้องทำการเชื่อมต่อเพิ่มเติมด้วยสายยึดหลาย ๆ อัน การเชื่อมต่อหนึ่งที่ด้านหน้าของบอร์ดคือการจ่ายไฟให้กับพิน Vcc ของไมโครคอนโทรลเลอร์ (ผ่านรูในบอร์ด) ที่ด้านล่างของบอร์ดมีการเชื่อมต่ออีกสองจุดซึ่งใช้สำหรับเชื่อมต่อหมุดส่วนจุดทศนิยมของตัวบ่งชี้ในหลักที่ 4 และ 7 ผ่านตัวต้านทาน 330 โอห์มกับกราวด์ สำหรับการเขียนโปรแกรมในวงจรของไมโครคอนโทรลเลอร์ ผู้เขียนใช้ขั้วต่อ 6 พิน (ในแผนภาพ ขั้วต่อนี้จะแสดงเป็นคอมโพสิต JP3 และ JP4) ซึ่งอยู่ที่ส่วนบนของแผงวงจรพิมพ์ ขั้วต่อนี้ไม่จำเป็นต้องบัดกรีเข้ากับบอร์ด สามารถตั้งโปรแกรมไมโครคอนโทรลเลอร์ด้วยวิธีใดก็ได้ที่มี

ดาวน์โหลด

แผนผังและภาพวาดของแผงวงจรพิมพ์ ซอร์สโค้ด และเฟิร์มแวร์ของไมโครคอนโทรลเลอร์ -

อุปกรณ์นี้ได้รับการออกแบบมาเพื่อวัดความถี่ในช่วง 0-9999 Hz แต่เมื่อใช้ตัวแบ่งความถี่ที่อินพุต ช่วงนี้จะถูกขยายตามนั้น แรงดันไฟฟ้าขาเข้าสูงสุดคือ 3V โดยมีเงื่อนไขว่าไม่มีตัวแบ่งแรงดันไฟฟ้าเพิ่มเติม ค่าต่ำสุดคือ 0.15V และหากไม่มีอยู่ ความถี่ในการวัดสูงสุดสามารถขยายได้โดยการเปลี่ยนโค้ดโปรแกรม แต่จะเพิ่มเติมในภายหลัง

วงจรอุปกรณ์ค่อนข้างง่ายและแสดงไว้ด้านล่าง:

วงจรนี้ใช้ไมโครคอนโทรลเลอร์ 8 บิตที่ผลิตโดย Atmega8A-PU ในการโอเวอร์คล็อกแกนไมโครคอนโทรลเลอร์ จะใช้เครื่องกำเนิดไฟฟ้าที่มีเครื่องสะท้อนควอทซ์ภายนอก ทางเลือกของเครื่องกำเนิดดังกล่าวถูกกำหนดโดยข้อกำหนดสำหรับความเสถียรของความถี่ของเครื่องหลัง ตัวบ่งชี้ใช้ไฟ LED เจ็ดส่วนสี่หลักพร้อมขั้วบวกทั่วไปและตัวบ่งชี้แบบไดนามิก กระแสของส่วนของตัวบ่งชี้ไม่ได้ถูกจำกัดด้วยตัวต้านทาน เนื่องจากมีการใช้ตัวบ่งชี้แบบไดนามิกและกระแสพัลส์ตามธรรมชาติซึ่งส่วนของตัวบ่งชี้สามารถทนได้สำเร็จ เช่นเดียวกับพอร์ตไมโครคอนโทรลเลอร์ โหนดอินพุตถูกสร้างขึ้นบนองค์ประกอบ R2, D1, D2, C3, R3, R4, R1, Q1 โหนดนี้ให้การขยาย/จำกัดสัญญาณที่มาถึงอินพุต (ตัวต้านทานและไดโอดที่อินพุตของเครื่องวัดความถี่จะจำกัดสัญญาณอินพุต ทรานซิสเตอร์มีหน้าที่ในการขยายสัญญาณไปที่ระดับ TTL) แผงวงจรพิมพ์ของอุปกรณ์ก็ไม่ซับซ้อนเช่นกัน มันทำจากวัสดุฟอยล์ด้านเดียว (ตอนแรกตั้งใจว่าจะทำสองหน้า แต่ไม่มีให้เลย เลยตัดสินใจทำแบบด้านเดียว) โทโพโลยีของบอร์ดแสดงอยู่ด้านล่าง

ส่วนโปรแกรมสำหรับไมโครคอนโทรลเลอร์นั้นได้รับการพัฒนาในสภาพแวดล้อม (แนบไฟล์โครงการ) ในการนับพัลส์ ฉันใช้อินเทอร์รัปต์ที่อินพุต INT0 ของไมโครคอนโทรลเลอร์ และเพื่อจำกัดเวลาในการนับ ฉันใช้อินเทอร์รัปต์จากตัวจับเวลา TMR0 เนื่องจากตัวจับเวลานี้มีพรีสเกลเลอร์ที่มีค่าสัมประสิทธิ์การหาร 1/256 (เนื่องจากเป็น 8 บิต) ความถี่ขัดจังหวะจึงคำนวณดังนี้: Finter.=F gen.۞256۞porgr. ธุรกิจ ในการออกแบบของฉัน ฉันเลือกความถี่ขัดจังหวะที่ 200 Hz ดังที่ผมได้เขียนไว้ข้างต้น ความถี่ในการวัดสามารถเพิ่มขึ้นได้ ในการทำเช่นนี้ คุณเพียงแค่ต้องจำกัดเวลาในการวัด ซึ่งทำได้โดยการเปลี่ยนตัวเลข 200 เป็น 2 (เวลาในการวัดไม่ใช่ 1 วินาที แต่เป็น 10 มิลลิวินาที ความถี่คัตออฟคือ 99,999Hz) ในโค้ด ดังแสดงในรูปในซอร์สโค้ดใน C

ในการตั้งโปรแกรมไมโครคอนโทรลเลอร์ ฉันใช้โปรแกรมเมอร์แบบขนาน อย่างที่คุณเห็น การออกแบบของฉันใช้พินรีเซ็ตภายนอกเป็นพอร์ตปกติ หากคุณไม่มีโปรแกรมเมอร์แบบขนาน นี่คือเวอร์ชันของวงจรที่ใช้พอร์ต D ของไมโครคอนโทรลเลอร์ และไม่จำเป็นต้องใช้พิน RESET เป็นพอร์ตเอาต์พุตปกติ

นี่คือตัวอย่างการตั้งฟิวส์ในโปรแกรม:

ต่อไปนี้เป็นแผนภาพของเครื่องวัดความถี่รุ่นต่างๆ ที่ใช้ RESET ตามวัตถุประสงค์:

และนี่คือโทโพโลยีของบอร์ดสำหรับเวอร์ชันที่สองของวงจร:

ในการจ่ายไฟให้วงจรจะใช้แหล่งจ่ายไฟ 5V ที่เสถียร (ฉันใช้แหล่งจ่ายไฟของคอมพิวเตอร์ดังนั้นจึงไม่มีองค์ประกอบที่ทำให้เสถียรในวงจร)

ไม่มีชิ้นส่วนที่หายากในโครงการนี้ แต่ฉันจะยังคงแสดงรายการชิ้นส่วนทดแทนและแอนะล็อก ดังนั้นไมโครคอนโทรลเลอร์ Atmega8A-PU สามารถถูกแทนที่ด้วย Atmega8-16PU ที่คล้ายกัน (โดยวิธีการอย่างหลังจะดีกว่า) ตัวต้านทานสามารถรับกำลังได้ 0.125 W ยกเว้น R2 จะดีกว่าถ้าใช้ที่ 0.5 W ตัวเก็บประจุเป็นดิสก์หรือเซรามิกสำหรับเครื่องกำเนิดไฟฟ้าและสำหรับบล็อกอินพุต - เหมาะสมตามพารามิเตอร์ สามารถเปลี่ยนทรานซิสเตอร์เป็น KT3102 ในประเทศได้ (ตามการทดลองแสดงให้เห็นว่า KT315 มีค่าสัมประสิทธิ์การถ่ายโอนกระแส h21E ต่ำเกินไป) คุณสามารถใช้ไฟ LED ใดก็ได้ที่มีขนาดเหมาะสม (และไม่สำคัญ) เครื่องสะท้อนเสียงแบบควอตซ์ถูกใช้ที่ความถี่ 3267800Hz (3.2768MHz)

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

ภาพถ่ายแรกแสดงตัวต้านทานที่เชื่อมต่อกับพิน RESET ของ MK (ยังไม่ได้ตรวจสอบเฟิร์มแวร์ตัวที่สองด้วยการรีเซ็ต)

รายชื่อธาตุกัมมันตภาพรังสี

การกำหนด พิมพ์ นิกาย ปริมาณ บันทึกร้านค้าสมุดบันทึกของฉัน
ยู1 MK AVR 8 บิต

ATmega8A

1 เอทีเมก้า 8-16PU ไปยังสมุดบันทึก
ไตรมาสที่ 1 ทรานซิสเตอร์แบบไบโพลาร์

KT3102

1 2N3390 ไปยังสมุดบันทึก
วีดี1, วีดี2 ไดโอดเรียงกระแส

1N4148

2 ไปยังสมุดบันทึก
ซี1, ซี2 ตัวเก็บประจุ27 พิโคเอฟ2 ไปยังสมุดบันทึก
ค3 ตัวเก็บประจุ22 nF1 ไปยังสมุดบันทึก
R1, R4 ตัวต้านทาน

470 โอห์ม

2 ไปยังสมุดบันทึก
R2 ตัวต้านทาน

100 โอห์ม

1
อุปกรณ์ที่มีประโยชน์และเรียบง่ายซึ่งไม่สามารถถูกแทนที่ได้ในห้องปฏิบัติการสร้างสรรค์ของนักวิทยุสมัครเล่นสามารถทำได้บน PIC16F628A MK เครื่องวัดความถี่ดิจิทัลนี้บนชิปควบคุม PIC16F628A ทั่วไป ได้รับการออกแบบมาเพื่อวัดความถี่สูงถึง 30 MHz แผนภาพวงจรประกอบด้วยโมดูลฐานพร้อมไดรเวอร์อินพุตที่เชื่อมต่อกับอินพุตการนับ แผนภาพเครื่องวัดความถี่แสดงในรูปด้านล่าง:

อุปกรณ์ตรวจวัดนี้สามารถใช้ได้ในสองโหมด - สเกลดิจิตอลและมิเตอร์ความถี่ เมื่อเปิดเครื่อง เครื่องวัดความถี่จะเข้าสู่โหมดที่ใช้งานอยู่ก่อนที่จะปิดเครื่องครั้งสุดท้าย หากเป็นโหมดมิเตอร์ความถี่ โหมดมิเตอร์ความถี่ “F” จะแสดงที่หลักด้านซ้ายของตัวบ่งชี้ นอกจากนี้ “0” จะแสดงเป็นตัวเลขลำดับต่ำของตัวบ่งชี้ เครื่องวัดความถี่จะเปลี่ยนเป็นโหมดการวัดความถี่โดยอัตโนมัติและจะอยู่ในโหมดสแตนด์บาย เมื่อสัญญาณถูกจ่ายให้กับอินพุท เครื่องหมายโหมดมิเตอร์ความถี่จะเป็น “F” ดับลงและตัวบ่งชี้จะแสดงค่าความถี่ที่วัดได้เป็นกิโลเฮิรตซ์
แผนภาพของไดรเวอร์อินพุตของเครื่องวัดความถี่ - สเกลดิจิตอลแสดงในรูป:


หากในขณะที่เปิดเครื่องมีสัญญาณที่วัดได้ที่อินพุตของเครื่องวัดความถี่จากนั้นหลังจากเปิดเครื่องแล้วสัญญาณการทำงานของเครื่องวัดความถี่ "F" จะสว่างขึ้นเป็นเวลา 1 วินาทีแล้วดับลง .
เพื่อสลับเป็นเวลาการวัด 0.1 วินาที หรือ 10 วินาที คุณต้องกดปุ่มหมายเลข 1 หรือกดปุ่มหมายเลข 1 และปุ่มหมายเลข 2 พร้อมกัน ตามลำดับ (ดูรูปแบบแป้นพิมพ์สำหรับโหมดมิเตอร์ความถี่) จากนั้นรอให้ตำแหน่งของจุดทศนิยมเปลี่ยนแปลง แล้วปล่อยปุ่ม (ปุ่ม) หากหลังจากนี้คุณต้องกลับไปสู่เวลาการวัด 1 วินาที ให้กดปุ่มหมายเลข 2 และรอให้ตำแหน่งของจุดทศนิยมเปลี่ยนแล้วจึงปล่อยปุ่ม สำหรับการวัดเวลาใดๆ จุดทศนิยมจะทำเครื่องหมายเป็นกิโลเฮิรตซ์


รูปแบบแป้นพิมพ์โหมดเครื่องวัดความถี่

ปุ่มหมายเลข 1 0.1 วินาที สลับเป็นเวลาการวัด 0.1 วินาที
ปุ่มหมายเลข 2 1 วินาที สลับเป็นเวลาการวัด 1 วินาที
ปุ่มหมายเลข 1 +
ปุ่มหมายเลข 2 10 วินาที สลับเป็นเวลาการวัด 10 วินาที
(กดปุ่มพร้อมกัน)

หากก่อนปิดเครื่อง คุณทำงานในโหมดสเกลดิจิทัล ครั้งต่อไปที่คุณเปิดเครื่อง โหมดนี้จะถูกตั้งค่า และภายในโหมดสเกลดิจิทัล โหมดย่อย ("ลบ IF" หรือ "บวก IF" ) จะถูกตั้งค่าให้งานเกิดขึ้นก่อนการปิดเครื่องครั้งสุดท้าย สัญญาณของโหมดย่อยระดับดิจิทัล (“L.” หรือ “H.” ตามลำดับ) จะแสดงอย่างต่อเนื่องที่ตัวเลขด้านซ้ายของตัวบ่งชี้ หากไม่มีสัญญาณที่อินพุตของสเกลดิจิทัล ตัวบ่งชี้จะแสดงค่าของความถี่กลางที่บันทึกไว้ในหน่วยความจำของตัวควบคุม และหากมีอยู่ ผลลัพธ์ของการลบหรือเพิ่มความถี่ของสัญญาณที่อินพุต ของสเกลดิจิตอลและค่าของความถี่กลางที่บันทึกไว้ในหน่วยความจำแบบไม่ลบเลือนของตัวควบคุม PIC


โหมดมาตราส่วนดิจิตอลมี 4 โหมดย่อย
- เมื่อคุณกดปุ่มหมายเลข 1 การเปลี่ยนไปใช้โหมดย่อย "ลบ IF" จะเกิดขึ้น
- ในกรณีนี้ ในหลักด้านซ้ายของตัวบ่งชี้ เครื่องหมายของโหมดย่อย "L." จะถูกไฮไลต์
- เมื่อคุณกดปุ่มหมายเลข 2 คุณจะสลับไปที่โหมดย่อย "บวกอินเวอร์เตอร์"
- ในกรณีนี้ ในหลักด้านซ้ายของตัวบ่งชี้ เครื่องหมายของโหมดย่อย "H." จะถูกเน้น

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

รูปแบบแป้นพิมพ์โหมดมาตราส่วนดิจิตอล:
ปุ่ม คำอธิบายเวลาในการวัด
ปุ่มหมายเลข 1 "ลบ IF" ความถี่กลางจะถูกลบออก
ความถี่ที่วัดได้
ปุ่มหมายเลข 2 “บวก IF” รวมความถี่กลางด้วย
ความถี่ที่วัดได้
ปุ่มหมายเลข 1 +
ปุ่มหมายเลข 2 การตั้งค่าอินเวอร์เตอร์การเขียนค่าลงในหน่วยความจำ RAM
ความถี่ที่วัดได้ (IF)
ทำซ้ำ:
ปุ่มหมายเลข 1 +
ปุ่มหมายเลข 2 บันทึก IF คัดลอกค่าความถี่ที่วัดได้จาก RAM ไปยังหน่วยความจำแบบไม่ลบเลือนเพื่อวัตถุประสงค์ในการใช้งานต่อไปเป็นสื่อกลาง


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


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


สามารถดาวน์โหลดเฟิร์มแวร์สำหรับไมโครคอนโทรลเลอร์ PIC16F84A รวมถึงบทความฉบับเต็มเกี่ยวกับคอนโทรลเลอร์ได้ที่นี่ ฉันทดสอบวงจร - ZU77

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