ปลอดภัยหรือไม่ที่จะลบพลังงาน Arduino ทันที? [ปิด]


12

หากฉันมี Arduino ฉันสามารถเปิดและปิดเครื่องได้ทันทีโดยไม่ทำให้เสียหายหรือไม่? หากฉันออกแบบผลิตภัณฑ์ที่มีสวิตช์เปิด / ปิดฉันต้องรวมการหน่วงเวลาก่อนที่จะปิดเครื่องเพื่อให้ไมโครคอนโทรลเลอร์สามารถปิดการทำงานบางอย่างได้หรือไม่? หรือมันโอเคที่จะเชื่อมต่อสวิตช์ SPST กับสายไฟของ Arduino?

(โดยการออกแบบผลิตภัณฑ์ฉันหมายถึงการใช้ ATmega กับรหัส Arduino อย่างอิสระบนบอร์ดที่กำหนดเองพร้อมส่วนประกอบอื่น ๆ )

แก้ไข: โดย Arduino ฉันแค่หมายถึงกระพริบ bootloader Arduino เพื่อให้ฉันสามารถเขียนโปรแกรมใน Arduino แทน AVR ชิปที่ฉันต้องการใช้คือ Atmel atmega328P ฉันไม่ต้องการการใช้งาน EEPROM ใด ๆ


3
โปรดทราบว่า "Arduino" เป็นชื่อแบรนด์ดังนั้นจึงได้รับทุน 'A' เมืองหลวงสำคัญ
ทรานซิสเตอร์

3
บางทีถ้ามันเป็น "Arduino" จริง ๆ แต่คำถามนี้เกี่ยวกับ ATmega บนบอร์ดที่กำหนดเองซึ่งจะเป็น "arduino" มากกว่า สำหรับหัวข้อจริงนอกเหนือจาก ATmega หนึ่งควรพิจารณาองค์ประกอบอื่น ๆ ที่อาจมีสถานะโดยเฉพาะอย่างยิ่งความทรงจำภายนอก - ตัวอย่างเช่นถ้ามีการ์ด SD ที่ต้องการความคิดและความกังวลจำนวนมาก ในที่สุดอุปกรณ์ไฟฟ้าบางตัวก็ทำสิ่งที่น่ารังเกียจเมื่อเปิด / ปิด
Chris Stratton

1
เราสามารถสมมติว่าคุณไม่ได้ใช้การ์ด SD ด้วยหรือไม่
UKMonkey

มันเป็นผลิตภัณฑ์ของคุณ คุณจำเป็นต้องบันทึกบางอย่างหากไฟดับหรือไม่? คำตอบสำหรับคำถามนั้นตอบคำถามของคุณ
StainlessSteelRat

คำตอบ:


18

ใช่มันปลอดภัยที่จะปิด Arduino ในทันที

ปลอดภัยเป็นส่วนใหญ่

โปรเซสเซอร์ที่ใช้ใน Arduinos มีหน่วยความจำสามประเภท:

  1. Flash - ที่เก็บโปรแกรมของคุณ โปรแกรมของคุณสามารถอ่านเนื้อหาจากที่นี่ แต่ไม่สามารถเขียนได้

  2. RAM - ตำแหน่งที่เก็บตัวแปรโปรแกรมของคุณขณะที่โปรแกรมกำลังทำงาน ข้อมูลที่นี่จะหายไปเมื่อคุณปิด Arduino โปรแกรมของคุณอ่านและเขียนที่นี่ตลอดเวลา

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

โปรแกรมส่วนใหญ่ใช้ Flash และ RAM เท่านั้น คุณสามารถเปิดและปิด Arduino ได้ทุกเวลาที่คุณต้องการด้วยโปรแกรมเหล่านั้น

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

สิ่งที่มีผลต่อโปรแกรมของคุณขึ้นอยู่กับว่าข้อมูลคืออะไร

หากข้อมูลของการสอบเทียบสำหรับเซ็นเซอร์เสียหายคุณจะได้รับการวัดที่ไม่ดีสำหรับสิ่งที่เซ็นเซอร์กำลังตรวจจับอยู่

หากคุณเขียนเช็คซัมด้วยข้อมูล EEPROM ของคุณคุณสามารถตรวจสอบความเสียหายและโปรแกรมของคุณอาจปิดตัวลงแทนที่จะใช้ข้อมูลที่ไม่ดี

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

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


สรุป:

คุณสามารถเปิดและปิด Arduino ได้ตามต้องการโดยไม่มีอันตรายเว้นแต่ว่าคุณกำลังใช้ EEPROM - และแม้กระทั่งจากนั้นคุณก็จะสามารถหนีไปได้ตลอดเวลา


8
"Flash - ที่เก็บโปรแกรมของคุณโปรแกรมของคุณสามารถอ่านเนื้อหาจากที่นี่ แต่ไม่สามารถเขียนได้" - ชิป AVR จำนวนมาก (รวม 328P แน่นอน) สามารถตั้งโปรแกรมแฟลชได้ด้วยตนเอง ในความเป็นจริงนี่คือการทำงานของวงจรการเขียนโปรแกรม Arduino bootloader ทำงานบน 328P โปรแกรม 328P เอง มันไม่น่าเป็นไปได้ที่ OP จะทำเช่นนั้น แต่เป็นไปได้
marcelm

2
นอกจากนี้ถ้าคุณใช้ Arduino พร้อมฮาร์ดแวร์พิเศษ (เช่นเซ็นเซอร์) คุณอาจเพิ่มตัวเก็บประจุและใช้พอร์ตเพื่อวัดพลังงานภายนอกดังนั้นถ้าหากหายไปคุณสามารถบันทึกสิ่งที่คุณต้องการได้อย่างปลอดภัย ต้องการ. ใน ATmega รอบการเขียน EEPROM โดยทั่วไปคือ 3.4 มิลลิวินาที ดังนั้นหากตัวเก็บประจุของคุณสามารถรักษาโปรเซสเซอร์ให้มีชีวิตอยู่ได้ 5 มิลลิวินาทีและก่อนการดำเนินการเขียน eeprom แต่ละครั้งคุณจะตรวจสอบไฟภายนอกว่าคุณปลอดภัย
vsz

10

ได้คุณสามารถปิดเครื่องได้อย่างรวดเร็วโดยไม่ทำให้เครื่องเสียหาย

เหตุผลเดียวที่ฉันเห็นการหน่วงเวลาลงของกำลังไฟของวงจรนั้นก็เพื่อเหตุผลด้านความปลอดภัยหรือการทำงานของอุปกรณ์ต่อพ่วงภายนอกของคุณ

เช่นเมื่อปิดเครื่องจำเป็นต้องบันทึกข้อมูลลงในหน่วยความจำที่ไม่ลบเลือน หรือเมื่อปิดเครื่องจำเป็นต้องมั่นใจว่ากลไกอยู่ในตำแหน่งที่ปลอดภัยเมื่อปิดเครื่อง

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


6

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

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

  • หากรหัสของคุณใช้ EEPROM แฟลชอาจเสียหายหรือข้อมูลอาจไม่ได้รับการจัดเก็บอย่างถูกต้องเมื่ออุปกรณ์กำลังกะพริบข้อมูลและกำลังไฟถูกลบออก

  • วิธีเดียวที่การสูญเสียพลังงานอย่างฉับพลันสามารถก่อให้เกิดอันตรายนอกเหนือจาก EEPROM คืออุปกรณ์ที่ใช้กับ Arduino (เช่นการ์ด SD)

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