สารบัญ:

ลดการใช้พลังงานแบตเตอรี่สำหรับ Digispark ATtiny85: 7 ขั้นตอน
ลดการใช้พลังงานแบตเตอรี่สำหรับ Digispark ATtiny85: 7 ขั้นตอน

วีดีโอ: ลดการใช้พลังงานแบตเตอรี่สำหรับ Digispark ATtiny85: 7 ขั้นตอน

วีดีโอ: ลดการใช้พลังงานแบตเตอรี่สำหรับ Digispark ATtiny85: 7 ขั้นตอน
วีดีโอ: Start using Digispark USB ATtiny85 Arduino board with blink and relay example | Robojax 2024, พฤศจิกายน
Anonim
ลดการใช้พลังงานแบตเตอรี่สำหรับ Digispark ATtiny85
ลดการใช้พลังงานแบตเตอรี่สำหรับ Digispark ATtiny85
ลดการใช้พลังงานแบตเตอรี่สำหรับ Digispark ATtiny85
ลดการใช้พลังงานแบตเตอรี่สำหรับ Digispark ATtiny85

หรือ: ใช้งาน Arduino ด้วยเซลล์แบบเหรียญ 2032 เป็นเวลา 2 ปี

การใช้บอร์ด Digispark Arduino ของคุณกับโปรแกรม Arduino จะดึงกระแส 20 mA ที่ 5 โวลต์

ด้วยพาวเวอร์แบงค์ขนาด 5 โวลต์ 2,000 mAh จะทำงานเพียง 4 วันเท่านั้น

ขั้นตอนที่ 1: การลดแรงดันไฟฟ้าโดยใช้แบตเตอรี่ LiPo

การลดแรงดันไฟจ่ายโดยใช้แบตเตอรี่ LiPo
การลดแรงดันไฟจ่ายโดยใช้แบตเตอรี่ LiPo

การใช้แบตเตอรี่ LiPo 3.7 โวลต์เมื่อจ่ายไฟให้บอร์ด Digispark ดึงกระแสไฟเพียง 13 mA

ด้วยแบตเตอรี่ขนาด 2,000 mAh ใช้งานได้นาน 6 วัน

ขั้นตอนที่ 2: ลดนาฬิกา CPU

หากคุณไม่ได้ใช้การเชื่อมต่อ USB คณิตศาสตร์หนัก ๆ หรือการสำรวจความคิดเห็นอย่างรวดเร็วในโปรแกรมของคุณ ให้ลดความเร็วสัญญาณนาฬิกา เช่น. IRMP ห้องสมุดรับอินฟราเรดโพลอย่างหนักทำงานได้ดีที่ 8 MHz

ที่ 1 MHz Digispark ของคุณดึง 6 mA ด้วยแบตเตอรี่ขนาด 2,000 mAh ใช้งานได้ 14 วัน

ขั้นตอนที่ 3: ถอด LED Power LED และ Power Regulator บนบอร์ด

ปิดใช้งาน LED เพาเวอร์โดยการทำลายลวดทองแดงที่เชื่อมต่อ LED เพาเวอร์กับไดโอดด้วยมีดหรือถอด / ปิดการใช้งานตัวต้านทาน 102

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

ที่ 1 MHz และ 3.8 โวลต์ Digispark ของคุณดึง 4.3 mA แล้ว ด้วยแบตเตอรี่ขนาด 2,000 mAh ใช้งานได้นาน 19 วัน

ขั้นตอนที่ 4: ถอด USB D- Pullup Resistor (ทำเครื่องหมาย 152) จาก 5 โวลต์ (VCC) และเชื่อมต่อกับ USB V+

การยกเลิกการเชื่อมต่อ USB D- Pullup Resistor (ทำเครื่องหมาย 152) จาก 5 โวลต์ (VCC) และเชื่อมต่อกับ USB V+
การยกเลิกการเชื่อมต่อ USB D- Pullup Resistor (ทำเครื่องหมาย 152) จาก 5 โวลต์ (VCC) และเชื่อมต่อกับ USB V+

การปรับเปลี่ยนนี้เข้ากันได้กับ micronucleus bootloader เวอร์ชัน all1.x หากคุณมี 2.x bootloader ใหม่บนบอร์ดของคุณแล้ว คุณต้องอัปเกรดเป็นเวอร์ชัน 2.5 โดยมี "activePullup" อยู่ในชื่อ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการติดตั้งแพ็คเกจบอร์ด digispark ใหม่และเบิร์น bootloader ด้วยเวอร์ชันที่แนะนำ (!!!ไม่ใช่ค่าเริ่มต้นหรือก้าวร้าว!!!)

ทำลายลวดทองแดงที่ด้านข้างของตัวต้านทานที่ชี้ไปที่ ATtiny ซึ่งจะเป็นการปิดใช้งานอินเทอร์เฟซ USB และในทางกลับกันสามารถตั้งโปรแกรมบอร์ด Digispark ผ่าน USB ได้ หากต้องการเปิดใช้งานอีกครั้ง แต่ยังคงประหยัดพลังงาน ให้เชื่อมต่อตัวต้านทาน (เครื่องหมาย 152) กับ USB V+ โดยตรง ซึ่งหาได้ง่ายที่ด้านนอกของไดโอด shottky ไดโอดและด้านที่ถูกต้องสามารถพบได้โดยใช้เครื่องทดสอบความต่อเนื่อง ด้านหนึ่งของไดโอดนี้เชื่อมต่อกับพิน 8 ของ ATtiny (VCC) และ Digispark 5V อีกด้านหนึ่งเชื่อมต่อกับ USB V+ ตอนนี้ตัวต้านทาน USB pullup จะเปิดใช้งานก็ต่อเมื่อบอร์ด Digispark เชื่อมต่อกับ USB เช่น ระหว่างการเขียนโปรแกรม

มีการบันทึก 2 ขั้นตอนหลังไว้ที่นี่ด้วย

ที่ 1 MHz และ 3.8 โวลต์ Digispark ของคุณดึง 3 mA แล้ว ด้วยแบตเตอรี่ขนาด 2,000 mAh ใช้งานได้ 28 วัน

ขั้นตอนที่ 5: ใช้โหมดสลีปแทนการหน่วงเวลา ()

ใช้โหมดสลีปแทนการหน่วงเวลา ()
ใช้โหมดสลีปแทนการหน่วงเวลา ()

แทนที่จะใช้การหน่วงเวลานาน คุณสามารถใช้ CPU sleep แบบประหยัดพลังงานได้ การนอนหลับสามารถอยู่ได้นานตั้งแต่ 15 มิลลิวินาทีถึง 8 วินาที โดยปรับขั้นได้ 15, 30, 60, 120, 250, 500 มิลลิวินาที และ 1, 2, 4, 8 วินาที

เนื่องจากเวลาเริ่มต้นจากโหมดสลีปคือ 65 มิลลิวินาทีด้วยการตั้งค่าฟิวส์ digispark จากโรงงาน เฉพาะการหน่วงเวลาที่มากกว่า 80 ms เท่านั้นที่สามารถแทนที่ด้วยโหมดสลีป

ระหว่างการนอนหลับ Digispark ของคุณดึง 27 µA ด้วยเซลล์ปุ่ม 200 mAh 2032 จะนอนหลับเป็นเวลา 10 เดือน

เพื่อความถูกต้อง Digispark อย่างน้อยต้องปลุกทุกๆ 8 วินาที ทำงานอย่างน้อย 65 มิลลิวินาทีและดึงกระแสไฟประมาณ 2 mA สิ่งนี้นำไปสู่กระแสเฉลี่ย 42 µA และ 6 เดือน ในสถานการณ์สมมตินี้ แทบไม่มีความแตกต่างเลยหากโปรแกรมของคุณทำงานเป็นเวลา 10 มิลลิวินาที (ทุกๆ 8 วินาที)

รหัสสำหรับการใช้โหมดสลีปคือ:

#include #include uint16_t ที่ระเหยได้ sNumberOfSleeps = 0; millis_timer_millis ระยะยาวที่ไม่ได้ลงนาม การตั้งค่าเป็นโมฆะ () { sleep_enable (); set_sleep_mode(SLEEP_MODE_PWR_DOWN); // โหมดสลีปที่ลึกที่สุด … } void loop(){ … sleepWithWatchdog(WDTO_250MS, true); // สลีปเป็นเวลา 250 ms … sleepWithWatchdog(WDTO_2S, true); // sleep for 2 s … } /* * aWatchdogPrescaler can be 0 (15 ms) to 3 (120 ms), 4 (250 ms) up to 9 (8000 ms) */ uint16_t computeSleepMillis(uint8_t aWatchdogPrescaler) { uint16_t tResultMillis = 8000; สำหรับ (uint8_t i = 0; ฉันบันทึก 200 uA // ใช้ wdt_enable() เนื่องจากมันจัดการว่าบิต WDP3 อยู่ในบิต 5 ของการลงทะเบียน WDTCR wdt_enable(aWatchdogPrescaler); WDTCR |= _BV(WDIE) | _BV(WDIF); // เปิดใช้งานการขัดจังหวะการเฝ้าระวัง + รีเซ็ตการตั้งค่าสถานะขัดจังหวะ -> ต้องการ ISR (WDT_vect) sei (); // เปิดใช้งานการขัดจังหวะ sleep_cpu (); // การขัดจังหวะการเฝ้าระวังจะปลุกเราให้ตื่นจากโหมดสลีป wdt_disable (); // เพราะการขัดจังหวะครั้งต่อไปจะไม่เป็นเช่นนั้น นำไปสู่การรีเซ็ต เนื่องจาก wdt_enable() ตั้งค่า WDE / Watchdog System Reset เปิดใช้งาน ADCSRA |= ADEN; /* * เนื่องจากนาฬิกาจับเวลาอาจถูกปิดใช้งาน ให้ปรับมิลลิวินาทีเฉพาะในกรณีที่ไม่ได้พักในโหมด IDLE (SM2…0 บิตคือ 000) */ ถ้า (aAdjustMillis && (MCUCR & ((_BV(SM1) | _BV(SM0)))) != 0) { millis_timer_millis += computeSleepMillis(aWatchdogPrescaler); } } /* * การขัดจังหวะนี้จะทำให้ cpu ตื่นจากโหมดสลีป */ ISR(WDT_vect) { sNumberOfSleeps++; }

ขั้นตอนที่ 6: แก้ไขฟิวส์

22 mA ของ 27 mA ถูกวาดโดย BOD (การตรวจจับ BrownOutDetection/undervoltage) สามารถปิดใช้งาน BOD ได้โดยการตั้งโปรแกรมฟิวส์ใหม่เท่านั้น ซึ่งสามารถทำได้ด้วยโปรแกรมเมอร์ ISP เท่านั้น การใช้สคริปต์นี้คุณสามารถลดกระแสไฟลงเหลือ 5.5 µA และลดเวลาเริ่มต้นจากโหมดสลีปเหลือ 4 มิลลิวินาที

5 จาก 5.5 µA ที่เหลือจะถูกวาดโดยตัวนับสุนัขเฝ้าบ้านที่ใช้งานอยู่ หากคุณสามารถใช้การรีเซ็ตภายนอกเพื่อปลุก การบริโภคในปัจจุบันอาจลดลงเหลือ 0.3 µA ตามที่ระบุไว้ในแผ่นข้อมูล

ถ้าคุณไม่สามารถเข้าถึงค่านี้ได้ สาเหตุอาจเป็นได้ว่ากระแสย้อนกลับของ schottky diode ระหว่าง VCC และ pullup สูงเกินไป โปรดทราบว่าตัวต้านทาน 12 MOhm ยังดึง 0.3 µA ที่ 3.7 โวลต์

ส่งผลให้มีการใช้กระแสไฟเฉลี่ย 9 µA (2.5 ปีกับเซลล์ปุ่ม 200 mAh 2032) หากคุณเช่น ประมวลผลข้อมูลทุกๆ 8 วินาทีเป็นเวลา 3 มิลลิวินาทีเช่นนี้

ขั้นตอนที่ 7: ข้อมูลเพิ่มเติม

ภาพวาดปัจจุบันของกระดาน Digispark

โครงการโดยใช้คำแนะนำนี้

แนะนำ: