Удобный 4-канальный осциллограф для проверки автомобиля.
Мне понадобился автомобильный осциллограф, я посмотрел цены и был удивлен… Цены просто зашкаливают, как будто это крыло самолета. Кстати, не понятно почему, ведь параметры осциллографа для проверки автомобиля очень низкие, как по частотам, так и по напряжению. Поэтому я решил сделать его сам.
1. Я решил использовать USB-приставку для ноутбука в качестве осциллографа, потому что удобно смотреть на большом экране, можно сохранять данные для последующего анализа и так далее.
2. Я выбрал тип сигнала: переменный, постоянный, с положительной полярностью. Мне не нужно работать с отрицательными напряжениями.
3. Я решил использовать 4 канала, больше не вижу смысла, но есть возможность расширения до 8.
4. Максимальное входное напряжение — 50 вольт, больше не нужно.
5. Чувствительность — 1 милливольт, больше тоже не нужно
6. Частота — до 20 Кгц, для миллисекундных сигналов этого более чем достаточно.
7. Я ищу удобную программную оболочку.
Начну с самого главного – Оболочки для автомобильного осциллографа. Да да, именно с оболочки. Ведь железо не так сложно сделать, а вот удобная оболочка – это настоящая редкость. Оболочки, которые просто показывают сигнал в реальном времени для автомобильного осциллографа, не очень удобны, потому что часто нужно анализировать сигнал в течение длительного времени и иметь возможность вернуться назад. Поэтому нужна оболочка вроде Самописца-Осциллографа. И чтобы было не менее 4 каналов…
Долго искал в просторах интернета удобную оболочку и, наконец, нашел то, что искал! Это называется PowerGraph. Эту замечательную программу разработала компания ООО «ДИСофт». На их сайте есть платная и бесплатная версии. В общем, это программное обеспечение предназначено для промышленного использования, но оно на все 100% подходит для моего осциллографа. Оно работает как самописец и как обычный осциллограф. Эта программа предназначена для следующих целей:
1. Сбор данных с различных измерительных устройств и приборов.
2. Регистрация, визуализация и обработка сигналов в режиме реального времени.
3. Редактирование, математическая обработка и анализ данных.
4. Хранение, импорт и экспорт данных.
Это только малая часть того, что она умеет И самое главное, есть бесплатная версия. Я остановился на ней, после того как перепробовал более десятка других программ. Она просто идеально подходит для автомобильного осциллографа.
Вот она, по моему мнению, самая превосходная. Это не реклама, это действительность Лично я так считаю.
Итак, я уже определился с программным обеспечением, теперь нужно решить вопрос с интерфейсом. Я выбрал использовать СОМ-порт. Работать с ним очень просто, он обладает достаточной пропускной способностью для моих задач, и в выбранном программном обеспечении есть драйвер для вывода информации через СОМ-порт.
Теперь осталось решить вопрос с железом, а именно с выбором АЦП. Мне нужно, чтобы оно было доступным, стабильным, недорогим и легко программировалось. Я не долго думал и остановился на микроконтроллере АТмега 328р. Эти микроконтроллеры можно программировать на языке С++, что очень удобно.
Особенно удобно то, что этот микроконтроллер можно приобрести уже смонтированным на плате с минимальным набором необходимых компонентов. Это называется Ардуино Таким образом, мне не нужно самому разводить и паять плату, что очень удобно. Микроконтроллер АТмега 328р полностью соответствует всем параметрам моего технического задания, поэтому я решил использовать его.
Для уменьшения размеров я использовал такую вот плату. Она обладает 8 аналоговыми входами, которые полностью соответствуют требованиям технического задания. Кроме того, на плате есть эмулятор СОМ порта на СН340, и она питается напрямую от USB порта. В общем, это именно то, что нужно. Можно использовать любую Ардуинку на базе 328р.
Вот схема данной платы. На ней установлен микроконтроллер АТмега 328р, эмулятор СОМ порта СН340, кварц и стабилизатор питания ЛМка для подключения к внешнему источнику питания. Также присутствуют несколько лампочек и фильтров. Все необходимое и ничего лишнего! Говорят, что совершенство заключается в простоте.
Сейчас требуется разработать программу для микроконтроллера. Нам необходимо постоянно опрашивать аналоговый вход и передавать данные о величине напряжения в СОМ порт в режиме реального времени. Если у нас есть несколько каналов, то мы опрашиваем все необходимые входы по кругу, и данные передаются в СОМ порт с использованием табуляции в качестве разделителя. Вот так все просто.
Вот скриншот того, что должен выводить микроконтроллер в СОМ порт для нашей программы PowerGraph.
У меня будет осциллограф, который будет работать в четырех режимах: 1-й канал, 2-й канал, 3-й канал и 4-й канал.
Переключение между каналами будет осуществляться круговым образом с помощью кнопки.
При включении канала будет загораться светодиод, указывающий на работу данного канала.
Вот я написал программу. Я сам не программист, поэтому написал ее насколько смог, не судите меня слишком строго, я расстроюсь Программа полностью рабочая и была проверена неоднократно на практике. Я не буду рассказывать, как загружать программу на плату, так как в интернете на каждом углу это уже подробно описано с картинками
Вот сама программа.
int режим = 1;
int флаг = 0;
void установка()
digitalWrite(07, ВЫСОКИЙ);
Serial.begin(128000);//скорость СОМ порта должна совпатать со скорость в драйвере
pinMode(2, ВЫХОД);
pinMode(3, ВЫХОД);
pinMode(4, ВЫХОД);
pinMode(5, ВЫХОД);
>
void цикл()
if(digitalRead(07)==ВЫСОКИЙ&&флаг==0)//если кнопка нажата
// и перемення флаг равна 0, то …
режим++;
флаг=1;
if(режим>4)//ограничим количество режимов
режим=1;//так как мы используем только одну кнопку,
// то переключать режимы будем циклично
>
>
if(digitalRead(07)==НИЗКИЙ&&флаг==1)//если кнопка НЕ нажата
//и переменная флаг равна — 1, то …
флаг=0;//обнуляем переменную «knopka»
>
if(режим==1)//первый режим
digitalWrite(2, ВЫСОКИЙ);//включение светодиода
digitalWrite(3, НИЗКИЙ);
digitalWrite(4, НИЗКИЙ);
digitalWrite(5, НИЗКИЙ);
// читаем аналоговый вход pin 0:
int порт0 = analogRead(A0);
//Преобразовываем аналоговые показания (которые идут от 0 до 1023) в напряжение (0 — 5 В)
float напряжениепорт0 = порт0 * (4.745 / 1023.000);//4.745 опорное напряжение, замеряется при калибровке на плате
// выводим значение напряжения в порт
Serial.println(напряжениепорт0,3);// печатаем значение в порт и жмем энтер
//задержка для стабильности
задержка(1);
>
if(режим==2)//второй режим
digitalWrite(2, ВЫСОКИЙ);//включение светодиодов
digitalWrite(3, ВЫСОКИЙ);
digitalWrite(4, НИЗКИЙ);
digitalWrite(5, НИЗКИЙ);
int порт0 = analogRead(A0);
int порт1 = analogRead(A1);
float напряжениепорт0 = порт0 * (4.745 / 1023.000);
float напряжениепорт1 = порт1 * (4.745 / 1023.000);
Serial.print(напряжениепорт0,3);// печатаем значение в порт
Serial.print(» «);// печатаем таб
Serial.println(напряжениепорт1,3);// печатаем значение в порт и жмем энтер
задержка(1);
>
if(режим==3)//Третий режим
digitalWrite(2, ВЫСОКИЙ);
digitalWrite(3, ВЫСОКИЙ);
digitalWrite(4, ВЫСОКИЙ);
digitalWrite(5, НИЗКИЙ);
int порт0 = analogRead(A0);
int порт1 = analogRead(A1);
int порт2 = analogRead(A2);
float напряжениепорт0 = порт0 * (4.745 / 1023.000);
float напряжениепорт1 = порт1 * (4.745 / 1023.000);
float напряжениепорт2 = порт2 * (4.745 / 1023.000);
Serial.print(напряжениепорт0,3);
Serial.print(» «);
Serial.print(напряжениепорт1,3);
Serial.print(» «);
Serial.println(напряжениепорт2,3);
задержка(1);
>
if(режим==4)//Четвертый режим
digitalWrite(2, ВЫСОКИЙ);
digitalWrite(3, ВЫСОКИЙ);
digitalWrite(4, ВЫСОКИЙ);
digitalWrite(5, ВЫСОКИЙ);
int порт0 = analogRead(A0);
int порт1 = analogRead(A1);
int порт2 = analogRead(A2);
int порт3 = analogRead(A3);
float напряжениепорт0 = порт0 * (4.745 / 1023.000);
float напряжениепорт1 = порт1 * (4.745 / 1023.000);
float напряжениепорт2 = порт2 * (4.745 / 1023.000);
float напряжениепорт3 = порт3 * (4.745 / 1023.000);
Serial.print(напряжениепорт0,3);
Serial.print(» «);
Serial.print(напряжениепорт1,3);
Serial.print(» «);
Serial.print(напряжениепорт2,3);
Serial.print(» «);
Serial.println(напряжениепорт3,3);
задержка(1);
>
>
Разработка программы завершена и успешно протестирована.
Теперь перейдем к электронной части.
Выше была представлена схема. Из нее видно, что на плате имеется 8 аналоговых входов и 14 цифровых входов/выходов. Именно с ними мы и будем работать.
Вот, когда мы понимаем, как подключать, остается только реализовать на практике.
Давайте начнем с защиты и делителя.
Защиту обеспечит стабилитрон с напряжением 5.1В. А делитель будет обычным, состоящим из резисторов.
Так как наши сигналы будут низкочастотными, это значительно упрощает задачу. При расчете делителя не нужно учитывать внутреннее сопротивление приемника, не нужно согласовывать вход с делителем, не нужно учитывать волновое сопротивление кабеля и разъемов.
Просто нужно посмотреть в даташите микроконтроллера, на какое сопротивление выхода оптимизирован его АЦП, и сделать делитель с таким выходным сопротивлением. Таким образом, мы достигнем максимальной точности в 0.005 вольта. В даташите указано, что он оптимизирован для 10Ком выходного сопротивления нагрузки. Внутреннее сопротивление АЦП составляет 100Мом…
Я разработал такую схему. R1 и R2 являются делителями, причем R2 также определяет сопротивление выхода делителя. Я выбрал значение R2 равным 10 кОм, так как ЦАП оптимизирован для работы с таким сопротивлением. R3 и VD1 представляют собой защиту от перенапряжения. На вход АЦП нельзя подавать напряжение выше 5.2 В. VD1 — это стабилитрон с напряжением 5.1 В, который можно использовать любой. R3 является ограничительным резистором, который ограничивает ток стабилитрона при его открытии. Вот такой простой делитель с защитой.
Все на самом деле так просто
После того, как схема была разработана, настало время приступить к реализации этого проекта.
Для этого мы возьмем корпус, разъемы, кнопку, переключатель, резисторы, диоды, стабилитроны и начнем собирать автомобильный осциллограф.
Вот какой набор деталей у меня.
Прежде всего, необходимо подготовить корпус, пробурив все отверстия.
Затем, установим делители непосредственно на блоке разъемов с помощью навесного монтажа.
Таким образом, это будет просто, надежно и удобно.
Теперь мы приступим к надеванию платы, выполним формовку выводов делителя и припаяем плату на них.
Вот таким образом. Получается очень удобно и компактно.
Установим в корпус светодиоды, кнопку, переключатель и конденсатор. Вот так. Длина проводов достаточна, но не избыточна.
Практически все готово, осталось вставить плату в корпус.
Установить блок разъемов в корпус. Взять голубую изоленту, без нее ни в коем случае! Создать ограничитель для провода УСБ.
Теперь можно закрыть корпус, загрузить прошивку и проверить работу. У меня все в порядке.
Мой автомобильный осциллограф готов к использованию. С его помощью можно проводить диагностику таких компонентов, как расходомер воздуха (МАФ), генератор, катушки зажигания, датчики положения коленчатого и распределительного валов. Также осциллограф позволяет проверить правильность установки ГРМ и работу форсунок. Пульсация топлива в рампе позволяет косвенно оценить работу топливного насоса и регулятора давления. В общем, это очень полезное устройство в хозяйстве. Особенно оно пригодится, когда какое-либо устройство начинает работать неисправно, но мозг автомобиля не обнаруживает эту проблему.
Пришло время приступить к испытаниям на автомобиле.
Все идеально и очень комфортно. Точно так, как я задумывал
В данной статье не будет рассматриваться тема датчиков, так как она очень обширна. Однако, все датчики можно легко изготовить самостоятельно, будь то емкостные, индуктивные или контактные. Возможно, в отдельной статье я расскажу подробнее о них.
Вот так легко можно создать себе высококачественный автомобильный осциллограф.
Это все, ни гвоздя вам ни жезла