Вывод сброса attiny85 в качестве аналогового вывода.
Я хочу использовать контакт сброса attiny85 в качестве аналогового контакта для считывания напряжения батареи, который будет использоваться в качестве индикатора низкого уровня заряда батареи.
Итак, к этому контакту всегда будет подключена липо-батарея.
Для этого мне нужен высоковольтный программатор, но я читал, что вывод сброса может быть просто аналоговым выводом, если напряжение на нем превышает 2,5 В. Это правда?
Если да, то я могу запрограммировать его с помощью Arduino SPI в обычном режиме, поскольку напряжение батареи никогда не опустится ниже 2,5 В.
Изменить
Спасибо @timemage за ответ, там действительно полезная информация.
Но я могу убедиться, что если вы подадите 5 В на Vcc attiny и подключите липо (выше 2,5 В) к выводу сброса, он будет работать как аналоговый вывод.
Я использовал потенциометр, и да, он работает, дополнительную информацию об этом вы также можете увидеть в это сообщение.
Настоящая информация начинается с поста №10.
Здесь действительно сложная ситуация, поскольку я использовал вывод сброса как сброс и как аналоговый вывод одновременно. Это не рекомендуется, но это работает!
Пожалуйста, если вы просмотрите сообщение на форумах Arduino и перепишете здесь свои мысли, это будет полезно для большего количества людей, чтобы получить полезную информацию.
1 ответ
Нижеследующее было ответом на вопрос в его исходной форме.
Это скорее вопрос электроники. Но это может представлять интерес для людей, в основном из-за клонов Digispark, которые все еще имеют функцию сброса.
На эти вопросы проще ответить в другом порядке.
Я читал, что сброс пина может быть просто аналоговым пином, если напряжение на нем выше 2,5 В. Это правда? Если да, то я могу запрограммировать его с помощью Arduino SPI в обычном режиме, поскольку напряжение батареи никогда не опустится ниже 2,5 В
Практически ответ лучше всего сформулировать как «нет».
Мне потребовалось некоторое время, чтобы понять, о чем вы говорите, в основном из-за это число 2,5 В, которое я до сих пор не совсем понимаю. Сначала я думал, что вы говорите о внутреннем источнике опорного напряжения 2,56 В. Я интерпретирую это следующим образом: "Пока я на самом деле не вызываю сброс, верно ли, что я могу использовать канал ADC0, который находится на выводе RESET ATtiny85?"< /п>
Практически я думаю, что нет. Но эта идея забавна и в то же время более чем тревожна. Казалось, что ответ мог бы быть утвердительным только потому, что ATMEL пришлось бы проделать дополнительную работу, чтобы сделать это невозможным, даже если пытаться сделать это немного безумно. Естественно, мне пришлось это попробовать.
В ходе тестирования я обнаружил, что да, вывод RESET по-прежнему функционирует как канал АЦП. Мне удалось подключить точку деления делителя напряжения на 2/3 (иш) к сбросу и получить значение 0xAD (как 8-битное измерение), что на самом деле составляет примерно 2/3 от 0xFF. По крайней мере, так обстоит дело с моим конкретным чипом при любых условиях эксплуатации.
Согласно таблице данных V_RST (порог напряжения на выводе nRESET) указано, что напряжение 3 В находится в диапазоне от 0,2 до 0,9 VCC. Не похоже, что у вас есть веские основания полагать, что чип обязательно не сработает при напряжении ниже 0,9 VCC, которое при 5 В составляет 4,5 В. Я не экспериментировал со своим, чтобы выяснить, где находится порог, за исключением того, что 1/3 VCC действительно вызывала сброс.
Итак, я не знаю, откуда берутся ваши 2,5 В, но могу сказать, что это число, близкое к середине возможного диапазона V_RST для AVR при напряжении 5 В. Даже если вы обнаружите, что именно здесь находится порог для вашего чипа, он не указан именно там. Тот факт, что я получил показания на 2/3 вместо сброса, похоже, не указан в таблице данных.
Еще одна особенность заключается в том, что когда контакт используется в качестве RESET, у него включено внутреннее подтягивание, которое указано между 30K и 60K. Таким образом, все, что вы подключаете к контакту сброса (ваша батарея), подключается к AVR VCC через подтягивающее напряжение.
В любом случае, это интересно, но в конечном итоге это, вероятно, плохая идея.
Таким образом, к этому контакту всегда будет подключена липо-батарея
Если вы все равно хотите поиграть с этой штукой с использованием вывода RESET для канала АЦП, определенно не подключайте батарею для сброса во время программирования, по крайней мере, без разумного последовательного сопротивления. В противном случае, когда ваш программатор перезагружает ваш ATtiny85, он замыкает батарею на массу через программатор.
Я хочу использовать вывод сброса attiny85 в качестве аналогового вывода для считывания напряжения батареи, которое будет использоваться в качестве индикатора низкого уровня заряда батареи.
В целом напряжение не является надежным показателем состояния заряда аккумуляторов. При некоторых условиях с ним можно получить приблизительное представление. Чем более пологой является кривая разрядного напряжения, тем менее полезное напряжение является индикатором состояния заряда. Литиевая химия ценится за создание довольно плоских кривых разряда при уровне напряжения, достаточно высоком для выполнения полезной работы. Обычно «подсчет кулонов» Вместо этого используется метод. По сути, вы измеряете ток с течением времени и интегрируете (суммируете) его, а не считываете мгновенное (или краткосрочное усредненное) напряжение батареи. И здесь есть свои сложности, связанные с сохранением истинной ценности. Получить разумное представление о состоянии заряда Lipo достаточно сложно, чтобы добиться успеха, поскольку существуют измерительные чипы, специально разработанные для этого. У меня нет для них хороших рекомендаций, но MAX17043 и MAX17048 являются одними из первых номеров деталей для такого типа микросхем, которые можно найти на модулях от поставщиков оборудования, связанного с Arduino.
Я хочу использовать вывод сброса attiny85 в качестве аналога
Для большинства пользователей Arduino лучше оставить контакт сброса в покое. ATtiny84 не намного больше ATtiny85 и имеет несколько дополнительных контактов, а в остальном очень похож. ATtiny84 также поддерживается attinycore. Если вы настроены на использование ATtiny85, убедитесь, что вы исчерпали все возможности использования других контактов. Существуют способы подключения нескольких переключателей к одному контакту с поддержкой analogRead()
. Есть способы подключить светодиоды и переключатели к одному и тому же контакту, если вы не против, чтобы свет загорался при нажатии кнопки и т. д.
Для этого мне нужен высоковольтный программатор, но
Верно, вернемся к обычному использованию функций вывода RESET, не связанных с RESET.
Вроде того. Вам не нужен режим последовательного программирования высокого напряжения, чтобы запрограммировать код, использующий вывод сброса, на чипе, а затем отключить вывод сброса и использовать его через digitalRead()
/ digitalWrite()
/analogRead()
/etc.. Но после этого вам понадобится режим высокого напряжения для повторного программирования либо путем программирования кода в режиме высокого напряжения, либо путем программирования (фактически депрограммирования) предохранителя RSTDISBL
для повторного включения функции RESET. что требуется для режима ISP/SPI. Другими словами: если вы рассматриваете детали как однократно программируемые, вам понадобится только программист ISP. Но во время разработки вам, вероятно, не захочется просто выбрасывать груды совершенно хороших чипов.
Если вы решили использовать канал АЦП, который находится на выводе сброса, вам нужно запрограммировать предохранитель RSTDISBL. Тогда вы получите полезный диапазон использования канала АЦП, возможность отключить подтягивание и, возможно, даже меньше случайных сбросов.
И да, вам нужен программатор высоковольтного режима, чтобы восстановиться после этого, и вам нужно либо удалить чип из платы, либо спроектировать плату так, чтобы она обрабатывала поступающие на нее сигналы HVSP; в частности, для обработки 12 В, которое будет применяться для сброса. Это также не должно попадать в ваш липо.
вы могли бы увидеть редактирование?, @Ahmed Mohamed Hassan
Я не преследую движущуюся цель. Если вы хотите знать, откуда автор форума взял цифру 2,5 В, спросите их, я не могу проникнуть им в голову. Если вы уже нашли время сделать то, что я сделал, проверив, что вывод сброса ведет себя так, как он явно ведет себя, то вам следовало бы указать это в своем первоначальном вопросе., @timemage
- Сброс Arduino Uno в коде
- Как сбросить или отформатировать Arduino?
- Связь последовательного порта Digispark
- Сторожевой таймер застрял в цикле перезапуска? (мигает зеленый светодиод)
- ESP8266 — Отправка команды сброса программного обеспечения
- Библиотеки I2C для ATTiny85?
- Arduino Pro Микро кирпичился?
- Как переназначить кнопку сброса Arduino
См. http://www.technoblogy.com/show?LSE., @RedGrittyBrick