Перейти к содержанию

Датчик тока ACS712


Рекомендуемые сообщения

Добрый день!

Хочу спросить о правильности кода обработки сигнала с датчика тока ACS712.

Датчик тока имеет диапазон -20 ... +20 А. Для точного определения нуля нужно точно знать опорное напряжение АЦП.  

Возможно ли как-то внутренними средствами определить опорное напряжение АЦП, что бы каждый раз не производить вручную замер опорного напряжения. Контроллер STM32F103. 

Для определения среднего значения кода с АЦП (т.к. код АЦП сильно прыгает) складываю до n=2000 (т.е. от 0 до 2000 получается 2001)  значений и делю потом на n+1, при это получаю 4094, как такое может быть?

 

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// int Value=0;
int ADC = 0; // Цифровой код с АЦП
float I_in = 0.000;
float V_in = 0.000;
// float vin=0;
float I_min = -20.000; // Нижний предел диапазона датчика тока
float I_max = 20.000; // Верхний предел диапазона датчика тока
int I_min_D = 0;     // Нижний предел диапазона датчика тока(цифровой код)
int I_max_D = 4095;  // Верхний предел диапазона датчика тока(цифровой код)
float V_min = -0.000; // Нижний предел диапазона датчика тока
float V_max = 3.300; // Верхний предел диапазона датчика тока
int V_min_D = 0;     // Нижний предел диапазона датчика тока(цифровой код)
int V_max_D = 4095;  // Верхний предел диапазона датчика тока(цифровой код)
long Summ_ADC = 0;
int n = 2000; // количество замеров значений с АЦП [0;4294967295]
int S_ADC = 0;

LiquidCrystal_I2C lcd(0x3F, 16, 2); // Устанавливаем дисплей
void setup()
{
  lcd.init();
 lcd.backlight();// Включаем подсветку дисплея


  pinMode(PB9, OUTPUT);
}
void loop()
{
  for (int i = 0; i < n; i++) {
    ADC = analogRead(PA1); // чтение цифрового кода с порта PA1
    Summ_ADC = Summ_ADC + ADC; // накапливаем значение пока выполняется условие
  }
  Summ_ADC = Summ_ADC / (n + 1);

  int i = 0;
  
  I_in = .............// пересчет цифрового кода в физические велечины
  V_in = .............// пересчет цифрового кода в физические велечины
  lcd.clear();
  lcd.setCursor(0, 0); // установка курсора в 2 строку  1 символ
  lcd.print(Summ_ADC);  // вывод текста на дисплей

  lcd.setCursor(5, 0); // установка курсора в 2 строку  1 символ
  lcd.print("V_in= ");  // вывод текста на дисплей
  lcd.setCursor(10, 0); // установка курсора в 2 строку  1 символ
  lcd.print(V_in, 4);  // вывод текста на дисплей, количество знаков после зяпятой

  lcd.setCursor(0, 1); // установка курсора в 2 строку  1 символ
  lcd.print("INPUT I= ");  // вывод текста на дисплей
  lcd.setCursor(8, 1); // установка курсора на 2 строку 13 символ
  lcd.print(I_in, 4); // вывод значения переменной, количество знаков после зяпятой

  delay(50);
}
Изменено пользователем MDG_Lab
Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...