Аналогово-цифровое преобразование Arduino от батарей постоянного тока 56 В
У меня возникла проблема: я использую комбинированную аккумуляторную систему на 56 В постоянного тока. Я получаю значения АЦП, поступающие в Arduino, такие как 211, 217 и т. Д. Я должен выяснить, когда напряжение постоянного тока падает до 42 В. Как узнать цифровое значение АЦП от Аруино.
@MaxHari, 👍-1
Обсуждение2 ответа
Я предполагаю, что вы используете литий-ионные аккумуляторы в конфигурации 14s. Вы захотите измерить напряжение до 60 В во время зарядки. С небольшим запасом прочности я бы настроил его на измерение до 72 В без повреждения платы Arduino, которая может измерять напряжение до 5 В, но входное напряжение на этом выводе никогда не должно превышать 5,5 В.
Чтобы снизить напряжение батареи до уровня, который может использовать Arduino, вам потребуется использовать делитель напряжения, как предложил Крисл.
При сопротивлении R1 = 10 кОм и R2 = 680 Ом вы получите показания до входного напряжения 78 В.
Если функция analogRead()
возвращает значения от 0 до 1023, пороговое значение 42 В будет около 546.
Предупреждение: здесь будет много математических вычислений
Хорошо. Итак, у вас есть батарея с делителем напряжения, и вы используете АЦП Aruino для считывания выходного сигнала этого делителя напряжения. И вы хотите "обратно вычислить" напряжение батареи по показаниям АЦП.
Сначала давайте посмотрим, что именно происходит с делителем напряжения и как он работает. Для этого обратимся к старому доброму закону Ома.
Правило номер один состоит в том, что два последовательно соединенных резистора суммируют их сопротивления. Итак, если у вас последовательно подключены резисторы на 10 кОм и 680 Ом (как предложено в ответе @towe), общее сопротивление составляет 10680 Ом. Мы будем использовать это расположение в качестве примера.
Теперь закон Ома гласит, что ток, протекающий через резистивную нагрузку, прямо пропорционален напряжению на ней. Таким образом, для фиксированного сопротивления и заданного напряжения мы можем рассчитать ток, который будет протекать через резисторы. Эта формула:
И=В/П
Итак, при напряжении 56 В и сопротивлении 10 680 Ом мы можем сказать, что ток составляет 56/10 680 ампер — или около 5,24 мА.
Отлично. Но что с того? Что ж, теперь мы можем изменить формулу и найти напряжение на заданном сопротивлении для этого конкретного тока. Что мы можем сделать, например, для резистора 680 Ом. Мы знаем, что через оба резистора протекает одинаковый ток (поскольку они включены последовательно), поэтому, перевернув формулу, получим:
В=I×R
Итак, при 0,00524 А и 680 Ом это 0,00524 × 680 = 3,57 В. Мы можем сделать то же самое для резистора 10 кОм: 0,00524 × 10000 = 52,43 В. И посмотрите, если мы сложим эти два напряжения вместе, что мы получим? Получаем 56В. Резисторы разделили напряжение на две части.
Вы можете объединить эти две формулы вместе, чтобы получить:
VВЫХОД = VВХОД × (R2 / (R1 + R2))
И если мы переместим VIN влево, мы получим:
VВЫХОД / VВХОД = (R2 / (R1 + R2))
И это называется передаточной функцией, или отношением входного и выходного напряжения делителя напряжения.
Для пары резисторов 10 кОм (R1) и 680 Ом (R2) мы получаем 680/10680 = 0,0637.
И это «магическое число», которое мы хотим вычислить от АЦП до напряжения батареи. Независимо от напряжения, которое мы считываем с АЦП, напряжение батареи обратно пропорционально этому числу, умноженному на большее (обратное значение равно «на единицу больше значения»). Обратная величина 0,0637 равна 15,7. Поэтому, если вы прочитаете значение с АЦП, а затем преобразуете его в напряжение относительно внутреннего эталонного напряжения (примерно 5 В для обычного Arduino), а затем умножите это напряжение на 15,7, вы получите напряжение батареи.
Итак, теперь нужно получить напряжение АЦП. И опять же, это все пропорции. АЦП выдает число, представляющее собой отношение входящего напряжения к эталонному (5 В) напряжению. В 1023 вы получите «5 В минус 1 младший бит», то есть около 4,995 В. На самом деле нам не нужна такая точность, поэтому мы просто назовем его 5 В.
Скажем, вы читаете 482 с АЦП, если вы преобразуете это в напряжение, вы берете отношение 482/1024 и умножаете его на опорное напряжение (1024 — это диапазон 10-разрядного АЦП — вы бы изменили это для других типы АЦП):
ВIN = 482 / 1024 × 5 = 2,35 В
Умножьте это на наше "волшебное число" 15,7, и вы получите 36,95 В — это напряжение аккумулятора.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Ваш код и схему, пожалуйста, иначе мы просто не сможем вам помочь. Ypu не может измерять напряжения выше 5 В с помощью Uno, поэтому вам нужна схема, чтобы разделить напряжение до этого диапазона., @chrisl