Съдържание:

Преносима работна маса Arduino Част 3: 11 стъпки
Преносима работна маса Arduino Част 3: 11 стъпки

Видео: Преносима работна маса Arduino Част 3: 11 стъпки

Видео: Преносима работна маса Arduino Част 3: 11 стъпки
Видео: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Юли
Anonim
Преносима работна маса Arduino, част 3
Преносима работна маса Arduino, част 3
Преносима работна маса Arduino, част 3
Преносима работна маса Arduino, част 3

Ако сте гледали части 1, 2 и 2В, досега в този проект не е имало много Arduino, но само няколко платки и т.н. не са за това и инфраструктурната част трябва да бъде изградена преди почивка работи.

Това е електрониката и кодът на Arduino. Предишните инструкции по 2В изброяват подробностите за захранването.

Този раздел описва преносимата работна маса със следните функции

TFT сензорен екран, осигуряващ дисплей, задвижван от Arduino Mega, за да осигури следното

  1. 8 цифрови дисплея, изключени/включени/осцилиращи
  2. 4 дисплея за напрежение
  3. 3 дисплея за ток/напрежение
  4. Измервател на съпротивление E24 (тъй като вече не мога да чета цветните ленти)

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

Консумативи

5 x 16 пътни гнезда за заглавки

5 x 8 пътни двойни гнезда, всъщност направени от дълги 40 -пътни единични гнезда, изрязани до необходимата дължина

1 x 3.5 ILI9486 TFT сензорен екран

1 x Arduino Mega 2650

Отделни компоненти

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

Цифров вход

16 x 10K резистори

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

1 x TL074 quad jfet opamp, това е, което имах като резервен, всичко подобно ще направи:)

4 x 68K и 4 x 430k резистора, използвани като разделители на напрежение.

4 x 1N4001 или подобен

Измервател на съпротивление

1 x TL072 двойна jfet opamp, това е, което имах като резервен, всичко подобно ще направи:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (Ако тези стойности се променят, кодът на Arduino трябва да бъде актуализиран)

Стъпка 1: Преглед на електрониката

Преглед на електрониката
Преглед на електрониката
Преглед на електрониката
Преглед на електрониката
Преглед на електрониката
Преглед на електрониката
Преглед на електрониката
Преглед на електрониката

Сивата конзола е направена от мен преди 30 години и все още се използва редовно, но времето продължи. Той осигурява двойно захранване вляво, централен аудио усилвател в средата, с вътрешен високоговорител и осцилатор вляво. Тези дни повечето от моите схеми се нуждаят само от захранване и от това, само от положителната релса. Нужно беше нещо различно, както и етикетиране, без което съм живял, ами успях.

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

Основният захранващ блок, описан в предишна статия, осигурява захранване на капака с помощта на 40 -пътен лентов кабел, който позволява свързването им, докато капакът е затворен. Това осигурява превключени 5v и 12V захранвания за панелната електроника и за захранване на платката.

Всички входове за захранване и сигнал се осигуряват от 2x8way гнезда за печатни платки успоредно с 8-посочен гнездо dupont. Това вероятно е прекалено много, повечето платки имат захранващи релси, но беше лесно да се направи.

На контактите за захранване основната 0V релса на захранването е обща за всички захранвания и е достъпна. Над това е 5V захранване, включено в базовия блок, а над това са две захранвани +12V и -12V захранвания, които в момента са фиксирани, въпреки че имам идея да хакна захранването, за да го направя променлив и да осигури 3.3-20V променливо предлагане.

Стъпка 2: Електрониката

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

Публикувал съм екранни разпечатки на оформлението на макета, как изглежда схемата, когато е изградена върху матрична платка, схематично като PDF и оригиналните файлове на Fritzing. Това не е особено сложна електроника и е предназначена за монтиране на ограничаващи резистори, буферни усилватели и вентилаторни връзки за платката Arduino. Но има няколко изображения, които показват по -ясно многото връзки. По-голямата част от окабеляването е направено от стандартни дължини от предварително нагънат дюпонен лентов кабел, сглобен отново в многофункционални корпуси, за да ги направи по-лесни за повторно включване и по-надеждни.

Arduino Mega 2650 е монтиран в капака с USB гнездо, достъпно за програмиране. Той управлява TFT сензорния екран, използван за показване на всички изходи и входове.

8 цифрови входа се предоставят чрез 2 x 8-посочна заглавна платка и тяхното състояние се показва на екрана, ако е избрана тази функция. Това е прост дисплей за включване/изключване, червено изключено, зелено включено. Мога да добавя осцилиране като бъдеща промяна.

4 входа за напрежение също са достъпни чрез заглавката на печатната платка и делител на напрежение, напрежението, показано на екрана. Всяко входно напрежение на предния панел, по отношение на общата маса, се предава към разделител на делител на напрежение 7 и след това се буферира от един от четирите оп-усилвателя в TL074, конфигуриран като токоизправител, само за да се избегнат аварии с отрицателни напрежения. Би било хубаво да добавите индикация за полярност на някакъв етап, но не и този път. Изходът от всеки операционен усилвател е към един от ADC входовете на Arduino.

Друг заглавие на печатна платка разкрива както серийни, така и I2C връзки. Това беше направено, за да позволи внедряване на серийна конзола за дисплей и основна функция за идентификация на I2C.

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

Arduino захранва резистентен масив на делител на напрежение, за да осигури функционалност на измервател на съпротивление. Изходът от това се буферира от оп-усилвател (половин TL072), преди да бъде прочетен от Arduino и съпротивлението изчислено. Целта на това не е точно измерване на съпротивлението, а бързо идентифициране на стойности от серия E24, макар че с известно калибриране може да се използва като основен измервателен уред. Неговата операция е да открие, когато съпротивление по -малко от 9M9 присъства на двете пружини, монтирани на предния панел, и след това избирателно да превключи 5V към всеки резистор в разделителната решетка, докато се измери стойността, най -близка до 2.5V, или избран последният резистор, a след това се прави изчисление и сравнение, за да се определи най -близката стойност на E24. 5V се захранва от цифрови изходи 3-10 на Arduino, които са конфигурирани като входове с висок импеданс между всяко измерване, за да се сведат до минимум грешките. Пиновете Arduino D3-10 бяха умишлено използвани като бъдещо допълнение може да бъде измервател на капацитет, използващ PWM възможността на тези изходи, което потенциално може да бъде само софтуерна промяна.

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

Стъпка 3: INA3221 вход за напрежение/ток

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

Това беше замислено като бързо решение за осигуряване на измервания на напрежение/ток в кутията, но се оказа, че както е приложено на платката, която купих, е предназначена за наблюдение на зареждането на батерията, така че трябва да бъде променена, за да осигури три независими измервания. Ако при изграждането на този проект можете да получите източник на INA3221 платка, която реализира този чип съгласно листа с данни, това не е необходимо.

Гледайки картината, трябва да се направят три разреза в следите на печатната платка, за да се разделят измервателните резистори. Подложките за тези три резистора също трябва да бъдат изрязани, за да ги отделят от останалата печатна платка. След това резисторите се свързват с подложките чрез запояване на допълнителни проводници като мостове. Документирам това, защото това е обща дъска и може би е единствената налична.

След това връзките към платката от предния панел се осъществяват чрез джъмперни проводници през измервателните резистори.

Захранването на платката се взема от щифтовете на Arduino 5V, както и земята, като I2C връзките отиват към електронната платка.

Стъпка 4: Екранът на дисплея

Екранът на дисплея
Екранът на дисплея

Това беше покупка от eBay и се предлага от много източници и представлява дисплей с ILI9486 захранване. Открих, че работи най -добре с библиотеките на MCUFRIEND на Дейвид Прентис, но трябва да се калибрира преди употреба, което просто изисква един от библиотечните примери, предоставени от Дейвид, да се изпълнява със свързан екран, следвайте инструкциите на екрана и запишете показаните параметри, вмъкване в кодовия файл Arduino_Workstation_v01, ако е различно.

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

Стъпка 5: Свържете го заедно

Свързвайки го заедно
Свързвайки го заедно
Свързвайки го заедно
Свързвайки го заедно
Свързвайки го заедно
Свързвайки го заедно

Arduino Mega се намира на LHS на капака, като неговите USB и захранващи портове са достъпни извън кутията. На RHS до Arduino има електроника, монтирана на матрична платка, а над нея е монтирана INA3221 платката в задната част на капака.

Също така в задната част на капака в LHS над Arduino има обща платка за заземяване, към която са свързани всички основания.

Колкото е възможно повече кабели бяха консолидирани заедно в многопътни съединители. Това прави свързването на веригите много по -лесно и надеждно, а взаимната поддръжка на съединителите в многопътно устройство осигурява подобрена устойчивост на разхлабване. Следва списък на тези консолидации.

Всички конектори бяха добавени по логичен начин, което дава най -голям достъп за осъществяване на връзки с моите непохватни пръсти, оставяйки връзките на предния панел до края, като крайните връзки на дисплея преминават през монтажния отвор, за да бъдат завършени последни. Екранът беше фиксиран на място с 3D отпечатана рамка.

Стъпка 6: Консолидирани потенциални клиенти

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

Стъпка 7: Arduino код

Кодът на Arduino
Кодът на Arduino
Кодът на Arduino
Кодът на Arduino

Този проект е базиран на Arduino Mega 2650 по простата причина, че исках много I/O портове, посветени на задачи в прост формат. Библиотеките за TFT сензорен екран по подразбиране поддържат Arduino Uno и трябва да бъдат редактирани, за да поддържат Mega. Редактирането на библиотеките се поддържа от оригиналния автор на TFT код, е просто и е описано в следващата стъпка.

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

Работна версия на кода е включена тук и ще бъде актуализирана, но най -новите актуализации ще бъдат на github.

Основната функция на кода се върти около дисплея, като всеки елемент на дисплея има запис в един масив, който съдържа типа на елемента, където на екрана се показва, цвят и допълнителни параметри като източник на вход. Екранна снимка на този масив с коментари е показана по -горе. Той също така съдържа поле за контрол дали да се показва на екрана или не. Чрез редактиране на този масив могат да се добавят нови функции или да се премахват функции. Процедурата „цикъл“на кода преминава през този масив непрекъснато, обработвайки всеки допустим елемент последователно и след това се повтаря. В момента има 6 различни елемента.

Елементи от менюто - те не показват информация, но при докосване изпълняват свързана подпрограма, идентифицирана в параметрите на елемента

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

Аналогови елементи - показват приблизително напрежение, измерено на съответния аналогов щифт. Първоначално са посочени четири.

Прецизни елементи - входен дисплей от външен прецизен модул за измерване на волт/ток. Има само три от тях, но може да се добави втори или трети модул.

Елемент на съпротивление - това е единичен елемент, показващ входа от измервателя на съпротивлението.

Докосване - това е единствената рутина, която винаги се изпълнява, за да се установи дали е докоснат екранът и след това да се вземе решение въз основа на докоснатото. т.е. ако има елемент от менюто, какво означава това да се показва след това.

Екранът има три режима на състояние, нормален, голям и цял екран и всички елементи променят работата си в зависимост от състоянието. Трите режима се избират от менюто чрез докосване на елемент и съответната опция от менюто.

Нормален режим - показва 8 цифрови входа, четири входа за аналогово напрежение, три прецизни елемента, елемент на съпротивление и четири елемента от менюто. Избирането на Нормално от менюто поставя дисплея в този режим.

Голям режим - избира се чрез докосване на някой от елементите на екрана, последвано от Голям. Когато е избран, този тип елемент е единственият избран тип и елементите от този тип се пренареждат, за да запълнят целия екран.

Режим на цял екран - избира се чрез докосване на някой от елементите на екрана, последвано от Цял екран. Когато е избран, този елемент е единственият показан елемент и се пренарежда, за да запълни целия екран, давайки максимална видимост на този един елемент.

За да добавите допълнителна функционалност, трябва да добавите следните подпрограми

рутина "draw", която се извиква, за да получи информацията за този елемент, извика съответната програма за актуализиране на екрана и регистрира върнатата информация за докосване

„логическа“рутина, която приема информацията от рутината за теглене и използва подходящите рутинни програми за драйвери на екрана, за да постави информацията на екрана и да върне правилната информация за докосване за изчертаната област на екрана

„setup“рутина, която се извиква като част от настройката на Arduino

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

Стъпка 8: Редактиране на библиотеките на Arduino

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

Дисплеят, който използвах, работи много добре с Arduino Uno и базовите библиотеки, написани за него, но работи бавно, когато се прехвърля директно към Arduino Mega. За правилно задвижване на дисплея трябва да се използва различен набор от пинове за данни и тази промяна на употреба трябва да се настрои в библиотеките. Това е проста промяна и е предназначена от автора. Снимките подчертават направените промени.

Двата файла се съхраняват в папката MCUFRIEND_kbv / utility като mcufriend_shield.h и mcufriend_special.h. Необходимите промени са първо в заглавния файл „shield“, за да се гарантира четенето на първия ред

#дефинирайте USE_SPECIAL

за да се гарантира, че "специалният" заглавен файл е зареден.

„Специалният“заглавен файл също трябва да бъде актуализиран, за да се гарантира, че редът

#дефинирайте USE_MEGA_8BIT_PROTOSHIELD

е без коментар.

Тези две промени означават, че кодът на дисплея за този дисплей ще работи с помощта на щифтове 20-29 на Arduino Mega вместо стандартните 3-10 на Uno.

Стъпка 9: Екранни снимки

Снимки на екрана
Снимки на екрана
Снимки на екрана
Снимки на екрана
Снимки на екрана
Снимки на екрана

Тук съм поставил екранни снимки, така че е лесно да се види какво трябва да прави конзолата. Следващият раздел се отнася до зареждането на кода в Arduino.

Първият екран показва „нормален“екран с менюта отгоре, измервания на напрежение на LHS, измерване на напрежение и ток на RHS и състояние на цифровия пин в долната част, червено за „невярно/ниско“, зелено за „вярно/високо“'. Накрая в центъра е измерването на съпротивлението.

Вторият екран показва цифровите входове, активирани в голям режим, всеки вход е ясно показан.

Третият екран показва входовете за напрежение в голям режим.

Стъпка 10: Зареждане на кода на Arduino

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

Ако библиотеките са били добре променени и Arduino Mega2650 е зададен като целева платформа в Arduino IDE, тогава кодът трябва да се компилира за първи път.

Библиотеките, които ще трябва да се заредят, са Adafruit GFX и библиотеки със сензорен екран, които трябва да бъдат достъпни от мениджъра на библиотеката на Arduino, копие на MCUFRIEND_kbv, което може да се изтегли от github, а за INA3221, библиотеката SwitchDocLabs SDL_Arduino_INA3221, която може да се изтегли бързо и от github търсене в google.

Стъпка 11: Последни щрихи

Последни щрихи
Последни щрихи
Последни щрихи
Последни щрихи
Последни щрихи
Последни щрихи
Последни щрихи
Последни щрихи

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

Очаквам това да бъде източник за няколко идеи, за да се направи нещо различно, по -добро или и двете. Ще добавя допълнителните функции, които споменах, и ще ги добавя, но ако това е от помощ, моля, вземете това, което искате и се насладете. Ако има явни проблеми, моля, уведомете ме.

В момента ще започна и ще го използвам, имам няколко проекта за работа!

Препоръчано: