Аналоговое чтение Arduino колеблется от датчика, если USB не подключен
У меня есть Arduino, подключенная к датчику 4–20 мА через преобразователь тока в напряжение. При подключении к источнику питания показания датчика колеблются, как только я также подключаю его к USB-порту, он стабилизируется и дает правильные показания (проверено с другим считывателем).
Мой основной код:
#include <Arduino.h>
#include "Display.h"
#define MINIMUM_DEWPOINT -100
#define MAXIMUM_DEWPOINT 20
#define AVG_READING_SIZE 20
float dewPoint;
uint8_t recordIndex = 0;
uint16_t analogReadingValue[20];
int sensorMin = 0;
int sensorMax = 1023;
int sensorValue = 0;
void setup()
{
Serial.begin(9600);
Display::init();
for(uint8_t i = 0;i<AVG_READING_SIZE;i++)
{
analogReadingValue[i] = 0;
}
}
uint16_t getAvg(uint16_t *arr,uint8_t numberOfElements)
{
uint32_t sum = 0;
for (uint8_t i = 0 ; i < numberOfElements ; i++)
{
sum += arr[i];
}
return (uint16_t)(sum / numberOfElements);
}
void loop()
{
analogReadingValue[recordIndex] = analogRead(A0);
dewPoint = map(getAvg(analogReadingValue,AVG_READING_SIZE), sensorMin, sensorMax, MINIMUM_DEWPOINT, MAXIMUM_DEWPOINT);
recordIndex++;
if(recordIndex==AVG_READING_SIZE)
{
recordIndex = 0;
}
Display::displayDewpoint(dewPoint);
Serial.println(dewPoint);
Serial.println(getAvg(analogReadingValue, AVG_READING_SIZE));
delay(2000);
}
Моя принципиальная схема:
@Adrian Paun, 👍-1
Обсуждение2 ответа
▲ 1
Очевидно, проблема была в опорном сигнале 5 В на выводе 5 В, поскольку 5 В подавались только на вывод Vin, и он ссылался на 0 В. Замена блока питания с Vin на 5V решила проблему
,
@Adrian Paun
▲ 1
Вам нужен развязывающий керамический конденсатор между A0 и GND. 100 нФ должны работать нормально.
,
@Meepo
Смотрите также:
- Считанное значение не меняется при вращении потенциометра в Arduino?
- Не получая никакого выхода от датчика ЭКГ AD8232
- Почему чтение на ESP32 читает max, когда чтение на UNO читается точно?
- Нестабильные показания аналогового датчика
- Шум на пьезо-аналоговом чтении из-за источника питания Arduino
- Почему светодиоды влияют на аналоговый вход?
- Использование 1,1 Вf для считывания стабильного напряжения батареи и напряжения датчика
- Выход звукового датчика застревает на высоких значениях, когда я включаю задержку в функцию цикла
Вин начинается с 6 В https://store.arduino.cc/arduino-uno-rev3, @Juraj
Спасибо, я поменял Vin на контакт 5v, и теперь он читает с постоянным значением 1023, сохраняя при этом то же поведение при подключении через usb., @Adrian Paun
Если вы подаете 5V в Vcc (5V), вы не должны подключать USB. ( Или наоборот :) ), @DataFiddler
Это моя цель, однако, как я указывал ранее, показание, которое я получаю, когда оно не подключено к USB, постоянно равно максимальному значению 1023, что неверно., @Adrian Paun
Чтобы добавить к этому, 2 источника питания на схеме подключены к выключателю, который подключается к сети через кабель., @Adrian Paun