Почему аналоговые контакты влияют друг на друга?

У меня есть датчик, и он генерирует аналоговый сигнал.

Я читаю все аналоговые данные и отправляю их на свой компьютер.

 введите описание изображения здесь>> </a> </p>

<pre><code>uint8_t датчики [] = {A0, A1, A2, A3, A4, A5, A6};
const int len ​​= sizeof (датчики) /sizeof (датчики [0]);
void loop (void)
{
    для (size_t i = 0; i <len; i ++)
    {
        автоматический датчик = датчики [i];
        int sensorValue = analogRead (датчик);
        //Преобразуем аналоговое считывание (которое идет от 0 - 1023) к напряжению (0 - 5 В):
        плавающее напряжение = датчикValue * (5.0 /1023.0);
        char t [100];
        sprintf (t,

Я построил аналоговое чтение. Почему граф выглядит так?

 введите описание изображения здесь>> </a> </p></body></html>

8 голосов | спросил erow 19 AMpWed, 19 Apr 2017 11:55:14 +030055Wednesday 2017, 11:55:14

2 ответа


12

Этого можно ожидать.

Другие контакты не связаны с ним, поэтому их напряжение плавающее.

У MCU Arduino есть только один ADC. Чтобы прочитать разные аналоговые контакты, он использует мультиплексор для подключения вывода, который вы хотите прочитать, к одному АЦП. АЦП внутри MCU имеет внутри него «образец и удерживающий» конденсатор.

Чтобы прочитать напряжение на штифте, он подключит контакт, чтобы зарядить образец и удерживать конденсатор. Затем он будет отключать и измерять напряжение образца и удерживать конденсатор по одному бит за раз.

Итак, в вашем случае, прочитав напряжение на подключенном штыре, он зарядит конденсатор. Затем он будет считывать несвязанные контакты. Но поскольку ничто не связано, образец и удерживающий конденсатор будут находиться примерно на одном и том же напряжении, потому что несвязанный штырь не будет заряжаться и не разрядится.

Измерение напряжения на образце и удерживающего конденсатора несколько снизит это напряжение, поэтому на графике линии будут ниже, чем предыдущие измерения.

PS Кроме того, поскольку все булавки размещены в макете, у вас будет некоторая емкостная связь между соседними штырьками.

ответил Gerben 19 PMpWed, 19 Apr 2017 12:08:30 +030008Wednesday 2017, 12:08:30
0

Актив действительно немного конденсатор. Когда вы переключаете каналы, заряд в конденсаторе acc переносится от одного входного канала к другому. Если следующий входной канал имеет очень высокий импеданс или очень низкую емкость, заряд на конденсаторе acc доминирует, а его напряжение мало меняется.

Кроме того, плохой код также может вызвать его - обычно из-за отсутствия достаточного времени для завершения добавления.

ответил dannyf 19 PMpWed, 19 Apr 2017 16:02:21 +030002Wednesday 2017, 16:02:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132