Sommario:
- Forniture
- Passaggio 1: panoramica dell'elettronica
- Passaggio 2: l'elettronica
- Passaggio 3: INA3221 Ingresso tensione/corrente
- Passaggio 4: lo schermo del display
- Passaggio 5: collegarlo insieme
- Passaggio 6: lead consolidati
- Passaggio 7: codice Arduino
- Passaggio 8: modifica delle librerie Arduino
- Passaggio 9: schermate
- Passaggio 10: caricamento del codice Arduino
- Passaggio 11: ritocchi finali
Video: Arduino Portable Workbench Parte 3: 11 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Se hai visto le parti 1, 2 e 2B, finora non c'è stato molto Arduino in questo progetto, ma solo alcuni cavi di schede ecc. Non è di cosa si tratta e la parte dell'infrastruttura deve essere costruita prima del il resto funziona.
Questa è l'elettronica e il codice Arduino. La precedente istruzione 2B elenca i dettagli dell'alimentatore.
Questa sezione equipaggia il banco da lavoro portatile con le seguenti caratteristiche
Un touch screen TFT che fornisce un display, guidato da un Arduino Mega per fornire quanto segue
- 8 display digitali, spento/acceso/oscillante
- 4 indicatori di tensione
- 3 indicatori di corrente/tensione
- Misuratore di resistenza E24 (perché non riesco più a leggere le bande colorate)
Ci saranno altre cose che aggiungerò, ma questo era il mio obiettivo iniziale. Il codice Arduino elenca anche un display seriale, display I2C, misuratore di capacità, interruttori digitali e oscilloscopio che aggiungerò con il passare del tempo. Inoltre, non ho ancora deciso se vale la pena aggiungere un alimentatore 3V3, un alimentatore variabile o il monitoraggio della tensione/corrente dell'alimentatore. Finora questo è stato costruito utilizzando il Mega, ma sto anche cercando di spostare alcune delle funzioni per separare i circuiti a cui si accede I2C, chip dedicati o Atmel 328 programmati che possono ospitare più facilmente un controller diverso.
Forniture
Prese per collettore 5 x 16 vie
Prese dupont 5 x 8 vie, realizzate in realtà da lunghe prese singole in linea a 40 vie tagliate fino alla lunghezza richiesta
1 schermo tattile TFT ILI9486 da 3,5 pollici
1 x Arduino Mega 2650
Singoli componenti
Secondo il testo, il valore di alcuni di questi non è assolutamente fisso e se ti perdi una funzione non sarà affatto necessaria:)
Input digitale
16 x 10K resistori
Ingresso analogico
1 x TL074 un opamp quad jfet, questo è quello che avevo di scorta, qualsiasi cosa di simile andrà bene:)
Resistori 4 x 68K e 4 x 430k utilizzati come divisori di tensione.
4 x 1N4001 o simili
Misuratore di resistenza
1 x TL072 un opamp dual jfet, questo è quello che avevo di scorta, qualsiasi cosa di simile andrà bene:)
1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (se questi valori vengono modificati il codice Arduino deve essere aggiornato)
Passaggio 1: panoramica dell'elettronica
La console grigia è stata realizzata da me 30 anni fa ed è ancora in uso regolare, ma i tempi sono cambiati. Fornisce due alimentatori a sinistra, un amplificatore audio centrale al centro, con altoparlante interno e un oscillatore a sinistra. In questi giorni la maggior parte dei miei circuiti ha bisogno solo dell'alimentazione e di quella, solo del binario positivo. Era necessario qualcosa di diverso, oltre all'etichettatura senza la quale ho vissuto, beh, ce l'ho fatta.
I requisiti principali per l'elettronica della scatola del progetto erano di alimentare i circuiti più recenti utilizzando Arduino o Raspberry PI, quindi 5 V erano essenziali così come le prese USB. Gli interruttori illuminati mi dicono se l'alimentazione è attiva o meno e durante i test devo regolarmente costruire piccoli circuiti ausiliari per fornire visualizzazioni temporanee dello stato. Ho una scatola di misuratori ingombranti che occupano molto spazio sul banco e, soprattutto, ho bisogno di un display che possa leggere facilmente quando la mia vista si deteriora, qualcosa con caratteri grandi e luminosi. Quindi ho bisogno di display digitali, misuratori di tensione, misuratori di corrente e in questo caso un piccolo lusso sotto forma di un misuratore di resistenza per identificare rapidamente i resistori della serie E24, tutti entro 15 cm dalla breadboard del progetto e in una custodia compatta e portatile.
L'alimentatore principale, descritto in un articolo precedente, fornisce alimentazione al coperchio utilizzando un cavo a nastro a 40 vie che consente il collegamento dei due mentre il coperchio è chiuso. Ciò fornisce alimentazioni commutate a 5 V e 12 V per l'elettronica del pannello e per alimentare la breadboard.
Tutti gli ingressi di alimentazione e segnale sono forniti da connettori femmina PCB a 2x8 vie in parallelo con una presa Dupont a 8 vie. Questo è probabilmente eccessivo, la maggior parte delle breadboard ha binari di alimentazione ma è stato facile da fare.
Sulle prese di alimentazione, il binario principale 0V dell'alimentatore è comune a tutti gli alimentatori ed è reso disponibile. Sopra questo c'è un alimentatore da 5V, acceso sull'unità base, e sopra questo ci sono due alimentatori +12V e -12V in dotazione, che sono attualmente fissi anche se ho un'idea di hackerare l'alimentatore per renderlo variabile e fornire un 3.3-20V offerta variabile.
Passaggio 2: l'elettronica
Ho pubblicato le serigrafie del layout della breadboard, l'aspetto del circuito quando è costruito su una scheda matrice, uno schema in formato PDF e i file Fritzing originali. Questa non è un'elettronica particolarmente complessa ed è lì per montare resistori di limitazione, amplificatori buffer e connessioni fan out per la scheda Arduino. Ma ci sono diverse immagini per mostrare un po' più chiaramente le molte connessioni. La maggior parte del cablaggio era costituita da lunghezze standard di cavo a nastro dupont pre-crimpato riassemblato in alloggiamenti a più vie per renderli più facili da ricollegare e più affidabili.
L'Arduino Mega 2650 è montato nel coperchio con la presa USB disponibile per la programmazione. Guida il touchscreen TFT utilizzato per visualizzare tutte le uscite e gli ingressi.
8 ingressi digitali sono resi disponibili tramite un connettore PCB a 2 x 8 vie e il loro stato viene visualizzato sullo schermo se tale funzione è selezionata. Questo è un semplice display on/off, rosso spento, verde acceso. Posso aggiungere oscillante come cambiamento futuro.
Sono inoltre disponibili 4 ingressi di tensione tramite l'intestazione del PCB e un partitore di tensione, la tensione visualizzata sullo schermo. Ogni tensione di ingresso sul pannello frontale, con riferimento alla massa comune, viene passata a un divisore di tensione diviso per 7 e quindi bufferizzata da uno dei quattro amplificatori operazionali in un TL074 configurato come amplificatore raddrizzatore, proprio per evitare incidenti con tensioni negative. Sarebbe bello aggiungere un'indicazione di polarità ad un certo punto, ma non questa volta. L'uscita da ciascun amplificatore operazionale è verso uno degli ingressi ADC dell'Arduino.
Un'ulteriore intestazione PCB espone le connessioni seriali e I2C. Ciò è stato fatto per consentire l'implementazione di una console di visualizzazione seriale e una funzione di identificazione I2C di base.
Gli ingressi digitali/di tensione potrebbero rivelarsi non tutti necessari, quindi possono essere riconfigurati per fornire uscite di commutazione digitali.
Arduino alimenta un array di resistenze su un partitore di tensione per fornire una funzionalità di misuratore di resistenza. L'uscita di questo viene bufferizzata da un amplificatore operazionale (mezzo TL072) prima di essere letta dall'Arduino e calcolata la resistenza. Lo scopo di questo non è una misurazione accurata della resistenza ma identificare rapidamente i valori della serie E24, sebbene con alcune calibrazioni potrebbe essere utilizzato come misuratore di base. La sua operazione consiste nel rilevare quando è presente una resistenza inferiore a 9M9 sulle due molle montate sul pannello frontale e quindi commutare selettivamente 5V su ciascun resistore nell'array del divisore fino a misurare il valore più vicino a 2,5V o selezionare l'ultimo resistore, un viene quindi effettuato il calcolo e il confronto per determinare il valore E24 più vicino. Il 5V proviene dalle uscite digitali 3-10 su Arduino che sono riconfigurate come ingressi ad alta impedenza tra ogni misurazione per ridurre al minimo gli errori. I pin Arduino D3-10 sono stati deliberatamente utilizzati in quanto un'aggiunta futura potrebbe essere un misuratore di capacità che utilizza la capacità PWM di queste uscite che potrebbe potenzialmente essere solo una modifica del software.
Una scheda INA3221 modificata fornisce misurazioni aggiuntive di tensione e corrente tramite l'interfaccia I2C con ingressi dal pannello frontale. Tutto è cablato tramite cavi jumper in modo che la riassegnazione delle funzioni sarà facile in futuro.
Passaggio 3: INA3221 Ingresso tensione/corrente
Questo era inteso come una soluzione rapida per fornire misurazioni di tensione/corrente nella scatola, ma si è scoperto che, come implementato sulla scheda che ho acquistato, era destinato a monitorare la carica della batteria, quindi doveva essere modificato per fornire tre misurazioni indipendenti. Se durante la creazione di questo progetto è possibile reperire una scheda INA3221 che implementa questo chip come da scheda tecnica, ciò non è necessario.
Guardando l'immagine, bisogna fare tre tagli nelle tracce del PCB per separare le resistenze di misura. Anche i pad per questi tre resistori devono essere tagliati per separarli dal resto del PCB. I resistori vengono quindi uniti ai pad saldando fili aggiuntivi come ponti. Sto documentando questo perché questa è una scheda comune e potrebbe essere l'unica disponibile.
I collegamenti alla scheda dal pannello frontale vengono quindi effettuati tramite cavi di collegamento sui resistori di misurazione.
L'alimentazione per la scheda è presa dai pin Arduino 5V così come la terra, con le connessioni I2C che vanno al PCB dell'elettronica.
Passaggio 4: lo schermo del display
Questo è stato un acquisto eBay e disponibile da molte fonti ed è un display alimentato da ILI9486. Ho scoperto che funzionava meglio con le librerie MCUFRIEND di David Prentice, ma deve essere calibrato prima dell'uso, il che richiedeva solo che uno degli esempi di libreria forniti da David venisse eseguito con lo schermo collegato, seguire le istruzioni sullo schermo e annotare i parametri visualizzati, inserendoli nel file di codice Arduino_Workstation_v01 se diverso.
Per questo progetto è essenziale un touch screen, che ruota attorno alla mancanza di interruttori dedicati e alla possibilità di aggiungere in futuro solo menu e funzioni senza troppi ricablaggi.
Passaggio 5: collegarlo insieme
L'Arduino Mega si trova sul lato sinistro del coperchio, con le sue porte USB e di alimentazione accessibili dall'esterno della custodia. Sulla RHS accanto all'Arduino c'è l'elettronica montata sulla scheda matrice e sopra questa è montata la scheda INA3221 sul retro del coperchio.
Anche sul retro del coperchio a sinistra sopra l'Arduino c'è una scheda di connessione a terra comune a cui sono collegate tutte le masse.
Il maggior numero possibile di cavi sono stati consolidati insieme in connettori a più vie. Ciò rende il collegamento dei circuiti molto più semplice e affidabile e il supporto reciproco dei connettori in un alloggiamento a più vie fornisce una migliore resistenza all'allentamento. Segue un elenco di questi consolidamenti.
Tutti i connettori sono stati aggiunti in modo logico dando il massimo accesso per effettuare connessioni con le mie dita goffe, lasciando le connessioni del pannello frontale fino alla fine, con le connessioni finali del display che passano attraverso il foro di montaggio per essere completate per ultime. Lo schermo è stato fissato in posizione con una cornice stampata in 3D.
Passaggio 6: lead consolidati
- Ingressi di tensione e resistenza alle porte ADC Arduino, cinque cavi da 20 cm con connettori maschi individuali su un'estremità consolidati in un alloggiamento a sei vie con uno spazio per accogliere lo spazio nelle intestazioni Arduino.
- Cavo a 4 vie da 10 cm da un alloggiamento a quattro vie a due alloggiamenti a 2 vie per collegare i pin di tensione sul pannello anteriore alla scheda del circuito.
- Cavo a 8 vie da 10 cm da un connettore maschio a 2x4 vie a un connettore femmina a 8 vie
- Cavo a 4 vie da 10 cm da alloggiamento femmina a 4 vie a alloggiamento femmina a 4 vie per collegare Seriale e I2C al pannello frontale
- Cavo a 4 vie da 10 cm dalla custodia a 4 vie a quattro connettori singoli per collegare INA3221 al pannello frontale
- Cavo a 4 vie da 20 cm per collegare l'alloggiamento femmina a quattro vie all'alloggiamento maschio a quattro vie per prendere Serial e I2C da Arduino al fan-out del circuito.
- Cavo a 8 vie da 10 cm da alloggiamento femmina a 8 vie a alloggiamento femmina a 8 vie per ricevere gli ingressi digitali dal pannello frontale alla scheda elettronica.
- Cavo a 8 vie da 10 cm per collegare l'alloggiamento femmina a 8 vie a un alloggiamento maschio a 3 vie e un alloggiamento maschio a 5 vie per collegare il divisore di resistenza alla scheda. I due alloggiamenti sono utilizzati per accogliere lo spazio non standard nelle intestazioni sulla scheda Arduino.
- Cavo a 2 vie da 20 cm per il collegamento della custodia femmina a 2 vie a due connettori singoli maschio per l'alimentazione INA3221.
- Cavo a 2 vie da 10 cm per portare la custodia femmina a 2 vie a due custodie singole femmina per collegare la terza connessione del monitor INA3221 al pannello frontale.
- Cavo a 2 vie da 10 cm per collegare l'alloggiamento femmina a 2 vie all'alloggiamento femmina a 2 vie per collegare l'INA3221 alle connessioni fanout I2C.
Passaggio 7: codice Arduino
Questo progetto si basa sull'Arduino Mega 2650 per il semplice motivo che volevo molte porte I/O dedicate alle attività in un formato semplice. Le librerie per il touchscreen TFT supportano di default Arduino Uno e devono essere modificate per supportare Mega. La modifica delle librerie è supportata dall'autore del codice TFT originale, è semplice e descritta nel passaggio successivo.
L'utilizzo di un display touchscreen è alla base di questa parte del progetto, ma poiché il display utilizzato da qualcuno potrebbe essere diverso da quello che ho utilizzato, il codice inserisce solo funzioni specifiche dell'hardware in routine separate in modo da identificare tutte le modifiche necessarie.
Una versione funzionante del codice è inclusa qui e verrà aggiornata, ma gli aggiornamenti più recenti saranno su github.
La funzione principale del codice ruota attorno al display, ogni elemento sul display ha una voce in un unico array che contiene il tipo di elemento, dove sullo schermo viene visualizzato, colore e parametri aggiuntivi come la sorgente di input. Uno screenshot di questo array con commenti è mostrato sopra. Contiene anche un campo per controllare se deve essere visualizzato o meno sullo schermo. Modificando questo array, è possibile aggiungere nuove funzionalità o rimuovere funzionalità. La routine 'loop' del codice attraversa questo array su base continua, elaborando ogni elemento idoneo in sequenza e poi ripetendosi. Attualmente ci sono 6 diversi elementi.
Elementi di menu - questi non visualizzano informazioni ma quando vengono toccati eseguono una subroutine associata, identificata nei parametri dell'elemento
Elementi digitali: vengono visualizzati come una casella sullo schermo in rosso o verde a seconda dello stato del pin di ingresso digitale associato. La console di esempio è cablata per 8 pin digitali, ma questo può essere aumentato o diminuito a piacimento.
Elementi analogici: visualizzano una tensione approssimativa misurata sul pin analogico associato. Quattro sono originariamente specificati.
Elementi di precisione: visualizza l'input da un modulo voltmetro/corrente di precisione esterno. Ce ne sono solo tre ma si potrebbe aggiungere un secondo o un terzo modulo.
Elemento di resistenza - questo è un singolo elemento che mostra l'input dal misuratore di resistenza.
Tocco: questa è l'unica routine che viene sempre eseguita per rilevare se lo schermo è stato toccato e quindi prendere una decisione in base a ciò che è stato toccato. vale a dire se una voce di menu, cosa comporta che venga visualizzata successivamente.
Lo schermo ha tre modalità di stato, normale, grande e schermo intero e tutti gli elementi cambiano il loro funzionamento a seconda dello stato. Le tre modalità sono selezionabili dal menu toccando un elemento e l'opzione di menu associata.
Modalità normale: visualizza 8 ingressi digitali, quattro ingressi di tensione analogici, tre elementi di precisione, l'elemento di resistenza e quattro elementi di menu. Selezionando Normale dal menu si mette il display in questa modalità.
Modalità Grande: viene selezionata toccando uno degli elementi sullo schermo seguito da Grande. Quando selezionato, quel tipo di elemento è l'unico tipo selezionato e gli elementi di quel tipo vengono riorganizzati per riempire l'intero schermo.
Modalità a schermo intero: viene selezionata toccando uno degli elementi sullo schermo seguito da Schermo intero. Quando selezionato, quell'elemento è l'unico elemento visualizzato e viene riorganizzato per riempire l'intero schermo dando la massima visibilità di quell'elemento.
Per aggiungere funzionalità aggiuntive, è necessario aggiungere le seguenti routine
routine 'disegna' che viene chiamata per ottenere le informazioni per quell'elemento, chiama la routine di aggiornamento dello schermo appropriata e registra le informazioni tattili restituite
routine 'logica' che accetta le informazioni dalla routine di disegno e utilizza le routine del driver dello schermo appropriate per inserire le informazioni sullo schermo e restituire le informazioni tattili corrette per l'area dello schermo disegnata
routine 'setup' che viene chiamata come parte della configurazione di Arduino
Possono essere incluse altre routine ma non dovrebbe esserci alcuna interdipendenza tra il codice dell'elemento, se un elemento non è stato abilitato il suo codice non dovrebbe essere eseguito e la semplice struttura multifunzionale mantiene la sua integrità.
Passaggio 8: modifica delle librerie Arduino
Il display che ho usato funziona molto bene con Arduino Uno e le librerie di base scritte per esso, ma funziona lentamente quando viene trasferito direttamente su Arduino Mega. Per pilotare correttamente il display, è necessario utilizzare un diverso set di pin dati e questo cambio di utilizzo deve essere impostato nelle librerie. Questa è una semplice modifica ed è stata voluta dall'autore. Le immagini evidenziano le modifiche apportate.
I due file sono archiviati nella cartella MCUFRIEND_kbv\utility come mcufriend_shield.he mcufriend_special.h. Le modifiche richieste riguardano prima il file di intestazione "scudo" per garantire che la prima riga sia letta
#define USE_SPECIAL
per garantire che il file di intestazione 'speciale' sia caricato.
Anche il file di intestazione "speciale" deve essere aggiornato per garantire che la riga
#define USE_MEGA_8BIT_PROTOSHIELD
non è commentato.
Queste due modifiche significano che il codice del display per questo display funzionerà utilizzando i pin 20-29 su Arduino Mega invece del 3-10 predefinito su Uno.
Passaggio 9: schermate
Ho messo qui le schermate in modo che sia facile vedere cosa dovrebbe fare la console. La sezione successiva si riferisce al caricamento del codice in Arduino.
La prima schermata mostra la schermata "normale" con i menu nella parte superiore, le misurazioni della tensione sulla sinistra, le misurazioni della tensione e della corrente sulla destra e lo stato dei pin digitali nella parte inferiore, rosso per "falso/basso", verde per "vero/alto". '. Infine al centro c'è la misurazione della resistenza.
La seconda schermata mostra gli ingressi digitali abilitati in modalità Large, ogni ingresso chiaramente visualizzato.
La terza schermata mostra gli ingressi di tensione in modalità Large.
Passaggio 10: caricamento del codice Arduino
Il codice è allegato, ma come accennato in precedenza verrà inviato a github a un certo punto e la posizione aggiunta qui. Il file del codice sorgente principale è Arduino_Workbench_v01.ino e le altre routine servono a fornire le varie funzionalità.
Se le librerie sono state modificate correttamente e Arduino Mega2650 è stato impostato come piattaforma di destinazione nell'IDE Arduino, il codice dovrebbe essere compilato la prima volta.
Le librerie che dovranno essere caricate sono le librerie Adafruit GFX e Touchscreen che dovrebbero essere disponibili dal gestore della libreria Arduino, una copia di MCUFRIEND_kbv scaricabile da github e per l'INA3221, la libreria SwitchDocLabs SDL_Arduino_INA3221 scaricabile anche da github, entrambe escono rapidamente su una ricerca su google.
Passaggio 11: ritocchi finali
L'idea è di utilizzarlo per il lavoro di progetto quindi è stato realizzato un pannello rimovibile composto da bulloni di montaggio per schede Arduino e una breadboard, il tutto attaccato al coperchio tramite velcro per renderli staccabili e in modo che si possano realizzare diverse schede per contenere progetti e che la scatola può essere riutilizzata per diversi progetti in esecuzione contemporaneamente.
Mi aspetto che questa sarà una fonte per alcune idee per fare qualcosa di diverso, migliore o entrambi. Aggiungerò le funzionalità aggiuntive che ho menzionato e le aggiungerò, ma se questo è di aiuto, per favore prendi quello che vuoi e divertiti. Se ci sono problemi evidenti, per favore fatemelo sapere.
Adesso vado avanti e lo uso, ho alcuni progetti su cui lavorare!
Consigliato:
Facile BLE a bassissima potenza in Arduino Parte 2 -- Monitoraggio temperatura/umidità -- Rev 3: 7 passaggi
Easy Very Low Power BLE in Arduino Part 2 -- Temperature/Humidity Monitor -- Rev 3: Aggiornamento: 23 novembre 2020 – Prima sostituzione di 2 batterie AAA dal 15 gennaio 2019, ovvero 22 mesi per 2 batterie alcaline AAA Aggiornamento: 7 aprile 2019 – Rev 3 di lp_BLE_TempHumidity, aggiunge grafici di data/ora, utilizzando pfodApp V3.0.362+ e l'auto throttling quando
Arduino-tomation Parte 5: LE TUNNEL DE CHAUFFE: 4 passaggi
Arduino-tomation Parte 5: LE TUNNEL DE CHAUFFE: Due mesi fa ho deciso di aggiornare un piccolo sistema dimenticato immagazzinato nel magazzino del luogo in cui lavoro. Questo sistema è stato realizzato per riscaldare e riscaldare dispositivi elettronici o qualsiasi altra cosa messa a temperatura elevata speciale resiste al nastro trasportatore. Così ho creato un
Arduino-tomation Parte 4: TRI DE BRIQUE: 5 passaggi
Arduino-tomation Parte 4: TRI DE BRIQUE: In questo Instructables ti parlerò di un'altra macchina retrofit e controllata da una scheda clone Arduino composta da un Atmega1284p. Questa scheda può supportare uno shield ethernet e può essere supervisionata da uno SCADA (AdvancedHMI, Unigo) o da un industriale
Arduino LTC6804 BMS - Parte 2: Balance Board: 5 passaggi
Arduino LTC6804 BMS - Parte 2: Balance Board: la parte 1 è quiUn sistema di gestione della batteria (BMS) include funzionalità per rilevare importanti parametri del pacco batteria tra cui tensioni delle celle, corrente della batteria, temperature delle celle, ecc. Se uno di questi è fuori da un pre- gamma definita, il pacchetto può essere discoteca
Rendere l'elettronica e la programmazione facili da imparare con Visual DIY Workbench: 3 passaggi
Rendere l'elettronica e la programmazione facili da imparare con Visual DIY Workbench: hai mai desiderato ispirare i bambini a conoscere l'elettronica e i microcontrollori? Ma il problema comune che spesso affrontiamo è che la conoscenza di base del campo è piuttosto difficile da comprendere per i bambini piccoli. Ci sono alcuni circuiti stampati su