Осциллограф для автомобильной диагностики по доступной цене

Осциллограф для диагностики автомобилей с 4 каналами

Меня заинтересовал автомобильный осциллограф, когда я увидел цены на него, я был поражен… Они стоят как крыло самолета. Интересно, почему так, ведь требования к осциллографу для тестирования автомобилей очень низкие как по частотам, так и по напряжению. Поэтому я решил сделать свой собственный.

1. Я выбрал осциллограф в виде USB-адаптера для ноутбука, потому что на большом экране удобно смотреть, можно сохранять результаты для дальнейшего анализа и так далее.
2. Тип сигнала — переменный, постоянный, с положительной полярностью. Работа с отрицательными напряжениями не требуется.
3. Количество каналов — 4, больше не нужно, но есть возможность расширения до 8.
4. Максимальное входное напряжение — 50 вольт, больше не нужно.
5. Чувствительность — 1 милливольт, больше тоже не нужно :-)
6. Частота — до 20 кГц, этого хватает для миллисекундных сигналов, остальные частоты не нужны :-)
7. Удобная программная оболочка.

Позвольте начать с самого существенного — оболочки для автомобильного осциллографа. Да, вы правильно поняли, оболочки. Потому что производство железной составляющей не является проблемой, но иметь удобную оболочку — это редкость. Просто оболочки, которые просто отображают сигнал в реальном времени для автомобильных осциллографов, являются крайне неудобными, поскольку часто требуется анализировать сигнал в течение длительного времени и иметь возможность перематывать вспять. Поэтому требуется оболочка вроде «Самописец-Осциллограф». И конечно, чтобы количество каналов было не меньше 4-х…

Долго искал просторы интернета, чтобы найти удобную программу, и я нашел его! Его называют PowerGraph. Он был разработан ООО «ДИСофт». У них есть платная и бесплатная версии на их сайте. В основном он предназначен для промышленного использования, но он отлично подходит для моего осциллографа. Он работает как самописец и как обычный осциллограф. Эта программа предназначена для следующих целей:
1. Сбор данных с различных измерительных устройств и приборов.
2. Запись, визуализация и обработка сигналов в режиме реального времени.
3. Изменение, математическая обработка и анализ данных.
4. Хранение, импорт и экспорт данных.
Это только малая часть его возможностей :-) И самое главное, есть бесплатная версия. Я остановился на ней, и в сравнении с другими (я попробовал более десятка), это просто идеальный выбор для автомобильного осциллографа.

Вот она, на мой взгляд, самая великолепная. Это не реклама, это истина :-) ИМХО конечно.

Итак, я определился с программным обеспечением, теперь нужно решить вопрос с интерфейсом. Я решил выбрать СОМ-порт. Работать с ним просто, его пропускная способность более чем достаточна для моих задач, и выбранное программное обеспечение имеет драйвер вывода информации через СОМ-порт.

Теперь давайте поговорим о аппаратной составляющей, а именно об использовании АЦП. Я искал доступное, стабильное, недорогое и легко программируемое решение. Не долго думая, я выбрал микроконтроллер АТмега 328р. Эти микроконтроллеры программируются на С++.

Очень удобно, что можно купить уже готовую плату с минимально необходимым комплектующими, которая называется Ардуино. Таким образом, нет необходимости самостоятельно проектировать и паять плату. АТмега 328р полностью соответствует всем требованиям из моего технического задания, поэтому я собираюсь использовать именно ее.

Для уменьшения размера я использую такую вот модель. Она оснащена 8 аналоговыми входами, которые полностью соответствуют требованиям технического задания. Кроме того, на ней установлен эмулятор порта COM на микросхеме СН340, а питание подается напрямую через USB-порт. В общем, все, что нужно. В качестве Ардуино можно использовать любую модель на базе микроконтроллера 328р.

Вот изображение этой платы. На ней установлен основной микроконтроллер АТмега 328р, простой эмулятор СОМ порта на СН340, кварцевый резонатор и стабилизатор питания на ЛМке для подключения к внешнему источнику питания при необходимости. В общем, это все, а также несколько лампочек и фильтров, но они не учитываются :-) То есть все, что нам нужно и ничего лишнего! Как говорится, простота — залог совершенства.

Необходимо разработать программу для микроконтроллера, которая будет непрерывно опрашивать аналоговый вход и передавать данные о напряжении в СОМ-порт в режиме реального времени. Если имеется несколько каналов, то все необходимые входы будут опрашиваться поочередно, и данные будут передаваться в СОМ-порт с использованием табуляции в качестве разделителя. Все это довольно просто.

Далее представлена скриншот из СОМ-порта, который должен генерировать микроконтроллер для работы с нашей программой PowerGraph.

У меня есть осциллограф, который будет работать в четырех режимах: 1-й канал, 2-й канал, 3-й канал и 4-й канал.
Переключение между каналами будет осуществляться по кругу с помощью кнопки.
При включении канала будет загораться светодиод, указывающий работу выбранного канала.
Вот я написал программу. Я не программист, поэтому написал ее самостоятельно, не судите меня строго, я буду огорчен :-) Программа полностью рабочая и была проверена несколько раз в деле. Я не буду рассказывать, как загружать программу на плату, так как это представлено в интернете на каждом углу с иллюстрациями :-)

Вот сама программа.

int regim=1;
int flag=0;
void setup()
digitalWrite(07, HIGH);
Serial.begin(128000);//скорость СОМ порта должна совпатать со скорость в драйвере
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
>
void loop()
if(digitalRead(07)==HIGH && flag==0)//если кнопка нажата
// и переменная flag равна 0, то …
regim++;
flag=1;
if(regim>4)//ограничим количество режимов
regim=1;//так как мы используем только одну кнопку,
// то переключать режимы будем циклично
>
>
if(digitalRead(07)==LOW && flag==1)//если кнопка НЕ нажата
// и переменная flag равна — 1, то …
flag=0;//обнуляем переменную «knopka»
>
if(regim==1)//первый режим
digitalWrite(2, HIGH);//включение светодиода
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
// читаем аналоговый вход pin 0:
int port0 = analogRead(A0);
//Преобразуем аналоговые показания (которые идут от 0 до 1023) в напряжение (0 — 5 В)
float voltageport0 = port0 * (4.745 / 1023.000);//4.745 опорное напряжение, замеряется при калибровке на плате
// выводим значение напряжения в порт
Serial.println(voltageport0,3);// печатаем значение в порт и жмем энтер
//задержка для стабильности
delay(1);
>
if(regim==2)//второй режим
digitalWrite(2, HIGH);//включение светодиодов
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
int port0 = analogRead(A0);
int port1 = analogRead(A1);
float voltageport0 = port0 * (4.745 / 1023.000);
float voltageport1 = port1 * (4.745 / 1023.000);
Serial.print(voltageport0,3);// печатаем значение в порт
Serial.print(» «);// печатаем таб
Serial.println(voltageport1,3);// печатаем значение в порт и жмем энтер
delay(1);
>
if(regim==3)//Третий режим
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
int port0 = analogRead(A0);
int port1 = analogRead(A1);
int port2 = analogRead(A2);
float voltageport0 = port0 * (4.745 / 1023.000);
float voltageport1 = port1 * (4.745 / 1023.000);
float voltageport2 = port2 * (4.745 / 1023.000);
Serial.print(voltageport0,3);
Serial.print(» «);
Serial.print(voltageport1,3);
Serial.print(» «);
Serial.println(voltageport2,3);
delay(1);
>
if(regim==4)//Четвертый режим
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
int port0 = analogRead(A0);
int port1 = analogRead(A1);
int port2 = analogRead(A2);
int port3 = analogRead(A3);
float voltageport0 = port0 * (4.745 / 1023.000);
float voltageport1 = port1 * (4.745 / 1023.000);
float voltageport2 = port2 * (4.745 / 1023.000);
float voltageport3 = port3 * (4.745 / 1023.000);
Serial.print(voltageport0,3);
Serial.print(» «);
Serial.print(voltageport1,3);
Serial.print(» «);
Serial.print(voltageport2,3);
Serial.print(» «);
Serial.println(voltageport3,3);
delay(1);
>
>

Программа завершена и успешно отлажена.
Теперь перейдем к электронному разделу.

Чертеж был представлен ранее. Из него видно, что на плате есть 8 аналоговых входов и 14 цифровых входов/выходов. Продолжим работать с этими возможностями.

Итак, теперь, когда мы понимаем, как подключать, нам остается только реализовать это на практике.

Давайте начнем с обеспечения защиты и создания делителя.
В качестве защиты мы будем использовать стабилитрон с напряжением 5.1 вольта. А делитель будет обычным, состоящим из резисторов.
Поскольку наши сигналы являются низкочастотными, это упрощает нашу жизнь. В расчетах делителя нам не нужно учитывать внутреннее сопротивление приемника, не нужно согласовывать вход с делителем, не нужно учитывать волновое сопротивление кабеля и разъемов.
Нам просто нужно посмотреть в даташите микроконтроллера, какое сопротивление нагрузки оптимально для его АЦП, и создать делитель с таким выходным сопротивлением. Таким образом, мы достигнем максимальной точности в 0.005 вольта. В даташите указано, что он оптимизирован для выходного сопротивления нагрузки 10 кОм. Внутреннее сопротивление АЦП составляет 100 МОм…

Я создал следующую схему. R1 и R2 являются делителями напряжения, R2 также определяет сопротивление выхода делителя. Я использовал значение 10 кОм, так как ЦАП оптимизирован для такого сопротивления. R3 и VD1 служат для защиты от перенапряжения. На вход АЦП нельзя подавать напряжение выше 5.2 В. VD1 является стабилитроном на 5.1 В и может быть любым. R3 — это резистор, ограничивающий ток стабилитрона во время его открытия. Вот такая простая схема делителя с защитой.

Вот как всё просто!

Поскольку мы уже разработали схему, пришло время воплотить все это в реальности.

Мы возьмем любой корпус, необходимые разъемы, кнопку, переключатель, резисторы, диоды, стабилитроны и начнем создание автомобильного осциллографа из этих компонентов.

Вот какой набор деталей у меня имеется.

Для начала подготовки необходимо подготовить корпус, а это означает просверлить все имеющиеся отверстия.

После растворимой сборки, установим делители непосредственно на блоке разъемов.
Вот так, легко — надежно — удобно.

Давайте сначала попробуем надеть плату, затем сформируем коннекторы делителя и припаяем их к плате.
Таким образом, получается очень удобно и компактно.

Установим светодиоды, кнопку, переключатель и конденсатор внутрь корпуса. Вот, делаем. Провода достаточной длины, но не слишком длинные.

Осталось только вставить плату в корпус и все будет готово.

Установить блок разъемов в экстерьер. Применить синтетическую изоленту, без которой никак нельзя! Создать защитный элемент для провода типа УСБ.

Теперь возможно закрыть корпус, залить прошивку и провести проверку функционирования. У меня всё в порядке.

Моя автомобильная осциллография готова к использованию. С ее помощью можно диагностировать расходомер воздуха (МАФ), генератор, катушки зажигания, датчики положения коленчатого и распределительного валов. Также можно проверить правильность установки ГРМ, состояние форсунок и пульсацию топлива в топливном рампе, что позволяет косвенно оценить работу насоса и регулятора давления топлива… В общем, это полезный инструмент в хозяйстве. Особенно он пригодится, если какое-то устройство отказало не полностью, но все же ушло от заданных параметров и мозг не замечает этого.

Пришло время приступить к предстоящим автомобильным испытаниям.
Все проходит замечательно и весьма комфортно. Как и задумывалось :-)

В данной статье не будет затрагиваться тема датчиков, так как она очень объемная. Однако, все датчики легко можно изготовить самостоятельно — как емкостные, так и индуктивные и контактные. Возможно, стоит в следующей записи подробнее рассказать об этих устройствах…

Вот как легко можно создать высококачественный осциллограф для автомобиля.
И все, ни клепки, ни посошка :-)

Понравилась статья? Поделиться с друзьями в социальных сетях:
Toyota Club
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: