Innholdsfortegnelse:

Arduino bærbar arbeidsbenk del 3: 11 trinn
Arduino bærbar arbeidsbenk del 3: 11 trinn

Video: Arduino bærbar arbeidsbenk del 3: 11 trinn

Video: Arduino bærbar arbeidsbenk del 3: 11 trinn
Video: Обратноходовой блок питания UC3845. Своими руками. Проектируем блок питания ноутбука! 2024, Juli
Anonim
Arduino bærbar arbeidsbenk del 3
Arduino bærbar arbeidsbenk del 3
Arduino bærbar arbeidsbenk del 3
Arduino bærbar arbeidsbenk del 3

Hvis du har sett del 1, 2 og 2B, så har det så langt ikke vært mye Arduino i dette prosjektet, men bare noen få kortledninger osv. Er ikke det dette handler om, og infrastrukturdelen må bygges før resten fungerer.

Dette er elektronikken og Arduino -koden. Den forrige 2B -instruksjonen viser detaljer om strømforsyningen.

Denne delen passer til den bærbare arbeidsbenken med følgende funksjoner

En TFT -berøringsskjerm som gir en skjerm, drevet av en Arduino Mega for å gi følgende

  1. 8 digitale skjermer, av/på/oscillerende
  2. 4 spenningsdisplayer
  3. 3 strøm-/spenningsdisplayer
  4. E24 motstandsmåler (fordi jeg ikke lenger kan lese fargebåndene)

Det vil være andre ting jeg vil legge til, men dette var mitt første mål. Arduino -koden viser også en seriell skjerm, I2C -skjerm, kapasitansmåler, digitale brytere og oscilloskop som jeg legger til etter hvert som tiden går. Jeg har heller ikke helt bestemt meg om det er verdt å legge til en 3V3 strømforsyning, en variabel strømforsyning eller spennings/strømovervåking. Så langt har dette blitt bygget ved hjelp av Mega, men jeg ser også på å flytte noen av funksjonene til separate I2C -tilgangskretser, enten dedikerte sjetonger eller programmerte Atmel 328 -er som lettere vil imøtekomme en annen kontroller.

Rekvisita

5 x 16 -veis toppstikkontakter

5 x 8 -veis dupont -kontakter, faktisk laget av lange 40 -veis single -in -line stikkontakter kuttet opp til ønsket lengde

1 x 3,5 ILI9486 TFT berøringsskjerm

1 x Arduino Mega 2650

Individuelle komponenter

I henhold til teksten er verdien av noen av disse ikke helt løst, og hvis du går glipp av en funksjon vil du ikke være nødvendig i det hele tatt:)

Digital inngang

16 x 10K motstander

Analog inngang

1 x TL074 en quad jfet opamp, dette er hva jeg hadde som reserve, noe lignende vil gjøre:)

4 x 68K og 4 x 430k motstander som brukes som spenningsdelere.

4 x 1N4001 eller lignende

Motstandsmåler

1 x TL072 en dobbel jfet opamp, dette er hva jeg hadde som reserve, noe lignende vil gjøre:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (Hvis disse verdiene endres må Arduino -koden oppdateres)

Trinn 1: Oversikt over elektronikken

Oversikt over elektronikken
Oversikt over elektronikken
Oversikt over elektronikken
Oversikt over elektronikken
Oversikt over elektronikken
Oversikt over elektronikken
Oversikt over elektronikken
Oversikt over elektronikken

Den grå konsollen ble laget av meg for 30 år siden og er fortsatt i vanlig bruk, men tidene har gått videre. Den gir to strømforsyninger til venstre, en sentral lydforsterker i midten, med intern høyttaler og en oscillator til venstre. I disse dager trenger de fleste kretsene mine bare strømforsyningen, og det er bare den positive skinnen. Noe annet var nødvendig, så vel som merking som jeg har levd uten, vel, jeg klarte det.

Hovedkravene til prosjektbokselektronikken var å drive nyere kretser ved hjelp av Arduino eller Raspberry PI, så 5V var viktig, det samme var USB -kontakter. Belyste brytere forteller meg om strømmen er på eller ikke, og når jeg tester må jeg regelmessig bygge små hjelpekretser for å gi midlertidige statusvisninger. Jeg har en eske med store målere som bruker mye benkplass, og mest av alt trenger jeg en skjerm jeg lett kan lese når synet blir dårligere, noe med store lyse karakterer. Så jeg trenger digitale skjermer, spenningsmåler, strømmålere, og i dette tilfellet litt luksus i form av en motstandsmåler for raskt å identifisere motstander i E24 -serien, alt innenfor 15 cm fra prosjektets brødbrett og i et kompakt, bærbart etui.

Hoved -strømforsyningen, beskrevet i en tidligere artikkel, gir lokket strøm med en 40 -veis båndkabel som gjør at de to kan kobles til mens lokket er lukket. Dette gir byttet 5v og 12V rekvisita for panelelektronikken og for å levere brødbrettet.

Alle strøm- og signalinnganger leveres av 2x8way PCB-hodestikkontakter parallelt med en 8-veis dupont-kontakt. Dette er sannsynligvis overkill, de fleste brødbrett har strømskinner, men det var lett å gjøre.

På stikkontakter er hoved 0V -skinnen på strømforsyningen felles for alle forsyninger og gjøres tilgjengelig. Over dette er en 5V strømforsyning, slått på baseenheten, og over dette er to +12V og -12V forsyninger, som for øyeblikket er fikset, selv om jeg har en ide om å hacke strømforsyningen for å gjøre den variabel og gi en 3,3-20V variabel forsyning.

Trinn 2: Elektronikken

Elektronikken
Elektronikken
Elektronikken
Elektronikken
Elektronikken
Elektronikken

Jeg har lagt ut skjermutskrifter av brødbrettoppsettet, hvordan kretsen ser ut når den er bygd på matrisetavle, en skjematisk som en PDF og de originale Fritzing -filene. Dette er ikke spesielt kompleks elektronikk og er der for å montere begrensningsmotstander, bufferforsterkere og vifte ut tilkoblinger for Arduino -kortet. Men det er flere bilder for å vise de mange sammenhengene litt tydeligere. De fleste ledningene består av standard lengder på forhåndskryddet dupont-båndkabel som er satt sammen i flerveishus for å gjøre dem lettere å koble til og mer pålitelige.

Arduino Mega 2650 er montert i lokket med USB -kontakten tilgjengelig for programmering. Den driver TFT -berøringsskjermen som brukes til å vise alle utganger og innganger.

8 digitale innganger gjøres tilgjengelige via en 2 x 8-veis PCB-topptekst og deres status vises på skjermen hvis den funksjonen er valgt. Dette er en enkel av/på -skjerm, rød av, grønn på. Jeg kan legge til oscillerende som en fremtidig endring.

4 spenningsinnganger er også gjort tilgjengelig via kretskortoverskriften, og en spenningsdeler, spenningen som vises på skjermen. Hver inngangsspenning på frontpanelet, med referanse til felles grunn, sendes til en divider med 7 spenningsdeler og bufres deretter av en av fire op-ampere i en TL074 konfigurert som en likeretterende forsterker, bare for å unngå ulykker med negative spenninger. Det ville være fint å legge til en polaritetsindikasjon på et eller annet tidspunkt, men ikke denne gangen. Utgang fra hver op-amp er til en av ADC-inngangene til Arduino.

En ytterligere PCB -overskrift avslører både serielle og I2C -tilkoblinger. Dette ble gjort for å tillate implementering av en seriell skjermkonsoll og en grunnleggende I2C -identifikasjonsfunksjon.

Spenning/digitale innganger kan vise seg å være ikke alle nødvendige, så de kan konfigureres på nytt for å gi digitale koblingsutganger.

Arduino driver et motstandsarray på en spenningsdeler for å gi en motstandsmålerfunksjonalitet. Utgangen fra dette blir bufret av en op-amp (en halv TL072) før den blir lest av Arduino og motstanden beregnet. Formålet med dette er ikke nøyaktig motstandsmåling, men å identifisere E24 -seriens verdier raskt, men med en viss kalibrering kan den brukes som en grunnmåler. Driften er å oppdage når en motstand mindre enn 9M9 er tilstede på de to fjærene som er montert på frontpanelet, og deretter selektivt bytte 5V til hver motstand i skillelinjen til verdien nærmest 2,5V måles eller den siste motstanden velges, en beregning og sammenligning gjøres deretter for å bestemme E24 -verdien som er nærmest. 5V er hentet fra digitale utganger 3-10 på Arduino som er omkonfigurert som høye impedansinnganger mellom hver måling for å minimere feil. Arduino-pinner D3-10 ble bevisst brukt som et fremtidig tillegg, kan være en kapasitansmåler som bruker PWM-funksjonen til disse utgangene, noe som potensielt bare kan være en programvareendring.

Et modifisert INA3221 -kort gir ytterligere spennings- og strømmålinger via I2C -grensesnittet med innganger fra frontpanelet. Alt er koblet til med jumperkabler, slik at tildeling av funksjoner blir lett i fremtiden.

Trinn 3: INA3221 Spenning/strøminngang

INA3221 Spenning/strøm Inngang
INA3221 Spenning/strøm Inngang

Dette var ment som en hurtig løsning for å gi spennings/strøm målinger i esken, men det viste seg at det ble implementert på tavlen jeg kjøpte det var ment å overvåke batterilading, så det måtte modifiseres for å gi tre uavhengige målinger. Hvis du når du bygger dette prosjektet kan skaffe et INA3221 -kort som implementerer denne brikken i henhold til databladet, er dette ikke nødvendig.

Når man ser på bildet, må det kuttes tre kutt i PCB -sporene for å skille måelmotstandene. Putene til disse tre motstandene må også kuttes for å skille dem fra resten av kretskortet. Motstandene blir deretter forbundet med putene ved å lodde flere ledninger som broer. Jeg dokumenterer dette fordi dette er et vanlig bord og kan være det eneste som er tilgjengelig.

Tilkoblinger til brettet fra frontpanelet gjøres deretter via jumperledninger over målebestandighetene.

Strømmen til brettet er hentet fra Arduino 5V -pinnene som bakken, med I2C -tilkoblingene til elektronikk -kretskortet.

Trinn 4: Skjermbildet

Skjermbildet
Skjermbildet

Dette var et eBay -kjøp og tilgjengelig fra mange kilder, og er en ILI9486 -drevet skjerm. Jeg fant ut at det kjørte best med MCUFRIEND -bibliotekene til David Prentice, men det må kalibreres før bruk, noe som bare krevde at et av bibliotekeksemplene fra David ble kjørt med skjermen tilkoblet, følg instruksjonene på skjermen og skriv ned parameterne som vises, og settes inn i Arduino_Workstation_v01 -kodefilen hvis den er annerledes.

For dette prosjektet er en berøringsskjerm viktig, det dreier seg om å ikke ha dedikerte brytere og muligheten til å bare legge til menyer og funksjoner i fremtiden uten mye omkobling.

Trinn 5: Koble det sammen

Koble det sammen
Koble det sammen
Koble det sammen
Koble det sammen
Koble det sammen
Koble det sammen

Arduino Mega er plassert på LHS på lokket, med USB- og strømport tilgjengelig fra utsiden av saken. På RHS ved siden av Arduino er elektronikken montert på matrisekortet og over dette er INA3221 -kortet montert på baksiden av lokket.

På baksiden av lokket på LHS over Arduino er det også et felles jordforbindelseskort som alle grunner er koblet til.

Så mange kundeemner som mulig ble samlet til flerveiskontakter. Dette gjør det enklere og mer pålitelig å koble kretsene sammen, og gjensidig støtte av kontakter i et flerveishus gir forbedret motstand mot å løsne. En liste over disse konsolideringene følger.

Alle kontaktene ble lagt til på en logisk måte, noe som gir størst tilgang for å lage tilkoblinger med mine klønete fingre, og la frontpaneltilkoblingene stå til slutten, med de siste skjermforbindelsene som passeres gjennom monteringshullet som skal fullføres sist. Skjermen ble festet på plass med en 3D -trykt ramme.

Trinn 6: Konsoliderte kundeemner

Konsoliderte kundeemner
Konsoliderte kundeemner
  1. Spennings- og motstandsinnganger til Arduino ADC -portene, fem ledninger 20 cm med individuelle hannkontakter i den ene enden konsolidert i et seksveis hus med et mellomrom for å imøtekomme gapet i Arduino -hodene.
  2. 4 -veis 10 cm kabel fra et fireveis hus til to 2 -veis hus for å koble spenningspinnene på frontpanelet til kretskortet.
  3. 8-veis 10 cm kabel fra en 2x4-veis mannlig overskrift til en 8-veis kvinnelig overskrift
  4. 4 -veis 10 cm kabel fra 4 -veis hunhus til 4 -veis hunnhus for å koble Serial og I2C til frontpanelet
  5. 4 -veis 10 cm kabel fra 4 -veis hus til fire enkeltkontakter for å koble INA3221 til frontpanelet
  6. 4 veis 20 cm kabel for å koble fireveis hunnhus til fireveis mannlig hus for å ta Serial og I2C fra Arduino til kretskortets vifte.
  7. 8 -veis 10 cm kabel fra 8 -veis hunnhus til 8 -veis hunnhus for å ta digitale innganger fra frontpanel til kretskort.
  8. 8 -veis 10 cm kabel for å ta 8 -veis hunnhus til en 3 -veis hannhus og en 5 -veis hannhus for å koble motstandsdeleren til kretskortet. De to husene brukes til å imøtekomme det ikke-standardiserte gapet i hodene på Arduino-brettet.
  9. 2 -veis 20 cm kabel for å ta 2 -veis hunhus til to enkle mannlige kontakter for INA3221 -strømforsyningen.
  10. 2-veis 10 cm kabel for å ta 2-veis hunhus til to enkle hunnhus for å koble den tredje INA3221-skjermtilkoblingen til frontpanelet.
  11. 2-veis 10 cm kabel for å ta 2-veis hunnhus til 2-veis hunnhus for å koble INA3221 til I2C-utkoblingene.

Trinn 7: Arduino -kode

Arduino -koden
Arduino -koden
Arduino -koden
Arduino -koden

Dette prosjektet er basert rundt Arduino Mega 2650 av den enkle grunnen at jeg ønsket mange I/O -porter dedikert til oppgaver i et enkelt format. Bibliotekene for TFT -berøringsskjermen er standard for å støtte Arduino Uno og må redigeres for å støtte Mega. Redigering av bibliotekene støttes av den originale TFT -kodeforfatteren, er enkel og beskrevet i neste trinn.

Å bruke en berøringsskjerm er grunnlaget for denne delen av prosjektet, men ettersom skjermen noen ender med kan være annerledes enn den jeg brukte, plasserer koden bare maskinvarespesifikke funksjoner i separate rutiner, slik at alle nødvendige endringer kan identifiseres.

En fungerende versjon av koden er inkludert her og vil bli oppdatert, men de siste oppdateringene vil være på github.

Hovedfunksjonen til koden dreier seg rundt displayet, hvert element på displayet har en oppføring i en enkelt matrise som inneholder elementtypen, hvor det vises på skjermen, farge og ytterligere parametere som inngangskilde. Et skjermbilde av denne matrisen med kommentarer er vist ovenfor. Den har også et felt for å kontrollere om det skal vises på skjermen eller ikke. Ved å redigere denne matrisen kan nye funksjoner legges til eller funksjoner fjernes. Kodens "loop" -rutine går kontinuerlig gjennom denne matrisen, behandler hvert kvalifiserte element sekvensielt og deretter gjentas. Det er for tiden 6 forskjellige elementer.

Menyelementer - disse viser ikke informasjon, men når den berøres, utfører du en tilknyttet underprogram som er identifisert i elementparametrene

Digitale elementer - vises som en boks på skjermen som enten rød eller grønn, avhengig av statusen til den tilhørende digitale inngangspinnen. Eksempelkonsollen er koblet til 8 digitale pinner, men denne kan økes eller reduseres etter ønske.

Analoge elementer - viser en omtrentlig spenning målt på den tilhørende analoge pinnen. Fire er opprinnelig spesifisert.

Presisjonselementer - displayinngang fra en ekstern presisjonsspenning/strømmålermodul. Det er bare tre av disse, men en andre eller tredje modul kan legges til.

Motstandselement - dette er et enkelt element som viser inngangen fra motstandsmåleren.

Berøring - dette er den eneste rutinen som alltid utføres for å oppdage om skjermen har blitt berørt og deretter ta en avgjørelse basert på det som har blitt berørt. dvs. hvis et menyelement, hva innebærer det å bli vist neste.

Skjermen har tre statusmoduser, normal, stor og fullskjerm, og alle elementene endrer driften avhengig av statusen. De tre modusene kan velges fra menyen ved å trykke på et element og det tilhørende menyalternativet.

Normal modus - viser 8 digitale innganger, fire analoge spenningsinnganger, tre presisjonselementer, motstandselementet og fire menyelementer. Hvis du velger Normal fra menyen, settes displayet i denne modusen.

Stor modus - velges ved å berøre et av elementene på skjermen etterfulgt av Stor. Når den er valgt, er den elementtypen den eneste typen som er valgt, og elementene av den typen omorganiseres for å fylle hele skjermen.

Fullskjermsmodus - velges ved å berøre et av elementene på skjermen etterfulgt av Fullskjerm. Når det er valgt, er det elementet det eneste elementet som vises og omorganiseres for å fylle hele skjermen og gir maksimal synlighet for det ene elementet.

For å legge til ekstra funksjonalitet må følgende rutiner legges til

"tegne" -rutine som kalles for å få informasjonen for det elementet, ring den riktige skjermoppdateringsrutinen og registrer den returnerte berøringsinformasjonen

"logisk" rutine som godtar informasjonen fra trekningsrutinen og bruker de riktige skjermdriverrutinene for å sette informasjonen på skjermen og returnere riktig berøringsinformasjon for området på skjermen som er tegnet

"oppsett" -rutine som kalles som en del av Arduino -oppsettet

Andre rutiner kan inkluderes, men det bør ikke være noen gjensidig avhengighet mellom elementkoden, hvis et element ikke er blitt aktivert, bør ikke IT -koden utføres, og den enkle multifunksjonelle strukturen beholder sin integritet.

Trinn 8: Redigering av Arduino Libraries

Redigering av Arduino Libraries
Redigering av Arduino Libraries
Redigering av Arduino Libraries
Redigering av Arduino Libraries

Skjermen jeg brukte fungerer veldig bra med Arduino Uno og basebibliotekene som er skrevet for den, men fungerer sakte når den overføres direkte til Arduino Mega. For å kjøre displayet riktig må et annet sett med datapinner brukes, og denne endringen i bruken må konfigureres i bibliotekene. Dette er en enkel endring og var ment av forfatteren. Bildene markerer endringene som er gjort.

De to filene er lagret i MCUFRIEND_kbv / utility -mappen som mcufriend_shield.h og mcufriend_special.h. Endringene som kreves er først i skjoldoverskriften for å sikre at den første linjen leses

#define BRUK_SPESIAL

for å sikre at den "spesielle" toppfilen er lastet.

Den "spesielle" overskriftsfilen må også oppdateres for å sikre at linjen

#define USE_MEGA_8BIT_PROTOSHIELD

er ukommentert.

Disse to endringene betyr at visningskoden for denne skjermen vil fungere med pinne 20-29 på Arduino Mega i stedet for standard 3-10 på Uno.

Trinn 9: Skjermbilder

Skjermbilder
Skjermbilder
Skjermbilder
Skjermbilder
Skjermbilder
Skjermbilder

Jeg har lagt skjermbilder her, så det er lett å se hva konsollen skal gjøre. Den neste delen refererer til lasting av koden i Arduino.

Den første skjermen viser den 'normale' skjermen med menyer over toppen, spenningsmålinger på LHS, spennings- og strømmålinger på RHS og digital pin -status langs bunnen, rød for 'falsk/lav', grønn for 'sann/høy' '. Til slutt i sentrum er motstandsmålingen.

Den andre skjermen viser de digitale inngangene som er aktivert i stormodus, hver inngang vises tydelig.

Den tredje skjermen viser spenningsinngangene i stormodus.

Trinn 10: Laster inn Arduino -koden

Koden er vedlagt, men som nevnt tidligere vil det bli lagt til github på et tidspunkt og plasseringen lagt til her. Den viktigste kildekodefilen er Arduino_Workbench_v01.ino, og de andre rutinene skal gi de forskjellige funksjonene.

Hvis bibliotekene har blitt endret ok og Arduino Mega2650 har blitt angitt som målplattform i Arduino IDE, bør koden kompilere første gang.

Bibliotekene som må lastes inn er Adafruit GFX og Touchscreen -biblioteker som skal være tilgjengelige fra Arduino biblioteksjef, en kopi av MCUFRIEND_kbv som kan lastes ned fra github og for INA3221, SwitchDocLabs bibliotek SDL_Arduino_INA3221 kan også lastes ned fra github, begge kommer raskt opp et google -søk.

Trinn 11: Siste berøringer

Siste berøringer
Siste berøringer
Siste berøringer
Siste berøringer
Siste berøringer
Siste berøringer
Siste berøringer
Siste berøringer

Tanken er å bruke den til prosjektarbeid, så det er laget et avtagbart panel som består av festebolter for Arduino -plater og et brødbrett, hele festet til lokket med borrelås for å gjøre dem avtagbare og slik at forskjellige brett kan lages for å inneholde prosjekter og at esken kan gjenbrukes for forskjellige prosjekter som kjøres samtidig.

Jeg forventer at dette vil være en kilde til noen ideer for å lage noe annerledes, bedre eller begge deler. Jeg vil legge til de ekstra funksjonene jeg har nevnt, og legge dem til, men hvis dette er til noen hjelp, kan du ta det du vil ha og nyte. Gi meg beskjed hvis det er noen åpenbare problemer.

Akkurat nå kommer jeg til å fortsette og bruke det, jeg har noen få prosjekter å jobbe med!

Anbefalt: