สารบัญ:

TinyLiDAR สำหรับ IoT: 3 ขั้นตอน
TinyLiDAR สำหรับ IoT: 3 ขั้นตอน

วีดีโอ: TinyLiDAR สำหรับ IoT: 3 ขั้นตอน

วีดีโอ: TinyLiDAR สำหรับ IoT: 3 ขั้นตอน
วีดีโอ: วิธีการใช้เซ็นเซอร์วัดระยะเลเซอร์ VL53L0X ตั้งแต่ 2 ตัวขึ้นไป 2024, กรกฎาคม
Anonim
TinyLiDAR สำหรับ IoT
TinyLiDAR สำหรับ IoT

หากคุณมองไปรอบๆ คุณจะสังเกตเห็นว่ามีการใช้อุปกรณ์อัจฉริยะจำนวนมากในชีวิตประจำวัน โดยทั่วไปจะใช้แบตเตอรี่และมักจะเชื่อมต่อกับอินเทอร์เน็ต (หรือที่เรียกว่า 'คลาวด์') อย่างใด ทั้งหมดนี้คือสิ่งที่เราเรียกว่าอุปกรณ์ 'IoT' และกำลังกลายเป็นเรื่องธรรมดาในโลกปัจจุบันอย่างรวดเร็ว

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

ดังนั้นคำแนะนำนี้เป็นข้อมูลเกี่ยวกับการเพิ่มประสิทธิภาพพลังงานใน tinyLiDAR

สรุป TL;DR

เรามีโหมดการวัด "เรียลไทม์" ใหม่ (ณ เฟิร์มแวร์ 1.4.0) เพื่อช่วยเพิ่มรันไทม์ของแบตเตอรี่ให้สูงสุดในอุปกรณ์ IoT

บีบน้ำผลไม้เพิ่มเติมจากแบตเตอรี่

โดยสังหรณ์ใจแล้ว เราสามารถเพิ่มรันไทม์ได้โดยเพียงแค่ลดการใช้พลังงานของอุปกรณ์ IoT โอเค ชัดเจน! แต่คุณจะคำนวณรันไทม์ที่คาดหวังได้อย่างมีประสิทธิภาพและเหมาะสมได้อย่างไร ลองหา…

ขั้นตอนที่ 1: พลังงานบริสุทธิ์

มีหลายวิธีในการทำเช่นนี้ แต่เราต้องการแยกย่อยเป็นพื้นฐานและแปลงทุกอย่างเป็นพลังงาน พลังงานไฟฟ้าวัดเป็นจูล (สัญลักษณ์ J) และตามคำจำกัดความ:

จูลคือพลังงานที่กระจายออกเป็นความร้อนเมื่อกระแสไฟฟ้าหนึ่งแอมป์ผ่านความต้านทานหนึ่งโอห์มเป็นระยะเวลาหนึ่งวินาที

เนื่องจากพลังงาน (E) ก็คือแรงดัน (V) x ประจุ (Q) เราจึงมี:

E = V x Q

Q คือกระแส (I) x เวลา (T):

Q = ฉัน x T

พลังงานในจูลสามารถแสดงเป็น:

E = V x I x T

โดยที่ V คือแรงดัน I คือกระแสในแอมป์และ T คือเวลาเป็นวินาที

สมมติว่าเรามีชุดแบตเตอรี่ที่ประกอบด้วยแบตเตอรี่อัลคาไลน์ขนาด AA (LR6) สี่ก้อนที่เชื่อมต่อเป็นชุด ซึ่งจะทำให้เรามีแรงดันเริ่มต้นรวม 4*1.5v = 6v อายุการใช้งานแบตเตอรี่อัลคาไลน์ AA อยู่ที่ประมาณ 1.0 โวลต์ ดังนั้นแรงดันไฟฟ้าเฉลี่ยจะอยู่ที่ประมาณ 1.25 โวลต์ ตามแผ่นข้อมูล mfr "ความจุที่ส่งมอบขึ้นอยู่กับโหลดที่ใช้ อุณหภูมิในการทำงาน และแรงดันไฟตัด" ดังนั้นเราจึงสามารถสันนิษฐานได้ประมาณ 2000mAhr หรือดีกว่าสำหรับแอปพลิเคชันที่มีการระบายน้ำต่ำ เช่น อุปกรณ์ IoT

ดังนั้นเราจึงสามารถคำนวณได้ว่าเรามีพลังงาน 4 เซลล์ x 1.25V ต่อเซลล์ x 2000mAhr * 3600 วินาที = 36000 J ของพลังงานที่มีอยู่จากก้อนแบตเตอรี่นี้ก่อนที่จะมีการเปลี่ยน

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

คำพูดเกี่ยวกับการปั่นจักรยาน

ไม่ ไม่ใช่แบบที่คุณขี่! มีแนวคิดทางเทคนิคสองสามข้อที่เรียกว่า "Power Cycling" และ "Sleep Cycling" ทั้งสองสามารถใช้เพื่อลดการใช้พลังงาน แต่มีความแตกต่างระหว่างทั้งสอง วิธีแรกเกี่ยวข้องกับการปิดอุปกรณ์ของคุณจนกว่าจะจำเป็น จากนั้นจึงเปิดเครื่องเพียงช่วงเวลาสั้นๆ เพื่อทำการวัด ฯลฯ แม้ว่าวิธีนี้จะน่าดึงดูดใจให้ใช้เนื่องจากกระแสไฟดับเป็นศูนย์ แต่ก็มีข้อเสียอยู่บ้างที่จะต้องใช้เวลานาน ระยะเวลาที่ไม่สำคัญในการสำรองข้อมูลและเผาผลาญพลังงานขณะทำเช่นนั้น

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

ขึ้นอยู่กับความถี่ที่คุณต้องตื่น

ขั้นตอนที่ 2: เรียกใช้ตัวเลข

เราต้องการค้นหาพลังงานทั้งหมด (E) ที่ปรับให้เป็นมาตรฐานเป็น 1 วินาทีสำหรับแต่ละฉากที่แสดงด้านล่าง

กรณี A: Tc = 1 วินาที; ทำการวัดระยะทางทุก ๆ วินาที Case B: Tc = 60sec; วัดระยะทางทุกนาที กรณี C: Tc = 3600 วินาที; วัดระยะทางทุกชั่วโมง

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

ภาพ
ภาพ

สำหรับ tinyLiDAR เวลาเริ่มต้นจะอยู่ที่ประมาณ 300ms หรือน้อยกว่า และในช่วงเวลานี้จะใช้เวลาเฉลี่ย 12.25mA ขณะทำงานจากแหล่งจ่ายไฟ 2.8v ที่ได้รับการควบคุม ดังนั้นจะใช้พลังงานประมาณ 10.3mJ สำหรับการเริ่มต้นแต่ละครั้ง

กระแสไฟสลีป/นิ่งสำหรับ tinyLiDAR คือ 3uA ที่ต่ำมาก ซึ่งต่ำกว่าอัตราการคายประจุออกเองรายเดือน 0.3% ของชุดแบตเตอรี่อัลคาไลน์มาก ดังนั้นเราจะตรวจสอบโดยใช้วิธี "รอบการนอนหลับ" เท่านั้นที่นี่

ทำไมไม่จ่ายไมโครและไปที่เซ็นเซอร์ VL53 โดยตรง?

คำตอบนี้ไม่ชัดเจนนัก ในช่วงแรกๆ ของการพัฒนาสมาร์ทโฟน เราได้เรียนรู้ว่าการรักษาโปรเซสเซอร์ความเร็วสูงที่กระหายพลังงานให้คงอยู่เพื่อเล่น mp3 เป็นวิธีที่แน่นอนในการลดอายุการใช้งานแบตเตอรี่ แม้แต่ในตอนนั้น เราก็พยายามทุกวิถีทางที่จะใช้ "ตัวประมวลผลแอปพลิเคชัน" ที่ใช้พลังงานต่ำสำหรับหน้าที่รอบนอกเช่นการเล่นเพลง ทุกวันนี้ไม่ได้แตกต่างกันมากนัก และในความเป็นจริง คุณอาจพูดได้ว่าอุปกรณ์ IoT สำคัญยิ่งกว่านั้นอีก เนื่องจากเราย่ออุปกรณ์ IoT เหล่านี้ทั้งหมดด้วยความจุของแบตเตอรี่ที่ลดลง ดังนั้นการใช้โปรเซสเซอร์แอปพลิเคชันที่ใช้พลังงานต่ำเป็นพิเศษสำหรับการควบคุมเซ็นเซอร์ VL53 และการจัดเตรียมข้อมูลที่พร้อมสำหรับการประมวลผลต่อไปจึงเป็นสินทรัพย์ที่ชัดเจนสำหรับแอปพลิเคชันที่ใช้พลังงานจากแบตเตอรี่

โหมดการวัด tinyLiDAR

อาจไม่ชัดเจนในคู่มือผู้ใช้ในขณะนี้ [แต่จะมีบางจุดในขณะที่เรากำลังอัปเดตคู่มือผู้ใช้ของเราอยู่เสมอ:)] - มีโหมดการวัดที่แตกต่างกัน 3 โหมดใน tinyLiDAR

โหมด MC

จากการเริ่มต้นของ tinyLiDAR เราหมกมุ่นอยู่กับการพยายามรับการวัดที่เร็วขึ้นจากเซ็นเซอร์ VL53 ToF ดังนั้นเราจึงปรับเฟิร์มแวร์ของเราให้ได้รับข้อมูลการสตรีมที่รวดเร็วและสม่ำเสมอที่สุด สิ่งนี้เกี่ยวข้องกับการแนะนำบัฟเฟอร์ การบัฟเฟอร์เล็กน้อยเป็นสิ่งที่ดีเพราะช่วยให้ตัวควบคุมโฮสต์ (เช่น Arduino) รับข้อมูลการวัดในแฟลชและไปยังสิ่งที่สำคัญกว่า ดังนั้นการบัฟเฟอร์จึงจำเป็นอย่างยิ่ง และด้วยเหตุนี้ เราจึงสามารถบรรลุอัตราการสตรีมที่เกิน 900Hz แม้ใน Arduino UNO ที่ค่อนข้างช้า ดังนั้น เวลาตอบสนองที่เร็วที่สุดจะอยู่ในโหมด MC ของ tinyLiDAR หรือ "ต่อเนื่อง"

BTW หากคุณมีโอกาส คุณควรเชื่อมต่อสายเคเบิลอนุกรมกับพินเอาต์พุต TTY บน tinyLiDAR แล้วคุณจะเห็นว่าโหมด MC นี้ทำอะไรได้บ้าง มันใช้การวัดอย่างรวดเร็วที่สุดเท่าที่จะทำได้ และในการทำเช่นนั้น มันจะเติมบัฟเฟอร์ I2C ด้วยข้อมูลล่าสุดที่แน่นอน น่าเสียดาย เนื่องจากมันทำงานด้วยความเร็วเต็มที่ มันจึงเผาผลาญพลังงานสูงสุดด้วย ดูด้านล่างสำหรับกราฟปัจจุบันเทียบกับเวลาของโหมด MC นี้

ภาพ
ภาพ

โหมด SS

โหมดถัดไปคือสิ่งที่เราเรียกว่า "SS" สำหรับโหมด "ขั้นตอนเดียว" โดยพื้นฐานแล้วจะเป็นโหมดประสิทธิภาพสูงแบบเดียวกันข้างต้น แต่อยู่ในสเต็ปปิ้งลูปเดียวแทน ดังนั้นคุณจึงได้รับการตอบสนองอย่างรวดเร็วจาก tinyLiDAR แต่ข้อมูลจะมาจากตัวอย่างก่อนหน้า ดังนั้นคุณจะต้องทำการวัดสองครั้งเพื่อรับข้อมูลล่าสุด ดูด้านล่างสำหรับกราฟปัจจุบันเทียบกับเวลาของโหมด SS นี้

ภาพ
ภาพ

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

ก้าวไปข้างหน้าสู่โลก IoT ที่ทุก ๆ มิลลิจูลมีค่า เรามีกระบวนทัศน์ใหม่

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

โหมด RT

อย่างมีความสุข ตอนนี้เราสามารถพูดได้ว่าเรามีวิธีแก้ไขสำหรับสถานการณ์นี้ ณ เฟิร์มแวร์ 1.4.0 เรียกว่าโหมด "RT" สำหรับการวัด "เรียลไทม์" และโดยทั่วไปจะใช้วิธีการทริกเกอร์ รอและอ่าน ในการใช้งาน คุณยังสามารถใช้คำสั่ง "D" เพื่อเริ่มการวัดได้ แต่สำหรับโหมด RT นี้ คุณต้องรอระยะเวลาที่เหมาะสมเพื่อให้การวัดเสร็จสิ้น จากนั้นจึงอ่านผลลัพธ์ tinyLiDAR ไปที่สถานะหยุดนิ่งต่ำสุดของ sub 3uA ระหว่างตัวอย่างโดยอัตโนมัติ จริงๆ แล้ว ยังคงใช้งานง่ายและประหยัดพลังงานมากกว่าเดิม เนื่องจากคุณต้องใช้การวัดเพียงครั้งเดียวแทนที่จะเป็นสองค่าเพื่อรับข้อมูลล่าสุด นั่นคือ ไม่มีบัฟเฟอร์

ดูกราฟปัจจุบันเทียบกับเวลาของโหมด RT ใหม่ด้านล่าง

ภาพ
ภาพ

ขั้นตอนที่ 3: การวัดจริง

การใช้โหมดต่อเนื่อง MC สำหรับการวัด IoT ที่ไม่บ่อยนักไม่สมเหตุสมผลเนื่องจากเราต้องการการวัดเพียงครั้งเดียว ดังนั้นเราจึงสามารถมุ่งความสนใจไปที่โหมด SS และ RT แทนได้ การใช้งาน tinyLiDAR จากแหล่งจ่าย +2.8v ที่มีการควบคุมทำให้เรามีการกระจายพลังงานต่ำที่สุด ดังนั้นในการใช้ค่าที่ตั้งไว้ล่วงหน้าที่มีความแม่นยำสูง (200ms) เราจึงวัดการใช้พลังงานจาก tinyLiDAR ดังต่อไปนี้:

โหมด SS/ขั้นตอนเดียว: 31.2 mJ เฉลี่ยในการวัด 2 ครั้ง

RT/โหมดเรียลไทม์: 15.5mJ เฉลี่ยในการวัด 1 ครั้ง

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

กรณี A: อ่านทุกวินาที (ใช้เวลา 2 การอ่านเพื่อรับข้อมูลล่าสุด)Tc = 1secTon = 210ms ต่อการอ่าน x 2 การอ่าน Toff = Tc - Ton = 580msIon(avg) = 26.5mA ต่อการอ่าน Ioff(avg) = 3uA กระแสไฟนิ่ง Vcc = แรงดันไฟฟ้าที่จ่าย 2.8V พลังงานที่ใช้งานโดยโหลดในจูลคือ Eon = Vcc x Ion x Ton = 2.8V x 26.5mA * 420ms = 31.164mJ พลังงานที่ไม่ใช้งานโดยโหลดใน Joules คือ Eoff = Vcc x Ioff x Toff = 2.8V x 3uA x 580ms = 4.872uJ Normalizing to TcE = (Eon + Eoff)/Tc = (31.164mJ + 4.872uJ)/1 = 31.169mJ หรือ 31.2mJ ต่อวินาที Runtime เป็นวินาทีจึงเป็นพลังงานทั้งหมดของแหล่ง/พลังงานที่ใช้ไป ซึ่งก็คือ 36000J / 31.2mJ = 1155000 วินาที = 320 ชั่วโมง = 13.3 วัน

ทำซ้ำการคำนวณเหล่านี้ เราสามารถค้นหารันไทม์สำหรับสถานการณ์อื่นๆ:

โหมด SS

กรณี A: 2 การอ่านต่อวินาที พลังงานที่ทำให้เป็นมาตรฐานคือ 31.2mJ ดังนั้นรันไทม์คือ 13.3 วัน

กรณี B: 2 การอ่านต่อนาที พลังงานที่ทำให้เป็นมาตรฐานคือ 528uJ ดังนั้นรันไทม์คือ 2.1 ปี

กรณี C: 2 การอ่านต่อชั่วโมง พลังงานที่ทำให้เป็นมาตรฐานคือ 17uJ รันไทม์คำนวณที่ >>10 ปี ดังนั้นการโหลดเนื่องจาก tinyLiDAR จึงไม่มีความสำคัญ ดังนั้นแบตเตอรี่จะถูกจำกัดด้วยอายุการเก็บรักษาเท่านั้น (เช่น ประมาณ 5 ปี)

โหมด RT

กรณี A: 1 การอ่านต่อวินาที พลังงานที่ทำให้เป็นมาตรฐานคือ 15.5mJ ดังนั้นรันไทม์คือ 26.8 วัน

กรณี B: 1 การอ่านต่อนาที พลังงานที่ทำให้เป็นมาตรฐานคือ 267uJ ดังนั้นรันไทม์คือ 4.3 ปี

กรณี C: 1 การอ่านต่อชั่วโมง พลังงานที่ทำให้เป็นมาตรฐานคือ 12.7uJ รันไทม์คำนวณที่ >>10 ปี ดังนั้นการโหลดเนื่องจาก tinyLiDAR จึงไม่มีความสำคัญ ดังนั้นแบตเตอรี่จะถูกจำกัดด้วยอายุการเก็บรักษาเท่านั้น (เช่น ประมาณ 5 ปี)

ดังนั้น โหมดเรียลไทม์ใหม่โดยใช้การวนรอบการนอนหลับจึงเป็นประโยชน์ในการขยายเวลารันไทม์ที่ผ่านมา 4 ปี หากทำการวัดหนึ่งครั้งทุกนาทีดังที่แสดงในกรณี B

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

ขอบคุณสำหรับการอ่านและคอยติดตามในขณะที่เราจะจัดเตรียมตัวอย่าง IoT ที่ใช้งานได้โดยใช้ tinyLiDAR สำหรับคำแนะนำต่อไปของเรา ไชโย!

แนะนำ: