Неисправность АЦП

Здравствуйте.
У меня в микроконтроллере не работает нормально ни один из выходов АЦП.
Сразу говорю: программная часть полностью исправна. При подключении к VCC показывает 5 вольт. При подключении к GND - 0 вольт. Но при подключении делителя напряжения, в роли которого переменный резистор - просто показывает 0 при любых положениях. С двумя постоянными резисторами показывает тоже самое. Подключение делителя проверялось на множестве сайтов и не является ошибочным. Суммарное сопротивление ветвей делителя пробовал от 400 Ом до 10 кОм. Все равно уходит в 0.

можно было дальше не читать, но я пересилил себя, если это работает

то рисуйте схему как вы подключаете резистор переменный и делитель, а лучше видосик маленький.
и да код который показывает то 5 вольт, то 0, тоже выкладывайте.

«««
float gVal = 0;

void setup() {
Serial.begin(9600);

}

void loop() {
gVal = (analogRead(A0)/1023)*5;
Serial.println(gVal);
delay(1000);
}
»»»

Наверное при делении, например, 512/1023 и получается 0.

1 лайк

и вместо

надо ставить ``` (ёёё)

Что ж за люди такие. Им говорят, что искать нужно в аппаратной части, а они опять за своё…

3 лайка

У меня формат float. Число возвращается в формате 5.00 или 0.00. Не может быть такого, что оно округляется внутри, так как иначе выводилось бы целочисленно.

а sadman41 то прав!!
вы чЁ, совсем все тупые, 0.00 от 5.00 не отличаете?))

Ну, попробуй поделить на 1023.0 , ардуина-то китайская, не понимает ни по-русски, ни по-английски.

Лучше так попробовать:
gVal = (float)(analogRead(A0)/204.6);

1 лайк

достаточно чтоб хотя бы одиб был float.

gVal = analogRead(A0)/1023.0;

или

gVal = (float) analogRead(A0)/1023;

Молчит.

там все заработало, не до пустяков сейчас совсем)

если бы еще подсказали, почему передаваемое через SerialPort число округляется ровно до двух знаков после запятой всегда, было бы еще лучше

а еще чего, ключ от квартиры?

2 лайка

да. почему бы и нет.

в очередь сукины дети, в очередь!

И ни у кого не работает.
Потому, что не может.
Могут работать либо входы АЦП, либо выходы ЦАП (если есть).

Опять мимо: само число никак не округляется.
Вероятно, Вы производите форматное преобразование число->строка, выполняемое по умолчанию с двумя знаками после запятой. Если Вас это умолчание не устраивает, формат вывода можно изменить. Только надо понимать, что это не само число, а его приближенная десятичная запись.
А лучше, чтобы ничего не округлялось, передавать число не как строку, а как число.

Потому, Вы задаёте именно два числа после запятой в функции print. Вернее, Вы не задаёте ничего, но там по умолчанию 2. Задайте другое число и будет Вам счастье.

А вообще, поосторожнее с заявлениями типа

Как видите, проблема была именно в программе.