- Ход проекта:
- Требования к проекту
- Принципиальная электрическая схема:
- Установите зависимости для осциллографа Raspberry Pi:
- Код Python для осциллографа Raspberry Pi:
- Осциллограф Raspberry Pi в действии:
Привет, ребята, добро пожаловать в сегодняшний пост. Одна из самых захватывающих вещей в работе производителя - это умение разрабатывать импровизированные инструменты, вы никогда не застрянете в работе над каким-либо проектом, если у вас такая универсальность. Итак, сегодня я расскажу, как создать импровизированную версию одного из самых важных инструментов в области электротехники и электроники на основе Raspberry Pi; Осциллограф.
Осциллограф - это электронный испытательный прибор, который позволяет визуализировать и наблюдать за изменяющимися напряжениями сигналов, обычно в виде двухмерного графика с одним или несколькими сигналами, нанесенными в зависимости от времени. Сегодняшний проект будет направлен на воспроизведение возможностей визуализации сигналов осциллографа с использованием Raspberry Pi и модуля аналого-цифрового преобразователя.
Ход проекта:
Чтобы воспроизвести визуализацию сигнала осциллографа с помощью Raspberry Pi, потребуются следующие шаги;
1. Выполните цифро-аналоговое преобразование входного сигнала.
2. Подготовьте полученные данные для представления.
3. Нанесите данные на график в реальном времени.
Упрощенная блок-схема этого проекта будет выглядеть, как на диаграмме ниже.
Требования к проекту
Требования к этому проекту можно разделить на два:
- Требования к оборудованию
- Требования к программному обеспечению
Требования к оборудованию
Для создания этого проекта требуются следующие компоненты / части;
- Raspberry pi 2 (или любая другая модель)
- SD-карта на 8 или 16 ГБ
- Кабель LAN / Ethernet
- Блок питания или USB-кабель
- ADS1115 АЦП
- LDR (необязательно, поскольку он предназначен для тестирования)
- Резистор 10 кОм или 1 кОм
- Перемычки
- Макетная плата
- Монитор или любой другой способ увидеть рабочий стол пи (включая VNC)
Требования к программному обеспечению
Программные требования для этого проекта - это в основном модули Python ( matplotlib и drawnow ), которые будут использоваться для визуализации данных, и модуль Adafruit для взаимодействия с микросхемой ADS1115 ADC. По мере продолжения я покажу, как установить эти модули на Raspberry Pi.
Хотя это руководство будет работать независимо от используемой ОС Raspberry Pi, я буду использовать ОС Raspberry Pi stretch, и я предполагаю, что вы знакомы с настройкой Raspberry Pi с ОС Raspbian stretch и знаете, как подключиться по SSH к Raspberry pi с помощью терминального программного обеспечения, такого как putty. Если у вас есть проблемы с чем-либо из этого, на этом веб-сайте есть множество руководств по Raspberry Pi, которые могут помочь.
Установив все аппаратные компоненты, давайте создадим схемы и соединим компоненты вместе.
Принципиальная электрическая схема:
Для преобразования аналоговых входных сигналов в цифровые, которые можно визуализировать с помощью Raspberry Pi, мы будем использовать микросхему ADS1115 ADC. Этот чип становится важным, потому что Raspberry Pi, в отличие от Arduino и большинства микроконтроллеров, не имеет встроенного аналого-цифрового преобразователя (АЦП). Хотя мы могли бы использовать любой АЦП, совместимый с Raspberry Pi, я предпочитаю этот чип из-за его высокого разрешения (16 бит) и хорошо документированного технического описания и инструкций по использованию от Adafruit. Вы также можете ознакомиться с нашим руководством по Raspberry Pi ADC, чтобы узнать об этом больше.
АЦП представляет собой устройство на основе I2C и должен быть подключен к Raspberry Pi, как показано на схемах ниже.
Для ясности, штыревое соединение между двумя компонентами также описано ниже.
Подключения ADS1115 и Raspberry Pi:
VDD - 3,3 В
GND - GND
ПДД - ПДД
SCL - SCL
Завершив все подключения, включите свой пи и приступайте к установке зависимостей, упомянутых ниже.
Установите зависимости для осциллографа Raspberry Pi:
Прежде чем мы начнем писать скрипт python для извлечения данных из ADC и построения их на живом графике, нам нужно включить интерфейс связи I2C на raspberry pi и установить требования к программному обеспечению, которые были упомянуты ранее. Это будет сделано в следующих шагах, чтобы было легко следовать:
Шаг 1. Включите интерфейс I2C Raspberry Pi
Чтобы включить I2C, из терминала запустите;
sudo raspi-config
Когда откроются панели конфигурации, выберите параметры интерфейса, выберите I2C и нажмите «Включить».
Шаг 2. Обновите Raspberry pi
Первое, что я делаю перед началом любого проекта, - это обновляю Pi. Благодаря этому я уверен, что все в ОС обновлено, и у меня не будет проблем с совместимостью с любым последним программным обеспечением, которое я выберу для установки на Pi. Для этого выполните две команды ниже:
sudo apt-get update sudo apt-get upgrade
Шаг 3. Установите библиотеку Adafruit ADS1115 для ADC.
После завершения обновления мы готовы к установке зависимостей, начиная с модуля Python Adafruit для микросхемы ADS115. Убедитесь, что вы находитесь в домашнем каталоге Raspberry Pi, запустив;
cd ~
затем установите необходимое для сборки, запустив;
sudo apt-get install build-essential python-dev python-smbus git
Затем клонируйте папку Adafruit git для библиотеки, запустив;
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Перейдите в каталог клонированного файла и запустите установочный файл;
cd Adafruit_Python_ADS1x1z sudo python setup.py установить
После установки ваш экран должен выглядеть как на изображении ниже.
Шаг 4: Протестируйте библиотеку и связь 12C.
Прежде чем мы продолжим работу над остальной частью проекта, важно протестировать библиотеку и убедиться, что ADC может взаимодействовать с Raspberry Pi через I2C. Для этого мы будем использовать пример сценария, который поставляется с библиотекой.
Находясь в папке Adafruit_Python_ADS1x15, перейдите в каталог примеров, запустив;
CD примеры
Затем запустите пример sampletest.py, который отображает значения четырех каналов АЦП в табличной форме.
Запустите пример, используя:
python simpletest.py
Если модуль I2C включен и соединение хорошее, вы должны увидеть данные, как показано на изображении ниже.
В случае возникновения ошибки убедитесь, что АЦП правильно подключен к PI, а связь I2C включена на Pi.
Шаг 5: Установите Matplotlib
Чтобы визуализировать данные, нам нужно установить модуль matplotlib, который используется для построения всех видов графиков в python. Это можно сделать, запустив;
sudo apt-get install python-matplotlib
Вы должны увидеть результат, как на изображении ниже.
Шаг 6. Установите модуль Python Drawnow.
Наконец, нам нужно установить модуль Python drawow . Этот модуль помогает нам обновлять график данных в реальном времени.
Мы будем устанавливать drawow через установщик пакета python; pip , поэтому нам нужно убедиться, что он установлен. Это можно сделать, запустив;
sudo apt-get install python-pip
Затем мы можем использовать pip для установки пакета drawow , запустив:
sudo pip install drawow
После запуска вы должны получить результат, подобный изображению ниже.
После установки всех зависимостей мы готовы писать код.
Код Python для осциллографа Raspberry Pi:
Код на Python для этого Осциллографа Pi довольно прост, особенно если вы знакомы с модулем python matplotlib . Прежде чем показать нам весь код, я постараюсь разбить его на части и объяснить, что делает каждая часть кода, чтобы у вас было достаточно знаний, чтобы расширить код, чтобы делать больше вещей.
На этом этапе важно переключиться на монитор или использовать средство просмотра VNC, все, через что вы можете видеть рабочий стол Raspberry Pi, поскольку построенный график не будет отображаться на терминале.
Используя монитор в качестве интерфейса, откройте новый файл Python. Вы можете называть его любым именем, но я буду называть его scope.py.
sudo nano scope.py
После создания файла первое, что мы делаем, это импортируем модули, которые будем использовать;
время импорта import matplotlib.pyplot как plt из drawow import * import Adafruit_ADS1x15
Далее мы создаем экземпляр библиотеки ADS1x15 с указанием ADS1115 ADC.
adc = Adafruit_ADS1x15.ADS1115 ()
Далее мы устанавливаем коэффициент усиления АЦП. Существуют разные диапазоны усиления, и их следует выбирать в зависимости от ожидаемого напряжения на входе АЦП. В этом руководстве мы оцениваем напряжение 0–4,09 В, поэтому мы будем использовать коэффициент усиления 1. Для получения дополнительной информации о коэффициенте усиления вы можете ознакомиться с таблицей данных ADS1015 / ADS1115.
УСИЛЕНИЕ = 1
Затем нам нужно создать переменные массива, которые будут использоваться для хранения данных, которые будут построены, и еще одну для использования в качестве счетчика.
Val = cnt = 0
Затем мы сообщаем о наших намерениях сделать график интерактивным, чтобы мы могли отображать данные в реальном времени.
plt.ion ()
Затем мы начинаем непрерывное преобразование АЦП, указывая канал АЦП, в данном случае канал 0, и также указываем коэффициент усиления.
Следует отметить, что все четыре канала АЦП на ADS1115 могут быть прочитаны одновременно, но для этой демонстрации достаточно одного канала.
adc.start_adc (0, усиление = УСИЛЕНИЕ)
Затем мы создаем функцию def makeFig , чтобы создать и установить атрибуты графика, который будет содержать наш живой график. Прежде всего, мы устанавливаем пределы оси Y с помощью ylim , после чего вводим заголовок графика и имя метки, прежде чем указывать данные, которые будут построены, а также стиль и цвет графика с помощью plt.plot (). Мы также можем указать канал (как был заявлен канал 0), чтобы мы могли идентифицировать каждый сигнал, когда используются четыре канала АЦП. plt.legend используется для указания того, где мы хотим отображать информацию об этом сигнале (например, канал 0) на рисунке.
plt.ylim (-5000,5000) plt.title ('Осцилоскоп') plt.grid (True) plt.ylabel ('Выходы АЦП') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'нижний правый')
Далее мы пишем то время как цикл, который будет использоваться постоянно считывают данные с АЦП и обновлять график соответственно.
Первое, что мы делаем, это считываем значение преобразования АЦП.
значение = adc.get_last_result ()
Затем мы печатаем значение на терминале, чтобы дать нам еще один способ подтверждения нанесенных на график данных. Мы ждем несколько секунд после печати, затем добавляем данные в список (val), созданный для хранения данных для этого канала.
print ('Канал 0: {0}'. формат (значение)) time.sleep (0.5) val.append (int (значение))
Затем мы вызываем drawow, чтобы обновить график.
нарисованный (makeFig)
Чтобы гарантировать, что на графике доступны самые свежие данные, мы удаляем данные с индексом 0 после каждых 50 подсчетов данных.
cnt = cnt + 1, если (cnt> 50): val.pop (0)
Это все!
Полный код Python приведен в конце данного руководства.
Осциллограф Raspberry Pi в действии:
Скопируйте полный код python и вставьте в файл python, который мы создали ранее, помните, что нам понадобится монитор для просмотра графика, поэтому все это должно выполняться либо с помощью VNC, либо с помощью подключенного монитора или экрана.
Сохраните код и запустите, используя;
sudo python scope.py
Если вы использовали другое имя, кроме scope.py, не забудьте изменить его, чтобы оно соответствовало.
Через несколько минут вы должны увидеть, как данные АЦП печатаются на терминале. Иногда вы можете получить предупреждение от matplotlib (как показано на изображении ниже), которое следует подавить, но это никак не влияет на отображаемые данные или график. Однако, чтобы подавить предупреждение, следующие строки кода могут быть добавлены после строк импорта в нашем коде.
Импорт предупреждений import matplotlib.cbook warnings.filterwarnings («игнорировать», category = matplotlib.cbook.mplDeprecation)
Вот и все, что нужно для этого учебного пособия, чтобы полностью протестировать ваш осциллограф, вы можете подключить аналоговое устройство, например, потенциометр, к каналу на АЦП, и вы должны видеть изменение данных с каждым поворотом потенциометра. Или вы можете ввести синусоидальную или прямоугольную волну для проверки выходного сигнала.
Спасибо за чтение, если у вас есть какие-либо вопросы или что-то, что вы хотите, чтобы я добавил, просто оставьте мне комментарий.
До следующего раза, продолжайте делать!