วิธีการเปลี่ยนพลังงานของไมโครคอนโทรลเลอร์ด้วยปุ่ม?


13

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

ADDED ฉันรู้เคล็ดลับต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ที่นี่เมื่อเริ่มต้นไมโครคอนโทรลเลอร์ตั้งค่า PB3 ให้สูงและถือพลังงานสำหรับอุปกรณ์ แต่นี่ไม่ใช่วิธีแก้ปัญหาของฉันเพราะฉันต้องปิดอุปกรณ์ด้วยการกด S1

ADDED ฉันสามารถแยก VT2 ออกจากวงจร (เช่นฐานขับไมโครคอนโทรลเลอร์ของ VT1 โดยตรง) ได้หรือไม่?


ปุ่มกดล็อคจะเป็นวิธีแก้ปัญหาที่ยอมรับได้หรือไม่?
AndrejaKo

@AndrejaKo: ไม่

โชคดีนะ! วิธีหนึ่งที่ฉันเห็นคือการชาร์จตัวเก็บประจุในขณะที่กดปุ่มกดแล้วพยายามเปิดใช้งานบางอย่างเช่น MOSFET แต่จะขึ้นอยู่กับเวลาที่กดปุ่ม
AndrejaKo

@tcrosley ไม่ใช่เรื่องซ้ำซ้อนคำถามที่คุณอ้างถึงไม่จำเป็นต้องมีการเปิด / ปิดเครื่องเมื่อกดปุ่มมันเพียง แต่ต้องเปิดใช้งานเพื่อให้ไมโครคอนโทรลเลอร์ปิดตัวเอง
Bruno Ferreira

@BrunoFerreira ตกลงเห็นด้วย - ฉันลบความคิดเห็นก่อนหน้านี้ ฉันเพิ่มบรรทัดลงในไมโครในคำตอบนี้แต่ฉันไม่ได้รวมซีเนอร์เหมือนที่คุณทำในคำตอบของคุณซึ่งเป็นการเพิ่มที่ดี
tcrosley

คำตอบ:


6

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

ซีเนอร์ไดโอดป้องกันอินพุต PIC จากแรงดันไฟฟ้าที่มาจากแหล่งจ่ายไฟ


บทบาทของไดโอดคืออะไร?
m.Alin

@ m.Alin ไดโอดที่นี่ช่วยให้ไมโครคอนโทรลเลอร์ตรวจจับเมื่อมีการปล่อยสวิตช์ หากเราไม่มีไดโอดเมื่อ VT1 เริ่มดำเนินการเราจะมีระดับสูงในอินพุตไมโครคอนโทรลเลอร์
Bruno Ferreira

8

คุณต้องการเป็นอย่างไร? ไมโครคอนโทรลเลอร์ที่ทันสมัยจำนวนมากมีการนอนหลับที่ต่ำกว่าการคายประจุของแบตเตอรี่ขนาดเล็ก คุณสามารถใช้ปุ่มกดเพียงแค่ขับเข็ม I / O ของไมโครซึ่งจะสลับระหว่างโหมดสลีปและโหมดแอคทีฟแต่ละปุ่ม การ debouncing บางอย่างจะต้องใช้ แต่ก็สามารถทำได้ในเฟิร์มแวร์ด้วย

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


1
ตกลงการออกแบบของฉันจำนวนมากในปัจจุบันไม่ได้มีปุ่มเปิด / ปิดพวกเขาเพิ่งตื่นขึ้นมาเมื่อกดปุ่ม
Oli Glaser

อุปกรณ์ฉันมีจอแอลซีดีและอุปกรณ์ต่อพ่วงอื่น ๆ ดังนั้นฉันต้องปิดไฟด้วยเช่นกัน

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

แม้ว่าไมโครคอนโทรลเลอร์จำนวนมากจะมีกระแสการนอนหลับที่ต่ำมาก แต่ผู้ควบคุมคุณภาพก็มีราคาสูงกว่าคนที่มีปัญหา ตัวควบคุมที่ใช้ 250uA พิเศษ (หรือ 2.5mA) อาจใช้ได้ถ้ามันต้องใช้งานเมื่ออุปกรณ์ใช้งานอยู่เท่านั้น แต่จะไม่สามารถยอมรับได้โดยสมบูรณ์หากต้องใช้งานแม้ว่าอุปกรณ์จะถูก "ปิด" . ผลิตภัณฑ์หนึ่งที่ฉันออกแบบมาหลายปีไม่ได้ใช้ตัวควบคุม - แทนมันใช้ทรานซิสเตอร์สามตัวและตัวต้านทานประมาณเจ็ดตัวเพื่อให้ตัวจ่ายไฟ 5 โวลต์เล็กน้อยพร้อมการปิดระบบที่ควบคุมด้วยโปรเซสเซอร์ โดย "ควบคุม" มาตรฐานความถูกต้องของแรงดันไฟฟ้าที่เป็นจริง crummy ...
SuperCat

1
@OlinLathrop: สอง 2N3094 และ 2N3906 มีราคาน้อยกว่า $ 0.07 แม้ว่าหนึ่งตัวเลขสิบชิ้นส่วนจะเสียค่าใช้จ่ายต่อการชุมนุม แต่ก็ยังประหยัดค่าเล็กน้อยต่อหน่วย - หากผลิต 100,000 หน่วยนั่นคือ $ 10,000 หากผลิตภัณฑ์ไม่ได้มีปริมาตรประเภทนั้นมันอาจไม่คุ้มค่าที่จะพยายามบีบให้ได้ $ 0.10 ถ้าผู้ควบคุมกฎของวันนี้พร้อมใช้งานเมื่อฉันออกแบบสิ่งนี้และถ้าฉันไม่รู้ล่วงหน้าว่ามันจะขายได้ดีแค่ไหนฉันอาจจะใช้ตัวควบคุมพร้อมการควบคุมสแตนด์บาย แต่วงจรของฉันทำงานและราคาถูกกว่าอย่างอื่น ไม่มีเหตุผลที่จะไม่ใช้มันต่อไป
supercat

3

แก้ไข - ในการสะท้อนวงจรด้านล่าง (ซึ่งฉันจะปล่อยไว้เพื่อการอ้างอิง) น่าจะเหมาะที่สุดสำหรับใช้ในวงจรที่ไม่มีไมโคร ดังที่ได้กล่าวไว้ในคำตอบอื่น ๆ ยกเว้นว่าคุณไม่สามารถจ่ายได้ไม่กี่ uA จริงๆมันไม่สมเหตุสมผลที่จะไม่ใช้ไมโครเพื่อควบคุมการสลับพลังงานเนื่องจากมันใช้ส่วนประกอบน้อยลงและสามารถควบคุมได้อย่างถูกต้อง
เวอร์ชันที่ง่ายที่สุดสามารถเป็นอินพุต IOC (ขัดจังหวะเมื่อมีการเปลี่ยนแปลง) ด้วยการดึงขึ้นพร้อมปุ่มลงดิน ไมโครมีการใช้พลังงานตลอดเวลาและควบคุม MOSFET P-channel (ด้วยการดึงจากเกตไปยังแหล่งกำเนิด) สำหรับส่วนที่เหลือของวงจร เมื่อเข้าสู่โหมดสลีปมันจะทำให้ประตูเกทลอยปิดวงจร

วงจรอ้างอิง:

ToggleSwitch

ในตอนแรก P-MOSFET ปิดอยู่ดังนั้นจึงไม่มีกระแสฐานที่ Q2 ซึ่งปิดเช่นกัน Q1 ถูกปิดดังนั้น Q1c อยู่ที่ 5V วงจรคงที่

เมื่อ S1 (ไม่สนใจปุ่ม + และ - โหนดจะมีเพื่อวัตถุประสงค์ในการกระตุ้น SPICE) กด 5V ที่ Q1c เชื่อมต่อกับฐาน Q2 แล้วเปิดเครื่อง สิ่งนี้จะดึงประตู P-MOSFET ลงสู่พื้นเปิดมันเช่นกัน
ตอนนี้ R4 เห็น 5V และเมื่อปล่อย S1 จะให้ฐาน Q2s กับกระแสที่จำเป็นเพื่อให้เปิดอยู่ (และดังนั้น MOSFET ก็เปิดเช่นกัน) Q1 ก็เปิดเช่นกันเมื่อกระแสผ่าน R2 คิดค่า C1 ถึง ~ 600mV ณ จุด Q1c คือ <200mV (เช่น Q1 ถูกเปิดใช้งาน)
ตอนนี้วงจรคงที่อีกครั้ง

เมื่อกด S1 อีกครั้ง Q1 จะทำให้กระแสจาก R4 (ซึ่งทำให้ Q2 อยู่) จะปิด Q2 R1 ดึงฐาน MOSFET สูงสุด 5V และปิดสวิตช์อีกครั้ง

นี่คือการจำลอง (V (push) สูงหมายถึงเมื่อกดปุ่ม):

ToggleSwitchSim

นอกจากนี้เรายังสามารถดูได้หลังจากปิดหัวปัจจุบันถึงศูนย์ (เมื่อปล่อย C1 และปิด Q1) ดังนั้นวงจรไม่มีการใช้พลังงานในสถานะปิด (เคอร์เซอร์สำหรับ I (V1) อยู่ที่ 19.86s และวัด 329nA):

ToggleSwitchPower

ความคิดวงจรเดิมไม่ใช่ของเรามันมาจากเดฟโจนส์มากกว่าที่EEVblog


1

ดังที่ Bruno Ferreira แนะนำวิธีที่ง่ายที่สุดในการอนุญาตให้ปุ่มทำหน้าที่เป็นสวิตช์ "ปิด" คือการเปลี่ยนวงจรของคุณเพื่อให้ตัวประมวลผลรู้ว่าเมื่อใดที่กดปุ่ม ฉันคิดว่าเราสามารถใช้ตัวต้านทานเพื่อป้องกันอินพุตของตัวประมวลผลจากแรงดันเกิน VDD โดยไม่ต้องใช้ Zener สำหรับสิ่งนั้น

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

ลักษณะที่สำคัญของวงจรซึ่งอาจทำให้เกิดปัญหาหากละเลยคือมันถูกออกแบบมาเพื่อให้โปรเซสเซอร์ไม่สามารถเปิดวงจรได้เว้นแต่ว่า VDD นั้นจะมีอย่างน้อย 3.6 โวลต์; ฉันยังได้จำลองการจำลองเพื่อให้โปรเซสเซอร์พยายามเปิดเอาต์พุตเมื่อใดก็ตามที่ VDD ต่ำกว่า 3.5 โวลต์ ฉันได้เห็นการออกแบบมากมายที่คิดว่าโปรเซสเซอร์จะไม่พยายามส่งออกลอจิกสูงเมื่อพลังของพวกเขาหายไป สมมติฐานนั้นอาจใช้งานได้ดีกับชิปบางชุดที่ใช้ในการทดสอบ แต่จากนั้นล้มเหลวกับแบตช์อื่นที่ใช้ในการผลิตเต็มรูปแบบ พฤติกรรมของโปรเซสเซอร์ส่วนใหญ่ไม่ได้ระบุไว้ในสภาวะที่แรงดันต่ำ การออกแบบที่ดีควรได้รับการออกแบบทางวิศวกรรมเพื่อให้พฤติกรรมของโปรเซสเซอร์ในระหว่างเงื่อนไขดังกล่าวไม่สำคัญ (หมายเหตุเล็กน้อย: มันอาจจะปลอดภัยที่จะสมมติว่าโปรเซสเซอร์ซึ่งไม่ได้เป็น ' ไม่ได้ออกแบบมาอย่างชัดเจนเพื่อสร้างแรงดันไฟฟ้าที่สูงกว่าแรงดันไฟฟ้าที่ใช้ใด ๆ จะไม่เริ่มทำเช่นนั้นอย่างน่าอัศจรรย์; ฉันไม่คิดว่ามีข้อมูลจำเพาะที่ชัดเจนสำหรับเรื่องนี้ แต่ฉันคิดว่าในกรณีส่วนใหญ่อาจอนุมานได้อย่างปลอดภัย)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.