Простой 4х канальный осциллограф для диагностики автомобиля

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

Ставлю себе ТЗ :-)


1. Вид осциллографа – USB приставка к ноутбуку, ибо набольшом экране смотреть удобно, можно сохранять для последующего анализа ну ит.д. и т.п.

2. Тип сигнала – Переменный, Постоянный, Положительнаяполярность. Работа с отрицательными напряжениями не нужна.

3. Кол-во каналов – 4, больше смысла не вижу, но свозможностью расширения до 8.

4. Максимальное входное напряжение - вольт 50, выше смысланет.

5. Чувствительность - 1 милливольт, больше тоже не надо :-)

6. Частота – до 15Кгц, для миллисекундных сигналов за глаза хватит, а других тамнет :-)

7. Удобная программная оболочка.


Приступаем.


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


Долго лопатил просторы интернета на наличие удобной оболочкии в итоге нашел! Называется PowerGraph. Разработала эту прекрасную программу ООО «ДИСофт». На сайте у них есть платнаяи бесплатная версия. В принципе это софт для промышленного использования но онна все 100% подходит для моего осциллографа, работает в режиме самописца и врежиме чистого осциллографа. Эта программа предназначена для:

1. Сбор данных с различных измерительных устройств иприборов.

2. Регистрация, визуализация и обработка сигналов в режимереального времени.

3. Редактирование, математическая обработка и анализ данных.

4. Хранение, импорт и экспорт данных.

Это малая часть того что она умеет :-) И самое главное естьбесплатная версия. Остановился на ней, в сравнении с другими, а я перепробовалболее десятка, это просто идеал для автомобильного осциллографа.


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

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


Теперь железо, а точнее что использовать в роли АЦП. Железодолжно быть доступное, стабильное, не дорогое и легко программироваться. Долгоне думал, остановился на микроконтроллере АТмега 328р. Программируются этимикроконтроллеры банально на С++, точнее на упрощенном С++.

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


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

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

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


Вот скриншот того что должен выдавать микроконтроллер в СОМпорт для нашей программы PowerGraph.

Осциллограф у меня будет работать в 4х режимах - 1канал,2канала, 3канала и 4 канала.

Переключение между каналами будет осуществляться по кругунажатием на кнопку.

При включении канала будет загораться светодиод индикацииработы канала.

Вот написал программку. Сам я не программист, по семунаписал как смог, сильно не критикуйте, расстроюсь :-) Программа полностьюрабочая и проверена не однократно в деле. Как заливать программу в платурассказывать не буду, в инете на каждом углу это с картинками рассказано :-)


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


intregim=1;

int flag=0;

voidsetup() 

{

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);

floatvoltageport0 = port0 * (4.745 / 1023.000);

floatvoltageport1 = 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);

floatvoltageport0 = port0 * (4.745 / 1023.000);

floatvoltageport1 = port1 * (4.745 / 1023.000);

floatvoltageport2 = 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);

floatvoltageport0 = port0 * (4.745 / 1023.000);

floatvoltageport1 = port1 * (4.745 / 1023.000);

floatvoltageport2 = port2 * (4.745 / 1023.000);

floatvoltageport3 = 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 цифровых входов/выходов. Вот и будем работать с ними.

Аналоговые № 0,1, 2, 3 будем использовать как входыосциллографа. Сделаем для них защиту и дополнительный вход через делитель 1х10,так как подавать на микроконтроллер максимум можно всего 5.2 вольта. Сделителем можно будет работать с напряжениями до 50 вольт, что полностьюперекрывает наши потребности.

Цифровые № 2,3,4,5 будем использовать для светодиодов, онибудут индицировать включенные аналоговые входы.

Цифровой №7 будет подключен к кнопке которая будетпереключать режимы моего осциллографа.

Еще будет кнопка Бут режима. Плата по умолчанию в бутрежиме, но для работы это не удобно, ибо управление идет через RESET.  При обращении к СОМ порту идет инициализацияСОМ порта и чип эмулятор посылает резет на микроконтроллер. То есть  при запуске программы плата ребутится исбрасывает настройки которые выставили кнопкой, это не удобно. Для того что быэтого безобразия не было, я сее отключаю с помощью кнопки. Она подключает входмикроконтроллера «RESET»  кэлектролитическому конденсатору 10Мкф, конденсатор сглаживает посылку наперезагрузку. Эта же цепь используется при заливке прошивки, по сему на моментпрограммирования надо конденсатор отключать. Назвал эту кнопку Бут кнопкой :-)


Ну вот, как подключать понятно, осталось воплотить в железе.


Начнем с защиты и делителя.

Защиту будет обеспечивать стабилитрон на 5.1в. А делитель будетобычный на резисторах.

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

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

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

А вот финальная схема. Плату Ардуино можете любую использовать.

По подробней распишу:

1. Входной сигнал через входные делители с защитой идут нааналоговые входы А0, А1, А2, А3.

2. К цифровым входам/выходам D2, D3, D4, D5 подключены светодиодычерез токоограничивающие резисторы. Для моих диодов это 500Ом.

3. К цифровому входу/выходу D7 подключена кнопка, ей режимработы выбирается.

4. Конденсатор С1 10мф, через кнопку с фиксацией илиползунковый переключатель, подключен к входу RSET. Это у меня Бут режим такреализован.

5. Схема не нуждается в настройке и работает сразу. НО! Дляпроведения точных замеров ОБЯЗАТЕЛЬНО! Нужно откалибровать плату. Для этого навыходе «5V» платы нужно замерить реальное напряжение цифровым тестером ивписать в программу! У меня вписано допустим 4.745 у вас другое будет. Этоопорное напряжение ЦАП, обычно колеблется от 4.650 до 5.080. Колебания зависятот качества платы, падения напряжения на диоде шотки (смотри схему), падениянапряжения в усб проводе, напряжения которое выходит из ноута. В общем замерилии втоптали в программу, там во всех местах свое напряжение поставить надо.


Вот так все просто :-)

Ну раз схему разработали то настала пора воплотить это все в«железе».


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


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

Для начала подготовим корпус. Просверлим все отверстия.

Далее, навесным монтажом, смонтируем делители прямо на блокеразъемов.

Вот так, просто – надежно - удобно.

Теперь примерим плату, проведем формовку выводов делителя ина них напаяем плату.

Вот так вот. Выходит очень удобно и компактно.

Смонтируем в корпус светодиоды, кнопку, переключатель иконденсатор. Вот так. Длинна проводов достаточная но не избыточная.

Почти все готово, осталось впаять плату в корпус.

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

Теперь можно закрыть корпус, залить прошивку и проверитьработу. У меня все ОК.

Вот и все, мой автомобильный осциллограф готов.

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

Пора приступать к испытанием на авто.

Все отлично и очень удобно. Как и планировал :-)

Тему датчиков в этом посте не затрагиваю, ибо очень онаобъемная. Но все датчики легко самому изготовить и емкостные и индуктивные иконтактные… Может отдельно напишу об них…

Вот так просто можно сделать себе качественный автомобильныйосциллограф.

На этом все, ни гвоздя вам ни жезла :-)

Рекомендуем
@berez
@drace
Тренды

Fastler - информационно-развлекательное сообщество которое объединяет людей с различными интересами. Пользователи выкладывают свои посты и лучшие из них попадают в горячее.

Контакты

© Fastler v 2.0.2, 2024


Мы в социальных сетях: