Перейти к содержанию

Как зафиксировать масштаб графика в Serial Plotter Arduino?

Обновлено Редакция GAW

Плоттер Arduino IDE 2 подстраивает вертикальную ось под данные в окне (наше наблюдение): когда сигнал почти постоянный, шум растягивается на всю высоту, а при всплеске масштаб скачет. Ручной настройки шкалы в документации плоттера нет, но её легко задать самими данными.

Приём с постоянными линиями

В примере Arduino вместе с показанием потенциометра печатается постоянная переменная со значением 500 — как опорная линия. Тот же приём фиксирует масштаб: печатают две постоянные, нижнюю и верхнюю границу, и ось всегда их охватывает.

void loop() {
  int raw = analogRead(A0);
  Serial.print("min:0,max:1023,raw:");
  Serial.println(raw);
  delay(20);
}
ДанныеНижняя границаВерхняя граница
АЦП Arduino Uno, 10 бит01023
АЦП ESP32, 12 бит04095
Напряжение при опоре 5 В05
Температура в комнате1535

Подписи «имя:» и разделители — запятая, табуляция или пробел — описаны в документации Arduino. Если график не появляется совсем, причины разобраны в ответе «Почему Serial Plotter в Arduino IDE не показывает график».

Плоттер со своей шкалой

Онлайн-плоттер на нашем сайте читает тот же формат и позволяет задать пределы оси вручную, без лишних рядов, а также сохранить данные в CSV. Лишние ряды удлиняют строку: сколько строк в секунду проходит на выбранной скорости, считает калькулятор кадра UART, а нелинейность АЦП ESP32 у краёв диапазона показывает калькулятор АЦП ESP32.

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

Не мешают ли лишние линии на графике?

Они видны как две горизонтальные прямые на краях графика и не искажают данные. Подписи вроде min и max сразу показывают, что это границы, а не измерения; в CSV и логах их легко отфильтровать по имени.

Какие пределы печатать для ESP32?

Для 12-битного АЦП ESP32 — 0 и 4095, для 10-битного АЦП Arduino Uno — 0 и 1023, для напряжения в вольтах — 0 и опорное напряжение. Можно и уже: например, 2000 и 2200, чтобы рассмотреть шум вокруг среднего значения.

Не замедлит ли это скетч?

Каждая лишняя пара «min:0,max:1023,» добавляет 15 байт в строку. Наш расчёт: на 115 200 бод это примерно 1,3 мс на строку — при частом выводе стоит поднять скорость порта.

Источники

  1. Arduino. Using the Serial Plotter Tool (Arduino IDE 2 documentation, Karl Söderby) — пример выводит вместе с потенциометром постоянную переменную static_variable = 500 как опорную линию; разделители — запятая, табуляция или пробел; строки заканчиваются CR LF или LF; подписи рядов — префикс «имя:»
  2. Arduino. arduino-serial-plotter-webapp, README — плоттер Arduino IDE 2 — веб-приложение на React и Chart.js, получает точки по WebSocket; настройки передаются параметрами URL и сообщениями, в том числе интерполяция графика

Нашли ошибку?