อะไรคือ (หรือฉันจะใช้) ตัวเลือกการประหยัดพลังงานของ Arduino เพื่อยืดอายุแบตเตอรี่ได้อย่างไร


40

สำหรับโครงการที่ใช้พลังงานแสงอาทิตย์และแบตเตอรี่จำเป็นต้องลดการใช้พลังงาน

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

ฉันได้อ่านด้วยว่าคุณสามารถปิดการใช้งานอุปกรณ์ต่อพ่วงบางอย่างเพื่อประหยัดพลังงานได้อีก

นี่คือหน้าที่อธิบายสิ่งเหล่านี้: เทคนิคการประหยัดพลังงาน

คำถามของฉัน:

  • มีเทคนิคอื่นใดอีกบ้างในการช่วยประหยัดพลังงาน
  • มีห้องสมุดใดบ้างที่ใช้คุณสมบัติ AVR เหล่านี้ง่ายขึ้น?

คำตอบ:


33

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

ต้องบอกว่ามีเทคนิคหลายอย่างที่จะทำให้ Arduino ประหยัดพลังงาน ฉันจะแสดงรายการเล็กน้อยจากนั้นนำคุณไปยังหน้าที่อธิบายรายละเอียดทั้งหมด

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

    • SLEEP_MODE_IDLE: 15 mA
    • SLEEP_MODE_ADC: 6.5 mA
    • SLEEP_MODE_PWR_SAVE: 1.62 mA
    • SLEEP_MODE_EXT_STANDBY: 1.62 mA
    • SLEEP_MODE_STANDBY: 0.84 mA
    • SLEEP_MODE_PWR_DOWN: 0.36 mA
  2. ปิดใช้งานการตรวจจับบราวน์เอาต์ (วงจรที่ปิดคอนโทรลเลอร์เมื่อตรวจพบแรงดันไฟฟ้าต่ำ)

  3. ปิด ADC (การแปลงอนาล็อกเป็นดิจิตา)

  4. ใช้นาฬิกาภายใน

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

  • ตื่นขึ้นมาพร้อมกับสัญญาณ

  • ตื่นนอนด้วยนาฬิกาจับเวลา

นี่เป็นบทสรุปที่ฉันทำจาก -

บทความส่วนใหญ่นั้นใช้กับ ATmega328P แต่เทคนิคนี้ใช้กับคอนโทรลเลอร์ที่เข้ากันได้กับ Arduino ตัวอื่นเช่นกัน ดังที่ TheDoctor กล่าวไว้อย่างดีคุณจะต้องตรวจสอบชุดข้อมูลเพื่อให้แน่ใจว่าคอนโทรลเลอร์ของคุณรองรับเทคนิคเหล่านั้นและวิธีการทำอย่างแม่นยำยิ่งขึ้น


2
ขอขอบคุณสำหรับการอ้างอิงหน้าเว็บของฉันwww.gammon.com.au/power การใช้เทคนิคทั้งหมดที่กล่าวถึงควรช่วยให้คุณบริโภคได้ประมาณ 100 nA (0.1 µA) เทคนิคอื่น ๆ ที่อาจมีผลกระทบขนาดใหญ่คือทำงานที่ความถี่ต่ำและแรงดันไฟฟ้าต่ำ รวมถึงสิ่งที่ Anindo Ghosh พูดเกี่ยวกับการไม่ใช้ตัวควบคุมแรงดันไฟฟ้า ฉันสร้างเซ็นเซอร์อุณหภูมิและความชื้น - ใช้พลังงานจากแบตเตอรี่ซึ่งใช้เทคนิคเหล่านี้มากมายซึ่งยังคงแข็งแกร่งหลังจากใช้แบตเตอรี่เป็นเวลาสองปี
Nick Gammon

@NickGammon - เพื่อความเป็นธรรมฉันคิดว่าบทความที่ยอดเยี่ยมของคุณควรได้รับการอ้างอิงที่ดีกว่าดังนั้นฉันจึงแก้ไขคำตอบของฉันในระดับนั้น ขอบคุณสำหรับบทความที่ดี - ชัดเจนและสมบูรณ์! และยินดีต้อนรับสู่ Arduino.SE เป็นการดีที่มีคุณที่นี่
Ricardo

24

พลังที่ยิ่งใหญ่ที่สุดในบอร์ด Arduino คือตัวควบคุมแรงดันไฟฟ้าเชิงเส้น

  1. ตราบใดที่ไมโครคอนโทรลเลอร์บนกระดานไฟ LED หรืออุปกรณ์ต่อพ่วงอื่น ๆ วาดปัจจุบันเส้นอำนาจควบคุมของเสียเท่ากับxdifference between supply and board voltagecurrent drawn

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

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

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

  3. แม้ว่าจะมีขั้นตอนข้างต้นแล้วบอร์ด Arduino ก็ไม่ได้มีกลไกในการตั้งค่า LDO ให้อยู่ในโหมดพลังงานต่ำหาก LDO ที่เลือกรองรับสิ่งนี้ การออกแบบที่ใช้พลังงานอย่างมีประสิทธิภาพมักใช้พิน "โหมดพัก" บนตัวปรับแรงดันไฟฟ้าเพื่อประหยัดพลังงานเล็กน้อย - ไม่ใช่ตัวเลือกที่นี่

แม้จะมีโหมดและลูกเล่นการประหยัดพลังงานที่เป็นไปได้ทั้งหมดที่ใช้ในระดับไมโครคอนโทรลเลอร์ แต่ Arduino ก็ไม่ได้ถูกออกแบบมาให้เป็นอุปกรณ์ที่ใช้พลังงานต่ำพิเศษนอกกรอบ จากการทดลองกับแอพพลิเคชั่นที่ไม่น่าสนใจหลายอย่างฉันพบว่าสิ่งที่ดีที่สุดที่ทำได้จริงคือประหยัดพลังงานได้ 10% ถึง 30% ขึ้นอยู่กับแอพพลิเคชั่นเนื่องจากตัวควบคุมแรงดันไฟฟ้าและไฟแอลอีดี


2
จ่ายไฟให้บอร์ดที่มีแรงดันไฟต่ำที่สุดเท่าที่จะเพียงพอที่จะจ่ายพลังงานให้กับออนบอร์ดหรือจ่ายไฟ 5V ผ่านสาย USB ที่ถูกแฮ็ก
Penguin Penguin ไม่ระบุชื่อ

13

คุณสามารถอ่านแผ่นข้อมูล 200 หน้าแล้วยุ่งกับการเลื่อนบิตและการลงทะเบียนที่สับสนบางอย่าง แต่ฉันแนะนำไลบรารีนี้: http://playground.arduino.cc/Code/Enerlib

นอกจากนี้หากคุณใช้ Uno หรือชิปที่มี usb-to-serial คุณสามารถปิดใช้งานหรือลบมันได้


3
คุณควรอ่านข้อมูลแผ่นไม่ว่าสิ่งที่คุณกำลังทำ
Connor Wolf

9

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

  • บอร์ด Arduino ของแบตเตอรี่บล็อก 9V - 56 mA
  • ATTiny85 เปลือยที่ 8 MHz โดยไม่มีโหมด sleep และอื่น ๆ - 10 mA
  • ATTiny85 เปลือยบน 8 MHz ในโหมดสลีป - 0.03 mA

ข้อมูลเพิ่มเติมบางส่วน

ตั้งโปรแกรม ATtiny ด้วย Arduino

ไฟล์ ATTiny สำหรับ Arduino IDE

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