Аналоговый ввод Arduino: почему странные колебания?
Я использую Arduino Uno. analogRead(A0)
(или любой другой канал, который я использую) возвращает 0, когда он заземлен с помощью Arduino Gnd, и 1023 при подключении к Arduino 5v. Но когда я подключаю его к датчику тока (ACS712), он всегда колеблется вот так:
0, 0, 0, 0, 0, 0, 1023, 1023, 1023, 1023, 1023, 441, 446, 0, 0, 0, 0, 1023, 1023...
Также пробовал с потенциометром (10K) и аналоговым джойстиком: результаты те же. Я пробовал менять разные блоки питания (и Arduino, и датчик (ACS712, потенциометр, джойстик)). Я даже тестировал его на Arduino Mega, но не повезло. Такие резкие колебания не имеют для меня никакого смысла. Пожалуйста, помогите мне, в чем может быть проблема.
Моя схема подключения прикреплена к этому сообщению. И я использую внешний источник питания для ACS712. Возможно ли, что причиной этой проблемы является статическое электричество?
Код:
void setup() {
Serial.begin(9600);
}
void loop() {
float value = analogRead(A0);
Serial.print("Raw:");
Serial.println(value);
delay(500);
}
Спасибо.
@Hassaan Shah, 👍2
Обсуждение2 ответа
Лучший ответ:
Вам необходимо соединить заземление от внешнего источника питания и Arduino.
На данный момент два устройства находятся в плавающем состоянии — общепринятой точки 0v нет.
Вы потрясающие ... Спасибо за вашу помощь очень ценится. Решил мою проблему, @Hassaan Shah
У меня была похожая проблема с колебаниями значений. Убедитесь, что вы устанавливаете в своем коде аналоговый вывод как контакт INPUT
. На некоторых платах это нужно указывать явно, например так:
pinMode(A1, INPUT);
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
пожалуйста, добавьте схему ваших соединений, @jsotola
Вы говорите, что питаете привод ACS712 от внешнего источника. У вас есть заземление Arduino и заземление внешнего питания? _Полная_ схема была бы более полезной, потому что, возможно, проблема не в показанной части., @Mark Smith
Возможно, вы просто измеряете ток _AC_, и в этом случае «флуктуации» нормальны и ожидаемы., @Edgar Bonet
@Mark Smith Я не использую Arduino Gnd ACS712 использует Gnd от внешнего источника питания .... От Arduino я использую только его аналоговый контакт 0, @Hassaan Shah
@ Эдгар Бонет Я использую источник постоянного тока в качестве источника тока для ACS712., @Hassaan Shah