Как безопасно записывать данные на SD или Eeprom при выключении питания Arduino
Я хочу постоянно хранить данные на SD-карте. Но как я могу убедиться, что данные не повреждены в момент отключения питания? Я думаю, я мог бы добавить небольшой конденсатор на 5 В и проверить, когда напряжение падает, поэтому я бы остановил запись данных. Или есть лучшее решение для безопасной записи данных?
@Name, 👍2
2 ответа
Я думаю, что "маленький" конденсатор здесь не справится с этой задачей, так как вам нужно поддерживать стабильное питание до завершения записи. Вам необходимо определить:
- Сколько энергии я использую?
- Как быстро я могу обнаружить отключение электроэнергии?
- Сколько времени мне нужно, чтобы поддерживать питание Arduino для завершения операций записи, которые я хочу выполнить.
Затем вы сможете рассчитать, какая емкость вам нужна и какой конденсатор или батарея более подходят.
Вероятно, вам захочется обратиться к различным формам NVRAM (энергонезависимой оперативной памяти). SRAM с функцией автоматического сохранения в EEPROM при потере питания, например, 47L16. Или оперативная память с батарейным питанием; если в вашем проекте есть часы реального времени, у вас может быть ограниченное пространство для хранения. Например, DS1307 имеет 56 байт, хотя вы, вероятно, можете найти более точный RTC, в котором есть хранилище. Или FRAM, хотя он такой же дорогой, например cy15b064q-sxet
В любом случае вы, вероятно, захотите записать свои данные в виде блоков с помощью CRC, чтобы вы могли определить, была ли выполнена частичная запись или нет при повторном чтении позже.
- Как увеличить скорость записи на SD-карту в Ардуино
- SD-карта не инициализируется
- Что означают эти контакты? Куда мне их подключить?
- Режимы открытия файлов на SD-карте Arduino добавление/перезапись
- Какие контакты можно использовать для выбора микросхемы (CS, CC) на Arduino Nano Every?
- Понимание того, почему следует избегать «String» и альтернативных решений
- Сделать CS (chip select) для работаты в SPI (для и SD карты и OLED)
- Можно ли подключить экран SD-карты к плате Digispark ATtiny85?
ну, данные записываются, вероятно, за микросекунды, так что I 3300uF или что-то в этом роде будет достаточно на короткий промежуток времени. Вопрос - это правильный способ сделать это? Разрядка конденсатора приведет к снижению его напряжения, поэтому я понятия не имею, что может произойти, @Name
Вы просто предполагаете, сколько времени и сколько резервов вам нужно. Проводите измерения и делайте расчеты. Это инженерия., @jwh20
Также рассчитайте вероятность отключения питания непосредственно во время записи на SD-карту. Если вы, например, пишете только раз в 15 минут, шансы очень низки. В сочетании с вероятностью отключения электроэнергии, возможно, вам не стоит тратить время на попытки предотвратить это., @Gerben