Есть скетч для датчика Холла, нужно отредактировать его для работы со схемой чувствительного резистора
Следующий набросок взят из мастерской Dronebot. Он написан для датчика Холла ACS712 и преобразует напряжение в ток. Что я хотел бы знать, так это то, что я могу удалить или изменить, чтобы привязать расчеты к этому конкретному датчику? Мне нужен код для работы со схемой сенсорного резистора, показанной выше. Эта одна строка кода:
Current = (Vout – ZeroPoint)/scale_factor
это то, что меня пугает. Ток не может быть просто напряжением - 2,5
/*
ACS712 DC Current Demonstration
acs712-dc-demo.ino
Read current using ACS712 Hall Effect sensor
DroneBot Workshop 2021
https://dronebotworkshop.com
*/
// Переменные для измеренного напряжения и расчетного тока
double Vout = 0;
double Current = 0;
// Константы для коэффициента масштабирования
// Используйте тот, который соответствует вашей версии ACS712
//const double scale_factor = 0,185; // 5А
const double scale_factor = 0.1; // 20А
//const double scale_factor = 0,066; // 30А
// Константы для разрешения аналого-цифрового преобразователя
// Arduino имеет 10-битный АЦП, поэтому 1024 возможных значения
// Опорное напряжение равно 5 В, если не используется внешний опорный сигнал AREF
// Нулевая точка равна половине опорного напряжения
const double vRef = 5.00;
const double resConvert = 1024;
double resADC = vRef/resConvert;
double zeroPoint = vRef/2;
void setup(){
Serial.begin(9600);
}
void loop(){
// Vout считывается 1000 раз для точности
for(int i = 0; i < 1000; i++) {
Vout = (Vout + (resADC * analogRead(A0)));
delay(1);
}
// Получить Vout в mv
Vout = Vout /1000;
// Преобразование Vвых в ток с использованием масштабного коэффициента
Current = (Vout - zeroPoint)/ scale_factor;
// Вывести Vout и Current на два Current = ");
Serial.print("Vout = ");
Serial.print(Vout,2);
Serial.print(" Volts");
Serial.print("\t Current = ");
Serial.print(Current,2);
Serial.println(" Amps");
delay(1000);
}
@Tim Cerka, 👍0
Обсуждение0
Смотрите также:
- Питание светодиодной ленты - Сколько ампер?
- Блок питания для Seeeduino Xiao
- Как узнать максимальный ток через VIN на плате NodeMCU?
- Как получить общее среднее полученных данных
- Multiple Wire.write() не работает для Arduino Nano I2C
- Обнаружение прерывания питания на NodeMCU
- Затемнение этого светодиода ~ 30 В с помощью ШИМ, что мне нужно?
- Подключение ACS 712 30A к солнечной панели с помощью Arduino
какова формула преобразования показаний напряжения в значение тока?, @jsotola
Что такое «цепь чувствительного резистора»?, @chrisl
Формула вроде правильная, но с неправильным масштабом, ток в мА, и формула должна быть `current_in_ma = (Vout_in_ma - Vref_in_ma/2)/scale_factor, так называемый масштабный_фактор называется чувствительностью в таблице данных, 0,1 означает, что для каждые 100 мВ эквивалентны преобразованию тока в 1 А (если у вас есть суффикс чипа 20-A). Таким образом, если вы получаете Vout 2600, а Vref/2 равно 2500, ток будет (2600-2500)/0,1 = 1000 мА, если вы получите значение Vout = 2510, ток будет 100 мА., @hcheung
@chrisl Небольшой резистор 0,1 Ом создает падение напряжения, пропорциональное обратному току. Схему добавлю в пост., @Tim Cerka
@jsotola Формула I = V/R. Учитывая приведенную выше схему, считаются ли три резистора в цепи включенными последовательно?, @Tim Cerka
резисторы не последовательно ... ваши вопросы не об Arduino ... они принадлежат https://electronics.stackexchange.com/questions, @jsotola
Мои вопросы связаны с кодом, который работает на Arduino., @Tim Cerka
Ваш код связан с ACS712, что делать с AD8572???, @hcheung
Несмотря на то, что обе схемы могут измерять ток, это не означает, что вы можете взять код датчика Холла и попытаться подогнать его для работы с дифференциальной схемой на операционном усилителе, они основаны на разных теориях и технологиях..., @hcheung
Отвечает ли [это] (https://electronics.stackexchange.com/a/644362/236376) на ваш вопрос, у вас есть формулы, и вы можете написать код на их основе., @hcheung
Я не знаю, ясно ли это из вышеизложенного или нет, но ACS712 имеет выход, смещенный на 2,5 В, потому что это позволяет вам отслеживать ток, проходящий через деталь в любом направлении. Другими словами, 2,5 В на выходе означает отсутствие тока. 2,4 В и 2,6 В будут представлять одинаковую величину тока (одинаковое расстояние от 2,5 В), но один представляет ток, движущийся вперед, а другой - назад. Как сказал Хчунг, это разные животные., @timemage
@timemage Спасибо за ответ на мой вопрос! Итак, поскольку я не использую ACS712, у меня не будет нулевой точки 2,5, и мне не нужно вычитать ее из Vout. Это звучит правильно?, @Tim Cerka
Вопрос в целом мне не ясен. То, что я хотел вам предложить, было лишь объяснением того, почему вы видите цифру 2,5 в коде, предназначенном для работы с ACS712., @timemage
@timemage Вопрос был в том, как изменить код для работы с другим датчиком тока. Главное, что вы сказали, это то, что «ACS712 имеет выходное напряжение, смещенное на 2,5 В»., @Tim Cerka
Хм. Что ж, из осторожности я отозвал свое близкое голосование по этому поводу. На случай, если кто-то другой или вы сами захотите попробовать как следует. Что касается правильного звучания без удаления 2.5, да, насколько я понимаю, я понимаю, о чем вы спрашиваете. Если вы намерены ответить на свой собственный вопрос, сначала убедитесь, что вы действительно убедили себя., @timemage