- เทคนิคการประหยัดพลังงานสำหรับไมโครคอนโทรลเลอร์
- 1. โหมดสลีป
- 2. การปรับเปลี่ยนความถี่โปรเซสเซอร์แบบไดนามิก
- 3. โครงสร้างเฟิร์มแวร์ Interrupt Handler
- 4. เฟิร์มแวร์ที่เพิ่มประสิทธิภาพการใช้พลังงาน
- สรุป
เช่นเดียวกับก๊าซ (เบนซิน / ดีเซล) มีความสำคัญสำหรับจักรยานรถบรรทุกและรถยนต์ (ใช่ยกเว้น Teslas!) ในการเคลื่อนที่พลังงานไฟฟ้าสำหรับแอปพลิเคชันอิเล็กทรอนิกส์ส่วนใหญ่และอื่น ๆ ก็เช่นกันสำหรับการใช้งานระบบฝังตัวซึ่งโดยปกติจะเป็นแบตเตอรี่ (พลังงานที่ จำกัด) ขับเคลื่อนจากโทรศัพท์มือถือทั่วไปไปจนถึงอุปกรณ์สมาร์ทโฮมในหมู่คนอื่น ๆ
ลักษณะที่ จำกัด ของพลังงานแบตเตอรี่แสดงถึงความจำเป็นในการตรวจสอบให้แน่ใจว่าอัตราการใช้พลังงานของอุปกรณ์เหล่านี้ควรมีความสมเหตุสมผลเพื่อส่งเสริมให้มีการนำมาใช้และใช้งาน โดยเฉพาะอย่างยิ่งกับอุปกรณ์ที่ใช้ IoT ซึ่งคาดว่าอุปกรณ์จะมีอายุการใช้งานยาวนานถึง 8-10 ปีต่อการชาร์จหนึ่งครั้งโดยไม่ต้องเปลี่ยนแบตเตอรี่
แนวโน้มเหล่านี้ทำให้มีการใช้การพิจารณาพลังงานต่ำในการออกแบบระบบฝังตัวและในช่วงหลายปีที่ผ่านมานักออกแบบวิศวกรและผู้ผลิตในหลาย ๆ จุดได้พัฒนาวิธีการอันชาญฉลาดหลายประการในการจัดการพลังงานที่ใช้โดยผลิตภัณฑ์อย่างมีประสิทธิภาพเพื่อให้แน่ใจว่ามีอายุการใช้งานยาวนานขึ้น ชาร์จครั้งเดียว เทคนิคเหล่านี้จำนวนมากมุ่งเน้นไปที่ไมโครคอนโทรลเลอร์ซึ่งเป็นหัวใจหลักของอุปกรณ์ส่วนใหญ่ ในบทความวันนี้เราจะมาดูเทคนิคเหล่านี้และวิธีใช้เพื่อลดการใช้พลังงานในไมโครคอนโทรลเลอร์ แม้ว่าไมโครโปรเซสเซอร์จะใช้พลังงานน้อยกว่า แต่ก็สามารถนำไปใช้กับไมโครคอนโทรลเลอร์ได้ทุกที่ตามลิงค์เพื่อเรียนรู้ว่าไมโครโปรเซสเซอร์แตกต่างจากไมโครคอนโทรลเลอร์อย่างไร
เทคนิคการประหยัดพลังงานสำหรับไมโครคอนโทรลเลอร์
1. โหมดสลีป
โหมดสลีป (โดยทั่วไปเรียกว่าโหมดพลังงานต่ำ) เป็นเทคนิคที่ได้รับความนิยมมากที่สุดในการลดการใช้พลังงานในไมโครคอนโทรลเลอร์ พวกเขามักจะเกี่ยวข้องกับการปิดการใช้งานของวงจรบางอย่างหรือนาฬิกาที่ไดรฟ์อุปกรณ์ต่อพ่วงหนึ่งของไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์มักจะมีโหมดสลีปที่แตกต่างกันโดยขึ้นอยู่กับสถาปัตยกรรมและผู้ผลิตโดยแต่ละโหมดมีความสามารถในการปิดการใช้งานวงจรภายในหรืออุปกรณ์ต่อพ่วงมากกว่าเมื่อเทียบกับโหมดอื่น ๆ โหมดสลีปมักจะมีตั้งแต่โหมดหลับสนิทหรือโหมดปิดไปจนถึงโหมดไม่ได้ใช้งานและโหมดหลับ
บางส่วนของโหมดที่สามารถใช้ได้มีดังนี้ควรสังเกตว่าลักษณะและชื่อของโหมดเหล่านี้อาจแตกต่างกันไปในแต่ละผู้ผลิต
ผม. โหมด Idle / Sleep
โดยปกติแล้วจะเป็นโหมดพลังงานต่ำที่ง่ายที่สุดสำหรับนักออกแบบในการนำไปใช้โหมดนี้จะช่วยให้ไมโครคอนโทรลเลอร์เพื่อกลับไปดำเนินการเต็มรูปแบบในอัตราที่รวดเร็วมากดังนั้นจึงไม่ใช่โหมดที่ดีที่สุดหากรอบการใช้พลังงานของอุปกรณ์จำเป็นต้องให้ออกจากโหมดสลีปบ่อยมากเนื่องจากมีการดึงพลังงานจำนวนมากเมื่อไมโครคอนโทรลเลอร์ออกจากโหมดสลีป การกลับสู่โหมดใช้งานจากโหมดสแตนด์บายมักจะอิงตามการขัดจังหวะโหมดนี้ใช้งานบนไมโครคอนโทรลเลอร์โดยการปิดทรีนาฬิกาที่ขับเคลื่อนวงจร CPU ในขณะที่นาฬิกาความถี่สูงหลักของ MCU ยังคงทำงานอยู่. ด้วยเหตุนี้ซีพียูจึงสามารถกลับมาทำงานต่อได้ทันทีที่ทริกเกอร์ปลุกจะถูกเปิดใช้งาน Clock gating ถูกนำมาใช้อย่างกว้างขวางเพื่อตัดสัญญาณในโหมดพลังงานต่ำสำหรับไมโครคอนโทรลเลอร์และโหมดนี้จะส่งสัญญาณนาฬิกาผ่าน CPU ได้อย่างมีประสิทธิภาพ
ii. โหมดสแตนด์บาย
โหมดสแตนด์บายเป็นอีกโหมดหนึ่งที่ใช้พลังงานต่ำและง่ายสำหรับนักออกแบบในการนำไปใช้ มันคล้ายกับโหมดไม่ได้ใช้งาน / โหมดสลีปเนื่องจากยังเกี่ยวข้องกับการใช้ clock gating ข้าม CPUแต่ข้อแตกต่างที่สำคัญอย่างหนึ่งคืออนุญาตให้มีการเปลี่ยนแปลงเนื้อหาของ ram ซึ่งโดยปกติแล้วจะไม่เกิดขึ้นกับโหมด idle / sleep ในโหมดสแตนด์บายอุปกรณ์ต่อพ่วงความเร็วสูงเช่น DMA (การเข้าถึงหน่วยความจำโดยตรง) พอร์ตอนุกรมอุปกรณ์ต่อพ่วง ADC และ AES จะยังคงทำงานอยู่เพื่อให้แน่ใจว่าพร้อมใช้งานทันทีหลังจากที่ CPU ทำงาน สำหรับ MCU บางรุ่น RAM จะยังคงทำงานอยู่และ DMA สามารถเข้าถึงได้เพื่อให้สามารถจัดเก็บและรับข้อมูลได้โดยไม่มีการแทรกแซงของ CPU พลังงานที่ดึงออกมาในโหมดนี้อาจต่ำถึง 50uA / MHZ สำหรับไมโครคอนโทรลเลอร์ที่ใช้พลังงานต่ำ
สาม. โหมด Deep Sleep
โหมดหลับลึกโดยทั่วไปเกี่ยวข้องกับการปิดใช้งานนาฬิกาความถี่สูงและวงจรอื่น ๆ ภายในไมโครคอนโทรลเลอร์โดยเหลือเพียงวงจรนาฬิกาที่ใช้ขับเคลื่อนองค์ประกอบที่สำคัญเช่นตัวจับเวลาเฝ้าระวังการตรวจจับสีน้ำตาลและการเปิดวงจรรีเซ็ต MCU อื่น ๆ อาจเพิ่มองค์ประกอบอื่น ๆ เพื่อปรับปรุงประสิทธิภาพโดยรวม การใช้พลังงานในโหมดนี้อาจต่ำถึง 1uA ขึ้นอยู่กับ MCU เฉพาะ
iv. หยุด / ปิดโหมด
ไมโครคอนโทรลเลอร์บางตัวมีโหมดเพิ่มเติมนี้ที่แตกต่างกัน ในโหมดนี้ทั้งออสซิลเลเตอร์สูงและต่ำมักจะปิดใช้งานโดยเหลือเพียงการลงทะเบียนการกำหนดค่าบางอย่างและองค์ประกอบที่สำคัญอื่น ๆ
คุณสมบัติของโหมดสลีปทั้งหมดที่กล่าวมาข้างต้นแตกต่างจาก MCU ถึง MCU แต่หลักการทั่วไปคือ ยิ่งนอนหลับลึกจำนวนอุปกรณ์ต่อพ่วงที่ปิดใช้งานในระหว่างการนอนหลับก็จะยิ่งมากขึ้นและปริมาณพลังงานที่ใช้จะลดลงแม้ว่าโดยปกติจะหมายถึง ปริมาณพลังงานที่ใช้ในการสำรองระบบก็จะยิ่งสูงขึ้น ดังนั้นจึงขึ้นอยู่กับผู้ออกแบบที่จะพิจารณารูปแบบนี้และเลือก MCU ที่เหมาะสมสำหรับงานโดยไม่ทำให้เกิดการประนีประนอมที่ส่งผลต่อคุณสมบัติของระบบ
2. การปรับเปลี่ยนความถี่โปรเซสเซอร์แบบไดนามิก
นี่เป็นอีกหนึ่งเทคนิคที่ได้รับความนิยมอย่างกว้างขวางในการลดปริมาณพลังงานที่ไมโครคอนโทรลเลอร์ใช้อย่างมีประสิทธิภาพ เป็นเทคนิคที่เก่าแก่ที่สุดและซับซ้อนกว่าโหมดสลีปเล็กน้อย มันเกี่ยวข้องกับเฟิร์มแวร์ที่ขับเคลื่อนนาฬิกาโปรเซสเซอร์แบบไดนามิกสลับระหว่างความถี่สูงและต่ำเนื่องจากความสัมพันธ์ระหว่างความถี่ของโปรเซสเซอร์และปริมาณพลังงานที่ใช้เป็นเชิงเส้น (ดังแสดงด้านล่าง)
การใช้เทคนิคนี้มักจะเป็นไปตามรูปแบบนี้ เมื่อระบบอยู่ในสถานะว่างเฟิร์มแวร์จะตั้งค่าความถี่สัญญาณนาฬิกาเป็นความเร็วต่ำเพื่อให้อุปกรณ์ประหยัดพลังงานและเมื่อระบบต้องทำการคำนวณอย่างหนักความเร็วสัญญาณนาฬิกาจะถูกนำกลับมา
มีสถานการณ์ต่อต้านในการปรับเปลี่ยนความถี่ของโปรเซสเซอร์ซึ่งมักเป็นผลมาจากเฟิร์มแวร์ที่พัฒนาไม่ดี สถานการณ์ดังกล่าวเกิดขึ้นเมื่อความถี่สัญญาณนาฬิกาถูกเก็บไว้ที่ต่ำในขณะที่ระบบกำลังทำการคำนวณอย่างหนัก ความถี่ต่ำในสถานการณ์นี้หมายความว่าระบบจะใช้เวลามากกว่าที่จำเป็นในการทำงานที่ตั้งไว้และจะใช้พลังงานในปริมาณที่เท่ากันโดยนักออกแบบพยายามประหยัด ดังนั้นจึงต้องใช้ความระมัดระวังเป็นพิเศษเมื่อใช้เทคนิคนี้ในการใช้งานที่สำคัญเวลา
3. โครงสร้างเฟิร์มแวร์ Interrupt Handler
นี้เป็นหนึ่งในเทคนิคที่มากที่สุดของการจัดการพลังงานในไมโครคอนโทรลเลอร์เป็นไปได้โดยไมโครคอนโทรลเลอร์เพียงไม่กี่ตัวเช่นคอร์ ARM cortex-M ซึ่งมีบิตสลีปเมื่อออกในทะเบียน SCR บิตนี้ช่วยให้ไมโครคอนโทรลเลอร์มีความสามารถในการนอนหลับหลังจากรันกิจวัตรการขัดจังหวะ แม้ว่าจะมีการ จำกัด จำนวนแอปพลิเคชันที่จะทำงานได้อย่างราบรื่นในลักษณะนี้ แต่นี่อาจเป็นเทคนิคที่มีประโยชน์มากสำหรับเซ็นเซอร์ภาคสนามและแอปพลิเคชันอื่น ๆ ที่ใช้การรวบรวมข้อมูลในระยะยาว
ส่วนใหญ่ของเทคนิคอื่น ๆ ในความคิดของตัวเองจะมีรูปแบบของคนที่กล่าวแล้วข้างต้น ตัวอย่างเช่นเทคนิคการตอกบัตรอุปกรณ์ต่อพ่วงแบบเลือกโดยพื้นฐานแล้วเป็นรูปแบบหนึ่งของโหมดสลีปที่ผู้ออกแบบเลือกอุปกรณ์ต่อพ่วงเพื่อเปิดหรือปิด เทคนิคนี้ต้องมีความรู้อย่างลึกซึ้งเกี่ยวกับไมโครคอนโทรลเลอร์เป้าหมายและอาจไม่เหมาะสำหรับมือใหม่
4. เฟิร์มแวร์ที่เพิ่มประสิทธิภาพการใช้พลังงาน
หนึ่งในวิธีที่ดีที่สุดในการลดปริมาณของพลังงานที่บริโภคโดยไมโครคอนโทรลเลอร์โดยการเขียนเฟิร์มที่มีประสิทธิภาพและดีที่สุดสิ่งนี้ส่งผลโดยตรงต่อปริมาณงานที่ CPU ทำต่อครั้งและสิ่งนี้โดยส่วนขยายก่อให้เกิดปริมาณพลังงานที่ไมโครคอนโทรลเลอร์ใช้ ควรใช้ความพยายามในขณะที่เขียนเฟิร์มแวร์เพื่อให้แน่ใจว่าขนาดและรอบของโค้ดจะลดลงเนื่องจากคำสั่งที่ไม่จำเป็นทุกคำสั่งดำเนินการเป็นพลังงานส่วนหนึ่งที่เก็บไว้ในแบตเตอรี่ที่สูญเปล่า ด้านล่างนี้เป็นเคล็ดลับทั่วไปที่ใช้ C สำหรับการพัฒนาเฟิร์มแวร์ที่เหมาะสม
- ใช้คลาส“ Static Const” ให้มากที่สุดเพื่อป้องกันการคัดลอกอาร์เรย์โครงสร้างและอื่น ๆ ที่ใช้พลังงานในรันไทม์
- ใช้พอยน์เตอร์ อาจเป็นส่วนที่ยากที่สุดของภาษา C ในการทำความเข้าใจสำหรับผู้เริ่มต้น แต่เป็นสิ่งที่ดีที่สุดสำหรับการเข้าถึงโครงสร้างและสหภาพแรงงานอย่างมีประสิทธิภาพ
- หลีกเลี่ยง Modulo!
- ตัวแปรภายในมากกว่าตัวแปรส่วนกลางหากเป็นไปได้ ตัวแปรภายในมีอยู่ใน CPU ในขณะที่ตัวแปรส่วนกลางถูกเก็บไว้ใน RAM CPU จะเข้าถึงตัวแปรภายในเครื่องได้เร็วขึ้น
- ประเภทข้อมูลที่ไม่ได้ลงชื่อเป็นเพื่อนที่ดีที่สุดของคุณหากเป็นไปได้
- ใช้ "การนับถอยหลัง" สำหรับการวนซ้ำหากทำได้
- แทนที่จะใช้ช่องบิตสำหรับจำนวนเต็มที่ไม่ได้ลงชื่อให้ใช้มาสก์บิต
แนวทางในการลดปริมาณพลังงานที่ไมโครคอนโทรลเลอร์ใช้ไม่ได้ จำกัด เฉพาะวิธีการที่ใช้ซอฟต์แวร์ดังกล่าวข้างต้นมีวิธีการที่ใช้ฮาร์ดแวร์เช่นเทคนิคการควบคุมแรงดันไฟฟ้าหลักแต่เพื่อให้ความยาวของโพสต์นี้อยู่ในช่วงที่เหมาะสมเราจะบันทึก สำหรับวันอื่น
สรุป
การใช้ผลิตภัณฑ์ที่ใช้พลังงานต่ำเริ่มต้นจากการเลือกใช้ไมโครคอนโทรลเลอร์และอาจทำให้เกิดความสับสนเมื่อคุณพยายามเลือกตัวเลือกต่างๆที่มีอยู่ในตลาด ในขณะที่สแกนผ่านแผ่นข้อมูลอาจทำงานได้ดีในการรับประสิทธิภาพทั่วไปของ MCU แต่สำหรับแอปพลิเคชันที่มีความสำคัญด้านพลังงานอาจเป็นวิธีการที่มีค่าใช้จ่ายสูงมาก เพื่อให้เข้าใจถึงลักษณะพลังที่แท้จริงของไมโครคอนโทรลเลอร์นักพัฒนาจะต้องคำนึงถึงข้อกำหนดไฟฟ้าและฟังก์ชันการทำงานที่ใช้พลังงานต่ำที่สามารถใช้ได้กับไมโครคอนโทรลเลอร์นักออกแบบไม่ควรกังวลเกี่ยวกับการใช้พลังงานในปัจจุบันโดยโหมดพลังงานแต่ละโหมดที่โฆษณาโดยแผ่นข้อมูลของ MCU แต่ควรพิจารณาเวลาปลุกแหล่งที่มาของการปลุกและอุปกรณ์ต่อพ่วง ที่พร้อมใช้งานระหว่างโหมดพลังงานต่ำ
สิ่งสำคัญคือต้องตรวจสอบคุณสมบัติของไมโครคอนโทรลเลอร์ที่คุณวางแผนจะใช้เพื่อตรวจสอบตัวเลือกที่คุณมีสำหรับการใช้พลังงานต่ำ ไมโครคอนโทรลเลอร์เป็นหนึ่งในผู้ได้รับประโยชน์สูงสุดจากความก้าวหน้าของเทคโนโลยีและขณะนี้มีไมโครคอนโทรลเลอร์ที่ใช้พลังงานต่ำเป็นพิเศษหลายตัวซึ่งทำให้คุณมั่นใจได้ว่าคุณมีทรัพยากรที่จะช่วยให้คุณอยู่ภายใต้งบประมาณด้านพลังงานของคุณ ในจำนวนนี้ยังมีเครื่องมือซอฟต์แวร์วิเคราะห์กำลังหลายอย่างที่คุณสามารถใช้ประโยชน์ได้เพื่อการออกแบบที่มีประสิทธิภาพ รายการโปรดส่วนตัวคือไมโครคอนโทรลเลอร์ MSP430 จาก Texas Instrument