Есть скетч для датчика Холла, нужно отредактировать его для работы со схемой чувствительного резистора

Следующий набросок взят из мастерской 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); 
 
}

, 👍0

Обсуждение

какова формула преобразования показаний напряжения в значение тока?, @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