Конденсаторы, Arduino и сохранение данных

Короче говоря, я запрограммировал и подключил спидометр/одометр, и все работает хорошо. Однако мне нужно сохранять данные с компонентов/датчиков после нажатия кнопки питания, что привело меня к конденсаторам, которые, похоже, являются решением моей проблемы. Чтение информации о конденсаторах в Интернете завело меня в тупик, и мне нужна помощь, чтобы понять, правильно ли я думаю.

Я приложил явно очень грубую схему, и мне нужно, чтобы кто-то подтвердил, что я правильно ее понял. Если это важно, вся система работала на 5 В, питаясь от 9-вольтовой батареи. Является ли конденсатор на 5 В правильным выбором, учитывая, что большинство компонентов не будут активны в момент отключения питания?

СТАРОЕ ИЗОБРАЖЕНИЕ: https://i.sstatic.net/aXhRi.jpg НОВОЕ ИЗОБРАЖЕНИЕ: https://imgur.com/a/aHRpzE4

Только что попытался загрузить приложение, но по какой-то причине этого не произошло, так что придется использовать ссылку (отредактированную), извините.

, 👍0

Обсуждение

Эээ... нет. Это неправильно. Очень неправильно., @Majenko

Это не сработает. У вас есть конденсатор последовательно с батареей, поэтому только переменное напряжение достигнет Arduino. Батарея обеспечивает постоянное напряжение, которое не может пройти через конденсатор. Вы пытаетесь обеспечить питание Arduino с помощью конденсатора, когда батарея отключена (чтобы у вас было время сохранить ваши драгоценные данные)? Тогда конденсатор должен быть параллелен контактам питания Arduino. Также вы должны определить, отключена ли батарея, чтобы Arduino мог определить это и сохранить данные в EEPROM., @chrisl

Также важной характеристикой является емкость конденсатора. Вам придется использовать конденсатор с большой емкостью, чтобы обеспечить достаточный ток для Arduino и других ваших компонентов., @chrisl

Хммм, подожди две секунды, просто загружу еще одно изображение, чтобы подтвердить, что мы думаем одинаково. Спасибо, кстати., @user4163554

Я бы так не делал. Это имело бы смысл, если бы он работал от сети, но не от батареек. Используйте кнопку. Затем, когда Arduino увидит, что кнопка нажата, сохраните данные и отключите питание Arduino с помощью транзистора ([один пример](https://youtu.be/9CnTguj_qvY)). (На других Arduino вы даже можете перевести их в спящий режим, вместо использования транзистора. Но на UNO это не сработает.), @Gerben

Обновленная схема загружена., @user4163554

Пожалуйста, не давайте ссылки на изображения. Загружайте изображения напрямую (используя кнопку изображения над редактором)., @Majenko

Загрузчик изображений на сайте не отображается должным образом на моем мобильном телефоне, для этого нужно просто нажать кнопку вне сайта., @user4163554

Так установить приложение?, @Majenko

Я принимаю вашу точку зрения по поводу приложения, но при всем уважении, это все остальные, кто конструктивен в отношении вопроса. Ссылка на изображение теперь там, но извините, если это причиняет кому-то неудобства., @user4163554

@user4163554 Ваша ссылка "НОВОЕ ИЗОБРАЖЕНИЕ" не работает. Если модератор говорит вам улучшить вопрос, вы должны это сделать. Это не просто помощь вам, это полезность для будущих читателей, а мертвые ссылки никому не помогают., @gre_gor

Ваше "НОВОЕ ИЗОБРАЖЕНИЕ" - это ссылка на какой-то сайт "incur.com", о котором я никогда не слышал. Мой коллега-модератор и я хотели бы, чтобы вы следовали правилам публикации и действительно публиковали схему, а не какую-то неработающую ссылку. Пожалуйста, прочтите [Как задать хороший вопрос?](https://arduino.meta.stackexchange.com/questions/2523/)., @Nick Gammon

*после нажатия кнопки питания* - возможно ли сделать так, чтобы эта кнопка питания была просто входом для Arduino, который затем записывает данные на SD-карту и отключается?, @Nick Gammon


1 ответ


Лучший ответ:

1

Простое подключение случайного конденсатора к источнику питания не сработает. Все гораздо сложнее.

Да, конденсатор используется для хранения заряда, но вам нужно правильно управлять этим зарядом, иначе у вас не будет возможности что-либо с ним сделать.

Вам необходимо:

  1. Убедитесь, что напряжение разряда остается достаточно высоким, чтобы обеспечить работу микросхемы достаточно долго для сохранения данных (Примечание: запись в EEPROM приводит к увеличению тока)
  2. Изолируйте конденсатор от остальной части схемы, чтобы он питал только основную микросхему
  3. Следите за входящей мощностью, чтобы знать, когда следует экономить.

Блок-схема вашей установки может выглядеть примерно так:

схема

На этой схеме R1 и R2 образуют делитель напряжения, чтобы вы могли контролировать напряжение батареи. C1 — это большой конденсатор. Мы говорим о суперконденсаторе. Номинальное напряжение — 9 В минимум. Регулятор на Arduino игнорируется. Вы не хотите его использовать. Два внешних регулятора теперь используются для питания вашего проекта — один напрямую от батареи для питания макетной платы и других внешних компонентов (которые потеряют питание сразу после отключения питания батареи), а другой — для питания основного микроконтроллера и ничего больше. Второй регулятор изолирован от остальной части схемы с помощью D1, и заряд конденсатора затем может проходить только через этот регулятор для питания основного микроконтроллера.

Этот регулятор для микроконтроллера должен быть импульсным регулятором (DC-DC, "понижающим" регулятором). Если вы используете линейный ("LDO") регулятор, вы будете тратить энергию впустую, и ваш конденсатор должен быть в два или три раза больше, чем в противном случае. Еще лучше было бы иметь "понижающе-повышающий" регулятор, который будет повышать напряжение до 5 В, когда входное напряжение падает ниже 5 В, тем самым давая вам еще больше жизни от конденсатора.

Альтернативой всему этому является использование микросхемы 47C16 (5 В) или 47L16 (3,3 В) для хранения данных. Это микросхема "EERAM" - EEPROM с буфером RAM и автоматическим сохранением в EEPROM при отключении питания. Она работает через I2C и требует конденсатора, подключенного к ней напрямую, чтобы обеспечить резервное питание, пока она сохраняет данные в EEPROM.

,

Спасибо, Majenko. Ого, беру свой комментарий обратно, лол. Мне понадобится некоторое время, чтобы это осознать, но я скоро вернусь., @user4163554

Теперь, когда вы упомянули EPROM, я скажу одну вещь: одним из компонентов является SD-карта, на которой сохраняются данные... Я просто обдумаю ваш пост, но нет., @user4163554

@user4163554 Я только что добавил абзац об использовании EERAM., @Majenko

@user4163554 Карты SD не очень хорошо работают с резервным конденсатором. Они слишком прожорливы и медленны., @Majenko

Спасибо Majenko, прошу прощения за задержку. Я переписал свой код, избавился от части SD, теперь отправляю ее в EPROM, как вы и упомянули. Все работает хорошо. Спасибо еще раз., @user4163554