Логический анализатор на arduino: вариант реализации

Лаборатория юного радиолюбителя. “Toy Logic Analyzer”

Наверняка каждый попадал в ситуацию, когда пытаешься отладить какую-нибудь цифровую схему, а она ну ни как не работает должным образом. Особенно неудобно в Arduino IDE, где тебе для отладки доступны лишь вывод в COM-порт какой либо информации или светодиодик 🙂 Кто пробовал — тот знает.

И обязательно кто-нибудь из наблюдающих за твоими тщетными попытками наладить работу бросает фразу: «Тебе тут логический анализатор нужен». В какой-то момент времени мне это надоело и я решил выяснить что это за зверь, чем он лучше осциллографа и действительно ли мне он необходим.
Что бы узнать, что это такое, первым делом ищем описание во всемирной паутине. Логический анализатор (англ.

Logic Analyzer) — электронный прибор, который может записывать и отображать последовательности цифровых сигналов. Он используется для тестирования и отладки цифровых электронных схем, например, при проектировании компонентов компьютеров и управляющих электронных устройств.

В отличие от осциллографов, логические анализаторы имеют значительно больше входов (обычно от 16 до нескольких сотен), но при этом часто способны показывать лишь два уровня сигнала («0») и («1»), к которым иногда добавлено состояние «Z».

Ну что же, наверняка стоящая штука. Понятное дело, что покупка фирменного изделия (USBee, Saleae и т.п.) — не наш метод. Закажем клон в Китае ().

А пока заказанная посылка была в пути (да и время позволяло), я решил попробовать реализовать функции логического анализатора на Ардуино. Как говорит мой приятель Иванович: «Используй то, что под рукою и не ищи себе другого» 🙂

Задумка «в крупную клетку» выглядела так: к входным пинам Ардуино подключаем анализируемые линии, быстро-быстро читаем состояние этих пинов собирая данные (чем больше данных — тем лучше) и выводим полученный результат в неком удобоваримом виде на экран.

Всего делов то! Я к этому моменту был уже немного «подкован» и знал, что для того что бы получилось «быстро-быстро» — явно не подходит. Почему? Потому что МЕ-ДЛЕ-ННО!!! Вот тут по этому поводу. Так что остается самый быстрый и удобный способ — соответствующего порта.

На тот момент мне казалось, что реализация моего проекта «Toy Logic Analyzer» — буквально «вечер-другой» работы. Вот как я представлял себе «изюминку» этого анализатора (оставалось только дорисовать «рюшечки»):

void loop() { Serial.println(PINC); //выводим состояние битов порта } Но, по мере погружения в проект я понял, что все не так просто. Сразу же встал вопрос насчет «Чем больше данных-тем лучше». Для поиграться/пощупать, мне вполне будет достаточно 4-х каналов. Только нужно определиться с пинами подключения анализируемых линий. Посмотрим на распиновку Ардуино:
Наиболее подходящими мне показались порты D (Pin8..Pin11) и C (A0..A3). Во первых, пины идут подряд и во вторых — являются младшими битами соответствующего порта, что очень даже удобно. Свой окончательный выбор я остановил на порту C. При таком варианте, прочитав состояние порта и обнулив старшие 4-ре бита, мы получаем значения логических уровней на каждом из подключенных каналов (далее по тексту я буду использовать термин СОСТОЯНИЕ ШИНЫ). Читая таким образом состояние шины через некие промежутки времени мы будем получать числовые значения BUS_DATA:

Каналов четыре, каждый канал представлен состоянием «0» или «1», в итоге мы получаем некую комбинацию чисел в диапазоне от 0 до 0xF. Вполне очевидно, что набор чисел не очень удобен для наглядного представления об изменениях на каналах. Как же должны выглядеть эти данные в человеческом виде? Для первого замера мы получаем значение 0хA, в двоичном представлении это b1010. При выводе результатов для каждого канала мы рисуем верхнюю черточку — если «1» и нижнюю — если «0», а переходы соединяем вертикальными линиями.
Солидные программы примерно так и выводят результаты своих замеров, попутно декодируя данные, разбирая протоколы и еще куча плюшек… Но у нас же запланирован МЕГАдешевый и МЕГАпростой вариант :), поэтому у нас результат будет представлен несколько упрощенно (как минимум, без вертикальных линий), примерно вот так:

Небольшое отступление в HARDWARE часть 🙂

Честно признаюсь, что практически до финальной версии я подключал анализируемые линии прямо к пинам Arduino. Знаю, что так делать не стоит.

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

Схема анализатора:Печатная плата:Ну и собственно готовое изделие:Ну, не знаю… Как по мне, плата придает некую «солидность» этой поделке 🙂

Сохранение данных замера. Компрессия.

Считанные данные нужно где-то хранить. Соответственно, нам нужен буфер или массив. От его размера напрямую зависит обьем анализируемых данных. Самый быстрый компонент для хранения данных — это ОЗУ (RAM или память). Памяти у Atmega328 всего два килобайта. Мало, очень мало. Попробуем ужаться. Для хранения одного замера с 4-х каналов необходимо 4-ре бита или пол-байта. Значит в одной ячейке массива (1 байт) могут разместиться два замера. Т.е., массив на 512 байт способен уместить 1024 замера. Как же это сделать?В массив будем производить запись ДВУХ считанных замеров (текущий и предыдущий).Array[x]=((prev_data «0» (FALL)
— любое изменение на любом канале (BURST)
— определенное состояние шины (PATTERN).
Чтобы упростить себе жизнь, я решил, что первые два триггера (RISE и FALL) я реализую только для одного канала (типа МАСТЕР-канал), если понадобиться, то можно будет просто перекоммутировать клипсу-зажим на нужную линию. Вполне очевидно, что для поиска изменений состояния шины потребуются две переменные: текущее состояние (cur_data) и предыдущее (prev_data).

Триггер BURST (любое изменение на шине).

Для приведенного примера первые два замера абсолютно идентичны, а вот на третьем произошло изменение состояния канала Ch2. Это наверное, самый простой в плане реализации триггер. Просто проверяем каждый раз данные на предмет того, что текущее состояние шины не равно предыдущему 🙂
if (prev_data != cur_data)

Триггер RISE (переход из «0» в «1»).

Как проверить, что состояние канала поменялось с «0» на «1»?В первом приближении я делал такими проверками «Если первый битик предыдущего замера был равен „0“ И первый битик текущего замера равен „1“ — то считаем что условие триггера выполнено.

//первый вариант if (((prev_data & 1)==0) && (cur_data & 1)==1)Однако после общения с моим приятелем Александром и получением от него дельных ЦУ, данная проверка стала выглядеть так:
//второй вариант if (~prev_data & cur_data & 1)Помимо лаконичности такой проверки, надеюсь, что скорость выполнения тоже возросла 🙂 Я рассуждал примерно так (поправьте если ошибаюсь): 1 вариант. — выделяем младший бит из prev_data — сравниваем его с 0 — выделяем младший бит из cur_data — сравниваем его с 1 — делаем логическое AND с полученными результатами

ИТОГО: 5 операций

2 вариант. — инвертируем prev_data — побитовое сложение с cur_data — выделяем младший бит из результата

ИТОГО: 3 операции

Триггер FALL (переход из «1» в «0»).

Несложно догадаться, что для триггера FALL проверка будет такая:if (prev_data & ~cur_data & 1)

Триггер PATTERN (определенное состояние на шине).

Оказалось — самый сложный триггер. Для данного режима нужно указать маску по которой будет происходить сравнение. Причем, помимо определенных „0“ или „1“, можно указать, что для данного канала состояние не важно. Например, для маски 0?1? — подходят следующие варианты: 0010; 0011;0110;0111; Первый вариант реализации этой проверки выглядел вот таким образом:volatile byte pattern_mask[4]; // массив-маска для события // Значения в массиве-маске: 0 – и есть ноль, 1 – 1, и 2 – это неопределенное состояние volatile byte pattern_mask[4]; // массив-маска для события byte flag = 0; // Результат сравнения. 1 – совпало for (byte i=0; i> i)&1) == pattern_mask[i]) // Сдвигаем значение cur_data на i шагов вправо, потом умножаем на 1 тем самым обнуляя все биты кроме первого, затем сравниваем с соотв. значением маски { flag = 1; // значение совпало, устанавливаем флаг } else { flag = 0; // не совпало – не чего ловить – выходим из цикла break; } } else flag = 1; } // конец цикла iПолучилось хоть и работоспособно, но очень громоздко. А это сказывается на равномерности считывания данных. И тут опять же, благодаря вмешательству Александра… была произведена СУЩЕСТВЕННАЯ оптимизация этой проверки. А именно,

вместо 4-х байтового массива patterm_mask заводим 2 переменные: pattern_mask и pattern_value.

pattern_value хранит собственно сам паттерн состояния шины, который ищется. Если бит должен игнорироваться, то в нем „0“, например: ищем 0000 — pattern_value=0x0 ищем 0101 — pattern_value=0x5 ищем xx10 — pattern_value=0x2

pattern_mask должна хранить „1“ в тех разрядах, которые сравниваются, и „0“ в тех, которые игнорируются, используя пример выше:

ищем 0000 — pattern_mask=0xf ищем 0101 — pattern_mask=0xf ищем xx10 — pattern_value=0x3 В этом случае весь вышеприведенный код проверки заменяется одной строчкой:if ((cur_data & pattern_mask) == pattern_value)Просто СУПЕР! Я реально офигел от такого лаконичного и красивого решения!

Вывод результатов.

Как считывать состояние шины мы уже разобрались, как будем хранить результаты — тоже определились. Какие события будем отслеживать — выделили. Теперь что же с этими результатами делать? В каком виде их выводить? С какого момента? При отладке полезно знать, что предшествовало появлению того или иного триггера, так называемая история.

Для случая на картинке, до появления условия описанного триггером, мы все равно записываем считанные данные в массив. На десятом замере условия триггера (Event) выполнилось. Высчитываем значение StartIndex. И далее мы „тупо“ производим запись состояний шины в массив (уже не делая проверку на триггер) до момента начала истории (StartIndex).

А вот выводить на экран результаты сканирования нужно от начала истории и до конца…Таким образом, мы получаем некое понимание того, что было на шине пока не появился триггер. Вот как будет выглядеть реальная осциллограмма замера:
В нашем варианте анализатора конец истории и начало замера указывается маленькой стрелочкой вверх „^“.

Дабы придать солидность выводимым результатам, я нарисовал снизу некое подобие шкалы разметки. Тут же присутствует расчетная цена одного деления (Time:) (я использовал штатную ардуиновскую . Сохраняем значение millis() в начале замера и в конце. Высчитываем сколько же по времени длился собственно замер. Ну и далее делим это время на количество замеров).

Если есть необходимость, то результаты замера можно посмотреть в виде дампа:Правда вывод дампа начинается не с истории, а с начала буфера.

Управление.

Реализовано в диалоговом режиме. Обмен командами происходит через терминал. Доступны следующие команды:

Практически все команды получились однобуквенными. Если бы не режим PATTERN, то все было бы сверхтривиально. Команды R,F,B,P — запуск сканирования с указанным триггером.

Для триггера P дополнительно нужно указывать четыре параметра для каждого канала (»0″, «1», “?” (или «х»)). Для того, чтобы остановить ожидание появления триггера, просто подаем новую команду и она отменит старую. Команда S (Show buffer)- повторный вывод осциллограммы. От отладки осталась команда D (Dump out) — вывод результатов в виде дампа.

Перечень доступных команд можно всегда получить если ввести H (или ?).

В настройках терминала необходимо установить скорость 115200 и режим «Новая строка». ======================================== Основной скелет программы теперь выглядит так: — ждем команду указание триггера; — очищаем буфер; — сканируем шину, записываем данные в буфер и попутно отслеживаем появление заданного триггера; — при появлении данных в CОМ-порту, прерываем сканирование; — если условие триггера выполнилось — пишем данные в буфер, при этом сохранив историю состоянии шины до сработки триггера; — выводим результаты на экран в виде осциллограммы; =========================================

Оценка скорости выборки.

В какой-то момент времени меня очень заинтересовала скорость захвата данных полученного логического анализатора… Я попробовал несколько вариантов измерения: — с помощью замеров времени выборки (с помощью millis().

Читай выше); — при каждом считывании состояния шины я инвертировал значение на одном из пинов (debugPin) и замерял частоту переключения; — внешним генератором; Последний способ опишу (просто у меня остался скрин этого варианта).На внешнем генераторе установил частоту 496 Hz.

И подобрал размер буфера таким образом, чтобы целиком уместилась одна «ступенька» в замер. Вышло что количество замеров равно 240.

Дальнейшие рассуждения: Частота 496 Гц — значит период 1/496 = 2,016 мс Половина периода — 1,008 мс В эту половину периода укладывается 240 замеров, значит частота дискретизации 240/1,008= 238,08 кГц Следовательно период дискретизации 4,2 мкс Все остальные способы оценки давали близкие результаты (около 4 мкс), что очень даже хорошо.

Примеры работы.

4-х битный счетчик 74ls161Получилось весьма правдоподобно, буквально пару неточностей 🙂 Захват протокола I2C:=========================================

Достоинства.

— «дешево и сердито». (Кроме Arduino вообще ничего не нужно);
— 100% OpenSource. (Бери исходники и делай с ними все, что посчитаешь нужным); — позволяет без затрат оценить необходимость анализатора для ваших нужд; — достаточно гибкая система настраиваемых триггеров;

— вполне приемлемая скорость оцифровки (по меркам Ардуино). («Медленный» обмен данными через СОМ-порт происходит ТОЛЬКО после захвата данных);

— дополнительный вывод результатов в виде дампа значений;

— легкая переносимость на другие платформы (например на );

Недостатки описывать не буду :), так как считаю, что само название «Toy Logic Analyzer» (рус. «Игрушечный логический анализатор») в значительной мере их наличие оправдывает.

Забрать весь материал по этому проекту можно .

Всем спасибо за уделенное время на прочтение и удачи!

Источник: http://robocraft.ru/blog/3637.html

Миниатюрный 4-канальный логический анализатор на AVR

» Схемы » Измерения · Применение микроконтроллеров

26-02-2012

Vassilis Serasidis

Логический анализатор – это инструмент, который позволит увидеть и проанализировать последовательность логических 0 и 1 в цифровом сигнале. К примеру, можно изучить цифровой сигнал с ИК приемника-демодулятора типа TSOP-1736, выходные и входные сигналы микросхемы MAX232, а также шину I2C (линия тактирования и линия данных) во многих электронных устройствах.

В статье мы рассмотрим конструкцию миниатюрного 4-канального логического анализатора с ЖК дисплеем от мобильного телефона Nokia 5110/3110. Основой конструкции является микроконтроллер Atmel ATmega8, помимо него используются еще несколько дискретных компонентов.

Основные характеристики прибора:

  • 4-канальный логический анализатор;
  • возможность исследования сигналов с частотой до 400 кГц;
  • входное напряжение до +5 В;
  • ЖК дисплей с разрешением 84 × 48 точек;
  • питание от 4 аккумуляторов 1.2 В, максимальное напряжение питания 4.8 В;
  • память: от 3.7 мс для высокоскоростных сигналов до 36 с для низкоскоростных сигналов;
  • кнопки управления;
  • простая конструкция.
Читайте также:  Делаем реальные часы при помощи чипа arduino ds3231 - arduino+

Принципиальная схема

На Рисунке 1 представлена принципиальная схема прибора. Сразу следует отметить, что прибор питается от 4 аккумуляторов с напряжением 1.2 В каждый.

Нажмите для увеличения

Внимание!!!

Питание от 4 батареек с напряжением 1.5 В недопустимо, при данной схеме прибора, так как напряжение 6 В может вывести из строя микроконтроллер и ЖК дисплей.

Выключатель S1 предназначен для подачи питания. Подтягивающие резисторы R2-R5 установлены с целью исключения появления ложных данных на цифровых входах прибора из-за влияния электромагнитных полей или при касании пальцами сигнальных щупов. Светодиод LED1 предназначен для индикации наличия сигнала на цифровых входах прибора и, следовательно, начала записи сигналов в память.

В схеме используется ЖК индикатор от мобильного телефона Nokia 3310/5510, он рассчитан на работу при напряжении питания 3.3 В – 5.0 В, однако максимальное напряжение для подсветки дисплея – 3.

3 В, поэтому в схеме установленo три последовательно включенных диода 1N4007 (D1-D3) по линии питания подсветки дисплея. Благодаря диодам напряжение снизится до 2.

7 В и его вполне будет достаточно для питания подсветки.

Процесс захвата данных и программное обеспечение

Следует отметить, что автором подготовлены две версии прошивки микроконтроллера. Изначально, для версии 1.00 логического анализатора, использовалась интегрированная среда разработки AVR Studio 4.

18, но затем автор перекомпилировал исходный код и для AVR Studio 5 – версия 1.01.

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

Запись сигналов ведется во внутренний буфер памяти ОЗУ, который рассчитан на 290 отсчетов.

Буфер данных образован 870 байтами (для 1 версии программы микроконтроллера) из которых 2 байта используются для счетчика и 1 байт для информирования о входном канале. В версии 1.

01 буфер данных был сокращен до 256×3=768 Байт с целью увеличения скорости захвата данных, т.к. переменная размера буфера является 8-битной, вместо 16-битной, которая использовалась в первой версии ПО.

После подачи питания, микроконтроллер переходит в режим ожидания импульса на любом из 4 входов прибора. По определению входного импульса микроконтроллер начинает подсчет времени до поступления следующего импульса на любом из 4 входов. Длительность выборки хранится в 16-битной переменной «counter».

После переполнения этой переменной информация о состоянии 4 входов и значение счетчика сохраняются в буфере и значение его адреса увеличивается на три (2 байта для счетчика и 1 байт – информация о входной линии). Этот процесс повторяется пока микроконтроллер не заполнит весь буфер (870/3=290 выборок или импульсов).

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

После заполнения буфера, все накопленные данные отображаются на ЖК дисплее в виде осциллограммы.

Пользователь может управлять осциллограммой – передвигать влево (кнопка S3) или вправо (кнопка S4), чтобы просмотреть всю сохраненную последовательность импульсов.

Если были записаны низкоскоростные сигналы, то пользователь может изменить масштаб в пропорции 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 или 8192 нажатием на кнопку S2.

При программировании микроконтроллера необходимо установить Fuse-биты в соответствии с рисунком.

Вид печатной платы и расположение компонентов

Демонстрация работы прибора

Загрузки

Принципиальная схема, рисунок печатной платы, исходный код и файл для прошивки микроконтроллера (v1.0, AVR Studio 4.18) – скачать

Исходный код и файл для прошивки микроконтроллера (v1.01, AVR Studio 5) – скачать

serasidis.gr

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
  • Как я понял, ваш дисплей с “резинкой”, установлен он на самодельную платку, т.е. токопроводящая резинка касается дорожек которые вы нарезали на платке. Если так, то учтите – это самое слабое место конструкции… Fuse-биты проверяли (считывали)? Правильно установлены? Я не исключаю и проблему в самом дисплее. Я еще исходники гляну, может там что-то можно настроить/изменить относительно дисплея…
  • Vadzz, да, я это понимаю, самое уязвимое место.. Я нашел какой-то мобильный, с шагом контактов как у моего экрана. Как будет время попробую сделать.. Вопрос еще в том, рабочий ли экран, не спалил ли я его контроллер (если это возможно). А пока заброшу эту идею. Очень сложно достать готовый экран этот и он стоит больше чем это устройство нужно.. Я лучше сделаю такое же устройство, только вывод данных на компьютер через usb. (по учебнику http://eldigi.ru/site/comp/18.php ). Все равно мастерю за компьютером и всё через usb делаю.. Либо же друг делает диплом на тему миниатюрный осцилограф usb. Схема на единственном элементе AtTiny и кварц. +вывод данных в программу на компьютере в виде временной диаграммылинии.. Возьму у него.. ПО я сделаю.. Я эту штуковину начал делать потому что она так красиво и пафосно выглядит со стороны 😉 А особенно работает.. ну ниче, начну работать с китайскими передатчиками придется ее сделать.. Там уже на импульсы нужно смотреть и анализировать.. А так спасибо за помощь )
  • Хлопцы, зацените) Всё таки не удержался.. Переднюю панельку еще думаю дооформлю.
  • Рад что все получилось и заработало, выглядит норм. Только расскажите по-подробнее в чем была проблема (наверное, все же дисплей не работал), для многих будет полезна ваша информация (если не секрет, конечно). Спасибо.
  • Ну проблема была в дисплее. И то я купил не красный, а синий, по этому еще контакты не сошлись по расположению, и немного в названии разнятся. Подключение (на схемесиний дисплей): Vcc-Vcc GND-GND Rst-Rst SCE-CE DC-DC DN-Din SKLK-CLK LED-BL Если будет желание- попробую вставитьзапустить свой старый дисплей. Посмотрю, может он сгорел.. а то столько мучился с ним.
  • Небольшой тест прибора, пару багов. 1) При перемотке долго мотаем вперед, потом назад и в какой-то момент оно отказывается двигать назад и заклинивает на каком-то значении. Можно прокрутить еще вперед и опять назад и после этого клинит на другом значении.. Вот фото, хотя тут ничего не видно будет http://s017.radikal.ru/i433/1306/57/cf1dfbd2f106.jpg 2) При перематывании смазывается временная диаграмма http://s60.radikal.ru/i169/1306/33/1c23e0d9815c.jpg http://i066.radikal.ru/1306/9f/c894839ca1fd.jpg 3) При изменении зума перемотка сбрасывается в 0-ю позицию(но не всегда). Нужно пофиксить чтоле.. Думаю можно было бы добавить пару вкусняшек в проект: Сенсорные кнопки (реализуются элементарно, всего три МОМ-ных резистора) Вольтметр (GND постоянно подключен, по этому неплохо было бы на АЦПшнике сделать чтоле ибо каждый раз мультиметр подключать не то, а этот помог бы. Измеряет в пределах до 5в, как раз для цифровухи). Осцилограф (не знаю как, но было бы очень неплохо. Главная проблема думаю с отображением будет). Подключение через USB к ПК. Отображение рвеменной диаграммы в программе- святое. Если делать осцилограф, то в программе будет проще отображать всё.. Выглядеть будет примерно так (моя програма) http://s48.radikal.ru/i119/1306/eb/9c25ff0d3d7b.png Так же можно программой что-то изменять в настройках прибора..
  • К стати, в протеусе данная штуковина неплохо симулируется..
  • Собрал девайс. Включается, показывает. Если без резисторов 33к (и без источников сигнала), то при включении всякие гребенки увидеть можно. С резисторами и источником (TSOP ик и spi-девайс) – все линии ровненькие. Никакой реакции совершенно. Куда рыть-то?
  • Инпуты замыкаются на + а не на землю чтоб показывало. Мне пришлось инвертировать выход TSOP.
  • Индикатор от телефона тоже заработал. У меня сначала не показывал ничего, поставил резисторные делители на входы дисплея от мк и все заработало. 1ком от мк до дисплея и 3,3 ком от дисплея на землю
  • инвертирование не помогает
  • Прошивка с исправленными ошибками и с добавлениями(UART, Частотомер, Редактор пропусков перед измерением, а также ещё к нему программу для компьютера. Analizator.exe Описание: Analizator_PC V2.1 Analizator.exe 4_канальный логический анализатор.DSN Описание: Analizator_proteus http://www.fayloobmennik.net/4274643 Analizator.hex Описание: Analizator_Atmega8 http://www.fayloobmennik.net/4291611 4_канальный логический анализатор Описание: Analizator_shema http://www.fayloobmennik.net/4285824 2й вариант http://radikal.ru/fp/d4a79d41ed074dc1a44ec03cacf87088 ИСХОДНИКИ ДЛЯ АНАЛИЗАТОРА КОМУ ИНТЕРЕСНО. AnalizatorKSA.zip Не сомневайтесь всё работает так как надо! У вас теперь появится возможность проверить это в симуляторе, а также покопаться в исходнике.Избавляю вас от рутинной работы. Не судите за мои там комментарии, у каждого они свои. К тому же это черновики, а не коммерческий продукт. Моя поставленная цель была достигнута, поэтому черновики так и остались черновиками. Вы можете делать с ними всё , даже вырвать у них сердце. А цель была одна – сделать его удобным, более точным, надёжным. Всё, что я проделал вы можете прочитать в моих 2х программах для РС в разделе “Справка” Для анализа и сравнения полученного результата я выкладываю исходный текст основной измерительной программы Vasilisa Serasidisa. Посмотрите, и сравните сколько тактов тратится на измерение у меня, и у него. И убедитесь, что лучшие программисты это р у с с к и е !!! Добавлю: С тех пор как сконструировал 2 версии анализаторов решил множество проблем связанных с цифровым обменом и по шине CAN и I2C пультов и пр. Вариант на ATmega48 даже предпочтительней со скоростными протоколами. Например, CAN в 140 Кбит анализировал просто на ура! в отличии от не без известного анализатора Digan. Да и сам он величиной с флешку. Всем удачи! Izmerenie.txt ВЫКЛАДЫВАЮ НОВУЮ ВЕРСИЮ (3йвариант) БОЛЕЕ МОЩНОГО АНАЛИЗАТОРА, А ТАКЖЕ ПРЕДЫДУЩУЮ ВЕРСИЮ С ДОБАВЛЕНИЯМИ И ФАЙЛОМ ПРОТЕУСА ССЫЛКА НА АРХИВ http://www.fayloobmennik.net/5569369
  • 1. Кто повторил оригинальный вариант – от Seradis, нет ли серьезных багов , делающих вообще неприменимость девайса – типа всегда пропускается первый байт и т.п.? Выше пишут об “отображение эпюр”, но хотелось бы, что они именно были достоверные:). 2. Сергей7 не выкладывает исходник, что не дает оценить его функционал в полной мере. Если изготовить вначале оригинал, то потребуются ли изменения в апаратке для дальнейшего развития девайса по доработке Сергея7?
  • Отправлял вам сообщение и никакой реакции. Дошло ли?
  • наверное, нет. … 🙁 Спасибо за исходники! счас посмотрю…..
  • Рад помочь!:D
  • Прошивки с добавлениями(UART, Частотомер, Редактор пропусков перед измерением в AnalizatorKSA.zip нет
  • может печатка в lay есть у кого?
  • Посмотрите новый вариант, я выложил. И предыдущий доработанный тоже ( с прошивкой, файлом протеуса и дороб.программой).
  • в чём писали и можно полную схему я так и не понял по чём собирать и сколько ины проц пишет в себя для передачи по уарт
Полный вариант обсуждения »

При перепечатке материалов с сайта прямая ссылка на РадиоЛоцман обязательна.

Приглашаем авторов статей и переводов к публикации материалов на страницах сайта.

Источник: https://www.rlocman.ru/shem/schematics.html?di=113421

Analizzz. Или мой клон китайских клонов логических анализаторов =)

Приветствую уважаемое сообщество!

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

А именно, о самостоятельном его изготовлении. Заинтересованных прошу заглядывать под кат.

ДАНГЕР!!! Здесь Вы можете обнаружить over9000 большое количество картинок, мозговыносящего сленгоизобилирующего текста, нелогичность и непоследовательность изложения, а также, возможно, немалое количество грамматических ошибок и прочие атрибуты кривопейсательства. Если это способно причинить вред Вашей тонкой душевной организации или затронуть религиозные взгляды, то настоятельно рекомендуется акститься пройти мимо. Спасибо за понимание.

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

И тут, как иногда бывает, внезапно вовремя я наткнулся на интересную статью про самостоятельное изготовление анализатора.«Ведь это же то, что мне нужно» — сказал внутренний голос. Но повторять конструктив автора я не собирался, от него я почерпнул только идею и правильный настрой (за что ему отдельное спасибо).

Дальше было курение веток форума на казусе, и здесь, многочисленные втыкания в существующие схемы.
Ну и рано ли, поздно ли, пришел я к своему варианту схемы, которая меня устраивала: никаких излишеств в виде аналогового канала, наличие нормальных защит входов, возможность двунаправленной работы.

К тому же, как оказалось, контроллер CY7C68013A, являющийся сердцем девайса, у нас значительно дешевле в стоногом TQFP, нежели повсеместно обожаемый SSOP-56. Видимо сформированы эти цены исключительно спросом =) (без малейшей привязки к реальности и учета здравого смысла), как оно у нас обычно и бывает.

Но это совсеееем другая история…
Т.о. было решено делать дИвайс на TQFP-100, ибо мои скилы ЛУТа и паяльника вроде позволяют особо за это дело и не задумываться, ну а +-50 ножек — для бешеной собаки, как говорится, «вообще не расстояние».

))) Немного покумекав и выбросив все, что мне казалось лишним, я получил следующее:

СХЕМА В PDF

Как видно на схеме, для коннекта с компом используется mini-usb разьем. С него же берется и 5 вольт. NCP1117 (или аналог) формирует напряжение питания всей схемы — 3,3В.CY7C68013A — тащемта, как я уже говорил, сердце и мозги нашего анализатора.Это контроллер, специально ориентированный на использование в USB-устройствах.

И тут применен интересный подход: дело в том, что у него вообще нет своей энергонезависимой памяти (по этой же причине на схеме установлен еепром, но до него дойдем сейчас). Поэтому, прошивка каждый раз по включению в него заливается заново и выполняется до момента выключения.

Грузить прошивку он может двумя способами: из внешней энергонезависимой памяти или же прямо по USB. В нашем случае прошивку будет заливать как раз софт по USB. И тут внимательный читатель скажет: «таки зачем тута Ипром?», а я отвечу: «в этом весь и цимес».

Читайте также:  Отправляем данные из esp на веб-страницу с минимальными усилиями

Спешу пояснить: так как наше устройство USB-шное, то, как и любой подобный девайс, оно должно иметь собственные коды VID и PID, по которым, если не вдаваться в подробности, комп определяет что к нему подключено и щито с этим делать.

И теперь несложно догадаться, что храниться они будут в этой самой внешней микросхемке памяти, благодаря чему, если записать в нее нужные комбинации кодов, то мы получаем любое(!) устройство. Во всяком случае, комп это убедит, что собственно и нужно. (Эта замечательная особенность позволит нам юзать софт разных производителей такого рода анализаторов, всего лишь подменяя коды в еепром).

Цепи сброса и тактирования тоже выглядят незатейливо:SN74LVC8T245PWR применена для согласования уровней с возможностью двунаправленной работы.

В принципе, пишут, что входы CY7C68013A 5v tolerant, поэтому ТТЛ-уровни можно на них подавать без дополнительных приемов по согласованию (надо только учитывать, что границы смены логических состояний будут оставаться для 3,3В уровней, тобишь занижены, но это не страшно).

Цепи защиты каналов анализатора, вполне себе стандартны. В качестве диодной защиты использовал BAV99. Резюки R7-R16 поставил по 100 Ом.

Подтяжка R6 — 4,7 кОм.

ВНИМАНИЕ: на форумах неоднократо проскакивали сообщения про реальные случаи выхода CY7C68013A из строя из-за статики, поэтому крайне не рекомендуется экономить на цепях защиты.

Ну и, наконец, основной разьём анализатора:

Тут не лишним будет небольшое пояснение:

— все функциональные сигналы располагаются на «непарной» стороне разьема (1, 3, 5, …, 25);

— «парные» контакты (2, 4, 6, …, 26) посажены на GND; Сделано из практических соображений.

— порядок каналов идет вспять нумерации контактов;

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

— контакт EXT_LEV предназначен для подачи внешнего «опорного» напряжения;

Собственно, основное предназначение SN74LVC8T245PWR — согласование лог. уровней. Сюда можно подать напругу от конечного девайса в пределах 1,65V — 5,5V, если уровни на шине исследуемого интерфейса отличаются от 3,3V.

— контакт DIR — управление направлением работы каналов;

В стандартном режиме все каналы работают как входы, но софт позволяет использовать устройство в качестве генератора частот, выдавать ШИМ с настраиваемым коэффициэнтом заполнения и даже генерить произвольные импульсные сигналы (сами рисуем паттерн). Для переключения каналов на вход необходимо просто посадить сигнал DIR на GND.

— линия +5V;

Внимание: На этот контакт без каких либо защит и ограничителей заведены 5 вольт от USB-порта, поэтому если прямота рук и свежесть разума под сомнением (или просто на судьбе написано постоянно путать +/- и создавать эпичные КоЗы, а темная энергия разрушений и хаоса сочится из всех щелей), то настоятельно рекомендуется обрезать идущую туда дорожку от греха…
— Вывод наружу линий TRIG и CLK_OUT был просто слизан с существующих схем и я пока до конца не понял их предназначение; Если знающие люди подскажут в комментах — буду премного благодарен)).

Назначение штыревых разьемов под джампера:

  • X1 — установленный джампер садит ножку WP(write protect) на землю, разрешая запись в память;
  • X2 — установленный джампер — нормальная работа устройства, при отсутствии линия SDA епрома отключается от контроллера, чем эмулируется отсутствие микросхемы памяти;
  • X3 — при установленном джампере каналы анализатора работают на вход, при снятом — на выход;
  • X4 — выбор напряжения логических уровней. Позиция 1,2 — внутренний источник 3,3V, позиция 2,3 — эталонное напряжение подаваемое извне;

Так как плата изначально предназначалась для ЛУТа, то я старался сделать ее максимально удобной в изготовлении «зубилом на коленке», где-то даже в ущерб компактности. Но все-же некоторая аккуратность потребуется: в самых узких местах используются нормы 0,3-0,3. Это, конечно, не предел технологии, но с имеющимся у меня принтером уже требует определенной сноровки. Плату получилось развести почти в одном слое, с тремя перемычками, но она все же осталась двухсторонней. Как? Да очень просто: Тут я вспомнил один старый дедовский метод, который пришелся кстати: травится только одна сторона, а на стороне установки деталей оставляется медь, которая служит «землей». Можно было и двухсторонку сделать, но зачем городить железную дорогу от кухни до туалета? Честно говоря, качество имеющегося у меня текстолита, говенность принтера и кривизна рук и так доставляют мне, порою, неимоверный гемор, а посему хотелось исключить все остальные, даже чисто гипотетические, проблемы. Результатом времяпрепровождения в трассировщике стало сие: Ну и для полного удовлетворения:

Ну а далее, как говорится, дело техники. Лазерный утюг, хлорное железо, сверловка, лужение, монтаж.

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

Так что сразу переходим к сборке:

Все паялось обычным китайским паяльником с «термостабилизацией», типа такого.

До запайки деталек не помешает проверить целостность всех цепей, которые скроются под корпусами, и отсутсвие замыканий между ножками микросхем с помощью тестера. Можно, конечно, и визуально, но это затруднительно, ведь на просвет мы ничего не увидим.

Что касается самого монтажа, то тут нету никаких хитростей, единственное, на что хочется обратить внимание: нужно смотреть какие из выводов деталей и штырей разьемов подключаются к GND и не забывать их припаивать к верхнему медному слою. Удобно возле этих отверстий сразу залудить медь, а потом уже вставлять детальку.

Около остальных же отверстий необходимо сделать зенковку верхней меди во избежание замыканий. Лично я орудовал острозаточенным резачком. Отверстия я сверлил все 0,8мм.

При этом PLS вилки садятся очень(!) плотно, но это я считаю плюсом при самостоятельном изготовлении платы и стараюсь для разьемов так делать всегда, потому что это уменьшает механическую нагрузку на контактные площадки во время эксплуатации и вероятность что-то оторвать, соответственно… 26-ти контактный разьем поставил типа IDC.

Садится он тоже крайне неохотно и его установка требует терпения, поэтому, если не хочется долго ковыряться — лучше сразу сверлить для него отверстия побольше.Я устанавливал его следующим образом: Сначала поставил на свое законное место и пропаял «земляной»(парный) ряд контактов со стороны Bottom'а.

Потом извлек корпус вместе с непарным рядом штырей, а парные, при этом, остались на плате (они просто слегка запресованы в пластмассу и при небольшом усилии легко извлекаются). Далее пропаял ряд GND-контактов на Top'е (нужно следить, чтобы количество припоя было не очень большим, а то будет мешать плотному прилеганию корпуса разьема к плате).

Ну а потом установил остатки IDC на место, убедился в его плотной посадке и окончательно припаял все контакты. (Процесс обратной установки очень облегчится, если перед этим обильно смочить все контакты спиртом. Тут он играет роль смазки. Думаю, что глицерином будет еще лучше, но у меня его нет) Ну а в целом ничего необычного, все стандартно.

Главное не спешить при запайке мелкошаговых микрух и не пихать лишний припой, а то потом убирать залипухи намного сложнее, чем просто их не ставить. В результате всей этой порнографии получился такой вот девайсик, весьма непрезентабельного вида(по клику откроются увесистые полномасштабные пикчи):

Сразу оговорюсь, что пайка тут довольно таки брутальная (ибо труЪ!!! хДДД), посему всякие педанты-аккуратисты и прочие эстэты идут лесом.

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

При подключении к USB винда сказала, что нашла НЕХ неизвестное устройство и хз что с ним делать. Залез поглубже и увидел, что таки да: VID и PID прочитались как 0000. Как всегда бывает в таких ситуациях, в голову полезли самые плохие мысли. Тот факт, что из космодрома контроллер приехал завернутый в фольгу, наводил на мысль, что я просто его убил статикой.

Но когда первый кирпич был уже на подходе, то здравый смысл преодолел желание убивать и заставил тыкнуть щупом осцила в плату. Увидев благодатные 24МГц на кварце и адекватную реакцию контроллера на дергание за ножку RESET, я начал искать отличия своей схемы от остальных.

И нашел только одно общее для всех: везде ножка с неприметным названием Reserved (за нумеромЪ 27) была подключена к GND, а я на нее просто забил, соблазнившись названием (наивный =)).

Коротнув подручными средствами эту богомерзкую ногу на GND, я в очередной раз приконектился к компу и таки увидел заветную надпись: «Cypress EZ-USB FX2LP — EEPROM missing», что означает примерно следующее: «Гребанный мудак, это я, супермегОУСиБиконтроллер.

какого хрена ты там делаешь? Я тут проснулся, но не помню кто я, мать твою, так как моя EEPROMKA болтается непонятно где…». Дальше косяк был устранён небольшим куском ножки от какой-то детальки.

На схеме и плате, выложенных сюда, все исправлено

Из мелочей: два раза проверив тестером (на всякий случай) полярность 3мм СИДа по питанию, я таки впаял его наИбАрот. Ну а так как одна из ног паялась на верхний медный слой, откатиться паяльником было очень непросто.

На работе, конечно, есть станция с феном, но ждать до завтра очень не хотелось, поэтому я сделал ему небольшую трипанацию, а вместо него прилепил SMD-светодиод на обратной стороне. С учетом того, что мне он не сильно то и нужен — сойдет.

Еще один немаловажный момент: шнурок от компа желательно брать покороче и не китайский, потому что с плохим кабелем не всегда можно делать выборки на максимальной скорости (похоже много ошибок обмена и софт не успевает вовремя забирать данные). Если же хорошего шнурка нет, то подключайтесь хотя бы к USB на задней части корпуса PC (иногда помогает).

В связи с тем, что статья вышла объемнее, чем предполагалось, я не буду перегружать ее еще больше и описывать порядок установки драйверов, конфигурирования устройства, и его работу с доступным софтом. Все, что нужно для начала, можно прочитать по ссылке у товарища Medved'а. Ну а в случае поступления «просьб трудящихся», могу описАть в отдельной статье.

(Если вдруг найдутся желающие повторять девайс). Только дойдет до этого не раньше, чем Analizzz обустроится в корпусе и обрастет всеми необходимыми наклейками (номера и назначение контактов IDC-разьема, джамперов и т.д.). Возможно потом будет небольшой UPD.

Пока присмотрел вот такой труёво-черный корпус.

Ну а на этом позвольте откланяться. Спасибо за внимание.

P.S. Прошу сообщать о найденных ошибках, и вообще: любой «конструктив» приветствуется 🙂

Источник: http://we.easyelectronics.ru/DOOMSDAY/analizzz-ili-moy-klon-kitayskih-klonov-logicheskih-analizatorov-.html

Работа с логическим анализатором Saleae Logic Analyzer

Логический анализатор – незаменимый помощник при отладке цифровой схемотехники. Давайте рассмотрим основные приёмы работы с логическим анализатором Saleae Logic Analyzer и его китайскими аналогами.

Логический анализатор – это инструмент для временного анализа цифровых сигналов. Это незаменимый, действительно незаменимый инструмент при отладке цифровой электроники.

Оригинальные анализаторы от именитых производителей стоят больших денег. У наших китайских друзей можно купить такое устройство за копейки. Поэтому если у вас его ещё нет – обязательно приобретите.

Возможности данного небольшого устройства весьма внушительны.

В таблице перечислены основные параметры логического анализатора, моей китайской копии анализатора фирмы Saleae.

ПараметрЗначение
число цифровых каналов 8
частота оцифровки на канал до 24 МГц
количество сэмплов в выборке до 1G (зависит от количества памяти ПК)
входное сопротивление 100 кОм
диапазон рабочих напряжений –0,5…5,25 В
напряжение логического «0» –0,5…0,8 В
напряжение логической «1» 2,0…5,25 В
защита от статики
защита по превышению напряжения +/−15 В

2Установка драйверадля логического анализатора Saleae

Для данного логического анализатора – китайской копии – к счастью, подходит драйвер от оригинала. Заходим на официальный сайт, скачиваем программу для своей операционной системы и устанавливаем её. Драйверы будут установлены вместе с программой. Кстати, обзор возможностей программы в виде инструкции на английском языке приложен в конце данной статьи.

Скачиваем программу и драйверы для логического анализатора Saleae Logic Analyzer

Если у вас копия другой фирмы, например, USBee AX Pro, то с большой долей вероятности для него также подойдут драйверы от производителя анализатора-оригинала.

3Примеры работы с логическим анализатором

Для первого эксперимента возьмём преобразователь USB-UART на микросхеме FTD1232. Подключим анализатор к порту USB. Выводы каналов с 1 по 6 подключим к выводам USB-UART преобразователя.

По большому счёту, больше всего нас интересует только две линии – Rx и Tx, можно обойтись только ими. Преобразователь определился в системе как COM-порт.

Запустим любую терминалку (вот, например, неплохая программа для работы с COM-портом) и подключимся к порту.

Подключение USB-UART конвертера на микросхеме FTD1232 к логическому анализатору

Запускаем программу Saleae Logic. Если драйверы для анализатора установлены корректно, в заголовке программы будет указано Connected – подключено.

Допустим, мы не знаем на каком канале будет сигнал, а на каком нет, поэтому не будем выставлять триггер для начала захвата сигнала. Просто нажмём на стрелки большой зелёной кнопки Start (Старт) и выставим в поле Duration (Длительность), скажем, 10 секунд.

Это время, в течение которого логический анализатор будет собирать приходящие по всем 8-ми каналам данные после нажатия кнопки «Старт». Запускаем захват и одновременно отправляем в COM-порт какое-нибудь сообщение. Через 10 секунд анализатор закончит сбор данных и выведет результат в поле просмотра сигналов.

В данном случае сигнал будет лишь на одном канале, который присоединён к выводу Tx (передатчик) USB-UART преобразователя.

Последовательный сигнал, захваченный логическим анализатором

Читайте также:  Подключаем к attiny85 питание от солнечной батареи

Для наглядности можно настроить декодер перехваченных данных. Для этого в правом столбце находим поле Analyzers, нажимаем иконку в виде плюса – «Добавить», указываем тип – Async Serial. Появится окно с выбором настроек. В первое поле вводим номер канала, на котором у вас данные.

Остальное оставим как есть. После нажатия кнопки Save (Сохранить), над полем соответствующего канала появятся метки голубого цвета с отображением значений байтов, которые были перехвачены. Нажав на шестерёнку в данном дешифраторе, можно задать режим отображения значений – ASCII, HEX, BIN или DEC.

Если вы передавали в COM-порт строку, выберите режим ASCII, и увидите тот текст, который был вами передан в порт.

Настройки декодера данных

Тут же, в правом столбце программы Saleae Logic, можно добавлять к перехваченным данным закладки, проводить измерения задержек и длительностей, выставлять всевозможные маркеры и даже проводить поиск по данным для декодированных протоколов.

Аналогичным образом подключим логический анализатор к преобразователю USB-RS485. Линии данных всего две, поэтому можно установить триггер срабатывания по фронту любого из каналов: сигнал в протоколе RS-485 дифференциальный и фронты импульсов появляются одновременно на каждом из каналов, но в противофазе.

Подключение конвертера USB-RS485 к логическому анализатору

Нажмём кнопку «Старт» в программе анализатора. С помощью нашей терминалки подключимся к USB-RS485 конвертеру и передадим какие-нибудь данные. По срабатыванию триггера программа начнёт собирать данные, по завершению выведет их на экран.

Последовательный сигнал RS485, захваченный логическим анализатором

Программа Saleae Logic позволяет экспортировать сохранённые данные в виде изображений и текстовых данных, сохранять настройки программы, аннотации и декодеры каналов.

Последний пример в данном небольшом обзоре – захваченный кадр данных, переданный по последовательному протоколу SPI. В канале 2 виден сигнал выбора ведомого, в канале 0 – тактовые импульсы, а в канале 1 – собственно данные от ведущего устройства к ведомому.

Последовательный сигнал SPI, захваченный логическим анализатором

Выводы

Логический анализатор может быть очень полезен при разработке и настройке всевозможных электронных устройств, при написании программного обеспечения, работающего в связке с железом, при работе с микроконтроллерами, ПЛИС и микропроцессорами, для анализа работы различных устройств и протоколов обмена данными, и для многих других применений. Кроме того, он портативен и не нуждается в отдельном питании.

Скачать инструкцию по работе с программой для логического анализатора Saleae

Источник: https://soltau.ru/index.php/arduino/item/414-saleae-logic-analyzer

DSO Quad – мал, да удал!

Практически каждый, кто занимается Arduino (или другими микроконтроллерами), озадаченно смотрит на свое творение и пытаясь понять, почему же устройство работает (или не работает) не так, как задумано, мечтает о том, чтобы увидеть, что же реально происходит на “пинах” (как изменяется напряжение, какова длительность импульсов и т.п.). И тут может помочь очень полезный прибор – осциллограф. Но для многих этот девайс ассоциируется с очень массивным агрегатом, занимающим половину стола и с огромным количеством непонятных ручек.

Но технологии не стоят на месте. Встречайте – компактный 4-х канальный осциллограф DSO Quad:

Главный герой нашего обзора – DSO Quad

DSO Quad поставляется в очень небольшой картонной коробке с привлекательной полиграфией. 

Внутри коробки находится:

  • Осциллограф – 1 шт.
  • Краткая инструкция по эксплуатации – 1 шт.
  • Щуп для аналоговых входов (х1) – 2 шт.
  • Щуп для цифровых входов – 2 шт.

Следует отметить, что цифровые щупы, хотя и обладают очень удобными зажимами, но сама их длинна очень невелика, поэтому пользоваться ими достаточно неудобно. 

Аналоговые же щупы лишены этого недостатка и сделаны очень качественно: они могут использоваться как с пружинным зажимом, так и без него (пружинный зажим просто снимается с некоторым усилием, оголяя обычную “иголку”). 

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

Отдельно можно приобрести пробник с делителем (может работать в двух режимах: x1 или x10 в зависимости от положения переключателя), жаль, что этот полезный аксессуар не входит в стандартный комплект поставки.

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

Изображение с сайта компании-производителя (http://www.seeedstudio.

com)

Первое, что очень удивляет, когда берешь DSO Quad в руки – это его размер.

Это ОЧЕНЬ компактный прибор, который, впрочем, выпускать из рук совершенно не хочется 🙂

DSO Quad в сравнении с батарейкой АА

Фотографии (и даже чтение данных о размерах прибора) не дают общего представления о размере – его надо просто взять в руки. Кроха.

Но довольно рассматривать, пора включить осциллограф. Перед первым включением прибор надо зарядить, зарядка осуществляется через miniUSB-кабель (в комплект не входит).

Примерный вид экрана с заводской прошивкой (включены два канала, для фиксации сигнала используется триггер по спаду):

Далее мы более подробно остановимся на некоторых возможностях этого осциллографа. Но для начала – немного сухих данных из спецификации.

Таблица спецификации, которая приводится в первоисточнике:

Параметр Значение
Аналоговые входы * 2 [CH_A] [CH_B]
Цифровые ввходы * 2 [CH_C] [CH_D]
Чувствительность по вертикали 20mV-10V/деление (1-2-5 step) с пробником x1
200mV -100V/div (1-2-5 step) с пробником x10
Разрешение по вертикали 8 bit
Входное напряжение AC/DC (переменное/постоянное)
Максимальное входное напряжение 80Vpp (пробник x1)
400Vpp (пробник x10)
Память 4K на канал / 8K (измерение одного канала)
Программные триггеры фронт/спад, длительность, уровень
Аппаратные триггеры фронт/спад
Синхронизация CH1/CH2/EXT
Типы синхронизации Auto, Normal, Single, SCAN, None
Генератор тестовых сигналов 10Hz to 8MHz 2.8Vpp Square Wave, duty cycle 10~90% adjustable / 10Hz to 20kHz 2.8Vpp Sine, Square, Sawtooth, Triangle wave
Встроенная память internal 2MB USB disk, BMP, DAT file
Автоизмерение Vmax, Vmin, Vpp, Vavr, Vrms, Freq, Period, Pulse, Duty
Измерение с помощью курсоров напряжение, длительность
Режим выборки real time
Выборка 30S/s – 72MS/s
Питание LiPo battery
Размеры 98 * 60 * 14.5 (mm)
Вес 80g (без батареи)
Аксессуары в комплекте 2 аналоговых пробника х1, 2 цифровых пробника

DSO Quad построен на базе процессора ARM Cortex M3 (STM32F103VCT6). Используется быстродействующее 8-битное АЦП с максимальной частотой дискретизации 72МГц. Внутренняя память – 2 Мб (может использоваться для хранения данных и обновления прошивки). Экран – TFT с диагональю 3″ и разрешением 400х240 точек. Питание от встроенного (заменяемого) LiPo аккумулятора.Доступ ко всем возможным функциям и настройкам прибора осуществляется с помощью 4 кнопок (каждая из кнопок имеет по 2 функции: одна – на короткое нажатие и вторая – на длинное) и двух трехпозиционных “слайдеров” (отрабатываются “смещение вправо”, “смещение влево” и “нажатие”).

Элементы управления осциллографом

Сначала управление кажется несколько сложным, но после некоторого привыкания и понимания логики работы (особенно это касается “слайдеров”) – все становится просто и удобно.
Осциллограф, который попал мне в руки имел заводскую прошивку версии 2.7, в которой обнаружился досадный недостаток – невозможно было записанный сигнал “пролистать” по оси времени. Как оказалось, это не единственный недостаток.

Большим преимуществом этого прибора является то, что он реализуется по принципам “open source” и энтузиасты не преминули этим воспользоваться: существует несколько версий альтернативных прошивок (с меньшим количеством ошибок и зачастую с гораздо большей функциональностью), причем, это касается не только основной функции DSO Quad, но и дополнительных расширений (о них мы поговорим позже).

Устав бороться с указанным выше недостатком, я обновил прошивку своего экземпляра на DSO203 GCC APP – Community Edition (2.51+SmTech1.8+Fixes).

Первое, что бросилось в глаза: изменение экранного интерфейса (сравните скриншот выше и ниже этого предложения), но больше всего сбило с толку, что изменились функции управляющих элементов – пришлось заново “знакомиться” с осциллографом.

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

Новая прошивка дала не только эти изменения: они коснулись практически каждой фукнции DSO Quad – начиная от новых видов “развертки”, до встроенного генератора сигналов. И каждая функция стала еще более “юзабельной”.

Все последующие скриншоты сделаны уже с новой прошивкой. Покажем работу с некоторыми функциями прибора (далеко не со всеми, иначе бы обзор превратился в огромный “мануал”).

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

Очень удобно для работы с цифровыми сигналами оказалось использовать встроенные триггеры (их несколько различных вариантов: по спаду, по фронту, по превышению определенного напряжения, по напряжению ниже порогового, по длительности импульса и т.п.).

Триггер в качестве ключевого сигнала может использовать любой из каналов (на скриншотах ниже обратите внимание на самый правый верхний угол – используется триггер “по спаду” на канале А – что позволило “захватить” полезный сигнал).

Встроенная память осциллографа позволяет использовать для “захвата” буфер 4Кб на канал (или, если осуществляется захват одного канала – 8Кб). Записанный таким образом сигнал можно “пролистать” по шкале времени (в центре снизу видна общая шкала времени и прямоугольником выделена область на экране, которая выводится в текущий момент).

Дополнительно осциллограмму можно сохранить в различных вариантах: как изображение (BMP), файл с данными (CSV или DAT), что открывает дополнительные возможности по анализу и обработке сигналов.

При подключении к компьютеру DSO Quad обнаруживается как обычный внешний жесткий диск. Наиболее полно поддерживается работа в среде Windows, для Linux-систем все несколько сложнее, но есть соответствующие описания необходимых процедур монтирования встроенного накопителя. Работа с mac-компьютерами пока находится в стадии proof-of-concept.

Как мы уже отметили ранее, осциллограф имеет два аналоговых входа (A и B) и два цифровых (C и D). Для примера мы покажем разницу в работе:

На представленном скриншоте каналы B и D отключили, чтобы не загромождать изображение на экране (отключить можно любой из каналов).

Видно, что сигнал с первого канала (А) выглядит несколько иначе, чем с 3 (C) – в первом случае осциллограф показывает абсолютно все изменения и все промежуточные значения сигнала и наиболее точно отображает форму сигнала, во втором же случае обрабатываются всего два значения: “низкий логический уровень” (0) и “высокий логический уровень” (1).

Безусловно, это накладывает некоторые ограничения на использование данного осциллографа (невозможно посмотреть реальную форму четырех аналоговых сигналов – это возможно только для двух каналов), но на мой взгляд, этот прибор наиболее полно раскрывает свои возможности именно по работе с цифровыми сигналами (для “цифры” можно использовать все 4 канала одновременно).

С помощью специальных курсоров (T1, T2 и V1, V2) можно производить измерения параметров сигналов. На скриншоте ниже видно, как с помощью этих курсоров измерено напряжение между минимумом и максимумом на сигнале 1 канала, там же видно, как измерили длительность кодовой посылки.

Измерение напряжения и длительности

Кнопкой 3 (круг) можно включить режим отображения информационной панели (справа), тогда соответствующий размах и время отображается в правом столбце (два верхних значения). Дополнительно можно настроить, какие еще параметры в данной панели выводить.

Отображение информационной панели

Более того, таких быстрых информационных панелей можно создать целых 5 штук (в каждой могут быть параметры как одного конкретного канала, так и разных). Переключение между панелями с помощью кнопки 4 (треугольник).

Еще одной интересной особенностью является то, что последний цифровой канал (D) можно использовать как некий “вычислитель” – пользователи могут не только видеть тот сигнал, что приходит на этот канал, но можно включить так же отображение на этом канале следующих вариантов:

  • A+B
  • A-B
  • C&D
  • C | D
  • REC_A
  • REC_B
  • REC_C
  • REC_D
  • FFT_A
  • FFT_B

Последние два пункта – это “быстрое преобразование Фурье” для соответствующего канала. Согласитесь, функционал очень богат!

Еще одной полезной функцией этого прибора является генератор сигналов различной формы.

Доступны следующие варианты:

  • Меандр (SQUARE) 
  • Синусоида (SINUS) 
  • Треугольник (TRIANG) 
  • Пила (SAW) 
  • ШИМ (PWM)

Параметры каждого выходного сигнала достаточно гибко изменяются (частота, напряжение, скважность).

Ниже приведены соответствующие скриншоты (выход генератора подключен к 1 входу).

Меандр
Синусоида
“Треугольник”
ШИМ со скважностью 25%
“Пила”

Встроенным генератором сигналов можно пользоваться и во время основной работы осциллографа, например для того, чтобы подавать на вход разрабатываемого модуля сигнал с различными параметрами (с генератора) и отслеживать его прохождение и трансформации в различных точках системы с помощью 2 аналоговых и 2 цифровых входов.

Еще одним приложением, которое разработали энтузиасты является Logic analyzer. Как следует из названия – с помощью этой программы удобно анализировать логику работы цифровых устройств.

После установки этого приложения (процедура установки легко находится по ссылке выше), его вызов осуществляется следующим образом: надо нажать и удерживать кнопку 3 (круг) и включить DSO Quad.

В этом режиме работы DSO Quad все входы становятся цифровыми (в моем тесте сигналы присутствуют на 1 и 3 канале):

Записанные сигналы можно удобно масштабировать по времени:

Логический анализатор не только позволяет оценить форму сигналов, но и в очень удобной форме показывает время между различными кодовыми посылками:

Поскольку тут используются только “цифровые” сигналы, то длительность записанных сигналов существенно выше. Обеспечивается так же удобная навигация по шкале времени (можно “листать” сигнал от начала до конца записи”) и соответствующий маркер (красная пунктирная черта) позволяет не напрягая глаз оценить сигнал одновременно по всем 4 каналам.

Естественно, доступны фукнции по сохранению записанных сигналов в различных форматах.

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

Для устранения этого “недостатка” была осуществлена реализация PAWN (специального скриптового языка) для DSO Quad.

А это позволило еще больше расширить возможности:

Несколько полезных утилит

Список этих утилит постоянно расширяется. Приведем лишь несколько примеров:

Двухканальный вольтметр с фиксацией минимальных и максимальных значений
Таблица символов

Полный список (включая описание процедуры установки) и свежие версии этих утилит можно найти по ссылке (существует даже анализатор USB). Превосходный компактный прибор с уникальным набором функций.

Конечно, DSO Quad не претендует на полную универсальность и в некоторых случаях не хватит его быстродействия (высокочастотные цепи), но в большинстве случаев при работе с различными микроконтроллерами, он позволит “пощупать” сигналы в различных точках схемы и поможет проанализировать процессы, проходящие в исследуемых или разрабатываемых системах.

Открытая платформа и большое сообщество пользователей еще больше расширяют возможности этого осциллографа. Удобный интерфейс и очень наглядное представление процессов позволяют даже новичкам быстро освоиться с прибором.

Источник: http://devicter.blogspot.com/2013/01/dso-quad_26.html

Ссылка на основную публикацию
Adblock
detector