Равномерное заполнение SD

День добрый!

Делаю даталоггер на Атмега328, 1 раз в секунду получаю 40байт данных (10 переменных флоат по 4 байт),всего будет около10 тыс. записей в день, т.е. файл объемом 400 кб. Планирую записывать все на SD карту.

100к количество циклов перезаписи заявляемые производителями карт это надо понимать в одну ячейку(кластер). Отсюда если это для одной ячейки, то записывая рандомно каждую секунду карта условно умрет на 10 день.

Догадываюсь что есть варианты равномерного заполнения SD карты (с указанием ячеек как у EEPROM), тогда например карты 32Гб хватит на 32Гб/400кб=80000 дней записи и это будет только один цикл перезаписи из 100к, пожизненно короче.

Подскажите, как на Ардуино организовать равномерное (последовательное) заполнение SD карты?

ПиСи. Сам факт открытия/закрытия файла на SD считается за цикл перезаписи? Если да, то равномерная запись не поможет и надо смотреть в сторону уменьшения частоты записи на SD, например поставить доп RAM, там все запоминать и потом разом записывать на SD.

Пишите на SD не опираясь на файловую систему и будет вам счастье…

Честно не знаю как это сделать, можно ссыль что почитать, куда рыть

Почему выбор пал именно на SD ? Чем SPI или I2C память не угодила ?

нужен легкосъемный носитель для переноса данных на комп и построения графиков, согласен не самое элегантное решение в наше время, но пока только так

Если переносить на комп, то без файловой системы не обойтись. Можно копить данные в памяти и по одному-два кб (в зависимости от МК и размера ОЗУ) и записывать на карту в файл соответствующего размера.

Или прицепить FRAM, накапливать 40*3600 байт и записывать раз в час на SD…

2 лайка

Согласен, причем ОЗУ можно расширить до 512кб и кидать все за раз в конце процесса, что бы лишний раз не отвлекать МК от считывания показаний.
Но у меня остались вопросы чисто для закрытия пробелов в знаниях:

  • 100к циклов перезаписи SD это для ячейки или всю карту забить надо?
    (думаю для ячейки)
  • можно ли последовательно писать в FAT систему SD карты?

Есть SD карты с увеличенным ресурсом, для камер, регистраторов.
Типа: Samsung PRO Endurance.
У меня в Распбери такая стоит логи пишутся постоянно, проблем пока нет, уже несколько лет.

2 лайка

какая у вас частота записи?

Если вы пишете в длинный файл последовательно, а не перезаписываете одну и ту же запись - это и будет последовательное заполнение карты. И не надо тут ничего выдумывать.

А зачем вам его закрывать-открывать раз в секунду. Открыли и пишите. Просто делайте сброс данных в файл командой flush вот и все

3 лайка

мир удивителен всё таки, даже студенты уже пишут и работают с базой

да так и есть, открываю в начале цикла новый файл и в него командой flush каждую секунду добавляю новые данные…

однако усомнился не изнашиваю ли я SD карту таким частым обновлением… отсюда и посыпались вопросики

У меня на Распбери висит устройство подключенное по модбас, оно опрашивается каждые 300мс, результат пишится в лог.

1 лайк

обнадеживает )

согласен, что SD карта не самое элегантное решение, однако организовать wifi веб-сервер пока нет возможности, запись на SD это пробный шар для понимания нужно ли вообще это логгирование

Когда я искал проблему и мне понадобился лог - сделал через UART сразу в EXCEL с графиками … голыми жаркими бабами и блекджеком …

вот,вот… опишите, что вы логируете и зачем, я уверен найдется сто писят способов оптимизировать задачу, усреднять, хранить приращения и т.д.

1 лайк

PLX-DAQ?

Strokereader

не спорю сколько людей столько и мнений (решений),
задача простая есть установка, с её вольтметров, амперметров и всяких датчиков надо зафиксировать данные, что бы оптимизировать процесс и воспроизводимость результатов… этап пуско-наладки, сейчас процесс мониторим через ком-порт и параллельно пишем

в дальнейшем когда все прикатается если будет необходимость в тотальном контроле сделаем веб-сервер или просто оставим SD карту в качестве “черного ящика”