Как работает генератор импульсов на Arduino. Какие компоненты нужны для его сборки. Как настроить и запрограммировать Arduino для генерации сигналов разной формы. Где применяется генератор импульсов на Arduino в электронике и радиотехнике.
Принцип работы генератора импульсов на Arduino
Генератор импульсов на Arduino представляет собой устройство для формирования периодических электрических сигналов заданной формы и частоты. Основные компоненты такого генератора:
- Микроконтроллер Arduino для управления генерацией сигналов
- Цифро-аналоговый преобразователь (ЦАП) для формирования аналогового сигнала
- Усилитель для усиления сформированного сигнала
- Дисплей и органы управления для настройки параметров
Принцип работы генератора заключается в следующем:
- Arduino формирует цифровой код, соответствующий заданной форме сигнала
- ЦАП преобразует цифровой код в аналоговое напряжение
- Усилитель усиливает сформированный сигнал до нужной амплитуды
- На выходе получается периодический сигнал заданной формы и частоты
Необходимые компоненты для сборки генератора
Для создания простого генератора импульсов на Arduino понадобятся следующие компоненты:

- Плата Arduino (например, Arduino Uno или Nano)
- Цифро-аналоговый преобразователь (например, MCP4725)
- Операционный усилитель (например, LM358)
- LCD дисплей 16×2 символов
- Потенциометры для регулировки частоты и амплитуды
- Кнопки для управления
- Резисторы, конденсаторы, соединительные провода
Стоимость компонентов для базовой версии генератора составит около 1000-1500 рублей. Более продвинутые версии с расширенным функционалом могут стоить до 3000-5000 рублей.
Программирование Arduino для генерации сигналов
Для программирования Arduino генератора импульсов используется стандартная среда разработки Arduino IDE. Основные этапы создания программы:
- Подключение необходимых библиотек (для работы с ЦАП, дисплеем и т.д.)
- Инициализация компонентов в функции setup()
- Реализация алгоритма генерации сигнала в функции loop()
- Обработка пользовательского ввода для изменения параметров
Пример простого кода для генерации синусоидального сигнала:
#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
void setup() {
dac.begin(0x62);
}
void loop() {
for(int i=0; i<360; i++) {
float val = sin(i * 3.14159 / 180.0);
int dac_value = (int)((val + 1.0) * 2047.5);
dac.setVoltage(dac_value, false);
delayMicroseconds(100); // Задержка для настройки частоты
}
}
Настройка и калибровка генератора импульсов
После сборки и программирования генератора необходимо выполнить его настройку и калибровку:

- Проверьте правильность всех соединений
- Загрузите прошивку в Arduino
- Подключите осциллограф к выходу генератора
- Настройте частоту и амплитуду выходного сигнала
- Сравните параметры сигнала с заданными значениями
- При необходимости откорректируйте коэффициенты в программе
Для точной калибровки рекомендуется использовать эталонный генератор сигналов и прецизионный осциллограф. Это позволит добиться высокой точности формирования сигналов.
Области применения генератора импульсов на Arduino
Генератор импульсов на базе Arduino находит применение во многих областях электроники и радиотехники:
- Тестирование и отладка электронных устройств
- Проверка аудиосистем и усилителей
- Калибровка измерительных приборов
- Генерация тактовых сигналов для цифровых схем
- Формирование сигналов в системах управления
- Обучение и демонстрация принципов работы с сигналами
Благодаря гибкости настройки и программирования, такой генератор может быть адаптирован под самые разные задачи.
Преимущества и недостатки Arduino генератора
Генератор импульсов на Arduino имеет ряд преимуществ по сравнению с готовыми решениями:

- Низкая стоимость
- Возможность модификации под конкретные задачи
- Простота сборки и настройки
- Широкие возможности программирования
К недостаткам можно отнести:
- Ограниченный частотный диапазон (до 1-2 МГц)
- Невысокая точность формирования сигналов
- Зависимость от качества компонентов
Поэтому Arduino генератор больше подходит для учебных и любительских целей, а не для профессионального применения.
Расширение возможностей генератора импульсов
Базовую версию генератора на Arduino можно существенно улучшить, добавив следующие возможности:
- Генерация сигналов произвольной формы
- Формирование пачек импульсов
- Модуляция сигналов (AM, FM, PWM)
- Синхронизация с внешними устройствами
- Сохранение и загрузка настроек
- Управление через компьютер или смартфон
Для реализации этих функций потребуется использовать более мощный микроконтроллер (например, Arduino Due) и доработать программное обеспечение. Однако это позволит создать многофункциональный прибор, не уступающий по возможностям коммерческим аналогам.

Типичные проблемы и их решение
При работе с генератором импульсов на Arduino могут возникать следующие проблемы:
- Искажение формы сигнала — проверьте качество компонентов и экранирование
- Нестабильность частоты — используйте внешний кварцевый генератор
- Малая амплитуда сигнала — добавьте дополнительный усилитель
- Шумы и наводки — улучшите развязку по питанию
- Ограниченный частотный диапазон — примените более быстрый ЦАП
Большинство проблем решается правильным выбором компонентов, тщательной сборкой и настройкой устройства. При необходимости можно обратиться за консультацией на форумы по электронике.
Модуль NE555 – генератор прямоугольных импульсов – Arduino для Ваших увлечений
Модуль YL-107 NE555 – генератор прямоугольных импульсов с регулировкой частоты и скважности
Описание:
YL-107 NE555 предназначен для генерирования последовательности прямоугольных импульсов. Данный модуль является улучшенным аналогом NE555 с регулировкой частоты. Особенностью YL-107 является не только регулирования частоты, но изменения скважности импульсов. Модуль можно использовать в качестве генератора импульсов для шагового двигателя, для тестирования оборудования и т.д.
Плата модуля спроектирована на базе таймера NE555. Микросхема NE555 имеет 8 выводов и выполнена в корпусе «SO-8». Ток потребления микросхемы без нагрузки составляет до 20 мА. Диапазон рабочей частоты составляет от 1Гц до 200 КГц. Диапазон частоты выходных импульсов можно изменять с помощью перемычек:
Перемычка 1 (L): | от 1 Гц до 50 Гц |
Перемычка 2: | от 50 Гц до 1 КГц |
Перемычка 3: | от 1 КГц до 10 КГц |
Перемычка 4 (H): | от 10 КГц до 200 КГц |
При необходимости более точной настройки параметров нужно использовать подстроечный резистор. Настройка частоты импульсов осуществляется с помощью потенциометра R1, а скважность сигнала задается с помощью переменного резистора R2. При изменении диапазона следует отключать питание от модуля.
Подключается модуль к устройствам с помощью 3 выводов:
VCC: | напряжение питания от 5 до 15 В |
GND: | «земля» |
OUT: | управляющий сигнал |
Подавать питание можно от внешнего источника питания, платформы Arduino или любого другого микроконтроллерного устройства. О наличии питания сигнализирует светодиод, который подключённый к шине питания. Диапазон напряжения питания модуля составляет от 5 до 15 В.
Технические характеристики модуля:
Микросхема | NE555 |
Напряжение питания, В | 5 … 15 |
Диапазон рабочих частот, КГц | 0,001 … 200 |
Ток потребления без нагрузки, мА | 20 |
Рабочая температура, °C | 0 … +70 |
Размеры модуля, мм | 23 х 31 |
Новое. Микроконтроллеры на интернет-аукционе Au.ru
Генератор импульсов сигналов NE555, модуль Arduino используется в проектах на микроконтроллерах для регулирования параметров выходных импульсов в широких приделах или как задающий генератор в настройке и тестировании различного электронного оборудования. Модуль генерирует последовательность прямоугольных импульсов, определяемых RC цепочкой.
Для использования модуля нужно создать на его основе макет – подключить питание и подключить к контроллеру или другому электронному устройству. После подачи на модуль напряжения питания на корпусе платы должен загореться светодиод, обозначенный D1. Частота выходных прямоугольных импульсов регулируется с помощью ручки потенциометра (настроечного резистора), обозначенного RP1, в диапазоне 1 Гц – 100 кГц. Другие параметры выходного сигнала не регулируются. Амплитуда выходных импульсов пропорциональна напряжению источника питания (4,5 – 18 В).
Генератор импульсов сигналов NE555, модуль Arduino имеет один 3-х контактный штыревой разъем с расстоянием между контактами 2,54 мм (совместимо с Arduino).
Обозначение контактов:
- GND – общий контакт;
- OUT – выходной сигнал;
- VCC – напряжение питания.
Питание модуля осуществляется или от Arduino контроллера, или от внешнего источника питания. Напряжение питания модуля 4,5 – 18 В постоянного тока. Ток потребления около 225 мА. Выходной ток генератора не превышает 200 мА, поэтому для управления более мощной нагрузкой необходим усилитель тока выходного каскада.
Характеристики:
генератор собран на таймере: NE555;
модуль совместим: с Arduino;
форма генерируемых импульсов: прямоугольные импульсы;
регулировка частоты выходных импульсов в диапазоне: 1 Гц – 100 кГц;
напряжение питания: 4,5 – 18 В постоянного тока;
потребляемый ток: 225 мА;
выходной ток: 200 мА;
рабочая температура: 0 – 70°C;
размеры: 29 х 12 х 10 мм;
Arduino генератор прямоугольных импульсов – Тарифы на сотовую связь
109 пользователя считают данную страницу полезной.
Информация актуальна! Страница была обновлена 16.12.2019
Прошлый генератор прямоугольных импульсов на энкодере (“GENERATOR ver.1”) получился неплохим, но ограничение в 8 кГц кого то может не устроить. Конечно, можно его разогнать до 32 кГц, но для этого придется подключать его к компьютеру и лезть в скетч, менять настройки вручную. Для самодостаточного устройства это большой минус.
Мне товарищем AlexBeda было сделано замечание, что разработанный им на Ардуино генератор «выжимал и гораздо больше частоты». Расценив это замечание как команду к действию, решил попробовать.
Выдалось свободное время, и я смог приспособить его программу для использования в автономном устройстве. Пришлось доработать скетч для вывода информации на LCD экран через I2C шину, урезать лишнее (на мой взгляд) и поправить некоторые ошибки. Учитывая, что я далеко не программист, пришлось попотеть, подгоняя содержимое топором и граблями. Кто не знает, как подключить I2C модуль к Ардуино, советую посмотреть видео « Подключаем текстовый LCD 16×2 к arduino по I2C».
Встречайте, генератор прямоугольных импульсов от 1 Гц до 2 МГц с возможность регулировки скважности — “GENERATOR ver.2”. Так же как и первый генератор, все собрано из готовых блоков и трех кнопок, никакой пайки и дополнительных радиоэлементов, что облегчает сборку даже новичку. Ну и соблюдена основная концепция изделия, оно должно быть изготовлено из ОЧЕНЬ дешевых составляющих. Поэтому недешевый модуль генератора на микросхеме ad9850 здесь не предполагалось использовать. Дешевый модуль генератора на микросхеме NE555 мною был так же опробован, но нестабильность генерируемой частоты не понравилась, и пришлось от него отказаться.
С ростом вырабатываемой данным генератором частоты, незначительно растет погрешность, падает скважность и фронты начинают заваливаться, но в основном генератор вполне точен, выполняет свои функции и позволяет вносить коррективы кнопками. Если бы еще заставить его выдать синусоиду, пилу и лопату :).
Генератор частоты на Ардуино – прибор, который занимается преобразованием электрической энергии источника постоянного тока в энергию, не поддающуюся затуханию, для расчета и частоты и образованной формы электрических колебаний. Приспособление приобрело популярность среди начинающих создателей электронных устройств, разработчиков компьютерных девайсов и радиоприемников. Выходное напряжение получается из 3 форм: прямоугольник, синусоида и пила.
Источник электрического тока передает возбужденные волны контуру колебаний, поэтому образуются волновые движения. Они постепенно затухают, потому что сопротивление поглощает энергетическую волну. Во избежание затухания в контур подается дополнительная энергия для восполнения потерянной. Такая процедура проводится с использованием положительной обратной связи. С помощью связи в контур поступает частица сигнала, совпадающего с колебанием обратной связи.
Такой прибор, как генератор сигналов на Ардуино, легко сделать в домашних условиях. Основа конструкции – микроконтроллер Arduino.
Где применяется генератор частоты на Ардуино
Роль частотного генератора в мире электроники – настройка и определение технической характеристики тактов сигнальных волн. Другое применение – для регулировки узлов и элементов приемников, передающих радио-колебания. Кроме того, генератор импульсов, построенный на Ардуино, используют как модулятор или источник питания для устройств, которые обладают измерительными свойствами.
Частотные измерители могут изменять выходные сигналы с определенным скачком.
Поэтому устройства с такими свойствами играют немаловажную роль в конструировании электронных приборов. Перечислим другие значительные функции Ардуино-генератора:
- Поиск расположения мест, где можно проложить кабели и трубопроводы. Причем поисковая работа проводится на дальних расстояниях.
- Поисковые работы для находки мультичастотной технологии с помощью процесса излучения сразу нескольких частотных волн.
- Создание аналоговых синтезаторов. Синтезирующие устройства применяются для сборки электронных устройств без использования множества блоков. Все сигнальные волны мелькают между разными блоками строго по стандартам.
Комплектующие
Для создания генератора прямоугольных импульсов на Ардуино понадобятся следующие компоненты:
- Arduino Uno R3 в антистатической упаковке;
- шилд DFRobot LCD Keypad Shield;
- модуль генератора сигналов AD9850 DDS;
- проводы для присоединения частей конструкции – 8 штук;
- USB-провод или кабель.
Также во втором случае можно собрать устройство на основе AD9850 DDS модуля и 1,8-дюймового TFT-дисплея (контроллер ST7735).
В таком случае схема соединения будет выглядеть так:
Листинг программы для проекта «генератор импульсов с регулировкой частоты на Ардуино» для первого нашего варианта:
Во втором случае программный код будет таким (позаимствовано на просторах интернета):
Для первого варианта вам нужно не забыть про библиотеку LiquidCrystal, которую можно найти на сайте производителя по этой ссылке.
Для второго варианта нужны следующие технические спецификации:
И библиотеки для Arduino:
Сборка
Алгоритм сборки проекта Arduino-генератор импульсов:
- Скачиваем и устанавливаем последнюю версию бесплатной среды разработки для программирования микропроцессора Ардуино. На нашем сайте указано, как правильно произвести первичную настройку. Также пользователь найдет все возможные ответы на свои вопросы по работе с данной средой.
- С помощью USB-кабеля подключаем микропроцессор к компьютерному устройству. Далее перемещаем программу, код которой указан в разделе выше, в память платформы.
Настройка
Если по окончанию загрузки пользователь получил сообщение «Done uploading», значит, генератор сигналов на Ардуино с дисплеем готов к работе. Следующий шаг – соединение модулей.
Выходные сигнальные волны снимаются с контактов генератора: QOUT1, QOUT2 (прямоугольный), ZOUT1 и ZOUT2 (синусоидальный).
После сборочных работ следует тщательно проверить, правильно ли подключены все контакты. Если все правильно подключено – подаем питание в устройство из электросети.
По истечению пары секунд на дисплее загорится стандартное значение частоты – 10 кГц. Значение можно изменить в любое время – для этого в листинге выше запрограммированы кнопки вверх, вниз, влево и вправо.
Проверка
В первом случае после конструирования должен получиться стандартный мотор-редуктор Ардуино синусоидальных и прямоугольных волновых сигналов, диапазон которых регулируется от 0 до 40 МГц. Проверить управление легче легкого – есть 2 кнопки – вверх и вниз, для настройки грубого характера, а другие – влево и вправо – настраивают аппарат на точную проверку. Настроить шаг можно в зависимости от установленной частоты на аппарате.
Во втором случае итоговое решение будет выглядеть так:
Кроме того, перед переносом программы, указанной в разделе «Программное обеспечение», нужно проверить правильность кода с помощью компилирования. Аппаратная часть прибора легко соединяется с использованием отдельных модулей, поэтому частотный генератор на базе микропроцессора Ардуино может сделать начинающий разработчик электронных устройств.
Генератор частоты на Ардуино – прибор, который занимается преобразованием электрической энергии источника постоянного тока в энергию, не поддающуюся затуханию, для расчета и частоты и образованной формы электрических колебаний. Приспособление приобрело популярность среди начинающих создателей электронных устройств, разработчиков компьютерных девайсов и радиоприемников. Выходное напряжение получается из 3 форм: прямоугольник, синусоида и пила.
Источник электрического тока передает возбужденные волны контуру колебаний, поэтому образуются волновые движения. Они постепенно затухают, потому что сопротивление поглощает энергетическую волну. Во избежание затухания в контур подается дополнительная энергия для восполнения потерянной. Такая процедура проводится с использованием положительной обратной связи. С помощью связи в контур поступает частица сигнала, совпадающего с колебанием обратной связи.
Такой прибор, как генератор сигналов на Ардуино, легко сделать в домашних условиях. Основа конструкции – микроконтроллер Arduino.
Где применяется генератор частоты на Ардуино
Роль частотного генератора в мире электроники – настройка и определение технической характеристики тактов сигнальных волн. Другое применение – для регулировки узлов и элементов приемников, передающих радио-колебания. Кроме того, генератор импульсов, построенный на Ардуино, используют как модулятор или источник питания для устройств, которые обладают измерительными свойствами.
Частотные измерители могут изменять выходные сигналы с определенным скачком.
Поэтому устройства с такими свойствами играют немаловажную роль в конструировании электронных приборов. Перечислим другие значительные функции Ардуино-генератора:
- Поиск расположения мест, где можно проложить кабели и трубопроводы. Причем поисковая работа проводится на дальних расстояниях.
- Поисковые работы для находки мультичастотной технологии с помощью процесса излучения сразу нескольких частотных волн.
- Создание аналоговых синтезаторов. Синтезирующие устройства применяются для сборки электронных устройств без использования множества блоков. Все сигнальные волны мелькают между разными блоками строго по стандартам.
Комплектующие
Для создания генератора прямоугольных импульсов на Ардуино понадобятся следующие компоненты:
- Arduino Uno R3 в антистатической упаковке;
- шилд DFRobot LCD Keypad Shield;
- модуль генератора сигналов AD9850 DDS;
- проводы для присоединения частей конструкции – 8 штук;
- USB-провод или кабель.
Также во втором случае можно собрать устройство на основе AD9850 DDS модуля и 1,8-дюймового TFT-дисплея (контроллер ST7735).
В таком случае схема соединения будет выглядеть так:
Листинг программы для проекта «генератор импульсов с регулировкой частоты на Ардуино» для первого нашего варианта:
Во втором случае программный код будет таким (позаимствовано на просторах интернета):
Для первого варианта вам нужно не забыть про библиотеку LiquidCrystal, которую можно найти на сайте производителя по этой ссылке.
Для второго варианта нужны следующие технические спецификации:
И библиотеки для Arduino:
Сборка
Алгоритм сборки проекта Arduino-генератор импульсов:
- Скачиваем и устанавливаем последнюю версию бесплатной среды разработки для программирования микропроцессора Ардуино. На нашем сайте указано, как правильно произвести первичную настройку. Также пользователь найдет все возможные ответы на свои вопросы по работе с данной средой.
- С помощью USB-кабеля подключаем микропроцессор к компьютерному устройству. Далее перемещаем программу, код которой указан в разделе выше, в память платформы.
Настройка
Если по окончанию загрузки пользователь получил сообщение «Done uploading», значит, генератор сигналов на Ардуино с дисплеем готов к работе. Следующий шаг – соединение модулей.
Выходные сигнальные волны снимаются с контактов генератора: QOUT1, QOUT2 (прямоугольный), ZOUT1 и ZOUT2 (синусоидальный).
После сборочных работ следует тщательно проверить, правильно ли подключены все контакты. Если все правильно подключено – подаем питание в устройство из электросети.
По истечению пары секунд на дисплее загорится стандартное значение частоты – 10 кГц. Значение можно изменить в любое время – для этого в листинге выше запрограммированы кнопки вверх, вниз, влево и вправо.
Проверка
В первом случае после конструирования должен получиться стандартный мотор-редуктор Ардуино синусоидальных и прямоугольных волновых сигналов, диапазон которых регулируется от 0 до 40 МГц. Проверить управление легче легкого – есть 2 кнопки – вверх и вниз, для настройки грубого характера, а другие – влево и вправо – настраивают аппарат на точную проверку. Настроить шаг можно в зависимости от установленной частоты на аппарате.
Во втором случае итоговое решение будет выглядеть так:
Кроме того, перед переносом программы, указанной в разделе «Программное обеспечение», нужно проверить правильность кода с помощью компилирования. Аппаратная часть прибора легко соединяется с использованием отдельных модулей, поэтому частотный генератор на базе микропроцессора Ардуино может сделать начинающий разработчик электронных устройств.
Генератор импульсов ШИМ MKS OSC V1.0
Генератор импульсов ШИМ MKS OSC V1.0 для шаговых двигателей.
Регулятор для управления драйвером шагового мотора. Если вам нужно запустить шаговик, но у вас нет платы от 3Д принтера или не хотите делать программу для Ардуино, тогда можно использовать генератор импульсов ШИМ MKS OSC V1.0.
- Модуль MKS OSC V1.0 является генератором управляющих сигналов для драйвера шагового двигателя.
- Контроллер MKS OSC V1.0 в связке с драйвером шагового двигателя, самим шаговым двигателем и блоком питания — это уже полностью готовая управляющая платформа.
- Наибольшая нагрузка, которую может поддерживать модуль – 4 А.
- Имеется три диапазона управляющей частоты: высокая — 5.4кГц-160кГц, средняя — 540Гц-16.6кГц и низкая — 80Гц-2.4кГц. Переключение режимов производится с помощью джампера.
- 2 режима генерации сигналов: импульсных сигналов или ШИМ сигналов.
Характеристики:
Напряжение питания: 8-24 Вольт DC
Диапазоны управляющей частоты: 5.4кГц-160кГц, 540Гц-16.6кГц, 80Гц-2.4кГц
Размер: 58 x 38.6 мм
Модули для управления драйверами шаговых двигателей используются для увеличения их мощности и управления двумя двигателями одновременно и по отдельности. MKS OSC подходит для воздействия на шаговые двигатели с мощностью от 5 до 35 Вольт. Такая система работы агрегатов подходит при создании мобильной робототехники и других устройств с использованием модулей.
Основной плюсы микросхемы состоит в компактности модели и в минимальном риске сбоя в работе. Помимо этого можно отметить следующие преимущества:
- возможность регулировать скорость вращения шагового двигателя;
- постепенное изменение вектора вращения;
- простое управление модулем;
- возможность не использовать компьютер в процессе управления;
- экономичное потребление энергии.
Модуль воспринимает электронагрузку, не позволяя драйверу шагового двигателя перегружаться, защищает его от перегрева.
Подключение генератора импульсов ШИМ MKS OSC V1.0
Подключение драйвера шагового двигателя, другой знак порта, но та же функция
EN = ENA = FREE Включить
PUL = PULS = CLK Импульс
DIR = CW = CWW Направление
Общее анодное соединение (соединение с B)
EN + PUL + DIR + все подключается к общему анодному порту
EN — подключается к EN
PUL — подключается к CLK
DIR- подключается к DIR
Общее катодное соединение (соединение с B)
EN- PUL- DIR- все подключается к общему катодному порту
EN + подключается к EN
PUL + подключается к CLK
DIR + подключается к DIR
Универсальный генератор с Bluetooth из готовых модулей
РадиоКот >Схемы >Цифровые устройства >Измерительная техника >Универсальный генератор с Bluetooth из готовых модулей
Доступность и невысокая цена различных готовых модулей позволяет радиолюбителям заметно упростить решение задачи конструирования интересующих их устройств. В этой статье описывается разработанный из готовых модулей генератор сигналов различной формы (синус, треугольник, меандр и периодические импульсы с регулируемой скважностью), c батарейным питанием и управлением по беспроводному интерфейсу Bluetooth. Кроме того, в генераторе имеется возможность управления и питания по шине USB.
Рис.1.
В качестве основных узлов генератора были использованы недорогие модули, достаточно широко представленные на всемирном торговом Интернет-ресурсе. Фото использованных модулей дано на Рис.1. Это модуль AD9833, обеспечивающий формирование сигналов синуса, треугольника и меандра, модуль Arduino Nano 3 (версия ATMega168), обеспечивающий управление и формирование импульсного сигнала, модуль Bluetooth HC-05, обеспечивающий беспроводную связь, и модуль повышающего преобразователя, обеспечивающий напряжение питания 5В от двух щелочных батарей размера АА.
Принципиальная схема.
Рис.2.
Принципиальная схема генератора дана на Рис.2. Модули использованы в типовом включении, поэтому я остановлюсь лишь на особенностях схемы.
Не совсем обычное включение переключателя питания SA1 связано с тем, что он, одновременно с включением питания, сообщает микроконтроллеру об используемом источнике питания и, соответственно, канале управления. Здесь следует отметить, что при включенной батарее, она будет использоваться для питания и при подключении генератора к шине USB, соответственно, для связи микроконтроллер выберет канал Bluetooth. Эту особенность можно использовать для питания генератора от внешнего 5В адаптера, подключив его к разъему USB. Для этого нужно вынуть батареи и перевести переключатель SA1 в верхнее по схеме положение. Кроме того, возможно питание генератора от адаптера 6-9В, подключенного к разъему X1, в этом случае используется стабилизатор на плате Arduino Nano (примечание: этот режим не проверялся).
Все модули, кроме HC-05, монтируются на плату при помощи пайки, для модуля HC-05 установлен разъем X2. Это дает возможность, при необходимости, не подключать модуль HC-05 при работе от шины USB.
К сожалению, микросхема AD9833 не имеет средств регулировки выходного напряжения, однако токовый выход ЦАП этой микросхемы позволяет в некоторых пределах осуществить такую регулировку путем подключения к выходу дополнительных нагрузочных резисторов. Для этой цели использованы два сдвоенных логических буфера с открытым стоком DD1-DD2. Вместе с резисторами R13-R15 они обеспечивают получение 16 уровней выходного напряжения с размахом 120-650мВ.
Другой особенностью микросхемы AD9833 является то, что размах напряжения меандра равен напряжению питания. Для регулировки этого напряжения предусмотрен отдельный ЦАП (R5-R12) с буферным повторителем на транзисторах VT1-VT3, управляющий напряжением питания микросхемы DD3. Аналоговые ключи D1 и D2 обеспечивают необходимую коммутацию сигналов так, чтобы каждый из них был доступен на едином разъеме X3. Кроме сигналов с выхода модуля микросхемы AD9833, эти ключи дают возможность подать на выход (с регулировкой амплитуды) сигнал ШИМ с выхода таймера микроконтроллера, обеспечивая, таким образом, формирование импульсного сигнала.
В схеме предусмотрена возможность измерения уровня выходных сигналов, для этого они подключены к аналоговым входам A6-A7 платы Arduino Nano (импульсы и меандр подключены через делитель R20-R21).
В дополнение, в генераторе обеспечен выход строба X4, который предназначен для синхронизации запуска развертки осциллографа при работе в режиме генератора качающейся частоты.
Рис.3.
Внешний вид генератора со снятой верхней крышкой показан на Рис.3. Печатная плата разработана для установки в стандартный корпус G909G фирмы Gainta. Этот корпус удобен тем, что в нем уже имеется отсек для батареек. Корпус требует минимальной доработки, которая сводится к проделке сбоку отверстия под разъем mini-USB. Пластиковая передняя панель, входящая в состав корпуса, заменена на панель из фольгированного текстолита, в которой вырезаны отверстия под разъем и тумблер и выгравирована контактная площадка для штыревого разъема строба. Рисунок печатной платы и все необходимые данные для повторения находятся в Приложении 1.
Для управления генератором от компьютера была разработана программа TorUNI, обеспечивающая функционирование генератора во всех возможных режимах. Управление работой генератора производится через последовательный порт, которым, может быть как USB, так и Bluetooth COM порт при наличии в компьютере Bluetooth адаптера. В процессе работы программа не изменяет реестр Windows и не требует для своей работы каких-либо дополнительных файлов или библиотек. Программа работоспособна и при отсутствии генератора. В этом случае она переходит в демонстрационный режим.
Рис.4.
На Рис.4. приведено окно программы в режиме генератора фиксированной частоты. Необходимое значение генерируемой частоты можно установить несколькими способами: щелчком левой кнопки мыши, установив ее указатель на нужный участок псевдологарифмической шкалы, передвинув мышью красный курсор в нужную позицию, и используя кнопки в левом нижнем углу. Последний способ обеспечивает наиболее точную установку требуемой частоты. С правой стороны расположены регулятор амплитуды выходного сигнала, переключатель делителя частоты прямоугольного напряжения, а также кнопки выбора формы выходного сигнала. Значение напряжения, отображаемое на экране, соответствует для синусоидального сигнала амплитудному и среднеквадратическому значениям, размаху для треугольного сигнала и амплитуде для меандра и импульсного сигнала. Отображаются реальные значения, измеренные при отключенном выходе.
Связь программы с генератором осуществляется при помощи кнопки [Connect]. После выбора необходимого последовательного порта, программа пытается связаться с генератором (в этот момент кнопки [Connect] и [Run] становятся недоступными), и, в случае успеха, переходит в рабочий режим. Для запуска генератора необходимо нажать кнопку [Run].
Рис.5.
Окно управляющей программы в режиме ГКЧ показано на Рис.5. Диапазон изменения частоты задается на логарифмической шкале двумя дополнительными курсорами цвета морской волны, которые можно передвигать с помощью мыши. Кроме того, этот диапазон может быть задан при помощи кнопок [Start] и [Stop]. Закон изменения частоты может быть выбран как линейным, так и логарифмическим; изменение частоты может быть от меньшей к большей, от большей к меньшей и попеременно. Время развертки может быть установлено от 1 до 100 секунд. Имеется возможность сброса текущего цикла развертки и временной остановки (паузы).
Курсор желтого цвета управляет сигналом стробирования. Этот сигнал предназначен для синхронизации запуска развертки осциллографа и точного определения позиции генерируемой частоты на его экране.
Рассмотрим алгоритм формирования сигнала стробирования в случае, когда развертка происходит от минимальной частоты к максимальной. В этом случае, перед началом развертки, сигнал стробирования имеет низкий уровень. Этот уровень становится высоким одновременно с началом развертки и сохраняется до момента, когда текущая частота становится равной или большей, чем частота, установленная желтым курсором. С этого момента и до конца развертки уровень опять становится низким. Таким образом, при синхронизации развертки осциллографа от положительного фронта сигнала стробирования, его отрицательный фронт укажет позицию частоты, установленной желтым курсором.
Запуск генератора, как и в предыдущем случае, осуществляется при помощи кнопки [Run].
Рис.6.
На Рис.6. показано окно программы в режиме генератора импульсов. В качестве генератора импульсов используется 16-разрядный таймер микроконтроллера платы Arduino Nano. Значения на шкале соответствуют числам, записываемым в регистры таймера. Красный курсор определяет период импульсов, а желтый – длительность. При помощи переключателя делителя частоты можно выбрать один из доступных коэффициентов деления тактовой частоты таймера. Кнопка [Invert] позволяет инвертировать выходные импульсы.
Программа TorUNI.exe и скетч (исходный текст) TorUNI.ino находятся в Приложении 2.
Наличие Bluetooth канала управления генератором дает возможность использовать в качестве управляющего устройства не только компьютер, но и планшет или смартфон. К сожалению, отсутствие опыта в написании программ под Андроид и нехватка времени не позволили реализовать эту возможность.
В рамках конкурсной статьи невозможно описать все особенности конструкции и программного обеспечения, поэтому, после окончания конкурса, прошу всех, заинтересовавшихся устройством, обращаться с вопросами и замечаниями в форум.
Файлы:
Приложение 1
Приложение 2
Все вопросы в Форум.
Как вам эта статья? | Заработало ли это устройство у вас? |
Эти статьи вам тоже могут пригодиться:
Генератор импульсов на Attiny 13a (с настройками) ?
В одном из моих проектов, мне надо было время от времени нажимать на кнопку, тем самым инициировать импульсы на вход устройства. Вначале я понажимал кнопки вручную, но понял, что такая стратегия в наш век и с моими возможностями ну совсем не по мне! Поэтому было решено сделать по-быстрому генератор импульсов, от которого и можно будет брать управляющий сигнал. Сделал я его правда не очень быстро, все из-за своей лени и из-за того, что у меня не было тумблеров, микротумблеров. Пришлось сгонять в магазин. Но все же у меня кое-что получилось, что я и хочу представить вашему вниманию.
Генератор с настройками на микроконтроллере Аттини 13а схема
Собственно сразу было принято решение, что генератор будет на микроконтроллере, по донной простой причине. Это очень компактно, удобно в плане настройки перенастройки, не прожорливо по питанию, да и в целом весьма функционально по возможностям. В закромах были Тиньки 13а купленные на Али по доллару за штуку, с ними и было решено работать.
Дабы расширить настройки генератора, то есть сделать не просто мигалку, а настраиваемую мигалку, с неким диапазоном, как раз и были куплены и внедрены в схему микротумблеры. Через них задаются условия логической 1 или 0 на соответствующих ножках микроконтроллера, и исходя из этих условиях на выходе генерируется своя частота. Взгляните на схему.
Схема нарисована на листочке бумаги и отсканена, но мне кажется туту все понятно. Так вот, на схеме есть табличка. Табличка с обозначением физических ножек и их программным значением. Эти пины можно сопоставить как раз по таблице. То есть при программировании микроконтроллера, надо учитывать, что то, что в программе, не совсем соответствует физическим выводам микросхемы. Чтобы как раз перевести одно в другое и была сделана эта табличка.
Ну, LM7805 понятно, что стабилизирует напряжение и защищает микроконтроллер от скачков. Конденсатор – простейший фильтр по питанию. Резистор 10 кОм стоит, дабы через него обеспечивать логический 0, а 20 Ом чуть ограничивает ток и напряжение для логической 1. Светодиод установлен исключительно для визуального наблюдения за выходным сигналом, что бы была хоть какая-то индикация и возможность контролировать процесс.
Теперь остается обратиться к программной части, то есть посмотреть, что у нас залито в контроллер.
Скетч для генератора импульсов на Attiny 13a (среда Arduino)
Так как на настоящий момент мной освоена только среда Arduino, в которой я пишу скетчи и заливаю через одноименную плату все в Аттиньку, то и скетч в этой же среде. Описывать сам скетч, особого смысла нет. Как я уже и сказал, есть критерии формирования условий из 3 тумблеров и подачи сигналов на 3 ножки. Контроллер смотрит на критерии и на выходе выдает определенную частоту. Скетч залит для Аттиньки на частоте работы 128 KHz. Осталось сказать, что может скетч не идеален, а также не использовано свойства ШИМ для Аттини, когда частоту можно было бы задавать через analogwrite (ножка, уровень ШИМ). Но в принципе меня на данном этапе все устраивает.
По итого, получился простенький генератор с 7 настройками, где одни из них это режим покоя, — отсутствия чего-либо на выходе вообще.
Применение генератора частоты в жизни
Такое генератор частоты можно применять не только для генерации импульсов, но и для механических поделок. Как-то было дело, мне задавали вопрос о возможности сделать зимнюю удочку с вибрацией, при этом такой, чтобы ее можно было регулировать. Этот генератор очень кстати будет к такому проекту. Останется лишь сформировать импульс с высоким током, через транзистор и найти механическое устройство, приводящее в движение удочку, вибрирующее.
Теперь в видео о том же самом.
Генератор сигналов ШИМ/ИМПУЛЬС для ручного управления шаговым мотором
Модуль генератора прямоугольных сигналов ШИМ/ИМПУЛЬС для ручного управления шаговым мотором
Специализированная модель генератора прямоугольных импульсов на микросхеме NE555 предназначена для управления одним шаговым двигателем, подключенному к драйверу, без необходимости использования внешнего блока с ЧПУ. Модуль представляет из себя упрощённую «замену» любому типу контроллера ЧПУ, имеет привычный для большинства распространённых драйверов шаговых двигателей интерфейс PUL/DIR/ENA, и предоставляет возможность пользователю самостоятельно, в ручном режиме, осуществлять запуск и остановку шагового двигателя, изменять скорость и направление вращения вала мотора.
В особенности модуля генератора входят два режима работы: частотный и ШИМ, а также присутствует настройка генерируемой частоты импульсов в трёх различных диапазонах LOW (82 Гц — 2.3 кГц), MED (590 Гц — 15.8 кГц), HIGH (5.8 кГц — 127 кГц). Указанные производителем значения частоты приблизительны и могут незначительно отличаться. В частотном режиме, рабочий цикл изменяется поворотом потенциометра по часовой или против часовой стрелки в диапазоне 38-66%, в режиме ШИМ — от 3 до 96%. Для смены режимов работы и выбора требуемой частоты, на плате установлены выводы-перемычки. Модуль допускает подключение драйверов шагового двигателя с оптически развязанными входами управления, соединяемых по схемам с общим анодом или общим катодом. Светодиодная индикация модуля отображает основные функции и наличие напряжения, питающего цепи генератора.
Технические характеристики
- Питание: 5-12В или 15-160В, постоянное напряжение
- Интерфейс: PUL/DIR/ENA
- Регулятор скорости вращения
- Кнопки управления: пуск/стоп, направление вращения вала
- Режимы: частотный/ШИМ
- Диапазон частот: 82Гц — 127кГц
- Светодиодная индикация: питание, направление, пуск/стоп
- Размеры: 73х51х37мм
- Вес: 50гр
Примечание. Не допускается! одновременная подача питания к двум клеммным группам входного напряжения, «5-12В» и «15-160В»
Пример подключения генератора ШИМ/ИМПУЛЬС к драйверу шагового мотора TB6560 по схеме с общим анодом (+):
OptogeneticsandNeuralEngineeringCore / Arduino-TTL-Pulse-Generator-and-Controller: проектируйте и управляйте своими экспериментами с помощью TTL-генератора и контроллера
Планируйте эксперименты и управляйте ими с помощью генератора и контроллера TTL
Подробно описан недорогой, управляемый Arduino, четырехканальный, одновременный генератор импульсов TTL и контроллер с разъемами BNC и дополнительным корпусом, напечатанным на 3D-принтере. Импульсная модуляция TTL требует программирования на языке Arduino, но для даны 2 примера, поэтому предварительный опыт программирования не требуется.В первом примере показано, как настроить четыре независимых выхода TTL. Второй пример расширяет это и позволяет вводить данные в генератор для замкнутой системы, управляемой TTL.
Файлы
Файл | Описание | Тип файла |
---|---|---|
Arduino Простой 4-канальный генератор импульсов TTL.pdf | Основной файл для проектирования и изготовления | |
Arduino simple 4-х канальный ttl top.ipt | Файл дизайна для верхней части шкафа | IPT |
Arduino простой 4-канальный ttl top.stl | Файл для печати для верхней части корпуса | stl |
Arduino простой 4-канальный ttl bottom.ipt | Файл дизайна дна корпуса | IPT |
Arduino простой 4-канальный ttl bottom.stl | Файл для печати дна корпуса | stl |
Arduino_Simple_TTL.ino | Файл Arduino для генерации TTL | ino |
Arduino_Simple_Closed_Loop.ino | Файл Arduino для управления TTL (TTL запускается на входе (кнопка или ИК-луч) | ino |
Скриншоты загрузки и программирования Arduino.ppt | Помощь в загрузке и программировании с Arduino | чел. |
— | — | — |
— | — | — |
Arduino Простой 8-канальный генератор MEGA TTL импульсов.pdf | Если требуется больше входов / выходов, попробуйте 8-канальную систему | |
Arduino простой 8-канальный ttl top.ipt | Файл дизайна для верхней части шкафа | IPT |
Arduino простой 8-канальный ttl top.stl | Файл для печати для верхней части корпуса | stl |
Arduino простой 8-канальный ttl bottom.ipt | Файл дизайна дна корпуса | IPT |
Arduino simple 8-ми канальный ttl снизу.stl | Файл для печати дна корпуса | stl |
Arduino_Simple_Closed_Loop_Mega.ino | Код Arduino для 8-канальной системы | ino |
Введение
Исследовательские лаборатории часто проводят эксперименты, требующие точных временных характеристик, синхронизированных по нескольким сигналам. Широтно-импульсная модуляция (ШИМ) — это цифровой сигнал включения / выключения, который несет информацию об относительных временных характеристиках сигнала.Транзисторная транзисторная логика (TTL) — это форма ШИМ, в которой состояние включения составляет 5 В постоянного тока, а состояние выключения — 0 В постоянного тока. TTL часто используется для точного управления лабораторным оборудованием, таким как лазеры. Сигнал TTL часто генерируется дорогостоящим лабораторным оборудованием и передается по кабелю BNC от генератора к оборудованию. Сигнал TTL прост, но его необходимо точно контролировать для правильного включения / выключения и соображений синхронизации. Более подробную информацию о TTL можно найти здесь. Современные микроконтроллеры могут легко выполнять генерацию сигналов более дорогостоящего оборудования для большинства приложений.Arduino — это простой и недорогой микроконтроллер, который изначально выводит сигналы TTL. Цель данной статьи — описать метод изготовления недорогого генератора и контроллера сигналов TTL. Arduino выводит цифровые сигналы PWM. Когда Arduino правильно запитан, этот сигнал обычно составляет 5 В постоянного тока и, следовательно, является TTL. Хотя выбранная плата (Arduino Uno R3) выводит шесть каналов, для простоты в этой конструкции используются только четыре. Если требуется шесть сигналов, можно было бы легко расширить эту конструкцию.Если требуется более 6 каналов, возможно, можно будет подключить несколько Arduinos вместе, но может возникнуть некоторая задержка, которую следует учитывать. В этом документе будет указано необходимое оборудование, изготовление и программное обеспечение. Предполагается, что оборудование будет недорогим. Предлагается модель дополнительного корпуса для Arduino и четырех разъемов BNC, которая может быть напечатана на 3D-принтере. Изготовление окончательной сборки несложно, но требует использования паяльника. Программа бесплатна. Язык программирования Arduino похож на C +, но предполагается, что для генерации сигналов TTL с этой настройкой не требуется никакого предварительного программирования.Приведены два примера программ, которые предназначены для объяснения таким образом, чтобы генерация сигналов могла быть спроектирована просто путем изменения кода в ключевых местах. В одном примере показано, как генерировать четыре одновременных сигнала, каждый из которых имеет уникальную последовательность импульсов, которая повторяется до бесконечности. В другом примере показано, как использовать эту настройку для управления экспериментом с замкнутым контуром. Примеры также можно использовать в качестве введения в кодирование и охватывают операторы if, for и while.
Признание ONE Core
Пожалуйста, отметьте возможность ONE Core в своих публикациях.Подходящая формулировка:
«Инженерная поддержка была предоставлена Центром оптогенетики и нейроинженерии в Медицинском кампусе Университета Колорадо Аншутц, частично финансируемым Национальным институтом неврологических расстройств и инсульта Национальных институтов здравоохранения под номером гранта P30NS048154».
границ | Недорогой программируемый генератор импульсов для физиологии и поведения
Введение
Шаблонные последовательности импульсов напряжения обычно используются в неврологических исследованиях для точного управления изоляторами стимулов (Flaherty and Graybiel, 1994; Bisley et al., 2001; Коэн и Ньюсом, 2004; Histed et al., 2009), источники света для оптогенетических манипуляций (Boyden et al., 2005; Cardin et al., 2009), сенсорные стимулы (Soto-Faraco et al., 2002) и для синхронизации событий между инструментами (Nikolic и др., 2009). Последовательности импульсов также могут быть вызваны определенной экспериментальной непредвиденной ситуацией, обеспечивая обратную связь с обратной связью с малой задержкой (Girardeau et al., 2009; Venkatraman et al., 2009; Berényi et al., 2012; Newman et al., 2013). . В продаже имеются лабораторные инструменты, специализированные для этих целей, например Master 8 (AMPI), PSG-2 (ISSI), Pulsemaster A300 (WPI), BPG-1 (Bak Electronics), StimPulse PGM (FHC Inc.) и Multistim 3800 (A-M Systems). Коммерческие решения получили широкое распространение, однако их стоимость является ограничением в исследовательских и образовательных учреждениях при ограниченном финансировании. В качестве проприетарных инструментов исследователи также не могут добавлять аппаратные или программные функции, которые соответствовали бы их уникальным потребностям: например, для реализации настраиваемого набора правил запуска в микропрограммном обеспечении или для разработки интерфейса для устройства на желаемом языке программирования. Такая гибкость может быть особенно полезной для экспериментального проектирования в системной нейробиологии, где интеграция настраиваемых инструментов часто используется для измерения и контроля поведения (Brunton et al., 2013), собирают нейронные данные (Yamamoto, Wilson, 2008; Karlsson, Frank, 2009) и стимулируют мозг как электрически (O’Doherty et al., 2009), так и оптически (O’Connor et al., 2013).
Чтобы удовлетворить эти потребности, мы разработали Pulse Pal (рис. 1), генератор последовательности импульсов с открытым исходным кодом, который стоит ~ 210 долларов (США) в легко доступных частях, с основными функциональными возможностями, сопоставимыми с коммерческими стимуляторами.
Рисунок 1. Pulse Pal — это программируемый генератор последовательности импульсов.(A) Pulse Pal, вид спереди, иллюстрирующий элементы передней панели. 1: Высококонтрастный OLED-экран позволяет программировать с помощью большого пальца джойстика для автономного использования. 2: Изготовленный на заказ акриловый корпус, вырезанный лазером. 3: Два оптически изолированных цифровых канала запуска. 4: Большой джойстик. 5: Крыло для монтажа в стойку. 6: Индикаторы активности канала загораются, когда напряжение канала не соответствует установленному напряжению покоя (т. Е. Во время импульса). 7: Каждый из четырех аналоговых выходных каналов может быть запрограммирован с помощью независимых последовательностей импульсов и связан с любым каналом триггера. (B – E) Пример последовательности импульсов черного цвета, полученных с помощью осциллографа (см. Методы). Кривые напряжения запуска показаны красным. (B) Выходной канал Pulse Pal, сконфигурированный для выдачи последовательности прямоугольных импульсов 5 В, 100 мкс с интервалами 200 мкс. (C) Последовательность двухфазных импульсов +/- 5 В 100 мкс, программно стробированных для создания пакетов импульсов. Режим канала запуска, установленный на «переключение», прерывает текущую последовательность импульсов в середине пакета, когда приходит второй импульс. (D) Последовательность импульсов 500 мкс с настраиваемыми временем начала и напряжением.Импульсы с последовательным временем начала сливаются, образуя более сложные формы волны (справа). (R) Последовательность последовательных импульсов 100 мкс, чьи напряжения и время начала были сконфигурированы для генерации одного периода синусоидальной волны. Выходной канал использует «режим петли», чтобы повторять синусоидальный сигнал до тех пор, пока не закончится параметрически заданная последовательность импульсов. Режим канала триггера был установлен на режим «импульсный строб», чтобы прервать последовательность импульсов, когда ее напряжение вернется к низкому уровню.
Проектирование системы
Оборудование
Pulse Pal был разработан для сборки на лабораторном паяльном столе примерно за 1 час с минимальным набором инструментов: паяльником, припоем, миниатюрной отверткой с крестообразным шлицем и метчиком 4–40.Мы предоставляем инструкции по заказу необходимых деталей, сборке устройства и программированию прошивки на вики Pulse Pal. Файлы проектирования оборудования, драйверы, прошивки и программные интерфейсы для устройства в MATLAB, Python и C ++ предоставляются в общедоступном репозитории. Собранное устройство и примеры импульсных последовательностей, демонстрирующие основные характеристики, показаны на рисунке 1.
Основные схемы запуска и стимуляцииPulse Pal для одного триггерного и аналогового выходного канала показаны на рисунке 2.Pulse Pal передает входящие логические сигналы триггера через оптронную микросхему для защиты входных контактов микроконтроллера и уменьшения возможности возникновения контуров заземления. Затем триггерные сигналы считываются микроконтроллером ARM Cortex M3 Pulse Pal (STM32F103RBT6, ST microsystems), входящим в состав платформы микроконтроллеров Maple с открытым исходным кодом (LeafLabs). Микроконтроллер генерирует аналоговые сигналы, управляя внешним 4-канальным цифроаналоговым преобразователем (ЦАП) IC (MAX500ACPE +, Maxim Integrated Products), сконфигурированным с биполярной выходной схемой, как показано на рисунке 9 таблицы данных MAX500.Эта выходная схема состоит из операционного усилителя (TL084ACN, Texas Instruments) и двух резисторов 10 кОм (R3, R4), которые делят опорное напряжение ЦАП, совместно обеспечивая выходное напряжение в диапазоне от -10 до +10 В от каждого (в противном случае униполярное ) Выходной канал ЦАП. К каждому усилителю был добавлен конденсатор (C1) для подавления скачков напряжения при переходных процессах. Инструкции по напряжению отправляются в ЦАП по аппаратной последовательной шине 18 МГц. Для биполярной работы в диапазоне от −10 до +10 В ЦАП требует питания с напряжением +/− 12 В постоянного тока.Этот источник питания основан на USB-источнике питания Maple со встроенным преобразователем постоянного напряжения (CC3-512DF-E, TDK Lambda). Чтобы установить диапазон ЦАП на +/- 10 В, на ЦАП подается отдельное опорное напряжение 10 В от источника +12 В с использованием линейного регулятора напряжения (L78S10CV, ST Microsystems).
Рисунок 2. Схема базовой схемы запуска и генерации импульсов . Схема триггера и схемы стимуляции Pulse Pal показана для одного триггерного и выходного канала, без дублирования схем для всех других каналов.Большой джойстик, oLED-дисплей, светодиодный индикатор и соединения EEPROM с микроконтроллером были опущены для ясности.
Дополнительные схемы (не показаны на рисунке 2) были добавлены для оснащения Pulse Pal для автономной работы. Символьный дисплей OLED (NHD-0216KZW-AB5, Newhaven Display) и двухкоординатный кнопочный джойстик (802-30110A, P3 America) используются в качестве интерфейса для программирования параметров каждого канала и тестового запуска устройства из дерева меню. реализовано в прошивке. Чтобы сохранить параметры при циклах включения питания, мы добавили внешнюю ИС EEPROM (на отдельной последовательной шине 9 МГц, чтобы приспособиться к более низкой тактовой частоте чипа; 25LC640A-I / P, Microchip Technology).Над каждым каналом был добавлен светодиод, указывающий, когда напряжение канала установлено на значение, отличное от его запрограммированного напряжения покоя (то есть канал выдает импульс). Полная схема и макет печатной платы представлены в репозитории Pulse Pal в виде файлов для программного обеспечения Eagle для печатных плат (PCB) (CadSoft) и в виде файлов GERBER для производства печатных плат.
Программное обеспечение
Процессор ARM, обслуживающий Pulse Pal, был запрограммирован с помощью специальной прошивки, написанной на производной от LeafLabs языка Arduino — языка программирования на основе C ++ для микроконтроллеров AVR и ARM.Микропрограммное обеспечение Pulse Pal было запрограммировано на выполнение основного цикла каждые 50 мкс при доставке последовательностей импульсов. Выполнение цикла запускается аппаратным таймером, который является внутренней функцией микроконтроллера. В каждом цикле цикла микроконтроллер обновляет ЦАП, считывает логику канала запуска и любые однобайтовые последовательные инструкции USB, вычисляет логику переходов напряжения текущего цикла и регулирует состояние светодиодного индикатора. Последовательные инструкции USB используют систему однобайтовых кодов операций, позволяющую программному клиенту программировать и запускать Pulse Pal, прерывать текущую стимуляцию, устанавливать фиксированные напряжения для выходных каналов или устанавливать логические значения линий ввода-вывода Maple для отладки.Чтобы отличить его от последующих обновлений, версия микропрограммы, используемая для получения данных о производительности для настоящей публикации, находится в специальной папке в репозитории кода.
Pulse Pal программируется либо с помощью интерфейса большого джойстика, либо через USB путем настройки параметров канала (обозначенных ниже кросс-платформенным синтаксисом курсивом и проиллюстрированных на Рисунке 3 для выходных каналов). Один параметр для каждого канала запуска, TriggerMode , управляет тем, как он интерпретирует входящую логику.Предусмотрены три режима триггера: «нормальный», «тумблерный» и «импульсный». В нормальном режиме входящий логический импульс запускает все связанные выходные каналы, но последующие триггеры игнорируются во время воспроизведения. В режиме переключения последующие триггеры завершают текущие последовательности импульсов на связанных выходных каналах. В импульсном стробированном режиме последовательности импульсов запускаются переходом от низкого к высокому логическому уровню в канале запуска и завершаются последующим переходом от высокого к низкому уровню, если он происходит во время воспроизведения.
Рисунок 3.Иллюстрация параметров выходного канала .
Параметры стимула каждого выходного канала можно программировать независимо. Выходные каналы могут передавать либо параметрические последовательности импульсов, либо пользовательские последовательности импульсов, для которых каждый импульс имеет определенное время начала и напряжение. Форма и частота импульса определяются 7 параметрами: IsBiphasic (0, если импульсы однофазные, 1, если двухфазные), Phase1Voltage (напряжение первой фазы, от −10 В до +10 В), Phase2Voltage (тот же диапазон ), Phase1Duration (длительность первой фазы, 0.От 1 до 3600 с), InterPhaseInterval (время между фазами двухфазного импульса), Phase2Duration и InterPulseInterval (время между импульсами). Последовательности импульсов определяются дополнительными 4 параметрами: BurstDuration (время, в течение которого базовая последовательность импульсов стробируется «включена») BurstInterval (период, чередующийся с BurstDuration , в течение которого последовательность импульсов стробируется «выключена»), PulseTrainDelay (время между триггером и началом последовательности импульсов) и PulseTrainDuration (продолжительность последовательности импульсов).Можно определить две пользовательские последовательности импульсов до 1000 импульсов каждая, где пользователь указывает время начала и напряжение каждого импульса. Использование настраиваемой последовательности на выходном канале выбирается путем установки для параметра канала CustomTrainID ненулевого значения (1 или 2, определяя, какой поезд). Для пользовательских последовательностей можно настроить два дополнительных параметра: CustomTrainTarget (для времени начала и напряжения; 0, если они относятся к импульсам, 1, если они относятся к пакетам импульсов), и CustomTrainLoop (0, если последовательность импульсов заканчивается после последнего импульса. определено, 1, если последовательность импульсов проходит от триггера до значения PulseTrainDuration ).Каждый выходной канал имеет три дополнительных параметра: LinkTriggerChannel1 , LinkTriggerChannel2 и RestingVoltage . Первые два из этих параметров определяют, какие триггерные каналы управляют выходным каналом. Третий определяет напряжение покоя выходного канала между фазами импульсов, импульсами и последовательностями импульсов (по умолчанию 0 В).
Файлы дизайна корпуса устройства, который можно вырезать с помощью лазера из одного листа акрила 30,48 × 30,48 см (12 ″ × 12 ″), находятся в репозитории.Выгравированный растром текст на дизайне обозначает идентификационные данные канала и USB-порта. Световые трубки (PLP2, Bivar) вдавливаются в отверстия над каждым каналом, направляя свет от светодиодных индикаторов на печатной плате к поверхности корпуса. Корпус крепится к монтажной плате винтами, прикрепленными к стойкам монтажной платы с резьбой, и содержит съемное крыло для крепления устройства к серверной стойке (показано на рис. 1A).
Меры надежности и точности
Чтобы проверить Pulse Pal в качестве практического решения для управления стимулами, мы проверили точность и надежность самых коротких импульсов, которые устройство может обрабатывать как на триггерных, так и на выходных каналах, а также несколько других свойств, важных для нейрофизиологических исследований.Все тесты проводились на одном устройстве Pulse Pal, подключенном к управляющему компьютеру (Macbook Pro, Apple).
Хотя выходные каналы обновляются один раз за выполнение 50 мкс основного цикла микроконтроллера, самый короткий настраиваемый импульс ограничен 100 мкс (чтобы гарантировать, что наименьший импульс выходного канала также может надежно запускать устройство). Чтобы измерить точность импульса 100 мкс, мы запрограммировали Pulse Pal на подачу последовательности из трех импульсов по 100 мкс, разделенных интервалами 100 мкс на всех 4 выходных каналах, каждый раз при обнаружении программного запуска.Первый выходной канал Pulse Pal был подключен к цифровому осциллографу (DS1102D, Rigol). Затем Pulse Pal запускался программно 100000 раз в течение 24 часов с помощью специального тестового сценария, написанного в MATLAB r2013a (Mathworks) на управляющем компьютере. После каждого события запуска результирующая форма сигнала возвращалась с осциллографа на компьютер. Pulse Pal генерировал уникальный сигнал из трех импульсов после каждого запуска, демонстрируя высокую надежность программного запуска. Первые 100 последовательностей импульсов показаны наложенными друг на друга на рисунке 4A, выровненными по началу первого импульса, чтобы продемонстрировать дрожание импульса.Ширина импульса для всех 300 000 импульсов показана на рисунке 4B. Ширина цикла составляла от 96,9 до 102,9 мкс, а 99,97% импульсов находились в пределах от 3 до 100 мкс.
Рисунок 4. Измерения точности и надежности. (A – B) Для серии из трех импульсов по 100 мкс с интервалами 100 мкс: (A) первые 100 сигналов, захваченных осциллографом, показаны наложенными друг на друга, а (B) — распределение длительностей импульсов, измеренных от 100000 3-импульсные последовательности, захваченные как в (A) . (C – D) Для серии одиночных 10-секундных импульсов: (C) форм сигналов из первых 20 испытаний и (D) 10 000 импульсов шириной. (E) Задержка последовательности импульсов из одного импульса 10 В, 100 мкс, захваченного из выходного канала (показан черным для 100 испытаний), была измерена по отношению к импульсу 5 В, 100 мкс, доставленному в связанный канал триггера. (показаны красным). (F) Распределение задержек последовательности импульсов для 100 000 испытаний. (G) 100 с наложением 78.Импульсы 1 мВ, показывающие минимально возможное приращение цифроаналогового преобразователя и шум канала, вызванный сквозным цифровым сигналом от шины SPI. (H) Одновременное и быстрое установление напряжения на каналах 1 и 4 при подаче импульса +10 В от напряжения покоя -10 В. (I) Время передачи USB показано для сообщения размером 5006 байтов, содержащего импульс времена и напряжения для индивидуальной последовательности из 1000 импульсов. Время передачи измерялось с помощью оборудования (HW, черный; с использованием прошивки, модифицированной для указания начала и окончания передачи импульсом напряжения) и программного обеспечения (SW, серый; с использованием часов управляющего компьютера). (J) Импульсы света длительностью 1 мс, генерируемые при управлении синим диодным лазером с помощью Pulse Pal, преобразуются в напряжение с помощью кремниевого фотодетектора с усилением на транзисторе (PDA10A, ThorLabs) и фиксируются осциллографом. Отдельные кривые показаны для импульсов напряжения с амплитудой от 78 мВ до 5 В.
Затем мы измерили дрейф часов, чтобы гарантировать, что временная изменчивость, которую мы наблюдали в импульсах длительностью 100 мкс, не распространялась. Мы запрограммировали Pulse Pal на выдачу одного 10-секундного импульса (охватывающего 200 000 циклов цикла микроконтроллера) при срабатывании триггера.Мы зафиксировали результирующую форму волны в ходе 10 000 испытаний с помощью аналогового устройства захвата (NI USB-6210, National Instruments) с дискретизацией 100 кГц. 100 примеров импульсных сигналов показаны на рисунке 4C, а все 10 000 импульсных сигналов показаны на рисунке 4D. Все импульсы имели размер 9,99998 с или 9,99997 с, что соответствует постоянному дрейфу тактовой частоты 3 мкс / с по сравнению с тактовой частотой NI USB-6210.
Чтобы измерить задержку последовательности импульсов и надежность канала запуска, мы последовательно соединили два Pulse Pals.Первый запускался компьютером при каждом из 100 000 испытаний. Он генерировал одиночный прямоугольный импульс 5 В, 100 мкс одновременно на двух выходных каналах — один поступал в первый канал запуска второго Pulse Pal, а другой — на осциллограф (см. Рисунок 4H для отдельного эксперимента, демонстрирующего одновременность этих импульсов. ). Второй Pulse Pal генерировал одиночный импульс 100 мкс на каждом выходном канале при запуске его первого триггерного канала, который был захвачен с одного выходного канала отдельным каналом осциллографа.На рисунке 4E показано 100 испытаний. Импульсы запуска от первого (запускающего) Pulse Pal показаны красным, а импульсы от второго Pulse Pal — черным. Все 100 000 захваченных импульсов имели уникальную форму волны, что свидетельствует о высокой надежности аппаратного запуска. Задержка выходного канала для всех 100 000 испытаний относительно равномерно варьировалась от 91,0 до 146,7 мкс (рис. 4F).
Затем мы попытались определить, был ли шум канала достаточно низким, чтобы одноразрядное приращение ЦАП приводило к неперекрывающемуся изменению напряжения.Поскольку ЦАП MAX500ACPE +, который управляет выходными каналами Pulse Pal, имеет 8-битную точность, отображаемую в диапазоне 20 В (от -10 В до +10 В), его младший значащий бит (LSB) увеличивает напряжение канала на 78,1 мВ. Поэтому мы настроили PulsePal для запуска двух импульсов 78,1 мВ 100 раз (показано на рисунке 4G). Колебания напряжения в отдельных испытаниях составляли около 8 мВ относительно среднего значения в интервале 100 мс до начала последовательности импульсов и до 65 мВ относительно среднего значения в течение первых 100 мс импульсов.Повышенный шум во время воспроизведения в основном был связан с прохождением цифрового сигнала от каналов SPI, управляющих ЦАП (данные не показаны), но оставался значительно меньше минимального приращения напряжения ЦАП. Хотя исследователи, желающие дополнительно уменьшить сквозное цифровое соединение (например, путем оптической развязки шины SPI), могут реализовать несколько модификаций компоновки платы и схемы, Pulse Pal может использовать полную разрядность своего ЦАП в его нынешнем виде, что делает его полезным для многих приложений управления в инструментах нейробиологии.Напряжение покоя выходного канала было программно установлено на 0 В, но в этом эксперименте было измерено как 10,55 мВ (в пределах 15 мВ «ошибки нулевого кода», указанной для ЦАП MAX500ACPE + в его техническом описании), что указывает на смещение от Заданное значение 0 В присутствовало, но незначительно.
В экспериментах с точно рассчитанными по времени событиями полезно производить сигналы, которые происходят одновременно. Поэтому мы измерили одновременность обновлений выходных каналов, сравнив импульсы, запущенные на первом и последнем выходных каналах.Мы установили первый и четвертый выходные каналы на напряжение покоя -10 В, подали 100 +10 В импульсов и зафиксировали нарастающий сигнал каждого импульса с помощью осциллографа (рис. 4H). Во всех испытаниях выходное напряжение на обоих каналах стабилизировалось в пределах от 100 мВ до +10 В через 3,5 мкс. Это измерение также подтвердило, что скорость нарастания ЦАП и выходного усилителя была достаточно высокой, чтобы производить импульсы 100 мкс, полезные для большинства приложений в исследованиях нейробиологии.
Во многих экспериментах параметры последовательности импульсов и временные данные должны обновляться быстро в ответ на недавно полученную информацию.Поскольку один и тот же микроконтроллер управляет синхронизацией импульсов и USB-связью, Pulse Pal не может быть обновлен, пока доставляется последовательность импульсов. Поэтому мы стремились обеспечить быстрое получение обновлений между экспериментальными испытаниями. Мы измерили скорость передачи данных USB, послав последовательность из 1000 импульсов (5006 байт) 100 раз от клиента Pulse Pal MATLAB к Pulse Pal. Для измерения скорости аппаратной передачи без дополнительных затрат на программное обеспечение на стороне клиента микропрограммное обеспечение Pulse Pal было изменено таким образом, чтобы указывать начало передачи данных путем установки выходного канала 1–5 В и окончания передачи данных путем возврата канала 1–0 В.Результирующий импульс регистрировался осциллографом при каждом испытании. Время передачи на стороне клиента измерялось отдельно для блокирующей команды MATLAB serial fwrite путем фланкирования ее командами tic и toc. Передача завершается за 26–35 мс (в среднем 171 КБ / с), в то время как накладные расходы на стороне клиента в среднем требуют дополнительных 12 мс (рис. 4I). В соответствии с этим измерением скорости передачи, отдельная передача, обновляющая всех параметров канала Pulse Pal для всех каналов (163 байта), завершается на стороне оборудования менее чем за 1 мс (данные не показаны).
Наконец, мы попытались проверить пригодность Pulse Pal для точного оптического контроля в оптогенетических экспериментах, используя его для управления синхронизацией и интенсивностью диодного лазера 447 нм. Мы подключили лазер (BML447-50FLD, Lasermate Group) через оптоволокно (M31L02, ThorLabs) к кремниевому фотоприемнику с трансимпедансным усилением (PDA10A, ThorLabs), подавали импульсы длительностью 1 мс из выходного канала Pulse Pal на аналоговый вход источника питания лазера. , и сняли полученные формы сигналов с помощью осциллографа (DS1102D, Rigol).Импульсы имели амплитуду от 78 мВ до 5,0 В с шагом 78 мВ. На рисунке 4J отдельные кривые, снятые для каждого напряжения, показаны наложенными, с пропуском каждого второго напряжения для ясности. Pulse Pal вызывал точно синхронизированные импульсы света от лазера с программным (хотя и немного нелинейным) управлением интенсивностью света.
Приложения
Контроль времени и интенсивности освещения для оптогенетики
Pulse Pal был первоначально разработан в лабораторных условиях, чтобы обеспечить интуитивно понятный и доступный способ достижения точного временного контроля в оптогенетических экспериментах (Pi et al., 2013). В этих исследованиях Pulse Pal использовался для управления лазером, подключенным к оптическому волокну, как показано на рисунке 4J, обеспечивая точно синхронизированные последовательности импульсов для фотостимуляции определенных классов интернейронов. В этой роли Pulse Pal предоставляет простую и открытую альтернативу коммерческим генераторам последовательности импульсов (например, Master 8 (AMPI), PSG-2 (ISSI), Pulsemaster A300 (WPI), BPG-1 (Bak Electronics), StimPulse PGM ( FHC Inc.) и Multistim 3800 (AM Systems).
Генерация сенсорных паттернов с низкой задержкой стробирования
В том же исследовании Pulse Pal использовался в качестве программируемого генератора сигналов, предоставляя простые акустические стимулы с малой задержкой для решения задачи восприятия «годен / не годен».В этом приложении каждый выходной канал напрямую управлял отдельным усиленным динамиком. Помимо простых сигналов, используемых в этих экспериментах, для изучения алгоритмической основы принятия решений людьми и животными часто используются звуковые и зрительные импульсные стимулы с временной структурой. Бинауральный поток пуассоновских щелчков (Sanders and Kepecs, 2012; Brunton et al., 2013) может быть сгенерирован с использованием настраиваемых последовательностей импульсов Pulse Pal, где импульс 100 мкс, 1 В, подаваемый на усиленный динамик наушников, генерирует точно синхронизированный звуковой щелчок.Для визуальных стимулов каждый канал может быть настроен для создания точно синхронизированных визуальных вспышек (Zylberberg et al., 2012) путем стробирования коммерческого светодиодного драйвера (например, BuckPuck, LED Dynamics). Таким образом, стимулы могут запускаться и останавливаться с гораздо меньшей задержкой и более высокой временной точностью, чем коммерческая звуковая карта или компьютерный видеодисплей (Kleiner et al., 2007). Для экспериментов по принятию сенсорных решений, требующих точного временного контроля, Pulse Pal предоставляет простую и открытую альтернативу настраиваемым инструментам.
Общий аналоговый контроль лабораторных приборов
Несколько нейробиологических инструментов используют аналоговые сигналы в качестве интерфейса для управления параметрами устройства. Некоторыми примерами являются зеркала гальванометра для стимуляции лазерным сканированием (например, GVSM002, Thor Labs) и монохроматоры для измерения спектральной настройки в оптогенетике (например, Polychrome V, Till Photonics). В некоторых случаях программное управление униполярным напряжением может быть недорого реализовано с помощью микроконтроллерных платформ (например, Arduino) или недорогих устройств автоматизации (например.г., U3, ЛабДжек). Однако для многих устройств (включая два перечисленных выше) требуются управляющие напряжения в стандартном промышленном диапазоне от -10 В до +10 В, что требует дорогостоящего проприетарного компьютерного оборудования (например, NI PCIe-6323, National Instruments). Для этих приложений Pulse Pal обеспечивает недорогой способ аналогового управления.
Обратная связь в электрофизиологии
В качестве инструмента временного контроля Pulse Pal дополняет растущий набор инструментов с открытым исходным кодом для исследований в области нейробиологии, которые стали доступны в последние годы.Они варьируются от систем сбора данных электрофизиологии (Rolston et al., 2009; Voigts et al., 2013a) до устройств интерфейса электродов (Voigts et al., 2013b) и программных средств сбора данных (Brainard, 1997; Pologruto et al., 2003; Englitz et al., 2013; Campagnola et al., 2014). Pulse Pal был официально интегрирован в программное обеспечение для одного из этих инструментов, системы сбора данных электрофизиологии Open Ephys, где он предоставляется как один из методов обратной связи с замкнутым контуром с малой задержкой.
Общие обсуждения
Для нашего исследования нам потребовался генератор импульсов с высокой точностью во временных масштабах, необходимых для согласования событий стимуляции с потенциалами действия (джиттер времени импульса, по крайней мере, в 10 раз меньше, чем ширина потенциала действия; рисунки 4A, B), низкий дрейф часов (Рисунки 4C, D), латентность первого импульса (Рисунки 4E, F) сравнима с короткими потенциалами действия млекопитающих (Kandel et al., 2000) и высокая надежность (100% из 300 000 мягких запусков, 100% из 100 000 импульсов запуска по 100 мкс). При разработке Pulse Pal мы осознали, что упрощенное управление синхронизацией импульсов напряжения является общей необходимостью, и расширили объем проекта, чтобы удовлетворить пять дополнительных целей проектирования: низкая стоимость материалов (210 долларов США), автономная функциональность (рисунок 1), лабораторная работа. боковая сборка с помощью общих инструментов (см. иллюстрированное руководство на вики), поддержка распространенных вычислительных платформ и языков программирования (WinXP, Win7, OSX, Ubuntu 14.04; MATLAB, C ++, Python) и исчерпывающую онлайн-документацию.
Для достижения этих целей Pulse Pal предоставляет общий ресурс для точного временного контроля стимуляции и внешних сигналов в лаборатории. Он инкапсулирует проблему генерации временных паттернов для многих приложений в физиологии и психофизике, где вместо коммерческих инструментов эта проблема управления часто решалась ad-hoc путем написания специального программного обеспечения для микроконтроллеров (da Silva Pinto et al., 2011; Weick et al., 2011; Бугай и др., 2013; Haikala et al., 2013; Охайон и др., 2013; Smear et al., 2013; Инагаки и др., 2014; Klapoetke et al., 2014).
Параметрический подходPulse Pal к стимуляции включает в себя логические правила и мотивы паттернов стимулов, обычно применяемые в нейробиологических исследованиях, однако пользовательские приложения могут требовать, чтобы устройство выполняло менее общие функции. В отличие от своих коммерческих аналогов, микропрограммное обеспечение Pulse Pal предоставляется в открытом доступе с лицензией с открытым исходным кодом.Чтобы облегчить доступ, прошивка была написана на языке Arduino — сокращенный набор синтаксиса C ++ с обширной онлайн-документацией для разработчиков, не имеющих опыта программирования. Адаптация Arduino к платформе микроконтроллера Pulse Pal предоставляет дополнительные функции, специфичные для микроконтроллера ARM Cortex M3. Мы ожидаем, что этот более низкий барьер для входа будет использован исследователями, использующими оборудование, прошивку и программное обеспечение Pulse Pal в качестве отправной точки для создания специализированных приложений за пределами его нынешней ниши.
Заявление о конфликте интересов
Авторы заявляют, что исследование проводилось при отсутствии каких-либо коммерческих или финансовых отношений, которые могут быть истолкованы как потенциальный конфликт интересов.
Благодарности
Следующие люди выражают благодарность за их вклад в Pulse Pal: Джош Сигл за вклад в первоначальную работу над клиентом C ++ и обеспечение интеграции с графическим интерфейсом Open Ephys, а также Дуда Квициани, Эбру Демир, Хюн-Дже Пи, Балаж Хангья, Джунья Хирокава , Алексу Вогану, Ури Ливне, Оньекачи Одемене, Мэтью Кауфману, Бриттани Казакофф, Стивену Ши, Робу Кэмпбеллу, Анкит Сетхи, Оферу Ижару, Джеффри Эрлиху и Габриэлле Нитрай за отзывы во время бета-тестирования.Также мы благодарны команде LeafLabs и участникам форума LeafLabs, особенно пользователям gbulmer , mbolivar , siy и ala32 за частую помощь с платформой Maple. Это исследование было поддержано грантами Национального института здоровья США (R01NS07553, R01MH097061) и Фонда Макнайта.
Сноски
- https://sites.google.com/site/pulsepalwiki/home
- https: // github.ru / PulsePal / PulsePal
- www.open-ephys.org
- www.arduino.cc
- www.leaflabs.com
Список литературы
Бисли Дж. У., Заксас Д. и Пастернак Т. (2001). Микростимуляция МТ кортикальной области влияет на выполнение задачи визуальной рабочей памяти. J. Neurophysiol. 85, 187–196.
Pubmed Аннотация | Pubmed Полный текст | Google Scholar
Бойден, Э.С., Чжан, Ф., Бамберг, Э., Нагель, Г., Дейссерот, К. (2005). Генетически направленный оптический контроль нейронной активности в миллисекундной шкале времени. Нат. Neurosci. 8, 1263–1268. DOI: 10.1038 / nn1525
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Бугай, Л. Дж., Чокси, А. Т., Месуда, К. К., Кейн, Р. С., и Шаффер, Д. В. (2013). Оптогенетическая кластеризация белков и активация передачи сигналов в клетках млекопитающих. Нат. Методы 10, 249–252.DOI: 10.1038 / Nmeth.2360
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Cardin, J. A., Carlén, M., Meletis, K., Knoblich, U., Zhang, F., Deisseroth, K., et al. (2009). Управление быстропротекающими клетками вызывает гамма-ритм и контролирует сенсорные реакции. Nature 459, 663–667. DOI: 10.1038 / nature08002
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
да Силва Пинто, М. А., де Соуза, Дж.К. С., Барон Дж. И Тьерра-Криолло К. Дж. (2011). Недорогое портативное устройство с микроуправлением для многоканальной светодиодной визуальной стимуляции. J. Neurosci. Методы 197, 82–91. DOI: 10.1016 / j.jneumeth.2011.02.004
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Жирардо, Г., Бенченане, К., Винер, С. И., Бужаки, Г., и Зугаро, М. Б. (2009). Избирательное подавление ряби в гиппокампе ухудшает пространственную память. Нат. Neurosci. 12, 1222–1223. DOI: 10.1038 / nn.2384
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Инагаки, Х. К., Юнг, Ю., Хоопфер, Э. Д., Вонг, А. М., Мишра, Н., Лин, Дж. Ю. и др. (2014). Оптогенетический контроль дрозофилы с помощью красного смещенного канала родопсина обнаруживает влияние на ухаживание, зависящее от опыта. Нат. Методы 11, 325–332. DOI: 10.1038 / nmeth.2765
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Кандел, Э.Р., Шварц, Дж. Х., и Джесселл, Т. М. (2000). Принципы неврологии (том 4). Нью-Йорк: Макгроу-Хилл.
Клапоэтке, Н. К., Мурата, Ю., Ким, С. С., Пулвер, С. Р., Бердси-Бенсон, А., Чо, Ю. К. и др. (2014). Независимое оптическое возбуждение отдельных нейронных популяций. Нат. Методы 11, 338–346. DOI: 10.1038 / Nmeth.2836
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Кляйнер, М., Брейнард, Д., Пелли, Д., Инглинг, А., Мюррей, Р., и Бруссард, К. (2007). Что нового в Psychtoolbox-3. Восприятие 36, 1.1–1.16.
Google Scholar
Ньюман Дж. П., Целлер-Таунсон Р., Фонг М.-Ф., Десаи С. А., Гросс Р. Э. и Поттер С. М. (2013). Замкнутые, многоканальные эксперименты с использованием электрофизиологической платформы NeuroRighter с открытым исходным кодом. Фронт. Нейронные схемы 6:98. DOI: 10.3389 / fncir.2012.00098
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Николич, К., Гроссман, Н., Грабб, М.С., Буррон, Дж., Тумазу, К., и Дегенаар, П. (2009). Фотоциклы каналеродопсина-2. Photochem. Photobiol. 85, 400–411. DOI: 10.1111 / j.1751-1097.2008.00460.x
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
О’Коннор, Д. Х., Хайрес, С. А., Го, З. В., Ли, Н., Ю, Дж., Сан, К.-К. и др. (2013). Нейронное кодирование при активной соматосенсорной чувствительности выявляется с помощью иллюзорного прикосновения. Нат. Neurosci. 16, 958–965.DOI: 10.1038 / nn.3419
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Пи, Х.-Дж., Хангья, Б., Квициани, Д., Сандерс, Дж. И., Хуанг, З. Дж., И Кепек, А. (2013). Корковые интернейроны, специализирующиеся на растормаживающем контроле. Nature 503, 521–524. DOI: 10.1038 / nature12676
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Ролстон Дж. Д., Гросс Р. Э. и Поттер С. М. (2009).Недорогая многоэлектродная система для сбора данных, обеспечивающая обработку с обратной связью в реальном времени с быстрым восстановлением после артефактов стимуляции. Фронт. Neuroeng. 2:12. DOI: 10.3389 / нейро.16.012.2009
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Смир, М., Ресулай, А., Чжан, Дж., Бозза, Т., и Ринберг, Д. (2013). Множественные воспринимаемые сигналы от одного обонятельного клубочка. Нат. Neurosci. 16, 1687–1691. DOI: 10.1038 / номер 3519
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Сото-Фарако, С., Лайонс, Дж., Газзанига, М., Спенс, К., и Кингстон, А. (2002). Чревовещатель в движении: иллюзорный захват динамической информации через сенсорные модальности. Brain Res. Cogn. Brain Res. 14, 139–146. DOI: 10.1016 / s0926-6410 (02) 00068-x
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Венкатраман, С., Элькабани, К., Лонг, Дж. Д., Яо, Ю., и Кармена, Дж. М. (2009). Система нейронной регистрации и замкнутой внутрикортикальной микростимуляции у бодрствующих грызунов. IEEE Trans. Биомед. Англ. 56, 15–22. DOI: 10.1109 / TBME.2008.2005944
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Войтс, Дж., Зигл, Дж. Х., Кемере, К., Мур, К. Л., и Уилсон, М. А. (2013a). «Недорогая система с открытым исходным кодом для сочетания электрофизиологии с большим количеством каналов и оптогенетической обратной связи с замкнутым контуром», — в статье, представленной в Обществе нейробиологии (Сан-Диего, Калифорния).
Войтс, Дж., Зигл, Дж. Х., Притчетт, Д. Л., и Мур, К. И. (2013b). FlexDrive: сверхлегкий имплант для оптического контроля и высокопараллельной хронической записи нейрональных ансамблей у свободно движущихся мышей. Фронт. Syst. Neurosci. 7: 8. DOI: 10.3389 / fnsys.2013.00008
Pubmed Аннотация | Pubmed Полный текст | CrossRef Полный текст | Google Scholar
Генератор импульсов— Поделиться проектом
ВВЕДЕНИЕ С шести лет я подумал, что было бы круто сделать своего собственного веб-кастера.Не зная тогда многого, я подумал, что могу использовать леску с присоской на конце, и это может помочь. 3D-принтеры только становились доступными, а у нас их в то время не было. Итак, идея проекта была отложена. С тех пор мы с папой стали Творцами. Это натолкнуло меня на мысль, что, если бы в «Стихах-пауках» был другой персонаж — скажем, 14 лет, единственный ребенок, выросший со старыми моторами и механическими деталями в подвале и электронными приборами. У него накопилось два 3D-принтера и сварщик.В 9 лет он открыл канал Maker (Raising Awesome). Его отец импульсивно купил швейную машинку в Prime Day, и ТОГДА, в 14 лет, его укусил радиоактивный жук Maker … ну, паукообразный. Сначала он был Создателем, а затем получил свои паучьи способности. На что был бы похож этот персонаж? Итак, мы придумали перчатку Webslinger Gauntlet и Spidey-Sense Visual AI Circuit. ДИЗАЙН ПРОЕКТА WebSlinger В перчатке Webslinger находится 16-граммовый картридж с углекислым газом, с помощью которого можно выстрелить в крючок, привязанный к кевлару. Для этого не требуется никакого микроконтроллера, только клапан, который вы найдете для накачивания велосипедных шин.У него будет двигатель в перчатке, чтобы отследить кевлар. Spider-SenseКамера и amp; датчик приближения был вшит в спину рубашки. Raspberry Pi A + служил мозгом для всего костюма, управляя всеми датчиками и камерами внутри костюма. Наряду с этим мы использовали Pi SenseHat со встроенным дисплеем RGB для изменения логотипов, например, при срабатывании «Spidey Sense». Учитывая время этого конкурса, я смог выиграть последний костюм на Хеллоуин. Вы можете найти модель на нашем сайте GitHub: https: // github.com / RaisingAwesome / Spider-man-Into-the-Maker-Verse / tree / master. Это код для запуска RGB и вибрации: from sense_hat import SenseHat время импорта импортировать RPi.GPIO как GPIO # Режим GPIO (ПЛАТА / BCM) GPIO.setmode (GPIO.BCM) # установить контакты GPIO GPIO_ECHO = 9 GPIO_TRIGGER = 10 GPIO_VIBRATE = 11 # установить направление GPIO (IN / OUT) GPIO.setup (GPIO_TRIGGER, GPIO.OUT) GPIO.setup (GPIO_ECHO, GPIO.IN) GPIO.setup (GPIO_VIBRATE, GPIO.ВНЕ) смысл = SenseHat () г = (0, 255, 0) б = (0, 0, 255) у = (255, 255, 0) ш = (255,255,255) г = (204, 0, 0) a1 = [ б, г, б, б, б, б, г, б, б, г, б, б, б, б, г, б, б, б, г, г, г, г, б, б, б, б, б, г, г, б, б, б, г, г, г, г, г, р, г, г, б, б, б, г, г, б, б, б, б, б, г, б, б, г, б, б, б, г, б, б, б, б, г, б ] a2 = [ б, б, г, б, б, г, б, б, б, г, б, б, б, б, г, б, б, б, г, г, г, г, б, б, г, б, б, г, г, б, б, г, б, г, г, г, г, г, г, б, г, б, б, г, г, б, б, г, б, б, г, б, б, г, б, б, б, б, г, б, б, г, б, б ] a3 = [ г, б, б, б, б, б, б, г, б, г, б, б, б, б, г, б, б, б, г, г, г, г, б, б, г, б, б, г, г, б, б, г, б, г, г, г, г, г, г, б, г, б, б, г, г, б, б, г, б, б, г, б, б, г, б, б, б, г, б, б, б, б, г, б ] def animate (): # dist дано в футах.# скорость рассчитывается по линейному уравнению y = mx + b, где b = 0 и m = 0,1 sense.set_pixels (a1) time.sleep (0,05 * расстояние ()) sense.set_pixels (a2) time.sleep (0,05 * расстояние ()) sense.set_pixels (a1) time.sleep (0,05 * расстояние ()) sense.set_pixels (a3) time.sleep (0,05 * расстояние ()) def distance (): # Возвращает расстояние в футах StartTime = time.time () timeout = time.time () timedout = Ложь # установите для Trigger значение HIGH, чтобы подготовить систему GPIO.вывод (GPIO_TRIGGER, True) # установите Триггер через 0,00001 секунды (10 мкс) на НИЗКИЙ, чтобы отправить пинг от датчика time.sleep (0,00010) GPIO.output (GPIO_TRIGGER, ложь) # чтобы не ждать вечно, установим тайм-аут, если что-то пойдет не так. а GPIO.input (GPIO_ECHO) == 0: # если мы не получили ответ, чтобы сообщить нам, что он собирается пинговать, двигайтесь дальше. # датчик должен сработать, сделать свое дело и начать отчитываться через миллисекунды.StartTime = time.time () если (time.time () & gt; тайм-аут + .025): timedout = True сломать #print («Истекло время ожидания эхо от низкого до высокого:», время ожидания) timeout = Время начала StopTime = Время начала а GPIO.input (GPIO_ECHO) == 1: # если мы не получаем отскока на датчике с верхней границей диапазона его обнаружения, двигайтесь дальше. # Ультразвук движется со скоростью звука, поэтому он должен возвращаться, по крайней мере, # быстро для вещей, находящихся в пределах допустимого диапазона обнаружения.timedout = Ложь StopTime = time.time () если (time.time () & gt; тайм-аут + .025): timedout = True сломать #print («Тайм-аут эха от высокого до низкого:», время ожидания) # записываем время, когда оно вернулось к датчику # разница во времени между стартом и прибытием TimeElapsed = StopTime — Время начала # умножаем на звуковую скорость (34300 см / с) # и разделим на 2, потому что он должен пройти через расстояние и обратно # затем преобразовать в футы, разделив все на 30.48 см на фут расстояние = (Истекшее время * 17150) / 30,46 #print («Расстояние:», расстояние) если (расстояние & lt; .1): расстояние = 5 distance = round (расстояние) если расстояние & lt; 5: вибрировать () обратное расстояние def vibrate (): # если что-то очень близко, вибрируйте spidey-sense #code pending GPIO.output (GPIO_VIBRATE, Истина) time.sleep (.1) GPIO.output (GPIO_VIBRATE, ложь) # Следующая строка позволит этому скрипту работать автономно, или вы можете # импортировать скрипт в другой скрипт, чтобы использовать все его функции.если __name__ == ‘__main__’: пытаться: GPIO.output (GPIO_TRIGGER, ложь) GPIO.output (GPIO_VIBRATE, ложь) время сна (1) в то время как True: анимировать () # Следующая строка — это пример из импортированной библиотеки SenseHat: # sense.show_message («Шон любит Бренду и Коннора !!», text_colour = желтый, back_colour = синий, scroll_speed = .05) # Обработка нажатия CTRL + C для выхода кроме KeyboardInterrupt: print («\ n \ nВыполнение Spiderbrain остановлено.\ n «) GPIO.cleanup () Визуальный AII Если вы видели Человека-паука: Возвращение домой, вы бы знали о совершенно новом ИИ под брендом Старка, Карен, которую Питер использует в своей маске, чтобы помочь ему в миссиях. Карен была разработана, чтобы иметь возможность выделять угрозы и предупреждать Питера о его окружении, а также управлять многими функциями его костюма. Хотя создание чат-бота с ИИ, который отвечает голосом и чувством эмоций, может быть не самой простой задачей для этого соревнования, мы все же заранее продумали возможность включения способа создания этого искусственного «паучьего чутья».«Мы решили, что сейчас самое подходящее время, чтобы воспользоваться всплеском популярности Microsoft Azure и API машинного зрения, предоставляемого Microsoft. Мы создали решение« видеть в темноте »с Raspberry Pi Model A и камера NoIR: облачный сервис Microsoft Computer Vision может анализировать объекты на изображении, которое снимается камерой Raspberry Pi (также известной как моя камера Pi-der), прикрепленной к ремню. Чтобы активировать это супер-шестое чувство, у меня есть как только акселерометр Sense Hat стабилизируется, снимок будет сделан автоматически.Используя личную точку доступа моего мобильного телефона, API Azure анализирует изображение, а пакет eSpeak Raspberry Pi сообщает мне об этом через наушник. Это позволяет костюму определять, приближается ли за мной машина или злой злодей. Python Visual AI для Microsoft Azure Machine Vision: import os запросы на импорт из Picamera импорт PiCamera время импорта # Если вы используете блокнот Jupyter, раскомментируйте следующую строку. #% matplotlib встроенный import matplotlib.pyplot как plt из PIL импорта изображения из io импорт BytesIO камера = PiCamera () # Добавьте ключ подписки Computer Vision и конечную точку в переменные среды. subscription_key = «ЗДЕСЬ ВАШ КЛЮЧ !!!» endpoint = «https://westcentralus.api.cognitive.microsoft.com/» Analyse_url = конечная точка + «видение / версия 2.0 / анализ» # Установите image_path равным локальному пути к изображению, которое вы хотите проанализировать. image_path = «image.jpg» def spidersense (): камера.start_preview () время сна (3) camera.capture (‘/ home / spiderman / SpiderBrain / image.jpg’) camera.stop_preview () # Считываем изображение в байтовый массив image_data = open (image_path, «rb»). read () headers = {‘Ocp-Apim-Subscription-Key’: subscription_key, ‘Content-Type’: ‘application / octet-stream’}. params = {‘visualFeatures’: ‘Категории, Описание, Цвет’} ответ = запросы.post ( analysis_url, headers = headers, params = params, data = image_data). отклик.Raise_for_status () # Объект «анализ» содержит различные поля, описывающие изображение. Большинство # соответствующий заголовок для изображения получается из свойства ‘description’. анализ = response.json () image_caption = analysis [«описание»] [«captions»] [0] [«текст»]. capitalize () the_statement = «espeak -s165 -p85 -ven + f3 \» Коннор. Я вижу «+ \» «+ image_caption +» \ «—stdout | aplay 2 & gt; / dev / null» os.system (the_statement) #print (image_caption) паучье чувство () СОЗДАЙТЕ ВИДЕО Чтобы увидеть все это вместе, вот наше видео о сборке:
Как использовать Arduino в Matlab и Simulink
Simulink — это расширение Matlab, которое предоставляет интерактивную графическую среду для моделирования и анализа динамических систем.Это также позволяет вам включать алгоритмы Matlab в модели и экспортировать результаты моделирования в Matlab для дальнейшего анализа. Сегодня мы рассмотрим пошаговую процедуру взаимодействия и использования Arduino в Matlab и Simulink.
В Simulink системы представлены в виде блок-схем. Доступны некоторые элементы блок-схем, такие как передаточные функции, суммирующие переходы и т. Д. А также некоторые виртуальные устройства ввода и вывода, такие как генераторы функций и осциллографы.Точно так же мы также можем использовать Arduino в Matlab и Simulink, установив его, и в этом руководстве мы покажем вам, как их установить и использовать.
[спонсор_1]
Рабочее объяснение
Используя пакет поддержки Simulink для оборудования Arduino, вы можете использовать Simulink для разработки и моделирования алгоритмов, которые работают автономно на вашем Arduino. В этом видео я напишу код Arduino в Simulink, используя разные блоки для генерации прямоугольной волны на выходе.
Выберите блок генератора импульсов из библиотеки. Блок генератора импульсов будет генерировать прямоугольную волну и установить рабочий цикл на 50%. Выходной сигнал генератора импульсов поступает на выходной блок Arduino и в осциллограф. Осциллограф обеспечивает функцию просмотра выходного сигнала. Чтобы загрузить код в Arduino, подключите Arduino к компьютеру и нажмите кнопку «развернуть на оборудование» в программном обеспечении Simulink. После успешной загрузки кода вы можете протестировать его, подключив осциллограф к выходу Arduino.
[inaritcle_1]Процедура
Выполните следующие действия для использования Arduino в Matlab и Simulink.
1) Откройте программное обеспечение MATLAB и затем перейдите к опции Add-Ons на панели инструментов.
2) Щелкните «Получить пакеты поддержки оборудования», а затем выберите «Установить из Интернета».
3) Выберите пакет «Arduino UNO / Nano / Mega» из списка
4) Нажмите кнопку «Далее» и войдите в свою учетную запись Matlab.
5) Установите флажок «Я принимаю» на экране лицензионного соглашения и нажмите «Далее».
6) Теперь снова нажмите «Далее».
7) Щелкните «Установить».
8) После успешной установки пакета вы можете использовать Arduino в MATLAB.
Теперь мы рассмотрим простой пример написания примера кода для Arduino в Simulink, используя разные блоки для генерации прямоугольной волны на выходе.
Образец кода
9) Перейдите к NEW на панели инструментов и затем выберите опцию «Simulink model» из выпадающего меню.
10) Выберите «Simulink Library» и затем нажмите на пакет поддержки Simulink для arduino в боковом меню.
11) Выберите «Общий», а затем выберите блок «Цифровой выход».
12) Перейдите в общую библиотеку simulink и затем выберите опцию Sink из бокового меню, затем выберите блок области видимости для отображения выходного сигнала.
13) Теперь для входного сигнала на цифровой выход вернитесь к общей библиотеке simulink и затем выберите опцию источника, щелкните блок генератора импульсов и затем щелкните рабочее пространство simulink.
14) Нарисуйте схему, как показано ниже
15) Установите правильный номер контакта для модели Arduino, которую вы подключили к Simulink, контакт 9 для Arduino Uno и контакт 13 для Arduino Mega.
16) Дважды щелкните блок генератора импульсов и затем установите амплитуду, период времени и ширину импульса (рабочий цикл) входного сигнала
17) Щелкните RUN, а затем дважды щелкните блок области видимости.
18) Теперь, убедившись в правильности вывода при моделировании, вы можете загрузить код в Arduino, выбрав инструменты -> запустить на целевом оборудовании -> подготовиться к запуску.
19) Выберите ваше устройство.
20) Установите для горячего COM-порта ручной режим, а затем введите соответствующий номер COM-порта.к которому вы подключили свой Arduino (вы можете найти его в «Мой компьютер» (щелкните правой кнопкой мыши) -> Свойства -> Диспетчер устройств–> Порты (COM и LPT).
21) Нажмите «ОК», а затем, после сохранения файла, выберите «Развернуть на оборудование».
22) Если ошибки не возникает, значит, вы успешно загрузили код simulink в Arduino, вот пример результата на осциллографе.
Приложение
- Вы можете быстро визуализировать свои данные, используя огромный массив типов графиков в MATLAB.
- Вы можете сделать такие процессы, как обработка сигналов, проектирование элементов управления, логика состояний и другие сложные математические операции, частью ваших аппаратных проектов.
См. Также: Построение синусоидальных и косинусоидальных волн с использованием MATLAB | Обработка аудиосигналов с использованием MATLAB
Визуальная разработка для Arduino от Mitov Software
Пользователи Visuino (Программное обеспечение) должны принять эти условия лицензии. Если вы отказываетесь принять условия лицензии, вы не можете использовать это программное обеспечение и имеете право вернуть его в течение 30 дней с даты покупки и получить обратно свои деньги.Для вашего удобства копия этого лицензионного соглашения будет храниться в вашей системе во время установки.
Эта лицензия предоставляет вам следующие права:
У вас есть неисключительная лицензия на Программное обеспечение. Название и все нематериальные права на Программное обеспечение являются собственностью Mitov Software.
Вы можете установить и использовать одну копию Программного обеспечения на каждом компьютере при условии, что только одно и то же лицо будет использовать Программное обеспечение на всех компьютерах.
Вы можете распространять любое приложение, созданное с использованием Программного обеспечения, без каких-либо дополнительных лицензионных отчислений сверх вашего первоначального регистрационного взноса за лицензию.
Вы также можете создать разумный набор копий продукта на различных типах носителей, таких как компакт-диск или тип резервного копирования, поскольку эти копии используются только для вашей собственной резервной защиты.
Описание ограничений.
Вы не имеете права подвергать реконструкцию, декомпилировать или дизассемблировать Программное обеспечение.Программное обеспечение лицензируется как единый продукт. Вы не можете сдавать или сдавать Программное обеспечение в аренду. Вы должны относиться к Программному обеспечению как к любому другому материалу, защищенному авторским правом, за исключением того, что вы можете либо (а) иметь разумное количество копий Программного обеспечения исключительно для целей резервного копирования или архивирования, либо (б) установить
Программное обеспечение для нескольких компьютеров при условии, что вы храните оригинал исключительно для целей резервного копирования или архивирования, и только один пользователь будет использовать все копии.
Mitov Software предоставляет ограниченную гарантию со следующими ограничениями:
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ КАК ЕСТЬ.ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ MITOV И ЕГО ПОСТАВЩИКИ ОТКАЗЫВАЮТСЯ ОТ ВСЕХ ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НЕ ОГРАНИЧИВАясь, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ ОТНОСИТЕЛЬНО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. ОТСУТСТВИЕ ОТВЕТСТВЕННОСТИ ЗА КОСВЕННЫЕ УБЫТКИ. В МАКСИМАЛЬНОЙ СТЕПЕНИ, РАЗРЕШЕННОЙ ДЕЙСТВУЮЩИМ ЗАКОНОДАТЕЛЬСТВОМ, НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ MITOV И ЕГО ПОСТАВЩИКИ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ОСОБЫЕ, СЛУЧАЙНЫЕ, КОСВЕННЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ (ВКЛЮЧАЯ, БЕЗ ОГРАНИЧЕНИЙ, УБЫТКИ БИЗНЕСА ИЛИ УБЫТКОВ) ДЕЛОВАЯ ИНФОРМАЦИЯ ИЛИ ЛЮБЫЕ ДРУГИЕ УБЫТКИ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
Программирование регистров Arduino Uno и широтно-импульсная модуляция
Введение
Мои последние два сообщения касались того, что я называю «Программирование регистров микроконтроллера ATmega328P на Arduino Uno». В моем последнем посте обсуждались расширенные возможности прерываний помимо функций на эталонном языке Arduino IDE. Этот пост касается использования счетчиков / таймеров ATmeta328P для управления широтно-импульсной модуляцией (ШИМ). Широтно-импульсная модуляция используется для управления такими вещами, как интенсивность света светодиодов и скорость небольших двигателей постоянного тока, когда интенсивность или скорость должны быть изменены во время работы.Если сила света или скорость двигателя должны быть постоянными, достаточно обеспечить устройство постоянным напряжением постоянного тока. Некоторым устройствам, таким как сервоприводы, для работы требуется только ШИМ. Частота следования импульсов или частота ШИМ обычно поддерживается постоянной. Изменение интенсивности или скорости света достигается изменением ширины импульсов (изменением рабочего цикла). ШИМ управляет этими устройствами, быстро включая и выключая их.
Хотя, безусловно, можно использовать функцию analogWrite () в Arduino IDE для управления яркостью светодиода и скоростью двигателя, забудьте об управлении сервоприводом этим методом.Сервопривод требует импульсов определенной частоты. Функция analogWrite () производит фиксированную частоту ШИМ 490 Гц или 980 Гц в зависимости от того, какой вывод Arduino используется. Для сервоприводов, с которыми я знаком, требуется 50 Гц — большая, большая разница.
Знание того, как использовать счетчики / таймеры ATmega и как программировать различные связанные регистры, даст вам гораздо лучший контроль в любом проекте.
Как я собираюсь покрыть таймер / счетчики ATmega328P
Atmel оснастила ATmega328P (и другие микроконтроллеры в семействе) очень надежным набором возможностей для своих таймеров / счетчиков.Есть три независимых, разных таймера / счетчика. Каждый таймер / счетчик имеет множество режимов и множество опций. Вместо того, чтобы пытаться справиться со всеми этими вариантами, сейчас я собираюсь представить, как создается ШИМ в очень общих чертах. Затем я включу достаточно деталей, чтобы продемонстрировать управление сервоприводом. Наконец, я расскажу обо всех этих режимах и опциях.
Вы обязательно должны скачать техническое описание устройства. Есть четыре главы, связанные с таймером / счетчиками. Вот ссылка на таблицу.Я собираюсь максимально использовать язык таблицы данных.Определение частоты следования импульсов (частота PWD)
Мы знаем, что собираемся создать цепочку импульсов определенной частоты. Что в Arduino уже имеет повторяющуюся характеристику? Как насчет частоты 16 МГц, которая управляет ATmega328P? Эти часы будут работать, но могут быть немного более быстрыми и неизменными. Таймеры / счетчики используют эти часы, но мы обычно подаем эти часы в схемы делителя для получения более низких частот тактовых импульсов.В документации Atmega есть пять или шесть выходов этих делителей, называемых прескаллерами. Каждый прескаллер делит тактовую частоту 16 МГц на разную степень 2. Прескаллеры могут значительно замедлить тактовую частоту, чтобы быть полезными, но они дают выбор только из пяти или шести различных частот ШИМ. Что, если мы хотим чего-то другого? Что-то вроде 50 Гц невозможно с помощью одного только предустановщика. Вот тут и вступают в игру таймеры / счетчики.
Таймер / счетчик принимает выходной сигнал выбранного предварительного делителя и дополнительно делит частоту.Этот делитель не ограничивается степенью двойки. Он может делиться на любое целое число от 1 до максимального числа, которое определяется количеством битов в физическом счетчике в ATmega328P или запрограммированным значением.
Таймер / счетчик просто считает тактовые импульсы, которые он получает от модуля предварительного деления. С каждым тактовым импульсом счетчик увеличивается на единицу. Когда он достигает своего максимального значения или числа, запрограммированного в соответствующем регистре, он будет отсчитывать со следующими часами, уменьшаясь на единицу, пока не достигнет 0.Следующий тактовый импульс снова запускает инкремент счетчика.
Если мы построим график зависимости счета от времени, мы получим то, что обычно называют треугольной формой волны. Значение этого сигнала в том, что его частота будет соответствовать частоте повторения импульсов. Очевидно, что эта частота зависит от трех факторов: : — тактовая частота Arduino 16 МГц, выбранный прескаллер и счетчик, который мы выбираем для нашего таймера / счетчика. Позже мы соберем все это вместе и сгенерируем формулу.
Определение ширины импульса (рабочий цикл) и генерация импульсов
Теперь, когда мы знаем, как определять частоту импульсов, давайте перейдем к определению ширины импульса и генерации самих импульсов. Это действительно одна операция. Введем еще два элемента : схему компаратора и регистр компаратора. Для нашего настоящего обсуждения мы собираемся сказать, что компаратор является частью схемы, которая управляет одним из контактов ввода / вывода Arduino.
Компаратор сравнивает два значения : — значение, запрограммированное в регистре компаратора, и текущее значение в таймере / счетчике.Здесь мы делаем наши импульсы : Когда компаратор определяет, что два значения равны, он изменяет логический уровень вывода ввода / вывода. Предположим, что текущий логический уровень вывода I / O высокий, и что таймер / счетчик имеет нулевое значение. Таймер / счетчик ведет счет, и когда он достигает значения, запрограммированного в регистре компаратора, компаратор переключает I / О штырь низкий. Счетчик / таймер продолжает отсчет, пока не достигнет выбранного нами максимального количества. Теперь счетчик ведет обратный отсчет, и когда он снова достигает значения, запрограммированного в регистре компаратора, компаратор переключает вывод I / O в высокий уровень.Теперь мы продолжаем отсчет до нуля, с чего мы и начали. Этот цикл продолжается до тех пор, пока мы ему позволяем. Для генерации импульсов значение регистра компаратора должно быть меньше значения, запрограммированного в регистре таймера / счетчика. Если регистр компаратора имеет значение, равное или большее, чем регистр таймера / счетчика, или имеет значение 0, логический уровень вывода I / O не изменится. Вот схема работы :
Должно быть очевидно, что если мы опускаем строку с надписью «Pulse Width» (соответствует значению, запрограммированному в регистре компаратора), положительная часть импульсов становится уже, а отрицательная часть становится шире, что снижает рабочий цикл.Частота не изменится. Обратите внимание, что центр положительного импульса находится на вершине треугольной волны. Центр низкого импульса находится на нулевом отсчете. Это имеет некоторое значение, как мы увидим позже, когда будем обсуждать другие режимы работы.
Что такое сервопривод
Сервопривод — это устройство, используемое моделями радиоуправления (самолеты, автомобили, лодки), в робототехнике и других приложениях, где что-то нужно перемещать. Что-то вроде колес, управляющих автомобилем, элеронов самолета или пальцев руки робота.
Есть промышленные сервоприводы, обычно работающие от переменного тока. Я не говорю о них (я ничего о них не знаю). Я рассматриваю только типы постоянного тока, как на картинке. На фото представлен сервопривод «стандартного» размера. Есть в наличии и поменьше. Проверьте Adafruit и Sparkfun. Также есть два типа : непрерывный и прерывистый. Следующее обсуждение и мой пример кода предназначены для прерывистого сервопривода. Я расскажу о непрерывном сервоприводе в другом посте.
Прерывистый сервопривод вращается по дуге 180 °. Он состоит из двигателя, подключенного к потенциометру (переменному резистору) через ряд шестерен. Вал потенциометра также служит выходным валом, который приводит в движение ваше устройство. Когда двигатель изменяет настройку потенциометра, он изменяет напряжение, которое подается в цепь обратной связи. В цепь обратной связи подается второе напряжение, получаемое из импульсов от внешнего устройства, такого как выход PWM вашего Arduino Uno.
Двигатель вращается, пока напряжение на потенциометре не сравняется со вторым напряжением. Когда это происходит, двигатель останавливается. Ширина входных импульсов определяет положение выходного вала. Другими словами, двигатель вращается только при изменении ширины импульса, что делает два напряжения неравными. Когда напряжения сравняются, опять же, из-за поворота потенциометра, двигатель останавливается. Шестерни значительно снижают скорость вращения двигателя. Крутящий момент на выходном валу увеличивается в той же пропорции, в которой уменьшается скорость.Прелесть этого устройства в том, что двигатель может вращаться и удерживаться, несмотря на большой приложенный крутящий момент.
Управление сервоприводом
Сервопривод имеет три соединения : заземление, питание и управление. Земля и питание подключаются к внешнему источнику напряжения. Я использовал батарейки АА на 6В. Земля и управление подключаются к Arduino Uno. Я использовал вывод Uno 10 для управляющего сигнала.
Управляющий сигнал представляет собой последовательность импульсов 50 Гц — импульс каждые 20 мс.Сервопривод будет на -90 °, если ширина импульса 0,5 мс, на + 90 °, если ширина импульса составляет 2,5 мс. и на нуле, если длительность импульса составляет 1,5 мс. Насколько я понимаю, есть некоторые различия в спецификациях для разных сервоприводов. Частота следования импульсов 50 Гц. кажется стандартным, как и ширина импульса нулевого положения (1,5 мс). Это максимальная и минимальная ширина импульса в крайних положениях по и против часовой стрелки, которые могут варьироваться в зависимости от устройства. Может потребоваться метод проб и ошибок.Я бы начал с 1,0 мс. и 2,0 мс. и посмотрите, как далеко поворачивает ваше устройство.
Таймер / счетчик, а также регистры вывода и ввода
Теперь мы поиграем с таймером / счетчиком ATmega328P внутри ATmega328P. Их три: : Timer / counter0, Timer / counter1 и Timer / counter2. Я использую Timer / counter1. Регистры в таймере / счетчике 1 и в самом таймере / счетчике имеют длину 16 бит. Нам нужно разрешение 16 бит — Timer / counter0 и Timer / counter2 используют 8-битные таймеры / счетчики и регистры.
Надеюсь, вы сможете сопоставить следующее подробное обсуждение с неспецифическим обсуждением в начале этого сообщения. Как я уже сказал, существует множество вариантов. Таким образом, Таймер-счетчик1 имеет 15 режимов работы, 12 из которых предназначены для широтно-импульсной модуляции. В таблице 16-4 таблицы данных перечислены эти режимы. Мы будем использовать режим 9 «ШИМ, коррекция фазы и частоты». Я объясню, что это значит, позже, когда буду обсуждать другие режимы. Помните, что ранее нам нужно было запрограммировать регистр, чтобы он содержал значение наибольшего счетчика таймера / счетчика, чтобы установить частоту повторения импульсов.На языке таблицы это значение называется «TOP». Ниже приведена формула, взятая из таблицы. В этой формуле для описания того же самого используется «максимальное значение». Также нам понадобится регистр для определения ширины импульсов.
Сейчас самое время взглянуть на блок-схему на рис. 16-1 таблицы данных. Вы можете заменить все маленькие «n», как в «TCNTn», на «1», потому что это Timer / counter1. «TCNTn» становится «TCNT1» и т. Д.
В левой части диаграммы вы видите сам таймер / счетчик: «TCNT1».Ниже «TCNT1» находятся два регистра управления выходом, «OCR1A» и «OCR1B», и один регистр управления входом, «ICR1». Регистры управления выходом подключаются к «другим схемам», обсуждаемым в следующем абзаце. О функциональности вывода ICR1 я расскажу позже.
Давайте поговорим об этой «другой схемотехнике». Выбранный нами режим управляет взаимосвязями между различными блоками на блок-схеме. Регистры управления выходом подключаются к компараторам, изображенным в виде прямоугольников со знаками равенства внутри.Эти два компаратора также подключаются к таймеру / счетчику. Когда значение таймера / счетчика равно значению, хранящемуся в регистре управления выводом, отправляется сигнал для выполнения некоторого действия. В моем проекте, когда компаратор между таймером / счетчиком и регистром управления выходом «OCR1A» достигает того же значения, сигнал «равно» переходит в блок «Логика управления» (соединение устанавливается выбором режима). В результате таймер / счетчик начнет обратный отсчет на следующих часах от предделителя.«OCR1A» запрограммирован на наивысшее значение, которое мы хотим, чтобы таймер / счетчик достиг «(TOP», или максимальное значение), и, очевидно, используется для управления частотой повторения импульсов. Когда таймер / счетчик достигает нуля, называемого в таблице «НИЖНИЙ», он будет отсчитывать на следующих часах.
Выход компаратора между таймером / счетчиком и регистром управления выходом «OCR1B» подключается к блоку, называемому «Генерация сигнала». Блок «Генерация формы волны» подключается к выводу ATmega328P «OC1B» (через программный выбор).Когда выход этого компаратора сигнализирует о равенстве, схема «генерации сигнала» изменит логическое состояние вывода. Будет ли он меняться с «Низкого» на «Высокий» или «Высокого» на «Низкий», зависит от того, вел ли таймер / счетчик в это время вверх или вниз. Это также зависит от того, как мы программируем один из регистров управления, не показанных на схеме.
Программирование регистров
Теперь пора обсудить, как мы определяем значение максимального числа для программирования в «OCR1A». В даташите есть формула:
частота повторения импульсов = тактовая частота / (2 * предварительный делитель * максимальное количество)
Подстановка известных значений :
50 = 16000000 / (2 * предварительный делитель * максимальное количество)
Изменение порядка и упрощение :
максимальное количество = 160,000 / предварительный делитель
У нас есть выбор фиксированных значений для предварительного делителя : 1, 8, 64, 256 и 1024.Мы хотим выбрать наименьшее значение предварительного делителя, чтобы получить наибольшее значение максимального числа. Чем больше максимальное число, тем большее разрешение будет у нас при программировании ширины импульса. Мы не можем использовать предделитель 1, потому что это даст нам максимальное количество 160 000. 16-битный счетчик может считать только до 2 16 -1 или 65536. Выбор следующего значения предварительного делителя, 8, дает нам максимальное количество 20 000. Это подойдет. Также есть счастливое совпадение, что 20000 — это точное время между импульсами в микросекундах.Следовательно, когда мы перейдем к программированию ширины импульса, скажем, 1,5 мс, она будет достигнута путем программирования значения 1500.
Создание кода
У меня есть образец скетча ниже. Все, что он делает, — это поворачивает сервопривод с шагом 10 ° от + 90 ° до -90 ° и обратно. Он работает непрерывно с 500 мс. между шагами. Регистры «OCR1A» и «OCR1B» могут быть записаны напрямую, как это видно на эскизе. «OCR1A», однажды установленное на 20 000, не изменится — потому что частота повторения импульсов не изменится.«OCR1B» меняется каждый раз, когда мы хотим изменить ширину импульса.
У нас есть еще четыре шага программирования, на которые нужно обратить внимание. : Выбор режима таймера / счетчика 9, установка предварительного делителя на 8, выбор того, как мы хотим, чтобы выходной контакт изменял логическое состояние, и создание выходного контакта «OCP1B» в качестве выход. Первые три из них будут выполнены путем программирования двух управляющих регистров ATmega328P, «TCCR1A» и «TCCR1B»
.Когда я писал приведенный ниже код, я включил множество комментариев, описывающих программирование регистров управления.Нет смысла быть лишним, поэтому взгляните на код. См. Таблицы 16-3. 16-4 и 16-5 таблицы данных для получения дополнительных сведений о программировании этих двух регистров управления.
Есть еще много чего обсудить, в том числе :
- Другие режимы ШИМ
- Режимы без ШИМ
- Регистр управления вводом
- Режимы генератора сигналов
- Таймер / счетчик 0 и Таймер счетчик 2
- Сервопривод непрерывного действия
- Создание и использование прерываний таймера / счетчика
- Некоторые другие применения таймера / счетчиков
Я собираюсь разобраться с этими проблемами в моем следующем посте или постах.
Деловой и промышленный регулируемый модуль генератора импульсов для Arduino Новый 1 шт. 5 В-12 В NE555 Частотное электрическое оборудование и принадлежности
Регулируемый модуль генератора импульсов для Arduino Новый 1 шт. 5 В-12 В NE555 частота
Медальон Mia Diamonds из стерлингового серебра 925 пробы 20 мм с текстурированной и полированной алмазной огранкой в форме сердца: Одежда. Чтобы предоставить клиентам наилучшее возможное качество. Ожерелье Map включает регулируемую цепочку и подарочную упаковку. ВСЕ продукты Venley печатаются исключительно в Соединенных Штатах, — плюшевый бархат с высокой абсорбирующей антибактериальностью и прочный дизайн.Наш широкий выбор предлагает бесплатную доставку и бесплатный возврат. MAX698EWE +: ВЧ транзисторы: промышленные и научные, 2WS-FSP10WS-HS175WS вибратор для бетона типа Wyco. Вы можете выбрать подходящий для вашего малыша. Сразу же добавьте его в свой список желаний. Регулируемый модуль генератора импульсов для Arduino New 1pc 5V-12V NE555 Frequency , высококачественные материалы: классическое твердое элегантное платье для взрослых. Включает 18-дюймовую цепочку Rolo из желтого золота 585 пробы с застежкой на пружинном кольце и подарочную коробку, готовую для подарка. Предполагается, что доставка по вашему адресу займет 10-25 дней. Внутреннее и внешнее кольца и шары изготовлены из невысокого материала. -сплав, занимался изготовлением игрушек для рук.мы стремимся сделать ваше путешествие по йоге комфортным и расслабленным. Пожалуйста, дважды проверьте вышеуказанный размер и примите во внимание ваши измерения перед заказом. YEEGG Buckwheat Pillow Пакет из 100% хлопка из органической грубой ткани (19 дюймов x 9 дюймов x 4 дюйма), Agness — одно из элегантных длинных платьев. Идеально подходит для вашего уникального ювелирного проекта. Регулируемый модуль генератора импульсов для Arduino New 1pc 5V-12V NE555 Frequency . В настоящее время единственный, кого я видел в сети в этом стиле. Эта книга наполнена информативным текстом.поэтому, пожалуйста, посмотрите другие товары в нашем магазине ****. Юмористический пластиковый столовый набор выключит ваш, ваша покупка будет тщательно упакована и помещена в коробку, чтобы предотвратить поломку, варианты всемирной стандартной доставки и экспресс-доставки DHL доступны при оформлении заказа, французские манжеты Hollywood Glam переливающиеся лавандовые кристаллы. ♥ Водонепроницаемые, с ярким принтом на холсте по всей длине обуви. Используется зарегистрированная доставка, поэтому нет абсолютно никаких шансов, что посылка будет потеряна. Карточка плоская для простоты пересылки по почте, Регулируемый модуль генератора импульсов для Arduino Новый 1 шт. 5 В-12 В NE555 Частота , Он изготовлен из прозрачного ребристого хрусталя 2 разных стилей: цветочная и шарообразная, Все украшения разработаны вручную и выполнены вручную Серьги и подвеска, сделанные Charming Touch Party, украшены куполообразными кабошонами из белого искусственного жемчуга, обрамленными прозрачными хрустальными стразами. 10% от всех продаж будут переданы компании Epilepsy Research UK. Датчик дождя: Gnome Датчик дождя: сад и на открытом воздухе, ОБЯЗАТЕЛЬНО ИМЕТЬ ОБОРУДОВАНИЕ ДЛЯ ЛЮБЫХ ЗАВЕРШЕНИЙ СИЛЫ: Обеспечьте разнообразный спектр силовых упражнений. Добавьте сопротивление тренировкам для сжигания жира.Дата первого упоминания: 4 октября, ДЕЛИКАТНЫЕ СУМКИ ДЛЯ ПРАЧЕЧНЫХ СОХРАНИТЕ ЦВЕТ РАЗДЕЛЬНЫМИ И БЕЗОПАСНЫМИ: четыре белых сумки можно использовать для одежды светлых тонов, а большую черную сумку можно использовать для темных вещей. Миллионы владельцев транспортных средств полагаются на опоры газового лифта для подъема и удержания открытых багажников. Мужской цветочный жаккардовый галстук-бабочка и нагрудный платок Cummerbund Set: Одежда, Регулируемый модуль генератора импульсов для Arduino New 1pc 5V-12V NE555 Frequency . Отшлифован до зернистости 150 и готов к окрашиванию, 10-литровая синяя канистра для топлива, бензина, дизельного топлива и т. Д. — В комплекте с синим сливным носиком: автомобиль и мотоцикл, высококачественный почечный ремень «-LUM» Две наиболее важные функции почечного ремня — защита и поддержка.Отрегулируйте соответствующую скорость вентилятора, несколько раз нажав кнопку питания, не нужно беспокоиться об изменении настроек таймера в зависимости от времени года. Кулон с низким содержанием кадмия, не содержащим никель и свинец, Bytomic Slam Ball: Sports & Outdoors. Наши послепродажные подшипники ступиц подвергаются прецизионной механической обработке и предварительно покрыты антикоррозийной смазкой для повышения защиты и производительности.