Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Рисование на осциллографе: кастомная графика через R-2R ЦАП на Arduino

Принцип R-2R ЦАП

R-2R лестничный ЦАП — простой 8-битный ЦАП только на резисторах. Нужен резистор R и 2R (два R последовательно). Количество разрядов = число ветвей 2R. Для Arduino Uno: PORTD (8 бит, пины 0-7) и PORTB (6 бит, пины 8-13).

Портовая манипуляция

Прямая запись в регистры портов (DDRD, DDRB, PORTD, PORTB) даёт максимальную скорость. Настройка в setup():

DDRD = B11111111;  // PORTD все 8 бит на выход
DDRB = B00111111;  // PORTB только 6 бит (0-5)

Сборка на макетке

Две R-2R лестницы: 8-битная на PORTD (X), 6-битная на PORTB (Y). Резисторы 10 кОм (2R = два последовательно). Выходы к входам осциллографа (CH1=X, CH2=Y). Общая земля.

Рисование на осциллографе: кастомная графика через R-2R ЦАП на Arduino

Инструмент рисования (Python + tkinter)

Окно 255x255 пикселей. Клик и перетаскивание — рисование. При закрытии генерирует массивы x_points, y_points и NUM_POINTS в файл.

python drawlog.py > arduino_list.txt

В полученном файле заменяете массивы в скетче.

Режим X-Y осциллографа

Переведите осциллограф в X-Y mode. CH1 = PORTD (8 бит), CH2 = PORTB (6 бит, значения сдвинуты >> 2). Настройте масштаб и позицию.

Оптимизация памяти (PROGMEM)

Для Arduino Uno точек ~400 (SRAM). С PROGMEM — до 15 000 точек (Flash):

const byte x_points[NUM_POINTS] PROGMEM = {...};
const byte y_points[NUM_POINTS] PROGMEM = {...};
// В loop:
PORTD = pgm_read_byte_near(x_points + t);
PORTB = pgm_read_byte_near(y_points + t) >> 2;

Примеры изображений

Сердце, спираль, текст, логотипы — все рисуются в X-Y режиме.

Рисование на осциллографе: кастомная графика через R-2R ЦАП на Arduino

Код Arduino

const byte FIGURE_DELAY = 1;
const int NUM_POINTS = 87;
byte x_points[NUM_POINTS] = {106,106,105,...};
byte y_points[NUM_POINTS] = {78,80,81,...};

void setup() {
  DDRD = B11111111;
  DDRB = B00111111;
  for (byte t=0; t

Схемы R-2R

Рисование на осциллографе: кастомная графика через R-2R ЦАП на Arduino Рисование на осциллографе: кастомная графика через R-2R ЦАП на Arduino Рисование на осциллографе: кастомная графика через R-2R ЦАП на Arduino Рисование на осциллографе: кастомная графика через R-2R ЦАП на Arduino

Производственный процесс

  1. Резисторы: основы, типы и практические применения
  2. Построение доступной беспроводной сети датчиков для дома
  3. Мониторинг домашней температуры с панелью управления на Raspberry Pi
  4. Лучшие аксессуары для раскрытия полного потенциала Raspberry Pi
  5. Сборка DIY Google Voice HAT для Raspberry Pi
  6. Точный тест времени реакции на Arduino UNO
  7. Принцип динамического торможения в тяжелых поездах
  8. Полное руководство по выбору правильной ленточной пилы
  9. Пошаговое руководство по ремонту ручки автомобильной двери
  10. Быстрый гид по удалению ржавчины на кузове авто: защитите машину от коррозии