Оглавление:

Портативный верстак Arduino, часть 3: 11 шагов
Портативный верстак Arduino, часть 3: 11 шагов

Видео: Портативный верстак Arduino, часть 3: 11 шагов

Видео: Портативный верстак Arduino, часть 3: 11 шагов
Видео: Цифровые входы #3 | Arduino - учимся программировать 2024, Июль
Anonim
Портативный верстак Arduino, часть 3
Портативный верстак Arduino, часть 3
Портативный верстак Arduino, часть 3
Портативный верстак Arduino, часть 3

Если вы просмотрели части 1, 2 и 2B, то до сих пор в этом проекте не было много Arduino, но всего несколько плат, проводов и т. Д. - это не то, о чем идет речь, и часть инфраструктуры должна быть построена до остальное работает.

Это электроника и код Arduino. В предыдущем руководстве 2B перечислены детали источника питания.

В этом разделе представлен портативный верстак со следующими функциями

Сенсорный экран TFT, обеспечивающий отображение, управляемый Arduino Mega, чтобы обеспечить следующее:

  1. 8 цифровых дисплеев, выключено / включено / колеблется
  2. 4 индикатора напряжения
  3. 3 дисплея тока / напряжения
  4. Измеритель сопротивления E24 (потому что я больше не могу читать цветные полосы)

Я еще кое-что добавлю, но это была моя первоначальная цель. В коде Arduino также указаны последовательный дисплей, дисплей I2C, измеритель емкости, цифровые переключатели и осциллограф, которые я добавлю со временем. Также я не совсем решил, стоит ли добавлять источник питания 3V3, источник переменного тока или мониторинг напряжения / тока источника питания. До сих пор это было построено с использованием Mega, но я также собираюсь перенести некоторые функции на отдельные схемы доступа I2C, либо выделенные микросхемы, либо запрограммированные Atmel 328, которые будут более легко приспособлены к другому контроллеру.

Запасы

5 x 16-контактные разъемы для заголовков

5 x 8-контактные розетки dupont, фактически сделанные из длинных 40-контактных одинарных розеток, обрезанных до необходимой длины

1 x 3,5-дюймовый сенсорный TFT-экран ILI9486

1 х Arduino Mega 2650

Отдельные компоненты

Согласно тексту, значение некоторых из них не является абсолютно фиксированным, и если вы пропустите функцию, она вообще не понадобится:)

Цифровой вход

Резисторы 16 x 10 кОм

Аналоговый вход

1 x TL074 - операционный усилитель с четырьмя полевыми транзисторами, это то, что у меня было в качестве запасного, подойдет что-нибудь подобное:)

В качестве делителей напряжения используются резисторы 4 x 68 кОм и 4 x 430 кОм.

4 x 1N4001 или аналогичный

Измеритель сопротивления

1 x TL072 - двойной операционный усилитель jfet, это то, что у меня было в качестве запасного, подойдет что-нибудь подобное:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (если эти значения изменены, необходимо обновить код Arduino)

Шаг 1. Обзор электроники

Обзор электроники
Обзор электроники
Обзор электроники
Обзор электроники
Обзор электроники
Обзор электроники
Обзор электроники
Обзор электроники

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

Основными требованиями к электронике коробки проекта было питание более новых схем с использованием Arduino или Raspberry PI, поэтому 5 В были необходимы, как и USB-разъемы. Переключатели с подсветкой сообщают мне, включено питание или нет, и при тестировании мне регулярно приходится строить небольшие вспомогательные цепи, чтобы временно отображать состояние. У меня есть коробка с громоздкими измерителями, которые занимают много места на столе, и, прежде всего, мне нужен дисплей, на котором я могу легко читать, когда мое зрение ухудшается, что-то с большими яркими символами. Поэтому мне нужны цифровые дисплеи, измерители напряжения, измерители тока и в данном случае небольшая роскошь в виде измерителя сопротивления для быстрой идентификации резисторов серии E24, все в пределах 15 см от макета проекта и в компактном портативном корпусе.

Основной блок питания, описанный в предыдущей статье, подает питание на крышку с помощью 40-жильного ленточного кабеля, позволяющего соединить оба устройства при закрытой крышке. Это обеспечивает коммутируемые источники питания 5 В и 12 В для электроники панели и для питания макетной платы.

Все входы питания и сигналов обеспечиваются 2x8-контактными разъемами PCB параллельно с 8-контактным разъемом dupont. Вероятно, это перебор, у большинства макетов есть шины питания, но это было легко сделать.

На розетках питания основная шина 0 В источника питания является общей для всех источников питания и доступна. Выше находится источник питания 5 В, включенный на базовом блоке, а над ним - два поставляемых источника питания + 12 В и -12 В, которые в настоящее время исправлены, хотя у меня есть идея взломать источник питания, чтобы сделать его переменным и обеспечить 3,3-20 В. переменная поставка.

Шаг 2: Электроника

Электроника
Электроника
Электроника
Электроника
Электроника
Электроника

Я разместил снимки экрана макета макета, того, как выглядит схема, построенная на матричной плате, схему в формате PDF и исходные файлы Fritzing. Это не особо сложная электроника, она предназначена для установки ограничивающих резисторов, буферных усилителей и разветвлений для платы Arduino. Но есть несколько изображений, чтобы более наглядно показать многие связи. Большая часть проводки была составлена из предварительно обжатых ленточных кабелей Dupont стандартной длины, собранных в многоканальные корпуса, чтобы их было легче повторно подключить и сделать их более надежными.

Arduino Mega 2650 устанавливается в крышку с USB-разъемом, доступным для программирования. Он управляет сенсорным экраном TFT, который отображает все выходы и входы.

8 цифровых входов доступны через 2 x 8-контактный заголовок печатной платы, и их статус отображается на экране, если эта функция выбрана. Это простой дисплей включения / выключения: красный выключен, зеленый включен. Я могу добавить колебания в качестве будущих изменений.

4 входа напряжения также доступны через заголовок печатной платы и делитель напряжения, напряжение отображается на экране. Каждое входное напряжение на передней панели относительно общей земли передается на делитель напряжения на 7, а затем буферизуется одним из четырех операционных усилителей в TL074, сконфигурированном как выпрямительный усилитель, чтобы избежать несчастных случаев с отрицательными напряжениями.. Было бы неплохо добавить индикацию полярности на каком-то этапе, но не в этот раз. Выход каждого операционного усилителя поступает на один из входов АЦП Arduino.

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

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

Arduino питает массив сопротивлений на делителе напряжения, чтобы обеспечить функциональность измерителя сопротивления. Выходной сигнал буферизируется операционным усилителем (половина TL072) перед считыванием Arduino и вычислением сопротивления. Целью этого является не точное измерение сопротивления, а быстрое определение значений серии E24, хотя с некоторой калибровкой его можно использовать в качестве базового измерителя. Его работа заключается в обнаружении, когда сопротивление менее 9M9 присутствует на двух пружинах, установленных на передней панели, и затем выборочно переключать 5 В на каждый резистор в массиве делителя, пока не будет измерено значение, наиболее близкое к 2,5 В, или последний выбранный резистор, a Затем выполняется расчет и сравнение для определения ближайшего значения E24. 5 В поступает с цифровых выходов 3-10 на Arduino, которые реконфигурируются как входы с высоким импедансом между каждым измерением, чтобы минимизировать ошибки. Контакты Arduino D3-10 преднамеренно использовались в качестве будущего дополнения, возможно, в качестве измерителя емкости, использующего возможность ШИМ этих выходов, что потенциально могло быть только изменением программного обеспечения.

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

Шаг 3: Вход напряжения / тока INA3221

INA3221 Вход напряжения / тока
INA3221 Вход напряжения / тока

Это было задумано как быстрое исправление для обеспечения измерений напряжения / тока в коробке, но оказалось, что, как это было реализовано на плате, которую я купил, она предназначалась для контроля заряда батареи, поэтому ее пришлось изменить, чтобы обеспечить три независимых измерения. Если при создании этого проекта вы можете получить плату INA3221, которая реализует этот чип в соответствии с таблицей данных, тогда в этом нет необходимости.

На рисунке видно, что на дорожках печатной платы необходимо сделать три разреза, чтобы разделить измерительные резисторы. Контактные площадки для этих трех резисторов также необходимо обрезать, чтобы отделить их от остальной части печатной платы. Затем резисторы присоединяются к контактным площадкам путем пайки дополнительных проводов в качестве перемычек. Я документирую это, потому что это обычная доска и, возможно, единственная доступная.

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

Питание платы берется с контактов Arduino 5V, как и земля, а соединения I2C идут на печатную плату электроники.

Шаг 4: Экран дисплея

Экран дисплея
Экран дисплея

Это была покупка на eBay, доступная из множества источников, дисплей с питанием от ILI9486. Я обнаружил, что он лучше всего работает с библиотеками MCUFRIEND Дэвида Прентиса, но его необходимо откалибровать перед использованием, что просто требовало, чтобы один из примеров библиотеки, предоставленных Дэвидом, запускался с подключенным экраном, следуйте инструкциям на экране и запишите отображаемые параметры, вставленные в файл кода Arduino_Workstation_v01, если они отличаются.

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

Шаг 5: соединяем вместе

Соединяя это вместе
Соединяя это вместе
Соединяя это вместе
Соединяя это вместе
Соединяя это вместе
Соединяя это вместе

Arduino Mega расположена на левой крышке, а USB-порт и порты питания доступны снаружи корпуса. На правой стороне рядом с Arduino находится электроника, установленная на матричной плате, а над ней установлена плата INA3221 на задней стороне крышки.

Также на задней стороне крышки на левой стороне над Arduino находится общая плата заземления, к которой подключены все заземления.

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

Все разъемы были добавлены логичным образом, что дало лучший доступ для выполнения подключений с помощью моих неуклюжих пальцев, оставив подключения на передней панели до конца, а последние подключения дисплея были проданы через монтажное отверстие, которое должно быть завершено в последнюю очередь. Экран был закреплен на лицевой панели, напечатанной на 3D-принтере.

Шаг 6. Консолидированные лиды

Консолидированные лиды
Консолидированные лиды
  1. Входы напряжения и сопротивления на порты АЦП Arduino, пять выводов по 20 см с отдельными штыревыми разъемами на одном конце, объединенные в шестипроводной корпус с зазором для размещения зазора в разъемах Arduino.
  2. 4-проводной кабель длиной 10 см от четырехполюсного корпуса к двум двухпроводным корпусам для подключения выводов напряжения на передней панели к печатной плате.
  3. 8-контактный 10-сантиметровый кабель от штекерного разъема 2x4 к 8-контактному гнездовому разъему
  4. 4-контактный кабель длиной 10 см от 4-контактного женского корпуса к 4-контактному женскому корпусу для подключения последовательного интерфейса и I2C к передней панели
  5. 4-контактный кабель длиной 10 см от 4-контактного корпуса к четырем одиночным разъемам для подключения INA3221 к передней панели
  6. 4-полосный 20-сантиметровый кабель для подключения четырехстороннего женского корпуса к четырехпроводному штекерному корпусу для передачи последовательного и I2C от Arduino к разветвлению печатной платы.
  7. 8-контактный 10-сантиметровый кабель от 8-контактного гнездового корпуса к 8-контактному гнезду для подключения цифровых входов от передней панели к печатной плате.
  8. 8-контактный 10-сантиметровый кабель для подключения 8-контактного женского корпуса к одному 3-контактному штекерному корпусу и одному 5-контактному штекерному корпусу для подключения резистивного делителя к печатной плате. Два корпуса используются для размещения нестандартного зазора в разъемах на плате Arduino.
  9. 2-сторонний кабель длиной 20 см для подключения 2-стороннего гнездового корпуса к двум одинарным штекерным разъемам для источника питания INA3221.
  10. 2-сторонний кабель длиной 10 см для подключения 2-стороннего гнездового корпуса к двум одинарным гнездовым корпусам для подключения третьего разъема монитора INA3221 к передней панели.
  11. 2-сторонний кабель длиной 10 см для подключения 2-стороннего женского корпуса к 2-стороннему женскому корпусу для подключения INA3221 к разъемам разветвления I2C.

Шаг 7: Код Arduino

Код Arduino
Код Arduino
Код Arduino
Код Arduino

Этот проект основан на Arduino Mega 2650 по той простой причине, что мне нужно было много портов ввода-вывода, предназначенных для задач в простом формате. Библиотеки для сенсорного экрана TFT по умолчанию поддерживают Arduino Uno и должны быть отредактированы для поддержки Mega. Редактирование библиотек поддерживается исходным автором кода TFT, выполняется просто и описано в следующем шаге.

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

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

Основная функция кода вращается вокруг дисплея, каждый элемент на дисплее имеет запись в одном массиве, который содержит тип элемента, цвет и дополнительные параметры на экране, такие как источник ввода. Снимок экрана этого массива с комментариями показан выше. Он также содержит поле для управления, будет ли оно отображаться на экране или нет. Редактируя этот массив, можно добавлять новые или удалять функции. Процедура «цикла» кода проходит через этот массив на непрерывной основе, последовательно обрабатывая каждый подходящий элемент и затем повторяя его. В настоящее время существует 6 различных элементов.

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

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

Аналоговые элементы - отображают приблизительное напряжение, измеренное на соответствующем аналоговом выводе. Изначально указаны четыре.

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

Элемент сопротивления - это отдельный элемент, отображающий входные данные измерителя сопротивления.

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

Экран имеет три режима состояния: нормальный, большой и полноэкранный, и все элементы меняют свою работу в зависимости от статуса. Эти три режима можно выбрать из меню, прикоснувшись к элементу и соответствующему параметру меню.

Нормальный режим - отображает 8 цифровых входов, четыре аналоговых входа напряжения, три прецизионных элемента, элемент сопротивления и четыре элемента меню. Выбор в меню «Нормальный» переводит дисплей в этот режим.

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

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

Чтобы добавить дополнительную функциональность, необходимо добавить следующие процедуры

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

`` логическая '' процедура, которая принимает информацию из процедуры рисования и использует соответствующие процедуры драйвера экрана для вывода информации на экран и возврата правильной информации касания для области нарисованного экрана

процедура настройки, которая вызывается как часть настройки Arduino

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

Шаг 8: редактирование библиотек Arduino

Редактирование библиотек Arduino
Редактирование библиотек Arduino
Редактирование библиотек Arduino
Редактирование библиотек Arduino

Дисплей, который я использовал, очень хорошо работает с Arduino Uno и базовыми библиотеками, написанными для него, но работает медленно при прямом переносе на Arduino Mega. Чтобы правильно управлять дисплеем, необходимо использовать другой набор выводов данных, и это изменение использования должно быть настроено в библиотеках. Это простое изменение было задумано автором. На фотографиях показаны внесенные изменения.

Два файла хранятся в папке MCUFRIEND_kbv / utility под именами mcufriend_shield.h и mcufriend_special.h. Требуемые изменения в первую очередь относятся к заголовочному файлу «щита», чтобы обеспечить чтение первой строки.

#define USE_SPECIAL

чтобы гарантировать загрузку «специального» файла заголовка.

«Специальный» заголовочный файл также должен быть обновлен, чтобы гарантировать, что строка

#define USE_MEGA_8BIT_PROTOSHIELD

не прокомментирован.

Эти два изменения означают, что код дисплея для этого дисплея будет работать с контактами 20-29 на Arduino Mega вместо 3-10 по умолчанию на Uno.

Шаг 9: снимки экрана

Снимки экрана
Снимки экрана
Снимки экрана
Снимки экрана
Снимки экрана
Снимки экрана

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

Первый экран показывает «нормальный» экран с меню вверху, измерения напряжения на левой панели, измерения напряжения и тока на правой стороне и состояние цифрового вывода внизу, красный - «ложь / низкий», зеленый - «истинный / высокий». '. Наконец, в центре находится измерение сопротивления.

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

На третьем экране показаны входы напряжения в большом режиме.

Шаг 10: загрузка кода Arduino

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

Если библиотеки были изменены нормально и Arduino Mega2650 был установлен в качестве целевой платформы в Arduino IDE, тогда код должен скомпилироваться в первый раз.

Библиотеки, которые необходимо загрузить, - это библиотеки Adafruit GFX и Touchscreen, которые должны быть доступны в диспетчере библиотек Arduino, копия MCUFRIEND_kbv, которую можно загрузить с github, и для INA3221, библиотека SwitchDocLabs SDL_Arduino_INA3221, также загружаемая с github, обе появляются быстро. поиск в Google.

Шаг 11: Последние штрихи

Последние штрихи
Последние штрихи
Последние штрихи
Последние штрихи
Последние штрихи
Последние штрихи
Последние штрихи
Последние штрихи

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

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

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

Рекомендуемые: