Inhoudsopgave:

Arduino draagbare werkbank deel 3: 11 stappen
Arduino draagbare werkbank deel 3: 11 stappen

Video: Arduino draagbare werkbank deel 3: 11 stappen

Video: Arduino draagbare werkbank deel 3: 11 stappen
Video: How to repair a lathe machine cack gear #shorts 2024, Juli-
Anonim
Arduino draagbare werkbank deel 3
Arduino draagbare werkbank deel 3
Arduino draagbare werkbank deel 3
Arduino draagbare werkbank deel 3

Als je delen 1, 2 en 2B hebt bekeken, dan is er tot nu toe niet veel Arduino in dit project geweest, maar slechts een paar borddraden enz. is niet waar dit over gaat en het infrastructuurgedeelte moet worden gebouwd voordat de rust werkt.

Dit is de elektronica en Arduino-code. De vorige 2B-instructie geeft de details van de voeding weer.

In dit gedeelte wordt de draagbare werkbank uitgerust met de volgende kenmerken:

Een TFT-aanraakscherm dat een display biedt, aangedreven door een Arduino Mega om het volgende te bieden:

  1. 8 digitale displays, uit/aan/oscillerend
  2. 4 spanningsweergaven
  3. 3 stroom-/spanningsdisplays
  4. E24 weerstandsmeter (omdat ik de kleurbanden niet meer kan lezen)

Er zullen nog andere dingen zijn die ik zal toevoegen, maar dit was mijn eerste doel. De Arduino-code vermeldt ook een serieel display, I2C-display, capaciteitsmeter, digitale schakelaars en oscilloscoop die ik in de loop van de tijd zal toevoegen. Ook heb ik niet helemaal besloten of het de moeite waard is om een 3V3-voeding, een variabele voeding of voedingsspanning/stroombewaking toe te voegen. Tot nu toe is dit gebouwd met de Mega, maar ik ben ook aan het kijken naar het verplaatsen van enkele functies naar afzonderlijke I2C-toegangscircuits, ofwel speciale chips of geprogrammeerde Atmel 328's die gemakkelijker een andere controller kunnen huisvesten.

Benodigdheden

5 x 16-weg header-aansluitingen

5 x 8-voudige dupont-aansluitingen, eigenlijk gemaakt van lange 40-voudige enkele in lijn-aansluitingen die op de gewenste lengte zijn gesneden

1 x 3,5 ILI9486 TFT-touchscreen

1 x Arduino Mega 2650

Individuele onderdelen

Volgens de tekst is de waarde van sommige hiervan niet absoluut vast en als u een functie mist, is deze helemaal niet nodig:)

Digitale invoer

16 x 10K weerstanden

Analoge ingang

1 x TL074 een quad jfet opamp, dit is wat ik als reserve had, iets soortgelijks zal doen:)

4 x 68K en 4 x 430k weerstanden gebruikt als spanningsdeler.

4 x 1N4001 of vergelijkbaar

Weerstandsmeter

1 x TL072 een dual jfet opamp, dit is wat ik als reserve had, iets soortgelijks zal doen:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (Als deze waarden worden gewijzigd, moet de Arduino-code worden bijgewerkt)

Stap 1: Overzicht van de elektronica

Overzicht van de elektronica
Overzicht van de elektronica
Overzicht van de elektronica
Overzicht van de elektronica
Overzicht van de elektronica
Overzicht van de elektronica
Overzicht van de elektronica
Overzicht van de elektronica

De grijze console is 30 jaar geleden door mij gemaakt en wordt nog steeds regelmatig gebruikt, maar de tijden zijn verstreken. Het biedt dubbele voedingen aan de linkerkant, een centrale audioversterker in het midden, met interne luidspreker en een oscillator aan de linkerkant. Tegenwoordig hebben de meeste van mijn circuits alleen de voeding nodig en daarvan alleen de positieve rail. Er was iets anders nodig, evenals etikettering waar ik zonder heb geleefd, nou ik heb het gehaald.

De belangrijkste vereisten voor de elektronica van de projectbox waren om nieuwere circuits van stroom te voorzien met Arduino of Raspberry PI's, dus 5V was essentieel, net als USB-aansluitingen. Verlichte schakelaars vertellen me of de stroom aan staat of niet, en bij het testen moet ik regelmatig kleine hulpcircuits bouwen om tijdelijke statusweergaven te geven. Ik heb een doos met dikke meters die veel bankruimte in beslag nemen en vooral, ik heb een display nodig dat ik gemakkelijk kan lezen als mijn gezichtsvermogen achteruitgaat, iets met grote heldere karakters. Dus ik heb digitale displays, spanningsmeters, stroommeters nodig en in dit geval een beetje luxe in de vorm van een weerstandsmeter om snel E24-serieweerstanden te identificeren, allemaal binnen 15 cm van het projectbroodbord en in een compacte, draagbare koffer.

De belangrijkste PSU, beschreven in een vorig artikel, levert stroom aan het deksel met behulp van een 40-polige lintkabel waardoor de twee kunnen worden aangesloten terwijl het deksel gesloten is. Deze levert geschakelde 5v en 12V voedingen voor de paneelelektronica en voor de voeding van het breadboard.

Alle stroom- en signaalingangen worden geleverd door 2x8-weg PCB-header-aansluitingen parallel met een 8-weg dupont-aansluiting. Dit is waarschijnlijk overdreven, de meeste breadboards hebben stroomrails, maar het was gemakkelijk te doen.

Op de stopcontacten is de 0V-hoofdrail van de voeding gemeenschappelijk voor alle voedingen en wordt deze beschikbaar gesteld. Hierboven is een 5V-voeding, ingeschakeld op de basiseenheid, en daarboven zijn twee meegeleverde +12V- en -12V-voedingen, die momenteel vast zijn, hoewel ik een idee heb om de voeding te hacken om deze variabel te maken en een 3,3-20V te leveren variabel aanbod.

Stap 2: De elektronica

De elektronica
De elektronica
De elektronica
De elektronica
De elektronica
De elektronica

Ik heb schermafdrukken gepost van de breadboard-layout, hoe het circuit eruitziet als het op een matrixbord is gebouwd, een schema als PDF en de originele Fritzing-bestanden. Dit is geen bijzonder complexe elektronica en is bedoeld om beperkende weerstanden, bufferversterkers en fan-out-aansluitingen voor het Arduino-bord te monteren. Maar er zijn meerdere afbeeldingen om de vele verbanden wat duidelijker te laten zien. Het grootste deel van de bedrading bestond uit standaardlengtes voorgekrompen dupont-lintkabel die opnieuw in meerwegbehuizingen waren gemonteerd om ze zowel gemakkelijker opnieuw aan te sluiten als betrouwbaarder te maken.

De Arduino Mega 2650 wordt in het deksel gemonteerd met de USB-aansluiting beschikbaar voor programmering. Het stuurt het TFT-touchscreen aan dat wordt gebruikt om alle uitgangen en ingangen weer te geven.

8 digitale ingangen worden beschikbaar gesteld via een 2 x 8-weg PCB-header en hun status wordt op het scherm weergegeven als die functie is geselecteerd. Dit is een eenvoudig aan/uit-display, rood uit, groen aan. Ik kan oscilleren toevoegen als een toekomstige verandering.

Er worden ook 4 spanningsingangen beschikbaar gesteld via de PCB-header, en een spanningsdeler, de spanning wordt weergegeven op het scherm. Elke ingangsspanning op het voorpaneel, met verwijzing naar de gemeenschappelijke aarde, wordt doorgegeven aan een spanningsdeler gedeeld door 7 en vervolgens gebufferd door een van de vier op-amps in een TL074 die is geconfigureerd als een gelijkrichtende versterker, alleen om ongelukken met negatieve spanningen te voorkomen. Zou leuk zijn om op een bepaald moment een polariteitsindicatie toe te voegen, maar deze keer niet. Uitgang van elke op-amp is naar een van de ADC-ingangen van de Arduino.

Een verdere PCB-header legt zowel seriële als I2C-verbindingen bloot. Dit werd gedaan om de implementatie van een seriële displayconsole en een basis I2C-identificatiefunctie mogelijk te maken.

De spanning/digitale ingangen blijken niet allemaal nodig te zijn, dus ze kunnen opnieuw worden geconfigureerd om digitale schakeluitgangen te bieden.

De Arduino voedt een weerstandsarray op een spanningsdeler om een weerstandsmeterfunctionaliteit te bieden. De output hiervan wordt gebufferd door een op-amp (halve TL072) voordat deze door de Arduino wordt uitgelezen en de weerstand wordt berekend. Het doel hiervan is niet nauwkeurige weerstandsmeting, maar om E24-seriewaarden snel te identificeren, hoewel het met enige kalibratie als basismeter kan worden gebruikt. De werking is om te detecteren wanneer een weerstand van minder dan 9M9 aanwezig is op de twee veren die op het voorpaneel zijn gemonteerd en vervolgens selectief 5V over te schakelen naar elke weerstand in de verdelerreeks totdat de waarde die het dichtst bij 2,5V ligt, wordt gemeten of de laatst geselecteerde weerstand, een vervolgens wordt een berekening en vergelijking gemaakt om de dichtstbijzijnde E24-waarde te bepalen. De 5V is afkomstig van digitale uitgangen 3-10 op de Arduino die opnieuw zijn geconfigureerd als hoge impedantie-ingangen tussen elke meting om fouten te minimaliseren. Arduino-pinnen D3-10 werden opzettelijk gebruikt omdat een toekomstige toevoeging een capaciteitsmeter zou kunnen zijn die de PWM-mogelijkheid van deze uitgangen gebruikt, wat mogelijk alleen een softwarewijziging zou kunnen zijn.

Een aangepast INA3221-bord biedt extra spannings- en stroommetingen via de I2C-interface met ingangen vanaf het voorpaneel. Alles is bedraad met startkabels, zodat het opnieuw toewijzen van functies in de toekomst eenvoudig zal zijn.

Stap 3: INA3221 Spanning/stroomingang

INA3221 Spanning/stroom ingang
INA3221 Spanning/stroom ingang

Dit was bedoeld als een snelle oplossing om spannings-/stroommetingen in de doos te leveren, maar het bleek dat het, zoals geïmplementeerd op het bord dat ik kocht, bedoeld was om het opladen van de batterij te controleren, dus moest het worden aangepast om drie onafhankelijke metingen te leveren. Als je bij het bouwen van dit project een INA3221-bord kunt kopen dat deze chip volgens de datasheet implementeert, dan is dit niet nodig.

Als je naar de afbeelding kijkt, moeten er drie inkepingen worden gemaakt in de PCB-sporen om de meetweerstanden te scheiden. De pads voor deze drie weerstanden moeten ook worden doorgesneden om ze van de rest van de PCB te scheiden. De weerstanden worden vervolgens met de pads verbonden door extra draden als bruggen te solderen. Ik documenteer dit omdat dit een algemeen bord is en mogelijk het enige is dat beschikbaar is.

Aansluitingen op het bord vanaf het frontpaneel worden dan gemaakt via jumperkabels over de meetweerstanden.

De stroom voor het bord wordt gehaald uit de Arduino 5V-pinnen, net als de aarde, waarbij de I2C-verbindingen naar de elektronica-PCB gaan.

Stap 4: Het weergavescherm

Het weergavescherm
Het weergavescherm

Dit was een eBay-aankoop en is verkrijgbaar bij veel bronnen en is een door ILI9486 aangedreven display. Ik ontdekte dat het het beste werkte met de MCUFRIEND-bibliotheken van David Prentice, maar het moet wel voor gebruik worden gekalibreerd, wat alleen vereiste dat een van de bibliotheekvoorbeelden van David werd uitgevoerd met het scherm aangesloten, volg de instructies op het scherm en noteer de weergegeven parameters, invoegen in het Arduino_Workstation_v01-codebestand indien anders.

Voor dit project is een touchscreen essentieel, het draait om het ontbreken van speciale schakelaars en de mogelijkheid om in de toekomst gewoon menu's en functies toe te voegen zonder veel herbedrading.

Stap 5: Verbind het samen

Het met elkaar verbinden
Het met elkaar verbinden
Het met elkaar verbinden
Het met elkaar verbinden
Het met elkaar verbinden
Het met elkaar verbinden

De Arduino Mega bevindt zich aan de linkerzijde van het deksel, met zijn USB- en voedingspoorten die van buiten de behuizing toegankelijk zijn. Op de RHS naast de Arduino is de elektronica op het matrixbord gemonteerd en daarboven is het INA3221 bord op de achterkant van het deksel gemonteerd.

Ook op de achterkant van het deksel bij de LHS boven de Arduino bevindt zich een gemeenschappelijk aarde-aansluitbord waarop alle massa's zijn aangesloten.

Zoveel mogelijk leads werden samengevoegd tot meerwegconnectoren. Dit maakt het aansluiten van de circuits veel eenvoudiger en betrouwbaarder, en de onderlinge ondersteuning van connectoren in een meervoudige behuizing zorgt voor een betere weerstand tegen losraken. Een lijst van deze consolidaties volgt.

Alle connectoren zijn op een logische manier toegevoegd, wat de beste toegang biedt voor het maken van verbindingen met mijn onhandige vingers, waarbij ik de aansluitingen op het voorpaneel tot het einde liet, waarbij de laatste schermaansluitingen door het montagegat werden geleid om als laatste te worden voltooid. Het scherm werd op zijn plaats vastgezet met een 3D-geprinte rand.

Stap 6: Geconsolideerde leads

Geconsolideerde leads
Geconsolideerde leads
  1. Spannings- en weerstandsingangen naar de Arduino ADC-poorten, vijf leads van 20 cm met individuele mannelijke connectoren aan het ene uiteinde, geconsolideerd in een zeswegbehuizing met een opening om de opening in de Arduino-headers op te vangen.
  2. 4-weg kabel van 10 cm van een vierwegbehuizing naar twee 2-wegbehuizingen om de spanningspinnen op het voorpaneel op de printplaat aan te sluiten.
  3. 8-wegs 10 cm kabel van een 2x4-wegs mannelijke kop naar een 8-wegs vrouwelijke kop
  4. 4-weg 10cm kabel van 4-weg vrouwelijke behuizing naar 4-weg vrouwelijke behuizing om serieel en I2C aan te sluiten op het voorpaneel
  5. 4-weg kabel van 10 cm van 4-weg behuizing naar vier enkele connectoren om de INA3221 op het voorpaneel aan te sluiten
  6. 4-weg kabel van 20 cm om een vierwegs vrouwelijke behuizing aan te sluiten op een vierwegs mannelijke behuizing om serieel en I2C van Arduino naar printplaat fan-out te brengen.
  7. 8-wegs 10cm kabel van 8-wegs vrouwelijke behuizing naar 8-wegs vrouwelijke behuizing om digitale ingangen van het voorpaneel naar de printplaat te nemen.
  8. 8-wegs 10 cm kabel om een 8-wegs vrouwelijke behuizing naar een 3-wegs mannelijke behuizing te brengen en een 5-wegs mannelijke behuizing om de weerstandsverdeler aan te sluiten op de printplaat. De twee behuizingen worden gebruikt om de niet-standaard opening in de headers op het Arduino-bord op te vangen.
  9. 2-weg kabel van 20 cm om 2-weg vrouwelijke behuizing naar twee enkele mannelijke connectoren voor de INA3221-voeding te brengen.
  10. 2-weg kabel van 10 cm om 2-weg vrouwelijke behuizing naar twee enkele vrouwelijke behuizingen te brengen om de derde INA3221-monitoraansluiting op het voorpaneel aan te sluiten.
  11. 2-weg kabel van 10 cm om 2-weg vrouwelijke behuizing naar 2-weg vrouwelijke behuizing te brengen om de INA3221 aan te sluiten op de I2C fanout-aansluitingen.

Stap 7: Arduino-code

Arduino-code
Arduino-code
Arduino-code
Arduino-code

Dit project is gebaseerd op de Arduino Mega 2650 om de simpele reden dat ik veel I/O-poorten wilde hebben voor taken in een eenvoudig formaat. De bibliotheken voor het TFT-touchscreen ondersteunen standaard de Arduino Uno en moeten worden bewerkt om de Mega te ondersteunen. Het bewerken van de bibliotheken wordt ondersteund door de oorspronkelijke auteur van de TFT-code, is eenvoudig en wordt beschreven in de volgende stap.

Het gebruik van een touchscreen-display is de basis van dit deel van het project, maar aangezien het display dat iemand uiteindelijk gebruikt, anders kan zijn dan het display dat ik heb gebruikt, plaatst de code alleen hardwarespecifieke functies in afzonderlijke routines, zodat alle noodzakelijke wijzigingen kunnen worden geïdentificeerd.

Een werkende versie van de code is hier opgenomen en zal worden bijgewerkt, maar de meest recente updates staan op github.

De hoofdfunctie van de code draait om het display, waarbij elk element op het display een vermelding heeft in een enkele array die het elementtype bevat, waar het op het scherm wordt weergegeven, kleur en aanvullende parameters zoals invoerbron. Een screenshot van deze array met opmerkingen wordt hierboven getoond. Het bevat ook een veld om te bepalen of het op het scherm moet worden weergegeven of niet. Door deze array te bewerken, kunnen nieuwe functies worden toegevoegd of functies worden verwijderd. De 'loop'-routine van de code loopt continu door deze array, waarbij elk in aanmerking komend element opeenvolgend wordt verwerkt en vervolgens wordt herhaald. Er zijn momenteel 6 verschillende elementen.

Menu-elementen - deze geven geen informatie weer, maar voeren bij aanraking een bijbehorende subroutine uit, geïdentificeerd in de elementparameters

Digitale elementen - weergave als een vak op het scherm als rood of groen, afhankelijk van de status van de bijbehorende digitale ingangspin. De voorbeeldconsole is bedraad voor 8 digitale pinnen, maar dit kan naar wens worden verhoogd of verlaagd.

Analoge elementen - geven een geschatte spanning weer zoals gemeten op de bijbehorende analoge pin. Vier zijn oorspronkelijk gespecificeerd.

Precisie-elementen - weergave van invoer van een externe precisie-volt/stroommetermodule. Er zijn er slechts drie, maar een tweede of derde module zou kunnen worden toegevoegd.

Weerstandselement - dit is een enkel element dat de invoer van de weerstandsmeter weergeeft.

Aanraken - dit is de enige routine die altijd wordt uitgevoerd om te detecteren of het scherm is aangeraakt en vervolgens een beslissing te nemen op basis van wat er is aangeraakt. dwz als een menu-item, wat houdt dat in dat vervolgens wordt weergegeven.

Het scherm heeft drie statusmodi, normaal, groot en volledig scherm en alle elementen veranderen hun werking afhankelijk van de status. De drie modi kunnen in het menu worden geselecteerd door een element en de bijbehorende menuoptie aan te raken.

Normale modus - geeft 8 digitale ingangen, vier analoge spanningsingangen, drie precisie-elementen, het weerstandselement en vier menu-elementen weer. Als u Normaal selecteert in het menu, wordt het scherm in deze modus gezet.

Grote modus - wordt geselecteerd door een van de elementen op het scherm aan te raken, gevolgd door Groot. Indien geselecteerd, is dat elementtype het enige geselecteerde type en worden de elementen van dat type herschikt om het hele scherm te vullen.

Modus Volledig scherm - wordt geselecteerd door een van de elementen op het scherm aan te raken, gevolgd door Volledig scherm. Wanneer geselecteerd, is dat element het enige weergegeven element en wordt het opnieuw gerangschikt om het hele scherm te vullen, waardoor dat ene item maximaal zichtbaar is.

Om extra functionaliteit toe te voegen, moeten de volgende routines worden toegevoegd:

'teken'-routine die wordt aangeroepen om de informatie voor dat element te krijgen, de juiste routine voor schermupdate aan te roepen en de geretourneerde aanraakinformatie te registreren

'logische' routine die de informatie van de tekenroutine accepteert en de juiste schermstuurprogrammaroutines gebruikt om de informatie op het scherm te plaatsen en de juiste aanrakingsinformatie terug te geven voor het gebied van het getekende scherm

'setup'-routine die wordt aangeroepen als onderdeel van de Arduino-setup

Andere routines kunnen worden opgenomen, maar er mag geen onderlinge afhankelijkheid zijn tussen elementcode, als een element niet is ingeschakeld, mag de bijbehorende code niet worden uitgevoerd en behoudt de eenvoudige multifunctionele structuur zijn integriteit.

Stap 8: De Arduino-bibliotheken bewerken

De Arduino-bibliotheken bewerken
De Arduino-bibliotheken bewerken
De Arduino-bibliotheken bewerken
De Arduino-bibliotheken bewerken

Het display dat ik heb gebruikt, werkt heel goed met de Arduino Uno en de basisbibliotheken die ervoor zijn geschreven, maar presteert langzaam wanneer deze rechtstreeks naar de Arduino Mega wordt overgebracht. Om het display correct aan te sturen, moet een andere set datapinnen worden gebruikt en deze wijziging van gebruik moet worden ingesteld in de bibliotheken. Dit is een eenvoudige wijziging en was bedoeld door de auteur. De foto's tonen de aangebrachte wijzigingen.

De twee bestanden worden opgeslagen in de map MCUFRIEND_kbv\utility als mcufriend_shield.h en mcufriend_special.h. De vereiste wijzigingen zijn eerst in het 'shield'-headerbestand om ervoor te zorgen dat de eerste regel leest

#define USE_SPECIAL

om ervoor te zorgen dat het 'speciale' headerbestand wordt geladen.

Het 'speciale' headerbestand moet ook worden bijgewerkt om ervoor te zorgen dat de regel

#define USE_MEGA_8BIT_PROTOSHIELD

is onbecommentarieerd.

Deze twee wijzigingen betekenen dat de displaycode voor dit display werkt met pinnen 20-29 op de Arduino Mega in plaats van de standaard 3-10 op de Uno.

Stap 9: Schermafbeeldingen

Schermafbeeldingen
Schermafbeeldingen
Schermafbeeldingen
Schermafbeeldingen
Schermafbeeldingen
Schermafbeeldingen

Ik heb hier screenshots geplaatst zodat het gemakkelijk te zien is wat de console zou moeten doen. De volgende sectie verwijst naar het laden van de code in de Arduino.

Het eerste scherm toont het 'normale' scherm met menu's bovenaan, spanningsmetingen op de LHS, spannings- en stroommetingen op de RHS en digitale pinstatus onderaan, rood voor 'false/low', groen voor 'true/high' '. Eindelijk in het midden is de weerstandsmeting.

Het tweede scherm toont de digitale ingangen die zijn ingeschakeld in de modus Groot, waarbij elke ingang duidelijk wordt weergegeven.

Het derde scherm toont de spanningsingangen in de modus Groot.

Stap 10: De Arduino-code laden

De code is bijgevoegd, maar zoals eerder vermeld zal op een gegeven moment op github worden geplaatst en de locatie wordt hier toegevoegd. Het belangrijkste broncodebestand is Arduino_Workbench_v01.ino en de andere routines zijn om de verschillende functies te bieden.

Als de bibliotheken ok zijn aangepast en de Arduino Mega2650 is ingesteld als het doelplatform in de Arduino IDE, dan moet de code de eerste keer worden gecompileerd.

De bibliotheken die moeten worden geladen, zijn Adafruit GFX- en Touchscreen-bibliotheken die beschikbaar moeten zijn via de Arduino-bibliotheekmanager, een kopie van MCUFRIEND_kbv die kan worden gedownload van github en voor de INA3221, de SwitchDocLabs-bibliotheek SDL_Arduino_INA3221 die ook kan worden gedownload van github, beide komen snel op een google-zoekopdracht.

Stap 11: laatste hand

Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i

Het idee is om het te gebruiken voor projectwerk, dus er is een verwijderbaar paneel gemaakt bestaande uit bevestigingsbouten voor Arduino-boards en een breadboard, het geheel bevestigd aan het deksel met klittenband om ze afneembaar te maken en zodat verschillende boards kunnen worden gemaakt om projecten en dat de doos kan worden hergebruikt voor verschillende projecten die tegelijkertijd lopen.

Ik verwacht dat dit een bron zal zijn voor een paar ideeën om iets anders, beter of beide te maken. Ik zal de extra functies die ik heb genoemd toevoegen en ze toevoegen, maar als dit van enige hulp is, neem dan alsjeblieft wat je wilt en geniet ervan. Als er opvallende problemen zijn, laat het me dan weten.

Op dit moment ga ik ermee aan de slag en gebruik het, ik heb een paar projecten om aan te werken!

Aanbevolen: