Аналоговое чтение 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);
}

Моя принципиальная схема:

, 👍-1

Обсуждение

Вин начинается с 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


2 ответа


1

Очевидно, проблема была в опорном сигнале 5 В на выводе 5 В, поскольку 5 В подавались только на вывод Vin, и он ссылался на 0 В. Замена блока питания с Vin на 5V решила проблему

,

1

Вам нужен развязывающий керамический конденсатор между A0 и GND. 100 нФ должны работать нормально.

,