หน้าแรก ดูโปรเจกต์ทั้งหมด
Intermediate

โปรเจกต์ Logic Probe ขนาดเล็กสำหรับ TTL / CMOS พร้อม Battery Charger

ใช้งาน Microcontroller ATtiny1614 พร้อม LiPo Battery รวมถึงวงจร USB charging และ Logic สามารถเขียนโปรแกรมได้ด้วย Arduino IDE!

โปรเจกต์ Logic Probe ขนาดเล็กสำหรับ TTL / CMOS พร้อม Battery Charger

รายการอุปกรณ์และเครื่องมือ

1x ATtiny 1614 Processor
-

รายละเอียดและวิธีทำ

บทนำ:

ผมขอแนะนำให้คุณรู้จักกับ Logic Probe เครื่องมือวัดที่สมบูรณ์แบบ ซึ่งมีความเรียบง่ายแต่มีประสิทธิภาพ ในการวัดระดับลอจิกดิจิทัล 0 (ศูนย์) และ 1 (หนึ่ง) ทั้งเทคโนโลยี TTL และ CMOS โดยระดับแรงดันไฟฟ้าสูงสุดที่ยอมรับได้คือ 10 โวลต์ แต่สำหรับ CMOS สามารถไปถึง 18 โวลต์ซึ่งคุณควรหลีกเลี่ยง วิธีใช้งานเพียงแค่เชื่อมต่อ สาย Mini USB ที่มีแคลมป์ 'crocodile' สีดำเข้ากับ GND ของวงจรคุณ และแตะ Probe ตรงจุดที่คุณต้องการทราบระดับลอจิก (ในวงจรเดียวกัน) แล้วสังเกตที่ LED ที่สอดคล้องกันซึ่งจะสว่างขึ้น

โดยปกติสำหรับ Arduino และ Microcontroller ที่คล้ายกันอย่าง ATtiny ที่ใช้ในโปรเจกต์นี้ เราจะพบ TTL ที่ 3.3v และ 5.0v ซึ่งระดับลอจิก 'ศูนย์' และ 'หนึ่ง' จะเหมือนกัน: ตั้งแต่ 0.0 ถึง 0.8v จะถือว่าเป็น 0 (LOW) และตั้งแต่ 2.0 ถึง 3.3 ไปจนถึง 5.0v จะถือว่าเป็น 1 (HIGH); ส่วนระหว่าง 0.8 และ 2.0 จะถือว่าเป็น UNDEFINED

หนึ่ง ใน LED ทั้งสามดวงจะสว่างขึ้นในแต่ละระดับที่สอดคล้องกัน:

  • ระดับ TTL, ทั้ง 3.3 และ 5.0 โวลต์:

low=blue (สีน้ำเงิน) <= 0.8v

high=red (สีแดง) > 2.0v

undefined=yellow (สีเหลือง) >0.8v <= 2.0v

  • ระดับ CMOS, สูงสุด 18 โวลต์ (ในที่นี้ จำกัดไว้ที่ 10 โวลต์):

low=blue (สีน้ำเงิน) <= 1.5v

high=red (สีแดง) > 3.5v

undefined=yellow (สีเหลือง) >1.5v <= 3.5v

การทดสอบ Microcontroller กับวงจร โดยใช้ Nano เป็น Programmer และ FTDI สำหรับ Serial monitor

รายการอุปกรณ์ (MCU small board):

  • MCU ATtiny 1614 SMD
  • ขั้วต่อ Mini USB female PCB SMD
  • 2 x SMD Capacitors 100nF
  • SMD Resistor 270 Ohm
  • SMD red LED
  • SMD 662k Voltage Regulator เป็น 3.3v
  • 16 x Strip line thin Pins ขนาดเส้นผ่านศูนย์กลาง 0.6 มม.
  • SMD PCB แบบหน้าคู่ (Double faced)

รายการอุปกรณ์ (Main board):

  • สวิตช์เลื่อน on/off
  • 6 x 10k Ohm 1/4W Resistors 1%
  • 5k6 Ohm 1/4W Resistor
  • 22 Ohm 1/4W Resistor
  • 5k Ohm 1/4W Resistor 1%
  • 3 x 150 Ohm Resistor
  • 15 Ohm 1W Resistor
  • BC337 NPN Transistor
  • Axicom SMD 3.0v Relay
  • 1N4148 Diode
  • Ceramic Capacitor 100nF
  • Push Button แบบ normally open
  • Red LED 5mm
  • Blue LED 5mm
  • Yellow LED 5mm
  • 300mA/h 3.7v 1s Lipo Battery
  • กล่องพลาสติกขนาดเล็ก (ดูโปรเจกต์ 3D ด้านล่าง)
  • Metal Probe
  • Copper Rivets ขนาดเล็ก 0.6 ประมาณ 20 ตัว (สำหรับรูผ่าน Pass through)
  • PCB แบบหน้าคู่
  • 3 x Strip line Pins สำหรับสวิตช์
  • 2 x Strip line 90° Pins สำหรับ Battery
  • 2 x สกรู 3 มม. และตัวรอง
  • แคลมป์ 'Crocodile' สีดำ, สายไฟสีดำยาว 40 ซม. และหัวต่อ Mini USB male
ผังวงจรหลัก (Main Schematic Diagram)

ผังวงจร Microcontroller (Microcontroller Schematic Diagram)

เกี่ยวกับวงจร:

ได้รับแรงบันดาลใจจาก โปรเจกต์ ATtiny 1614 ของ John Bradnam ผมได้ซื้อ Microcontroller นี้มาลองทางเลือกใหม่และสนุกไปกับการผจญภัยครั้งใหม่ ผมจึงสร้าง MyTiny วงจรทดสอบแรกขึ้นมา ทุกอย่างทำงานได้ดีกับการเลือกใช้แหล่งจ่ายไฟ 3.3v จนถึงวันนี้ผมได้ทดสอบและตรวจสอบแล้วทั้ง: digitalRead, digitalWrite, analogRead, analogWrite ทั้ง PWM และ DAC; ผมได้ทำ Serial monitor ผ่าน Pins RX/TX <-> FTDI Serial interface และ Library SoftwareSerial; สุดท้ายผมได้เชื่อมต่อจอแสดงผล OLED 128x32 ผ่าน SDA/SCL และ Library Wire เจ๋งไปเลย!

สำหรับการโปรแกรม ATtiny โดยใช้ Arduino NANO และ IDE โปรดอ่านคำแนะนำของ Bradnam ที่ลิงก์ด้านบน

นอกจากนี้ ในวงจรนี้ผมตัดสินใจรวมวงจรที่สมบูรณ์ + โค้ด เพื่อชาร์จ Lipo Battery ด้วยเหตุนี้ Input พลังงาน USB ขนาด 5.0v จึงถูกควบคุมโดย Resistor ขนาด 15 Ohm 1W และ Relay เพื่อจำกัดกระแสชาร์จและตัดไฟเมื่อถึงขีดจำกัดการชาร์จ Battery ที่ 4.2v เมื่อ Battery คายประจุที่ 3.2v หากพิจารณาว่าวงจรใช้ไฟ 50mA ตัว Battery จะได้รับกระแสชาร์จที่เหลือ 70mA [(5.0-3.2)/15=120mA]; เมื่อใกล้สิ้นสุดการชาร์จที่ 4.2v Battery จะได้รับกระแสชาร์จเพียงไม่กี่ mA [(5.0-4.2)/15=53mA]; หลังจากนั้น Relay จะตัดการเชื่อมต่อพลังงานจาก USB และ Battery จะไม่ได้รับไฟเพิ่มและเริ่มคายประจุช้าๆ ตามการใช้งานปกติ ที่ขั้วต่อ Mini USB คุณสามารถเลือกเชื่อมต่อสายแคลมป์ 'crocodile' สีดำเพื่อวัดระดับลอจิก (เทียบกับ GND) หรือสาย USB เพื่อชาร์จ Battery (เช่น ต่อกับคอมพิวเตอร์) ก็ได้

Resistor 5.6k/1 และ 22/1, D1 และ T1 ทั้งหมดมีไว้เพื่อควบคุมการเปิด/ปิด REL-1; 10k/5 และ 10k/4 เป็นวงจรแบ่งแรงดัน (Voltage divider) "หารสอง" เพื่อวัดแรงดันไฟฟ้าจาก USB; 10k/1 และ 5k/1 เป็นวงจรแบ่งแรงดัน "หารสาม" เพื่อวัดแรงดันจาก Probe; 10k/2 และ 10k/3 เป็นวงจรแบ่งแรงดัน "หารสอง" เพื่อวัดแรงดัน Battery; 10k/6 มีไว้สำหรับ pull-up ปุ่มกด T/C; ส่วน Resistor 150 Ohm สามตัวและ LED สามสีทำให้วงจรหลักสมบูรณ์ โปรด พยายามเลือกคู่ของ Resistor ในวงจรแบ่งแรงดัน ให้มีค่าใกล้เคียงกันที่สุดเท่าที่จะเป็นไปได้ที่ความแม่นยำ 1% เพื่อให้ได้ค่า analogRead() ที่ถูกต้อง ในกรณีที่มีความคลาดเคลื่อน คุณสามารถแก้ไขค่าที่อ่านได้โดยการปรับแก้ด้วยค่าเปอร์เซ็นต์ในโค้ดตรงที่คำนวณแรงดันไฟฟ้า: 'VRaw=(n1 + ((n1 * 0.0) /100));' และ 'VBatt=(n1 + ((n1 * 0.0) /100));' (ตอนนี้ค่าเป็น 0.0 เนื่องจากยังไม่มีการปรับแก้)

MCU small board เป็น PCB แบบหน้าคู่พร้อมอุปกรณ์ SMD: ประกอบด้วย Microcontroller ATtiny, mini USB, Capacitor สองตัว, Resistor หนึ่งตัวสำหรับ LED และสุดท้ายคือ Voltage Regulator เป็น 3.3v

รูปภาพบางส่วน!

โค้ด (The Code):

หากคุณต้องการดูข้อมูลบน Serial monitor เพื่อการ Debug หรือจุดประสงค์อื่น คุณต้องยกเลิกคอมเมนต์ที่ Library "#include <SoftwareSerial.h>" และตั้งค่า "const boolean IsDEBUG = true;"; นอกจากนี้คุณต้องเชื่อมต่อตัวแปลง Serial-to-USB อย่าง FTDI (rx) เข้ากับพอร์ต (tx) ของ Microcontroller พร้อมกับโปรแกรมสื่อสาร Serial อย่าง CoolTerm โดยตั้งค่าไว้ที่ 9600 baud

ค่าสำหรับการชาร์จ:

หากคุณเปลี่ยน Battery ที่มีความจุต่างออกไป (A/h) คุณต้องแก้ไขพารามิเตอร์ในซอฟต์แวร์ให้สอดคล้องกัน (CBatt) รวมถึงหากเปลี่ยน Resistor 1W เพื่อให้ชาร์จเร็วขึ้นหรือช้าลง เช่น จาก 15 เป็น 12 หรือ 18 Ohm โปรดจำไว้ว่าต้องเปลี่ยนพารามิเตอร์ (VResis) ด้วย ผมชอบที่จะคำนวณบางอย่างระหว่างการชาร์จหรือระหว่างการใช้งานวัดปกติ ดังนี้:

  • CBatt = 0.3 (ความจุ Battery หน่วย A/h)
  • VResis = 15.5 (ค่า Resistor ที่ต่ออนุกรมระหว่าง PowerSource และ Battery โปรดวัดค่า Resistor ที่แน่นอนแล้วใส่ลงไป)
  • ICirc = 0.05 (ประมาณการกระแสไฟสูงสุดที่วงจรใช้โดยไม่มีการชาร์จ Battery)
  • VPower = 5.0 (แรงดัน PowerSource จาก USB) ไม่ใช่ค่าคงที่ จะเปลี่ยนตามค่าที่อ่านได้
  • VMinPower = 4.6 (แรงดันขั้นต่ำจาก USB เพื่อชาร์จ Battery)
  • VBmin = 3.2 (แรงดันไฟฟ้าต่ำสุดที่ยอมรับได้)
  • VBWmin = 3.4 (แรงดันไฟฟ้าทำงานขั้นต่ำ)
  • VMax = 4.2 (แรงดันไฟฟ้าสูงสุดที่ยอมรับได้)
  • VBchgd = 4.0 (แรงดัน Battery หรือมากกว่า เพื่อถือว่าชาร์จเต็มแล้วเมื่อเปิดเครื่อง)
  • ETFact = 1.5 (ปัจจัยเวลาชาร์จโดยประมาณ)
  • OvTiFact = 1.2 (ปัจจัยเวลาชาร์จเกิน นอกเหนือจาก ETFact)
  • VInitBatt = แรงดัน Battery เริ่มต้น หลังจากเปิดเครื่อง หรือเพิ่งชาร์จเสร็จ หรือเมื่อเริ่มชาร์จ
  • VBatt = แรงดัน Battery ปัจจุบัน
  • IBatt = (( VPower - VBatt ) / VResis) - ICirc (กระแสชาร์จ; 0.066A ที่ 0%, 0.034A ที่ 50%, 0.002A ที่ 100%)
  • IBattAvg = (( VPower - ((VMax+VBmin)/2) ) / VResis) - ICirc = 0.034A (กระแสชาร์จเฉลี่ย)
  • SoC = 100 - (( VMax - VBatt ) * 100) (สถานะการชาร์จเป็น %)
  • TFull = ( CBatt / IBattAvg ) * 60 = 529 นาที (เวลาชาร์จที่กระแสเฉลี่ยและ Battery อยู่ที่ VBmin)
  • TMaxChg = TFull * ( VMax - VInitBatt ) * ETFact * OvTiFact (เวลาชาร์จสูงสุดโดยประมาณเมื่อพิจารณาจากสถานะแรงดันเริ่มต้น หน่วยเป็นนาที)
  • TChg = ( TFull * (VMax - VBatt)) * ETFact (เวลาที่เหลือของการชาร์จโดยประมาณ หน่วยเป็นนาที)
  • ChTimeStart = เวลาที่ผ่านไปนับตั้งแต่เปิดเครื่อง หน่วยเป็นนาที
  • ChTimeEnd = เวลาสิ้นสุดการชาร์จนับตั้งแต่เปิดเครื่อง หน่วยเป็นนาที
  • ChTimeNow = เวลาปัจจุบันนับตั้งแต่เปิดเครื่อง หน่วยเป็นนาที

PCB (Printed Circuit Boards):

ผมใช้ PCB แบบหน้าคู่สองแผ่น ด้วยเหตุนั้นใน Board หลักจึงมีการใช้ Rivets หรือ Pins ประมาณ 20 ตัวเพื่อเชื่อมต่อวงจรทั้งหมด นอกจากนี้ยังมี จุดจัดตำแหน่ง (alignment spots) 5 จุด สำหรับเจาะรูก่อน ผมได้ออกแบบจุดจัดตำแหน่ง 5 จุดนี้ไว้บนหน้า PCB ทุกด้าน ในส่วนดาวน์โหลดคุณจะมีไฟล์ PCB ทั้งหมด ทั้งด้านอุปกรณ์และด้านบัดกรี แบบ Mirror สำหรับดาวน์โหลดและพิมพ์ด้วย เครื่องพิมพ์เลเซอร์ลงบนกระดาษ "สีเหลือง" หรือ "สีฟ้า" (magic sheets); ผมใช้แผ่นสีฟ้าแต่แผ่นสีเหลืองก็ใช้ได้ดีและราคาถูกกว่า ผมต้องบอกว่าแผ่นสีฟ้านั้นดีกว่า... เมื่อพิมพ์อย่าลืมปิดการตั้งค่าประหยัดโทนเนอร์ และใช้ความละเอียด 1200 dpi เพื่อให้ได้สีดำที่เข้มจริง กระบวนการ Toner transfer จากแผ่นวิเศษไปยัง PCB ทำได้โดยการใช้เตารีดร้อน... ในอินเทอร์เน็ตมีบทเรียนสอน วิธีทำ PCB ที่ดี อยู่มากมาย แต่จำจุดสำคัญเหล่านี้ไว้: ทำความสะอาดและขัดทองแดงเบาๆ ด้วยฟองน้ำล้างจานด้านที่หยาบ, รีดด้วยเตารีดเป็นเวลา 5 นาที (อย่ากดแรงเกินไป), แช่น้ำเย็นทันที (thermal shock), จัดตำแหน่งสองด้านให้ตรงกันผ่านรู 5 รู (ผมใช้ Pins 5 ตัวบนพื้นผิว LED สีขาวขนาดใหญ่เพื่อให้เห็นรูชัดเจน), ปิดเทปกาวใสป้องกันอีกด้านหนึ่งในระหว่างกระบวนการกัดแผ่นปริ้น การพิมพ์ลายอุปกรณ์ลงไปด้วยจะทำให้โปรเจกต์ดูเป็น "มืออาชีพ" และทำให้วางอุปกรณ์ได้ง่ายขึ้น :-)

PCB และจุดจัดตำแหน่ง 5 จุด

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

ในการเชื่อมต่อ Board เล็กนี้เข้ากับ Board หลัก ผมแนะนำให้ใช้ Strip line Pins แบบบางที่มีเส้นผ่านศูนย์กลาง 0.6 มม.

สถานะของ LED ทั้งสาม:

การทำงานปกติ (ไม่มี พลังงาน USB):

  • สีน้ำเงิน = ลอจิก 0
  • สีเหลือง = ลอจิก 'UNDEFINED'
  • สีเหลืองกะพริบเร็ว = คำเตือน Battery ต่ำ (โปรดชาร์จใหม่)
  • สีแดง = ลอจิก 1

การทำงานระหว่างชาร์จ (มี พลังงาน USB)

  • สีแดงกะพริบ = สถานะชาร์จ 0 - 20%
  • สีเหลืองและสีแดงกะพริบสลับกัน = สถานะชาร์จ 20 - 40%
  • สีเหลืองกะพริบ = สถานะชาร์จ 40 - 60%
  • สีน้ำเงินและสีเหลืองกะพริบสลับกัน = สถานะชาร์จ 60 - 80%
  • สีน้ำเงินกะพริบ = สถานะชาร์จ 80 - 90%
  • สีน้ำเงินกะพริบช้า = สถานะชาร์จ 90 - 100%
  • สีน้ำเงินกะพริบเร็ว = ชาร์จเต็มแล้ว
  • สีเหลืองกะพริบเร็ว = คำเตือนการชาร์จเกินเวลา (โปรดถอด USB ออก)

หมายเหตุและการปรับปรุง:

  • 25.03.2021: เพื่อให้โปรเจกต์สมบูรณ์ ผมได้เตรียมโมเดล 3D ไฟล์ .STL ไว้ที่ลิงก์นี้: https://grabcad.com/library/logic-probe-1 ซึ่งคุณสามารถดาวน์โหลดไฟล์สำหรับพิมพ์กล่องและฝาปิดสำหรับ Logic Probe ด้วยเครื่องพิมพ์ 3D ได้

ขอให้สนุกกับการวัด (Happy Probing)!

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: a-tiny-logic-probe-ttl-cmos-with-battery-charger-f5d0c7
299 บาท
PromptPay QR Code

Verified user reviews

รีวิวและความคิดเห็นจากผู้ใช้จริง

ล็อกอินด้วยบัญชีบนเว็บนี้แล้วให้คะแนนหรือคอมเมนต์ได้เลย ระบบเก็บผ่าน Supabase ไม่ต้องใช้ GitHub แล้ว

กำลังโหลดรีวิว...