Indholdsfortegnelse:

Arduino bærbart arbejdsbord del 3: 11 trin
Arduino bærbart arbejdsbord del 3: 11 trin

Video: Arduino bærbart arbejdsbord del 3: 11 trin

Video: Arduino bærbart arbejdsbord del 3: 11 trin
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Juli
Anonim
Arduino bærbart arbejdsbord del 3
Arduino bærbart arbejdsbord del 3
Arduino bærbart arbejdsbord del 3
Arduino bærbart arbejdsbord del 3

Hvis du har set del 1, 2 og 2B, så har der hidtil ikke været meget Arduino i dette projekt, men bare et par brædderledninger osv. Er ikke det, det handler om, og infrastrukturdelen skal bygges før hvile virker.

Dette er elektronikken og Arduino -koden. Den forrige 2B instruerbare viser strømforsyningsdetaljer.

Dette afsnit udarbejder det bærbare arbejdsbord med følgende funktioner

En TFT -berøringsskærm, der giver et display, drevet af en Arduino Mega til at levere følgende

  1. 8 digitale displays, slukket/tændt/oscillerende
  2. 4 spændingsdisplays
  3. 3 strøm-/spændingsdisplayer
  4. E24 modstandsmåler (fordi jeg ikke længere kan læse farvebåndene)

Der vil være andre ting, jeg vil tilføje, men dette var mit første mål. Arduino -koden viser også en seriel skærm, I2C -skærm, kapacitansmåler, digitale switche og oscilloskop, som jeg tilføjer med tiden. Jeg har heller ikke helt besluttet mig for, om det er værd at tilføje en 3V3 strømforsyning, en variabel strømforsyning eller overvågning af spændings-/strømforsyning. Indtil videre er dette blevet bygget ved hjælp af Mega, men jeg ser også på at flytte nogle af funktionerne til separate I2C -adgangskredsløb, enten dedikerede chips eller programmerede Atmel 328'er, som lettere vil rumme en anden controller.

Forbrugsvarer

5 x 16 -vejs hovedstik

5 x 8 -vejs dupont -fatninger, faktisk lavet af lange 40 -vejs single -in -line stikkontakter skåret til den nødvendige længde

1 x 3,5 ILI9486 TFT -berøringsskærm

1 x Arduino Mega 2650

Individuelle komponenter

I henhold til teksten er værdien af nogle af disse ikke helt fast, og hvis du går glip af en funktion, er det slet ikke nødvendigt:)

Digital indgang

16 x 10K modstande

Analog input

1 x TL074 en quad jfet opamp, dette er hvad jeg havde som reserve, noget lignende vil gøre:)

4 x 68K og 4 x 430k modstande bruges som spændingsdelere.

4 x 1N4001 eller lignende

Modstandsmåler

1 x TL072 en dobbelt jfet opamp, dette er hvad jeg havde som reserve, noget lignende vil gøre:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (Hvis disse værdier ændres, skal Arduino -koden opdateres)

Trin 1: Oversigt over elektronikken

Oversigt over elektronikken
Oversigt over elektronikken
Oversigt over elektronikken
Oversigt over elektronikken
Oversigt over elektronikken
Oversigt over elektronikken
Oversigt over elektronikken
Oversigt over elektronikken

Den grå konsol blev lavet af mig for 30 år siden og er stadig i regelmæssig brug, men tiderne er gået videre. Det giver to strømforsyninger til venstre, en central lydforstærker i midten med intern højttaler og en oscillator til venstre. I disse dage har de fleste af mine kredsløb kun brug for strømforsyningen og derfor kun den positive skinne. Der var brug for noget andet, samt mærkning, som jeg har levet uden, ja jeg klarede det.

Hovedkravene til projektboksens elektronik var at forsyne nyere kredsløb ved hjælp af Arduino eller Raspberry PI'er, så 5V var afgørende, ligesom USB -stik. Belyste switche fortæller mig, om strømmen er tændt eller ej, og ved test skal jeg regelmæssigt bygge små hjælpekredsløb for at give midlertidige statusvisninger. Jeg har en kasse med store meter, der bruger meget bænkplads, og mest af alt har jeg brug for et display, jeg let kan læse, når mit syn forværres, noget med store lyse karakterer. Så jeg har brug for digitale displays, spændingsmålere, strømmålere og i dette tilfælde lidt luksus i form af en modstandsmåler til hurtigt at identificere E24 -seriens modstande, alt inden for 15 cm fra projektets brødbræt og i et kompakt, bærbart etui.

Hovedforsyningen, der er beskrevet i en tidligere artikel, giver strøm til låget ved hjælp af et 40 -vejs båndkabel, der gør det muligt at tilslutte de to, mens låget er lukket. Dette giver skiftede 5v og 12V forsyninger til panelelektronikken og til levering af brødbrættet.

Alle strøm- og signalindgange leveres af 2x8way PCB-headerstik parallelt med et 8-vejs dupont-stik. Dette er sandsynligvis overkill, de fleste brødbrætter har strømskinner, men det var let at gøre.

På stikkontakterne er strømforsyningens hoved 0V -skinne fælles for alle forsyninger og stilles til rådighed. Over dette er en 5V strømforsyning, der er tændt for baseenheden, og over dette er to leverede +12V og -12V forsyninger, som i øjeblikket er fast, selvom jeg har en idé om at hacke forsyningen for at gøre den variabel og give en 3.3-20V variabel forsyning.

Trin 2: Elektronikken

Elektronikken
Elektronikken
Elektronikken
Elektronikken
Elektronikken
Elektronikken

Jeg har postet skærmbilleder af brødbrættets layout, hvordan kredsløbet ser ud, når det er bygget på matrixbræt, en skematisk som en PDF og de originale Fritzing -filer. Dette er ikke særlig kompleks elektronik og er der for at montere begrænsningsmodstande, bufferforstærkere og ventilatorforbindelser til Arduino -kortet. Men der er flere billeder for at vise de mange forbindelser lidt mere tydeligt. De fleste ledninger består af standardlængder af forkrompet dupont-båndkabel, der er samlet igen i flervejshuse for at gøre dem både lettere at tilslutte og mere pålidelige.

Arduino Mega 2650 er monteret i låget med USB -stikket til rådighed til programmering. Det driver TFT -berøringsskærmen, der bruges til at vise alle output og input.

8 digitale indgange stilles til rådighed via en 2 x 8-vejs PCB-header og deres status vises på skærmen, hvis denne funktion er valgt. Dette er et enkelt tænd/sluk display, rødt slukket, grønt tændt. Jeg kan tilføje oscillerende som en fremtidig ændring.

4 spændingsindgange gøres også tilgængelige via printkortets header og en spændingsdeler, spændingen vist på skærmen. Hver indgangsspænding på frontpanelet, med henvisning til den fælles jord, sendes til en divideret med 7 spændingsdeler og bufres derefter af en af fire op-ampere i en TL074 konfigureret som en ensretterforstærker, bare for at undgå uheld med negative spændinger. Det ville være rart at tilføje en polaritetsindikation på et tidspunkt, men ikke denne gang. Output fra hver op-amp er til en af ADC-indgangene på Arduino.

Et yderligere PCB -header viser både serielle og I2C -forbindelser. Dette blev gjort for at muliggøre implementering af en seriel displaykonsol og en grundlæggende I2C -identifikationsfunktion.

Spændings-/digitale indgange viser sig muligvis ikke at være nødvendige, så de kan omkonfigureres til at levere digitale koblingsudgange.

Arduino driver et modstandsarray på en spændingsdeler for at give en modstandsmålerfunktion. Outputtet af dette bufferes af en op-amp (en halv TL072), før det læses af Arduino og modstanden beregnes. Formålet med dette er ikke nøjagtig modstandsmåling, men at identificere E24 -seriens værdier hurtigt, selvom det med en vis kalibrering kan bruges som en grundmåler. Dens funktion er at registrere, når en modstand mindre end 9M9 er til stede på de to fjedre, der er monteret på frontpanelet, og derefter selektivt skifte 5V til hver modstand i divider -arrayet, indtil værdien tættest på 2,5V måles, eller den sidste modstand vælges, en beregning og sammenligning foretages derefter for at bestemme E24 -værdien tættest på. 5V kommer fra digitale udgange 3-10 på Arduino, som omkonfigureres som høje impedansindgange mellem hver måling for at minimere fejl. Arduino-ben D3-10 blev bevidst brugt som en fremtidig tilføjelse kan være en kapacitansmåler ved hjælp af PWM-kapaciteten for disse output, der muligvis kun kan være en softwareændring.

Et modificeret INA3221 -kort giver yderligere spændings- og strømmålinger via I2C -interface med input fra frontpanelet. Alt er kablet ved hjælp af jumperkabler, så omfordelingen af funktioner bliver let i fremtiden.

Trin 3: INA3221 Spænding/strømindgang

INA3221 Spænding/strøm Indgang
INA3221 Spænding/strøm Indgang

Dette var tænkt som en hurtig løsning til at levere spændings-/strømmålinger i kassen, men det viste sig, at det som implementeret på tavlen, jeg købte, var beregnet til at overvåge batteriopladning, så det skulle ændres for at give tre uafhængige målinger. Hvis du kan bygge et INA3221 -kort, der implementerer denne chip i henhold til databladet, når du bygger dette projekt, er dette ikke nødvendigt.

Når man ser på billedet, skal der foretages tre udskæringer i PCB -sporene for at adskille målemodstandene. Puderne til disse tre modstande skal også skæres for at adskille dem fra resten af printkortet. Modstandene forbindes derefter til puderne ved at lodde yderligere ledninger som broer. Jeg dokumenterer dette, fordi dette er et fælles bord og måske er det eneste tilgængelige.

Forbindelser til tavlen fra frontpanelet foretages derefter via jumperledninger på tværs af målemodstandene.

Strømmen til kortet tages fra Arduino 5V benene som jorden, hvor I2C -forbindelserne går til elektronik -printet.

Trin 4: Displayskærmen

Displayskærmen
Displayskærmen

Dette var et eBay -køb og tilgængeligt fra masser af kilder og er et ILI9486 -drevet display. Jeg fandt ud af, at det kørte bedst med MCUFRIEND -bibliotekerne i David Prentice, men det skal kalibreres før brug, hvilket bare krævede, at et af bibliotekets eksempler fra David blev kørt med skærmen tilsluttet, følg instruktionerne på skærmen og skriv ned de viste parametre og indsættes i Arduino_Workstation_v01 -kodefilen, hvis den er anderledes.

For dette projekt er en berøringsskærm vigtig, den drejer sig om ikke at have dedikerede switche og muligheden for bare at tilføje menuer og funktioner i fremtiden uden masser af genopkobling.

Trin 5: Tilslut det sammen

Forbind det sammen
Forbind det sammen
Forbind det sammen
Forbind det sammen
Forbind det sammen
Forbind det sammen

Arduino Mega er placeret på LHS på låget, med dens USB- og strømporte tilgængelige uden for kabinettet. På RHS ved siden af Arduino er elektronikken monteret på matrixkort og over dette er monteret INA3221 -kortet på bagsiden af låget.

På bagsiden af låget ved LHS over Arduino er der også et fælles jordforbindelseskort, som alle grunde er forbundet med.

Så mange kundeemner som muligt blev samlet til flervejsstik. Dette gør tilslutning af kredsløbene meget lettere og pålidelig, og den gensidige understøttelse af stik i et flervejshus giver forbedret modstand mod at løsne sig. En liste over disse konsolideringer følger.

Alle stik blev tilføjet på en logisk måde, hvilket gav størst adgang til at oprette forbindelser med mine klodsede fingre, og forlade frontpanelforbindelserne til slutningen, hvor de sidste skærmforbindelser blev ført gennem monteringshullet for at blive afsluttet sidst. Skærmen blev fastgjort på plads med en 3D -printet ramme.

Trin 6: Konsoliderede kundeemner

Konsoliderede kundeemner
Konsoliderede kundeemner
  1. Spændings- og modstandsindgange til Arduino ADC -portene, fem ledninger 20 cm med individuelle hanstik i den ene ende konsolideret til et seksvejshus med et mellemrum for at rumme hullet i Arduino -overskrifterne.
  2. 4 -vejs 10 cm kabel fra et fire -vejs hus til to 2 -vejs huse for at forbinde spændingsstifterne på frontpanelet til printkortet.
  3. 8-vejs 10 cm kabel fra en 2x4-vejs han-header til en 8-vejs hun-header
  4. 4 -vejs 10 cm kabel fra 4 -vejs hun -hus til 4 -vejs hun -hus for at forbinde Serial og I2C til frontpanelet
  5. 4 -vejs 10 cm kabel fra 4 -vejs hus til fire enkeltstik til tilslutning af INA3221 til frontpanel
  6. 4-vejs 20cm kabel til at forbinde fire-vejs hunhus til fire-vejs hanhus for at tage Serial og I2C fra Arduino til printkortets ventilator-out.
  7. 8 -vejs 10 cm kabel fra 8 -vejs hunhus til 8 -vejs hun -hus til at tage digitale indgange fra frontpanel til printkort.
  8. 8 -vejs 10 cm kabel til at tage 8 -vejs hunhus til et 3 -vejs hanhus og et 5 -vejs hanhus til at forbinde modstandsdeleren til printkortet. De to huse bruges til at rumme det ikke-standardiserede hul i overskrifterne på Arduino-kortet.
  9. 2 -vejs 20 cm kabel til at tage 2 -vejs hunhus til to enkelte hanstik til INA3221 -strømforsyningen.
  10. 2-vejs 10 cm kabel til at tage 2-vejs hunhus til to enkelt hunhuse for at forbinde den tredje INA3221 monitorforbindelse til frontpanelet.
  11. 2-vejs 10 cm kabel til at tage 2-vejs hunhus til 2-vejs hunhus for at forbinde INA3221 til I2C fanout-forbindelser.

Trin 7: Arduino -kode

Arduino kode
Arduino kode
Arduino kode
Arduino kode

Dette projekt er baseret på Arduino Mega 2650 af den enkle grund, at jeg ville have mange I/O -porte dedikeret til opgaver i et simpelt format. Bibliotekerne til TFT -berøringsskærmen er standard for at understøtte Arduino Uno og skal redigeres for at understøtte Mega. Redigering af bibliotekerne understøttes af den originale TFT -kodeforfatter, er enkel og beskrevet i det næste trin.

Brug af en berøringsskærm er grundlaget for denne del af projektet, men da skærmen, som ender med at bruge, kan være anderledes end den, jeg brugte, placerer koden kun hardwarespecifikke funktioner i separate rutiner, så alle nødvendige ændringer kan identificeres.

En fungerende version af koden er inkluderet her og vil blive opdateret, men de seneste opdateringer vil være på github.

Kodens hovedfunktion drejer sig om displayet, hvor hvert element på displayet har en post i et enkelt array, der indeholder elementtypen, hvor den på skærmen viser, farve og yderligere parametre, såsom inputkilde. Et skærmbillede af dette array med kommentarer er vist ovenfor. Det har også et felt til at styre, om det skal vises på skærmen eller ej. Ved at redigere dette array kan nye funktioner tilføjes, eller funktioner fjernes. Kodens 'loop' -rutine kører løbende gennem dette array, behandler hvert kvalificerede element sekventielt og gentages derefter. Der er i øjeblikket 6 forskellige elementer.

Menuelementer - disse viser ikke oplysninger, men når de berøres, udføres en tilknyttet underprogram, der er identificeret i elementparametrene

Digitale elementer - vises som en boks på skærmen som enten rød eller grøn afhængigt af status for den tilhørende digitale indgangsstift. Eksempelkonsollen er kablet til 8 digitale ben, men denne kan øges eller reduceres efter ønske.

Analoge elementer - viser en omtrentlig spænding målt på den tilhørende analoge pin. Fire er oprindeligt specificeret.

Præcisionselementer - displayindgang fra et eksternt præcisions volt/strømmålermodul. Der er kun tre af disse, men et andet eller tredje modul kan tilføjes.

Modstandselement - dette er et enkelt element, der viser input fra modstandsmåleren.

Touch - dette er den eneste rutine, der altid udføres for at opdage, om skærmen er blevet rørt og derefter træffe en beslutning baseret på, hvad der er blevet rørt. dvs. hvis et menupunkt er, hvad indebærer det så at blive vist derefter.

Skærmen har tre statusfunktioner, normal, stor og fuld skærm, og alle elementer ændrer deres funktion afhængigt af status. De tre tilstande kan vælges fra menuen ved at trykke på et element og den tilhørende menuindstilling.

Normal tilstand - viser 8 digitale indgange, fire analoge spændingsindgange, tre præcisionselementer, modstandselementet og fire menuelementer. Valg af Normal i menuen sætter displayet i denne tilstand.

Stor tilstand - vælges ved at berøre et af elementerne på skærmen efterfulgt af Stor. Når den er valgt, er denne elementtype den eneste valgte type, og elementerne af den type omarrangeres for at fylde hele skærmen.

Fuldskærmstilstand - vælges ved at berøre et af elementerne på skærmen efterfulgt af Fuld skærm. Når det er valgt, er det element det eneste element, der vises og omarrangeres for at fylde hele skærmen, hvilket giver maksimal synlighed af det ene element.

For at tilføje yderligere funktionalitet skal følgende rutiner tilføjes

'tegne' rutine, der kaldes for at få informationen om det element, kalde den relevante skærmopdateringsrutine og registrere de returnerede berøringsoplysninger

'logik' rutine, der accepterer oplysningerne fra tegningsrutinen og bruger de relevante skærmdriverrutiner til at lægge oplysningerne på skærmen og returnere de korrekte berøringsoplysninger for det område, der er trukket på skærmen

'setup' -rutine, der kaldes som en del af Arduino -opsætningen

Andre rutiner kan inkluderes, men der bør ikke være nogen indbyrdes afhængighed mellem elementkode, hvis et element ikke er blevet aktiveret, bør it -koden ikke udføres, og den simple multifunktionelle struktur bevarer sin integritet.

Trin 8: Redigering af Arduino Libraries

Redigering af Arduino Libraries
Redigering af Arduino Libraries
Redigering af Arduino Libraries
Redigering af Arduino Libraries

Det display, jeg brugte, fungerer meget godt med Arduino Uno og basisbibliotekerne, der er skrevet til det, men fungerer langsomt, når det direkte overføres til Arduino Mega. For at køre displayet korrekt skal der bruges et andet sæt datastifter, og denne ændring af brug skal konfigureres på bibliotekerne. Dette er en simpel ændring og var tiltænkt af forfatteren. Billederne fremhæver de foretagne ændringer.

De to filer gemmes i mappen MCUFRIEND_kbv / utility som mcufriend_shield.h og mcufriend_special.h. De nødvendige ændringer er først i 'shield' header -filen for at sikre, at den første linje læser

#define BRUG_SPECIAL

for at sikre, at den 'specielle' headerfil er indlæst.

Den 'særlige' headerfil skal også opdateres for at sikre, at linjen

#define USE_MEGA_8BIT_PROTOSHIELD

er ukommenteret.

Disse to ændringer betyder, at skærmkoden til denne skærm fungerer ved hjælp af ben 20-29 på Arduino Mega i stedet for standard 3-10 på Uno.

Trin 9: Skærmbilleder

Skærmbilleder
Skærmbilleder
Skærmbilleder
Skærmbilleder
Skærmbilleder
Skærmbilleder

Jeg har lagt skærmbilleder her, så det er let at se, hvad konsollen skal gøre. Det næste afsnit refererer til indlæsning af koden i Arduino.

Den første skærm viser den 'normale' skærm med menuer øverst, spændingsmålinger på LHS, spændings- og strømmålinger på RHS og digital pin -status langs bunden, rød for 'falsk/lav', grøn for 'sand/høj '. Endelig i midten er modstandsmåling.

Den anden skærm viser de digitale indgange, der er aktiveret i stor tilstand, og hver indgang vises tydeligt.

Den tredje skærm viser spændingsindgange i stor tilstand.

Trin 10: Indlæsning af Arduino -koden

Koden er vedhæftet, men som tidligere nævnt vil der blive lagt op til github på et tidspunkt og placeringen tilføjet her. Den vigtigste kildekodefil er Arduino_Workbench_v01.ino, og de andre rutiner skal levere de forskellige funktioner.

Hvis bibliotekerne er blevet ændret ok, og Arduino Mega2650 er blevet angivet som målplatform i Arduino IDE, skal koden kompilere første gang.

De biblioteker, der skal indlæses, er Adafruit GFX- og Touchscreen -biblioteker, som skal være tilgængelige fra Arduino -bibliotekschefen, en kopi af MCUFRIEND_kbv, der kan downloades fra github og for INA3221, SwitchDocLabs -biblioteket SDL_Arduino_INA3221 kan også downloades fra github, begge kommer hurtigt op en google søgning.

Trin 11: Sidste hånd

Sidste hånd
Sidste hånd
Sidste hånd
Sidste hånd
Sidste hånd
Sidste hånd
Sidste hånd
Sidste hånd

Ideen er at bruge det til projektarbejde, så der er lavet et aftageligt panel bestående af monteringsbolte til Arduino -brædder og et brødbræt, det hele fastgjort til låget med velcro for at gøre dem aftagelige, og så forskellige brædder kan laves til at indeholde projekter og at boksen kan genbruges til forskellige projekter, der kører samtidigt.

Jeg forventer, at dette vil være en kilde til et par ideer til at lave noget anderledes, bedre eller begge dele. Jeg tilføjer de ekstra funktioner, jeg har nævnt, og tilføjer dem, men hvis dette er til nogen hjælp, så tag det, du vil have, og nyd det. Hvis der er nogen klare problemer, så lad mig det vide.

Lige nu vil jeg komme i gang og bruge det, jeg har et par projekter at arbejde med!

Anbefalede: