Innehållsförteckning:

Arduino bärbar arbetsbänk del 3: 11 steg
Arduino bärbar arbetsbänk del 3: 11 steg

Video: Arduino bärbar arbetsbänk del 3: 11 steg

Video: Arduino bärbar arbetsbänk del 3: 11 steg
Video: AmazingChina: Modular & Flexible LED TV Wall 2024, Juli
Anonim
Arduino bärbar arbetsbänk del 3
Arduino bärbar arbetsbänk del 3
Arduino bärbar arbetsbänk del 3
Arduino bärbar arbetsbänk del 3

Om du har tittat på del 1, 2 och 2B, så har det hittills inte varit mycket Arduino i det här projektet, men bara några kortkablar osv är inte vad det här handlar om och infrastrukturdelen måste byggas innan vila fungerar.

Detta är elektroniken och Arduino -koden. Den föregående 2B -instruktionen listar strömförsörjningsdetaljerna.

Det här avsnittet passar ut den bärbara arbetsbänken med följande funktioner

En TFT -pekskärm som ger en display, driven av en Arduino Mega för att ge följande

  1. 8 digitala displayer, av/på/oscillerande
  2. 4 spänningsdisplayer
  3. 3 ström-/spänningsdisplayer
  4. E24 motståndsmätare (eftersom jag inte längre kan läsa färgband)

Det kommer att finnas andra saker jag ska lägga till, men det här var mitt första mål. Arduino -koden listar också en seriell display, I2C -display, kapacitansmätare, digitala switchar och oscilloskop som jag lägger till med tiden. Jag har inte heller bestämt mig om det är värt att lägga till en 3V3 -strömförsörjning, en variabel strömförsörjning eller spännings-/strömövervakning. Hittills har detta byggts med hjälp av Mega men jag tittar också på att flytta några av funktionerna till separata I2C -åtkomliga kretsar, antingen dedikerade chips eller programmerade Atmel 328 som lättare kommer att rymma en annan styrenhet.

Tillbehör

5 x 16 -vägs huvuduttag

5 x 8 -vägs dupont -uttag, faktiskt tillverkade av långa 40 -vägs enkla i linje -uttag som skärs upp till önskad längd

1 x 3,5 ILI9486 TFT -pekskärm

1 x Arduino Mega 2650

Enskilda komponenter

Enligt texten är värdet på några av dessa inte helt fixat och om du missar en funktion behövs det inte alls:)

Digital ingång

16 x 10K motstånd

Analog ingång

1 x TL074 en quad jfet opamp, detta är vad jag hade som reserv, något liknande kommer att göra:)

4 x 68K och 4 x 430k motstånd som används som spänningsdelare.

4 x 1N4001 eller liknande

Motståndsmätare

1 x TL072 en dubbel jfet opamp, detta är vad jag hade som reserv, något liknande kommer att göra:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (Om dessa värden ändras måste Arduino -koden uppdateras)

Steg 1: Översikt över elektroniken

Översikt över elektroniken
Översikt över elektroniken
Översikt över elektroniken
Översikt över elektroniken
Översikt över elektroniken
Översikt över elektroniken
Översikt över elektroniken
Översikt över elektroniken

Den grå konsolen gjordes av mig för 30 år sedan och används fortfarande regelbundet, men tiderna har gått vidare. Den ger dubbla strömförsörjningar till vänster, en central ljudförstärkare i mitten, med inre högtalare och en oscillator till vänster. Dessa dagar behöver de flesta av mina kretsar bara strömförsörjningen och av det, bara den positiva skenan. Något annat behövdes, liksom märkning som jag har levt utan, ja jag klarade det.

De viktigaste kraven för projektlådans elektronik var att driva nyare kretsar med Arduino eller Raspberry PI så att 5V var viktigt liksom USB -uttag. Belysta omkopplare berättar om strömmen är på eller inte, och när jag testar måste jag regelbundet bygga små hjälpkretsar för att tillfälligt visa status. Jag har en låda med skrymmande mätare som tar upp mycket bänkutrymme och framför allt behöver jag en display som jag lätt kan läsa när min syn försämras, något med stora ljusa karaktärer. Så jag behöver digitala skärmar, spänningsmätare, strömmätare och i detta fall lite lyx i form av en motståndsmätare för att snabbt identifiera E24 -seriens motstånd, allt inom 15 cm från projektbrödbrädan och i ett kompakt, bärbart fodral.

Den huvudsakliga nätaggregatet, som beskrivs i en tidigare artikel, ger ström till locket med en 40 -vägs bandkabel som gör att de två kan anslutas medan locket är stängt. Detta ger växlade 5v- och 12V -tillbehör för panelelektroniken och för att leverera brödbrädan.

Alla ström- och signalingångar tillhandahålls av 2x8way PCB-huvuduttag parallellt med ett 8-vägs dupontuttag. Detta är förmodligen överkill, de flesta brödbrädor har power rails men det var lätt att göra.

På eluttagen är strömförsörjningens huvud 0V -skena gemensam för alla leveranser och görs tillgänglig. Ovanför detta är en 5V strömförsörjning, påslagen basenhet, och ovanför detta finns två levererade +12V och -12V nätaggregat, som för närvarande är fasta fast jag har en idé att hacka strömförsörjningen för att göra den variabel och ge en 3,3-20V variabelt utbud.

Steg 2: Elektroniken

Elektroniken
Elektroniken
Elektroniken
Elektroniken
Elektroniken
Elektroniken

Jag har lagt ut skärmavtryck av brödbrädans layout, hur kretsen ser ut när den är byggd på matriskort, en schematisk som en PDF och de ursprungliga Fritzing -filerna. Detta är inte särskilt komplex elektronik och är där för att montera begränsningsmotstånd, buffertförstärkare och fläktanslutningar för Arduino -kortet. Men det finns flera bilder för att visa de många kopplingarna lite tydligare. Det mesta av ledningarna består av standardlängder av förkrympt dupontbandkabel som återmonteras i flervägshus för att göra dem både enklare att ansluta igen och mer pålitliga.

Arduino Mega 2650 är monterad i locket med USB -uttaget tillgängligt för programmering. Den driver TFT -pekskärmen som används för att visa alla utgångar och ingångar.

8 digitala ingångar görs tillgängliga via ett 2 x 8-vägs PCB-huvud och deras status visas på skärmen om den funktionen är vald. Detta är en enkel på/av -display, röd av, grön på. Jag kan lägga till oscillerande som en framtida förändring.

4 spänningsingångar görs också tillgängliga via kretskortsrubriken och en spänningsdelare, spänningen som visas på skärmen. Varje ingångsspänning på frontpanelen, med hänvisning till den gemensamma marken, överförs till en dividerad med 7 spänningsdelare och buffras sedan med en av fyra op-ampere i en TL074 konfigurerad som en likriktande förstärkare, bara för att undvika olyckor med negativa spänningar. Skulle vara trevligt att lägga till en polaritetsindikation vid något tillfälle men inte den här gången. Utgången från varje op-amp är till en av ADC-ingångarna på Arduino.

Ytterligare ett kretskortrubrik exponerar både seriella och I2C -anslutningar. Detta gjordes för att möjliggöra implementering av en seriell displaykonsol och en grundläggande I2C -identifieringsfunktion.

Spännings-/digitalingångarna kan visa sig inte vara alla nödvändiga så att de kan konfigureras om för att tillhandahålla digitala kopplingsutgångar.

Arduino driver ett motståndsarray på en spänningsdelare för att ge en motståndsmätarfunktion. Utgången från detta buffras av en op-amp (en halv TL072) innan den läses av Arduino och motståndet beräknas. Syftet med detta är inte korrekt motståndsmätning utan att snabbt identifiera E24 -seriens värden, men med viss kalibrering kan den användas som en grundmätare. Dess funktion är att upptäcka när ett motstånd mindre än 9M9 är närvarande på de två fjädrarna som är monterade på frontpanelen och sedan selektivt växla 5V till varje motstånd i dividerarrayen tills värdet närmast 2,5V mäts eller det sista motståndet väljs, a beräkning och jämförelse görs sedan för att bestämma E24 -värdet närmast. 5V kommer från digitala utgångar 3-10 på Arduino som omkonfigureras som ingångar med hög impedans mellan varje mätning för att minimera fel. Arduino-stift D3-10 användes avsiktligt som ett framtida tillägg kan vara en kapacitansmätare som använder PWM-funktionen hos dessa utgångar, vilket potentiellt bara kan vara en programvaruändring.

Ett modifierat INA3221 -kort ger ytterligare spännings- och strömmätningar via I2C -gränssnittet med ingångar från frontpanelen. Allt är trådbundet med hjälp av bygelkablar så att omplaceringen av funktioner blir lätt i framtiden.

Steg 3: INA3221 Spänning/ström Ingång

INA3221 Spänning/ström Ingång
INA3221 Spänning/ström Ingång

Detta var tänkt som en snabb lösning för att tillhandahålla spännings-/strömmätningar i lådan, men det visade sig att den som jag köpte på kortet var avsedd att övervaka batteriladdning, så den måste ändras för att ge tre oberoende mätningar. Om du kan skaffa ett INA3221 -kort som bygger detta projekt enligt databladet när du bygger detta projekt, så är detta inte nödvändigt.

Om man tittar på bilden måste tre skärningar göras i PCB -spåren för att separera mätmotstånden. Kuddarna för dessa tre motstånd måste också skäras för att skilja dem från resten av kretskortet. Motstånden förenas sedan med dynorna genom att löda ytterligare trådar som broar. Jag dokumenterar detta eftersom det här är en gemensam tavla och kan vara den enda som finns tillgänglig.

Anslutningar till kortet från frontpanelen görs sedan via bygelkablar över mätmotstånden.

Strömmen till kortet tas från Arduino 5V -stiften som marken, med I2C -anslutningarna till elektronikens kretskort.

Steg 4: Displayskärmen

Displayskärmen
Displayskärmen

Detta var ett eBay -köp och tillgängligt från många källor och är en ILI9486 -driven display. Jag fann att det gick bäst med MCUFRIEND -biblioteken i David Prentice men det måste kalibreras före användning vilket bara krävde att ett av biblioteksexemplen från David körs med skärmen ansluten, följ instruktionerna på skärmen och skriv ner de parametrar som visas och infoga i kodfilen Arduino_Workstation_v01 om den är annorlunda.

För detta projekt är en pekskärm väsentlig, den kretsar runt utan att ha särskilda switchar och möjlighet att bara lägga till menyer och funktioner i framtiden utan massor av omkopplingar.

Steg 5: Anslut det tillsammans

Koppla ihop det
Koppla ihop det
Koppla ihop det
Koppla ihop det
Koppla ihop det
Koppla ihop det

Arduino Mega är placerad på lockets LHS, med dess USB- och strömportar tillgängliga från utsidan av fodralet. På RHS bredvid Arduino finns elektroniken monterad på matriskort och ovanför detta är INA3221 -kortet monterat på lockets baksida.

På baksidan av locket vid LHS ovanför Arduino finns en gemensam jordanslutningskort som alla jordar är anslutna till.

Så många leads som möjligt konsoliderades tillsammans till flervägskontakter. Detta gör det lättare och mer pålitligt att koppla ihop kretsarna, och det ömsesidiga stödet för kontakter i ett flervägshus ger förbättrat motstånd mot att lossna. En lista över dessa konsolideringar följer.

Alla kontakter kopplades till på ett logiskt sätt, vilket gav störst åtkomst för att göra anslutningar med mina klumpiga fingrar, och lämnade frontpanelanslutningarna till slutet, med de sista displayanslutningarna som passerade genom monteringshålet för att slutföras sist. Skärmen fixerades på plats med en 3D -tryckt ram.

Steg 6: Konsoliderade leads

Konsoliderade leads
Konsoliderade leads
  1. Spännings- och motståndsinmatningar till Arduino ADC -portar, fem ledningar 20 cm med individuella hankontakter i ena änden konsoliderade i ett sexvägshus med ett gap för att rymma gapet i Arduino -huvuden.
  2. 4 -vägs 10 cm kabel från ett fyrvägshus till två 2 -vägs höljen för att ansluta spänningsstiftet på frontpanelen till kretskortet.
  3. 8-vägs 10 cm kabel från en 2x4-vägs hanrubrik till en 8-vägs honahuvud
  4. 4 -vägs 10 cm kabel från 4 -vägs hona till 4 -vägs hona för att ansluta Serial och I2C till frontpanelen
  5. 4 -vägs 10 cm kabel från 4 -vägs hus till fyra enkla kontakter för att ansluta INA3221 till frontpanelen
  6. 4-vägs 20cm kabel för att ansluta fyra-vägs hona till fyra-vägs hankontakt för att ta Serial och I2C från Arduino till kretskortets fläkt-out.
  7. 8 -vägs 10 cm kabel från 8 -vägs hona till 8 -vägs hona för att ta digitala ingångar från frontpanelen till kretskortet.
  8. 8 -vägs 10 cm kabel för att ta 8 -vägs hona till ett 3 -vägs hanehus och ett 5 -vägs hanhölje för att ansluta motståndsdelaren till kretskortet. De två husen används för att rymma det icke-standardiserade gapet i sidhuvudena på Arduino-kortet.
  9. 2 -vägs 20 cm kabel för att ta 2 -vägs hona till två enkla hankontakter för INA3221 strömförsörjning.
  10. 2-vägs 10 cm kabel för att ta 2-vägs hona till två enkla hona för att ansluta den tredje INA3221-bildskärmsanslutningen till frontpanelen.
  11. 2-vägs 10 cm kabel för att ta 2-vägs hona till 2-vägs hona för att ansluta INA3221 till I2C fanout-anslutningar.

Steg 7: Arduino -kod

Arduino -kod
Arduino -kod
Arduino -kod
Arduino -kod

Det här projektet är baserat på Arduino Mega 2650 av den enkla anledningen att jag ville ha många I/O -portar tillägnade uppgifter i ett enkelt format. Biblioteken för TFT -pekskärmen har som standard stöd för Arduino Uno och måste redigeras för att stödja Mega. Redigering av biblioteken stöds av den ursprungliga TFT -kodförfattaren, är enkel och beskrivs i nästa steg.

Att använda en pekskärm är grunden för denna del av projektet, men eftersom skärmen någon slutar använda kan vara annorlunda än den jag använde, placerar koden bara hårdvaruspecifika funktioner i separata rutiner så att alla nödvändiga ändringar kan identifieras.

En fungerande version av koden ingår här och kommer att uppdateras men de senaste uppdateringarna kommer att finnas på github.

Kodens huvudfunktion kretsar runt displayen, varje element på displayen har en post i en enda array som innehåller elementtypen, där den visas på skärmen, färg och ytterligare parametrar, såsom ingångskälla. En skärmdump av denna matris med kommentarer visas ovan. Det har också ett fält för att styra om det ska visas på skärmen eller inte. Genom att redigera denna matris kan nya funktioner läggas till eller funktioner tas bort. Kodens "loop" -rutin löper kontinuerligt genom denna matris, varje kvalificerat element behandlas sekventiellt och upprepas sedan. Det finns för närvarande 6 olika element.

Menyelement - dessa visar inte information, men när du trycker på dem kör du en tillhörande underprogram, identifierad i elementparametrarna

Digitala element - visas som en ruta på skärmen som antingen röd eller grön beroende på status för den associerade digitala ingångsstiftet. Exempelkonsolen är ansluten för 8 digitala stift men detta kan ökas eller minskas efter önskemål.

Analoga element - visa en ungefärlig spänning mätt på den tillhörande analoga stiftet. Fyra är ursprungligen specificerade.

Precisionselement - displayingång från en extern precisionsspänning/strömmätarmodul. Det finns bara tre av dessa men en andra eller tredje modul kan läggas till.

Motståndselement - detta är ett enda element som visar ingången från motståndsmätaren.

Touch - det här är den enda rutin som alltid körs för att upptäcka om skärmen har rörts och sedan fatta ett beslut baserat på vad som har rörts. dvs om ett menyalternativ, vad innebär det att visas härnäst.

Skärmen har tre statuslägen, normal, stor och helskärm och alla element ändrar sin funktion beroende på status. De tre lägena kan väljas från menyn genom att trycka på ett element och tillhörande menyalternativ.

Normalt läge - visar 8 digitala ingångar, fyra analoga spänningsingångar, tre precisionselement, motståndselementet och fyra menyelement. Om du väljer Normal från menyn försätts displayen i det här läget.

Stort läge - väljs genom att trycka på något av elementen på skärmen följt av Large. När den väljs är den elementtypen den enda valda typen och elementen av den typen ordnas om för att fylla hela skärmen.

Helskärmsläge - väljs genom att trycka på något av elementen på skärmen följt av Helskärm. När det väljs är det elementet det enda elementet som visas och ordnas om för att fylla hela skärmen vilket ger maximal synlighet för det enda objektet.

För att lägga till ytterligare funktioner måste följande rutiner läggas till

'rita' rutin som kallas för att få information för det elementet, ring lämplig rutin för skärmuppdatering och registrera den returnerade pekinformationen

"logik" -rutin som accepterar informationen från ritningsrutinen och använder lämpliga rutiner för skärmdrivrutiner för att sätta informationen på skärmen och returnera den korrekta pekinformationen för området på skärmen ritad

"setup" -rutin som kallas som en del av Arduino -installationen

Andra rutiner kan inkluderas men det bör inte finnas något ömsesidigt beroende mellan elementkod, om ett element inte har aktiverats bör inte it -koden köras och den enkla multifunktionella strukturen behåller sin integritet.

Steg 8: Redigering av Arduino Libraries

Redigera Arduino Libraries
Redigera Arduino Libraries
Redigera Arduino Libraries
Redigera Arduino Libraries

Displayen jag använde fungerar mycket bra med Arduino Uno och basbiblioteken som är skrivna för den men fungerar långsamt när den överförs direkt till Arduino Mega. För att köra displayen korrekt måste en annan uppsättning datapinnar användas och denna ändring av användningen måste konfigureras i biblioteken. Detta är en enkel förändring och var avsedd av författaren. Bilderna markerar de ändringar som gjorts.

De två filerna lagras i mappen MCUFRIEND_kbv / utility som mcufriend_shield.h och mcufriend_special.h. De ändringar som krävs är först i "shield" -huvudfilen för att säkerställa att den första raden läses

#define USE_SPECIAL

för att säkerställa att den "speciella" rubrikfilen laddas.

Den "speciella" rubrikfilen måste också uppdateras för att säkerställa att raden

#define USE_MEGA_8BIT_PROTOSHIELD

är okommenterad.

Dessa två ändringar innebär att displaykoden för den här skärmen fungerar med stift 20-29 på Arduino Mega istället för standard 3-10 på Uno.

Steg 9: Skärmbilder

Skärmbilder
Skärmbilder
Skärmbilder
Skärmbilder
Skärmbilder
Skärmbilder

Jag har lagt skärmbilder här så det är lätt att se vad konsolen ska göra. Nästa avsnitt avser laddning av koden i Arduino.

Den första skärmen visar den "normala" skärmen med menyer överst, spänningsmätningar på LHS, spännings- och strömmätningar på RHS och digital stiftstatus längst ner, röd för "falsk/låg", grön för "sann/hög '. Slutligen i mitten är motståndsmätningen.

Den andra skärmen visar de digitala ingångarna som är aktiverade i stort läge, varje ingång visas tydligt.

Den tredje skärmen visar spänningsingångarna i stort läge.

Steg 10: Ladda Arduino -koden

Koden är bifogad, men som tidigare nämnts kommer den att läggas till github någon gång och platsen läggs till här. Huvudkällkodfilen är Arduino_Workbench_v01.ino och de andra rutinerna är att tillhandahålla de olika funktionerna.

Om biblioteken har modifierats ok och Arduino Mega2650 har ställts in som målplattform i Arduino IDE, bör koden kompilera första gången.

De bibliotek som måste laddas är Adafruit GFX och pekskärmsbibliotek som ska vara tillgängliga från Arduino bibliotekschef, en kopia av MCUFRIEND_kbv nedladdningsbar från github och för INA3221, SwitchDocLabs bibliotek SDL_Arduino_INA3221 kan också laddas ner från github, båda kommer snabbt upp en google -sökning.

Steg 11: Sista handen

Sista handen
Sista handen
Sista handen
Sista handen
Sista handen
Sista handen
Sista handen
Sista handen

Tanken är att använda den för projektarbete så att en avtagbar panel har gjorts med monteringsbultar för Arduino -brädor och ett brödbräda, hela fästet på locket med kardborrband för att göra dem avtagbara och så att olika brädor kan göras för att innehålla projekt och att lådan kan återanvändas för olika projekt som körs samtidigt.

Jag förväntar mig att detta kommer att vara en källa för några idéer för att göra något annorlunda, bättre eller båda. Jag kommer att lägga till de ytterligare funktioner som jag har nämnt och lägga till dem, men om det här är till någon hjälp, ta vad du vill och njut av. Om det finns några uppenbara problem, vänligen meddela mig.

Just nu ska jag fortsätta och använda det, jag har några projekt att jobba på!

Rekommenderad: