Измерение уровня
- Войдите на сайт для отправки комментариев
Чт, 05/11/2020 - 23:36
Друзья, прошу Вашей помощи! Есть схема, на выходе нужно с помощью ардуино измерять уровень, и на заданном уровне ардуино должна исполнить команду для замыкания реле, коммутирующего этот же выход на регистратор переговоров. Есть макет и написан скетч, но есть проблема в погрешности измерений уровня (частые ложные срабатывания или наоборот отсутствие срабатывания).
Со сторонних ресурсов лень смотреть. Прочитайте правила форума в разделе песочница.
А где схема и скетч? Почему сюда не выложены?
по прикрепленным ссылкам
Это диагноз.
static const uint8_t PIN_LED = A0; // Вх измерения U static const uint8_t PIN_RELAY = 5; // Реле float Step = 5.0F / 1024; // Вычисляем шаг Uопорн / на градацию uint32_t disableTime = 0; // Время выключения реле. void setup() { Serial.begin(9600); // Задаем скорость работы монитор порта pinMode(PIN_LED, INPUT); pinMode(PIN_RELAY, OUTPUT); digitalWrite(PIN_RELAY, HIGH); // для безопасности return; } void loop() { uint32_t time = millis(); uint8_t analogValue = analogRead(PIN_LED); // Задаем переменную analogValue для считывания показаний float voltageValue = analogValue * Step; // Переводим в вольты (показание * шаг) Serial.println(voltageValue); // Выводим значение в вольтах в порт if(voltageValue > 0.9) { digitalWrite(PIN_RELAY, LOW); disableTime = time + 10000; } if(disableTime > time && voltageValue > 0.4) { disableTime = time + 10000; } if(disableTime < time) { digitalWrite(PIN_RELAY, HIGH); } return; }объясните зачем во флоатах делаете? для начала привести всё в uint16_t и смотреть насколько моросит, может и проблема уйдёт
по прикрепленным ссылкам
Сюда давайте и схему и скетч
по прикрепленным ссылкам
Сюда давайте и схему и скетч
может не надо? смотрите, я предупреждал, на всякий случай обезболивающего коньячку примите )))
строчка 21 - ошибка в размерности переменной.
Ответьте-ка какой диапазон выходных данных analogRead()?
Прочитайте тему про сглаживание данных, пару дней назад мелькала. Проблема уйдёт. Ну и #9 конечно.
диапазон от 0,5 В до 2 В
диапазон от 0,5 В до 2 В
я не про это.
Вы в курсе, какой ЧИСЛОВОЙ диапазон выдает функция analogRead() ?
Ну там - от нуля до 100, от нуля до тыщи.. ? Документацию читали?