Taula de continguts:

Arduino Portable Workbench Part 3: 11 passos
Arduino Portable Workbench Part 3: 11 passos

Vídeo: Arduino Portable Workbench Part 3: 11 passos

Vídeo: Arduino Portable Workbench Part 3: 11 passos
Vídeo: Lesson 1: What is Arduino? Types of Arduino Boards and SunFounder Kit | SunFounder Robojax 2024, Juliol
Anonim
Arduino Portable Workbench Part 3
Arduino Portable Workbench Part 3
Arduino Portable Workbench Part 3
Arduino Portable Workbench Part 3

Si heu vist les parts 1, 2 i 2B, fins ara no hi ha hagut molt Arduino en aquest projecte, però només hi ha alguns cables de taulers, etc., i la part d’infraestructura s’ha de construir abans treballs de descans.

Es tracta del codi electrònic i Arduino. La instrucció 2B anterior llista els detalls de la font d'alimentació.

Aquesta secció equipa el banc de treball portàtil amb les funcions següents

Una pantalla tàctil TFT que proporciona una pantalla, impulsada per un Arduino Mega per proporcionar el següent

  1. 8 pantalles digitals, apagades / enceses / oscil·lants
  2. 4 pantalles de tensió
  3. 3 pantalles de corrent / tensió
  4. Mesurador de resistència E24 (perquè ja no puc llegir les bandes de colors)

Hi afegiré altres coses, però aquest era el meu objectiu inicial. El codi Arduino també inclou una pantalla sèrie, pantalla I2C, mesurador de capacitat, commutadors digitals i oscil·loscopi que aniré afegint a mesura que passi el temps. Tampoc no he decidit si val la pena afegir una font d’alimentació de 3V3, una font d’alimentació variable o un control de tensió / corrent d’alimentació. Fins ara això s'ha construït utilitzant el Mega, però també estic pensant en moure algunes de les funcions per separar els circuits d'accés a l'I2C, ja siguin xips dedicats o Atmel 328 programats, que s'adaptaran més fàcilment a un controlador diferent.

Subministraments

Preses de capçal de 5 x 16 vies

Preses dupont de 5 x 8 vies, realment fetes de sòcols llargs de 40 vies senzills en línia tallats fins a la longitud necessària

Pantalla tàctil TFT 1 x 3,5 ILI9486

1 x Arduino Mega 2650

Components individuals

Segons el text, el valor d'alguns d'aquests no està absolutament fixat i, si us perdeu, no caldrà fer cap funció:)

Entrada digital

Resistències de 16 x 10K

Entrada analògica

1 x TL074 un quad jfet opamp, això és el que tenia com a recanvi, qualsevol cosa similar farà:)

4 x 68K i 4 x 430k resistències utilitzades com a divisors de tensió.

4 x 1N4001 o similar

Mesurador de resistència

1 x TL072 un opamp jfet dual, això és el que tenia com a recanvi, qualsevol cosa semblant farà:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (Si es canvien aquests valors, cal actualitzar el codi Arduino)

Pas 1: Visió general de l'electrònica

Visió general de l'electrònica
Visió general de l'electrònica
Visió general de l'electrònica
Visió general de l'electrònica
Visió general de l'electrònica
Visió general de l'electrònica
Visió general de l'electrònica
Visió general de l'electrònica

La consola gris la vaig fabricar fa 30 anys i encara s’utilitza regularment, però els temps han anat passant. Proporciona dues fonts d’alimentació a l’esquerra, un amplificador d’àudio central al mig, amb altaveu intern i un oscil·lador a l’esquerra. Actualment, la majoria dels meus circuits només necessiten la font d'alimentació i, només, el rail positiu. Calia una cosa diferent, a més de l’etiquetatge sense el qual he viscut, bé ho he aconseguit.

Els requisits principals per a l'electrònica de la caixa del projecte eren alimentar circuits més nous mitjançant Arduino o Raspberry PI, de manera que el 5V era essencial, igual que els endolls USB. Els interruptors il·luminats em diuen si l’alimentació està encesa o no i, quan faig proves, he de construir regularment petits circuits auxiliars per mostrar temporalment l’estat. Tinc una caixa de mesuradors voluminosos que ocupen molt espai al banc i, sobretot, necessito una pantalla que pugui llegir fàcilment a mesura que la meva vista es deteriora, alguna cosa amb grans personatges brillants. Per tant, necessito pantalles digitals, mesuradors de tensió, mesuradors de corrent i, en aquest cas, una mica de luxe en forma de mesurador de resistència per identificar ràpidament les resistències de la sèrie E24, tot a menys de 15 cm de la placa de treball del projecte i en una funda compacta i portàtil.

La font d'alimentació principal, descrita en un article anterior, proporciona energia a la tapa mitjançant un cable de cinta de 40 vies que permet connectar els dos mentre la tapa està tancada. Això proporciona subministraments commutats de 5v i 12V per a l'electrònica del panell i per subministrar la placa de control.

Totes les entrades de potència i senyal són proveïdes per endolls de capçalera PCB 2x8way en paral·lel amb un endoll dupont de 8 vies. Probablement és excessiu, la majoria de taulers de suport tenen rails elèctrics, però era fàcil de fer.

A les preses d’alimentació, el carril principal de 0V de la font d’alimentació és comú a tots els subministraments i està disponible. A sobre hi ha una font d'alimentació de 5 V, encesa la unitat base, i a sobre hi ha dos subministraments subministrats de + 12V i -12V, que actualment estan fixats, tot i que tinc la idea de piratejar el subministrament per fer-lo variable i proporcionar un 3.3-20V subministrament variable.

Pas 2: l'electrònica

L’Electrònica
L’Electrònica
L’Electrònica
L’Electrònica
L’Electrònica
L’Electrònica

He publicat serigrafies de la distribució de la taula de visualització, l’aspecte del circuit quan es construeix a la placa matricial, un esquema en format PDF i els fitxers Fritzing originals. Aquesta electrònica no és especialment complexa i està disponible per muntar resistències limitadores, amplificadors de memòria intermèdia i connexions de ventilador per a la placa Arduino. Però hi ha diverses imatges per mostrar les connexions una mica més clarament. La major part del cablejat es compon de longituds estàndard de cable de cinta dupont pre-arrebossat que es tornen a muntar en carcasses multivies per fer-les més fàcils de tornar a endollar i ser més fiables.

L'Arduino Mega 2650 està muntat a la tapa amb la presa USB disponible per programar. Condueix la pantalla tàctil TFT que s’utilitza per mostrar totes les entrades i sortides.

Hi ha 8 entrades digitals disponibles mitjançant una capçalera de PCB de 2 x 8 vies i el seu estat es mostra a la pantalla si aquesta funció està seleccionada. Es tracta d’una pantalla d’encès / apagat simple, vermell apagat, verd encès. Puc afegir oscil·lant com a canvi futur.

També hi ha disponibles 4 entrades de tensió mitjançant la capçalera del PCB i un divisor de tensió, el voltatge que es mostra a la pantalla. Cada voltatge d'entrada del tauler frontal, en referència a la terra comuna, es passa a un divisor per un divisor de voltatge de 7 i després es memòria intermèdia mitjançant un dels quatre amplificadors operatius en un TL074 configurat com a amplificador rectificador, només per evitar accidents amb tensions negatives.. Estaria bé afegir una indicació de polaritat en algun moment, però no aquesta vegada. La sortida de cada amplificador operatiu és a una de les entrades ADC de l'Arduino.

Una altra capçalera de PCB exposa les connexions tant sèrie com I2C. Això es va fer per permetre la implementació d'una consola de visualització en sèrie i una funció bàsica d'identificació I2C.

És possible que les entrades de tensió / digitals no siguin totes necessàries, de manera que es poden tornar a configurar per proporcionar sortides de commutació digitals.

L'Arduino alimenta una matriu de resistència en un divisor de voltatge per proporcionar una funcionalitat de mesurador de resistència. La sortida d’això és emmagatzemada per un amplificador operatiu (mig TL072) abans de ser llegit per l’Arduino i es calcula la resistència. L’objectiu no és mesurar la resistència amb precisió, sinó identificar ràpidament els valors de la sèrie E24, tot i que amb una certa calibració es podria utilitzar com a mesurador bàsic. El seu funcionament consisteix a detectar quan hi ha una resistència inferior a 9M9 a les dues molles muntades al tauler frontal i, a continuació, canviar selectivament 5V a cada resistència de la matriu divisòria fins que es mesuri el valor més proper a 2,5V o l’última resistència seleccionada, a continuació, es fa el càlcul i la comparació per determinar el valor E24 més proper. El 5V s’obté de les sortides digitals 3-10 de l’Arduino que es configuren com a entrades d’alta impedància entre cada mesura per minimitzar els errors. Els pins Arduino D3-10 es van utilitzar deliberadament, ja que una addició futura podria ser un mesurador de capacitat que utilitza la capacitat PWM d’aquestes sortides que potencialment només podrien ser un canvi de programari.

Una placa INA3221 modificada proporciona mesures de tensió i corrent addicionals a través de la interfície I2C amb entrades del tauler frontal. Tot es connecta mitjançant cables jumper perquè la reassignació de funcions sigui més fàcil en el futur.

Pas 3: INA3221 Entrada de tensió / corrent

INA3221 Entrada de tensió / corrent
INA3221 Entrada de tensió / corrent

Això es pretenia com una solució ràpida per proporcionar mesures de tensió / corrent a la caixa, però va resultar que, tal com es va implementar a la placa que vaig comprar, es pretenia controlar la càrrega de la bateria, de manera que s’havia de modificar per proporcionar tres mesures independents. Si en construir aquest projecte podeu obtenir una placa INA3221 que implementi aquest xip segons el full de dades, no serà necessari.

Mirant la imatge, s'han de fer tres talls a les traces del PCB per separar les resistències de mesura. Els coixinets d’aquestes tres resistències també s’han de tallar per separar-los de la resta del PCB. Les resistències s’uneixen a les pastilles soldant cables addicionals com a ponts. Ho estic documentant perquè es tracta d’un tauler comú i pot ser l’únic disponible.

Les connexions a la placa des del tauler frontal es realitzen a través de cables de pont a través de les resistències de mesura.

La potència de la placa es pren dels pins Arduino de 5 V igual que el sòl, amb les connexions I2C que van a la placa electrònica.

Pas 4: la pantalla

La pantalla de visualització
La pantalla de visualització

Es tracta d'una compra d'eBay, disponible en moltes fonts, i és una pantalla alimentada per ILI9486. Vaig trobar que funcionava millor amb les biblioteques MCUFRIEND de David Prentice, però cal calibrar-les abans d’utilitzar-les, cosa que només requeria que s’executés un dels exemples de biblioteca proporcionats per David amb la pantalla connectada, seguiu les instruccions de la pantalla i anoteu els paràmetres mostrats, inserint-se al fitxer de codi Arduino_Workstation_v01 si és diferent.

Per a aquest projecte és fonamental una pantalla tàctil, que gira al voltant de no tenir commutadors dedicats i la possibilitat d'afegir menús i funcions en el futur sense necessitat de tornar a cablejar.

Pas 5: connectar-lo junts

Connectant-ho junts
Connectant-ho junts
Connectant-ho junts
Connectant-ho junts
Connectant-ho junts
Connectant-ho junts

L'Arduino Mega està situat al LHS de la tapa, amb els seus ports USB i d'alimentació accessibles des de fora de la caixa. Al RHS, al costat de l'Arduino, hi ha l'electrònica muntada a la placa matriu i, damunt, es troba la placa INA3221 a la part posterior de la tapa.

També a la part posterior de la tapa del LHS sobre Arduino hi ha una placa de connexió a terra comuna a la qual estan connectades totes les bases.

El màxim nombre de conductors possibles es van consolidar junts en connectors multipista. Això fa que connectar els circuits sigui molt més fàcil i fiable i que el suport mutu dels connectors en una carcassa multipista proporciona una resistència millorada a la solta. A continuació es mostra una llista d’aquestes consolidacions.

Tots els connectors es van afegir de manera lògica, donant el màxim accés per fer connexions amb els meus maldestres dits, deixant les connexions del panell frontal fins al final, passant les connexions finals de la pantalla a través del forat de muntatge per completar-les en última instància. La pantalla es va fixar al seu lloc amb un bisell imprès en 3D.

Pas 6: clients potencials consolidats

Leads consolidats
Leads consolidats
  1. Entrades de tensió i resistència als ports Arduino ADC, cinc cables de 20 cm amb connectors masculins individuals en un extrem consolidats en una carcassa de sis vies amb un buit per acomodar el buit als capçalers Arduino.
  2. Cable de 4 vies de 10 cm des d'una carcassa de quatre vies fins a dues carcasses de 2 vies per connectar els pins de tensió del tauler frontal a la placa de circuits.
  3. Cable de 8 vies de 10 cm des d’una capçalera masculina de 2x4 vies fins a una capçalera femenina de 8 vies
  4. Cable de 4 vies de 10 cm des de la carcassa femenina de 4 vies fins a la carcassa femenina de 4 vies per connectar Serial i I2C al panell frontal
  5. Cable de 4 vies de 10 cm des de la carcassa de 4 vies fins a quatre connectors individuals per connectar INA3221 al tauler frontal
  6. Cable de 4 vies de 20 cm per connectar un allotjament femení de quatre vies a un allotjament masculí de quatre vies per portar Serial i I2C des d’Arduino al ventilador de la placa de circuit.
  7. Cable de 8 vies de 10 cm des de la carcassa femenina de 8 vies fins a la carcassa femenina de 8 vies per prendre entrades digitals des del tauler frontal fins a la placa de circuits.
  8. Cable de 8 vies de 10 cm per portar allotjament femení de 8 vies a un allotjament masculí de 3 vies i un allotjament masculí de 5 vies per connectar el divisor de resistència a la placa de circuit. Els dos allotjaments s’utilitzen per acomodar el buit no estàndard a les capçaleres de la placa Arduino.
  9. Cable de 2 vies de 20 cm per portar allotjament femení de 2 vies a dos connectors masculins individuals per a la font d’alimentació INA3221.
  10. Cable de 2 vies de 10 cm per portar carcassa femenina de 2 vies a dues carcasses individuals per connectar la tercera connexió del monitor INA3221 al tauler frontal.
  11. Cable de 2 vies de 10 cm per portar allotjament femení de 2 vies a allotjament femení de 2 vies per connectar l'INA3221 a les connexions del ventilador I2C.

Pas 7: Codi Arduino

Codi Arduino
Codi Arduino
Codi Arduino
Codi Arduino

Aquest projecte es basa en l’Arduino Mega 2650 per la senzilla raó per la qual volia molts ports d’E / S dedicats a tasques en un format senzill. Les biblioteques de la pantalla tàctil TFT per defecte són compatibles amb l’Arduino Uno i s’han d’editar per admetre el Mega. L’edició de les biblioteques és compatible amb l’autor original del codi TFT, és senzilla i es descriu al següent pas.

L’ús d’una pantalla tàctil és la base d’aquesta part del projecte, però com que la pantalla que algú acaba utilitzant pot ser diferent de la que he utilitzat, el codi només situa funcions específiques de maquinari en rutines separades, de manera que es poden identificar totes les modificacions necessàries.

Aquí s’inclou una versió de treball del codi que s’actualitzarà, però les actualitzacions més recents seran a github.

La funció principal del codi gira al voltant de la pantalla, cada element de la pantalla té una entrada en una única matriu que conté el tipus d’element, on a la pantalla mostra, color i paràmetres addicionals, com ara la font d’entrada. A la part superior es mostra una captura de pantalla d’aquesta matriu amb comentaris. També conté un camp per controlar si es mostra o no a la pantalla. En editar aquesta matriu, es poden afegir noves funcions o eliminar-se. La rutina de "bucle" del codi funciona a través d'aquesta matriu de forma contínua, processant cada element elegible de manera seqüencial i després repetint-se. Actualment hi ha 6 elements diferents.

Elements del menú: no mostren informació, però quan es toca executeu una subrutina associada, identificada als paràmetres de l'element

Elements digitals: es mostren com a quadre a la pantalla en vermell o verd, segons l'estat del pin d'entrada digital associat. La consola d'exemple està connectada a 8 pins digitals, però es pot augmentar o disminuir segons es desitgi.

Elements analògics: mostren un voltatge aproximat mesurat al pin analògic associat. Quatre s’especifiquen originalment.

Elements de precisió: mostren l'entrada d'un mòdul extern de mesurament de voltatge / corrent de precisió. Només n’hi ha tres, però es podria afegir un segon o tercer mòdul.

Element de resistència: es tracta d'un element únic que mostra l'entrada del mesurador de resistència.

Tàctil: aquesta és l'única rutina que s'executa sempre per detectar si s'ha tocat la pantalla i després prendre una decisió en funció del que s'ha tocat. és a dir, si es tracta d'un element de menú, què implica que es mostri a continuació.

La pantalla té tres modes d'estat, normal, gran i pantalla completa i tots els elements canvien el seu funcionament en funció de l'estat. Els tres modes es poden seleccionar al menú tocant un element i l'opció de menú associada.

Mode normal: mostra 8 entrades digitals, quatre entrades de tensió analògica, tres elements de precisió, l'element de resistència i quatre elements de menú. Si seleccioneu Normal al menú, la pantalla entrarà en aquest mode.

Mode gran: es selecciona tocant qualsevol dels elements de la pantalla seguit de gran. Quan es selecciona, aquest tipus d'element és l'únic tipus seleccionat i els elements d'aquest tipus es reordenen per omplir tota la pantalla.

Mode de pantalla completa: se selecciona tocant qualsevol dels elements de la pantalla seguit de Pantalla completa. Quan es selecciona, aquest element és l'únic element que es mostra i es reordena per omplir tota la pantalla donant la màxima visibilitat d'aquell element.

Per afegir funcionalitats addicionals, cal afegir les rutines següents

rutina "dibuixar" que es diu per obtenir la informació d'aquest element, trucar a la rutina d'actualització de pantalla adequada i registrar la informació tàctil retornada

rutina 'lògica' que accepta la informació de la rutina de dibuix i utilitza les rutines adequades del controlador de pantalla per posar la informació a la pantalla i retornar la informació tàctil correcta per a l'àrea de la pantalla dibuixada

rutina 'setup' que s'anomena part de la configuració d'Arduino

Es poden incloure altres rutines, però no hi hauria d’haver cap interdependència entre el codi de l’element, si un element no s’ha habilitat, el codi no s’hauria d’executar i la simple estructura multifuncional conserva la seva integritat.

Pas 8: Edició de les biblioteques Arduino

Edició de les biblioteques Arduino
Edició de les biblioteques Arduino
Edició de les biblioteques Arduino
Edició de les biblioteques Arduino

La pantalla que he fet servir funciona molt bé amb l’Arduino Uno i les biblioteques base escrites per a ella, però funciona lentament quan es transfereix directament a l’Arduino Mega. Per conduir correctament la pantalla, s’ha d’utilitzar un conjunt diferent de pins de dades i s’ha de configurar aquest canvi d’ús a les biblioteques. Es tracta d’un canvi senzill i va ser dissenyat per l’autor. Les imatges ressalten els canvis realitzats.

Els dos fitxers s’emmagatzemen a la carpeta MCUFRIEND_kbv / utility com a mcufriend_shield.h i mcufriend_special.h. Els canvis necessaris són els primers al fitxer de capçalera 'shield' per garantir que es llegeixi la primera línia

#define USE_SPECIAL

per assegurar-se que es carrega el fitxer de capçalera "especial".

El fitxer de capçalera "especial" també s'ha d'actualitzar per garantir que la línia

#define USE_MEGA_8BIT_PROTOSHIELD

no està comentat.

Aquests dos canvis signifiquen que el codi de visualització d’aquesta pantalla funcionarà mitjançant els pins 20-29 de l’Arduino Mega en lloc del 3-10 per defecte de l’Uno.

Pas 9: captures de pantalla

Captures de pantalla
Captures de pantalla
Captures de pantalla
Captures de pantalla
Captures de pantalla
Captures de pantalla

He posat captures de pantalla aquí perquè sigui fàcil veure què hauria de fer la consola. La següent secció fa referència a la càrrega del codi a l'Arduino.

La primera pantalla mostra la pantalla "normal" amb menús a la part superior, mesures de voltatge a la LHS, mesures de tensió i corrent a la RHS i l'estat del pin digital a la part inferior, vermell per a "fals / baix", verd per a "veritable / alt" '. Finalment, al centre hi ha la mesura de resistència.

La segona pantalla mostra les entrades digitals habilitades en mode gran, cada entrada es mostra clarament.

La tercera pantalla mostra les entrades de tensió en mode gran.

Pas 10: carregant el codi Arduino

El codi s'adjunta, però, com s'ha esmentat anteriorment, es posarà a github en algun moment i s'afegirà la ubicació aquí. El fitxer de codi font principal és Arduino_Workbench_v01.ino i les altres rutines són les que proporcionen les diverses funcions.

Si les biblioteques s'han modificat correctament i l'Arduino Mega2650 s'ha definit com a plataforma de destinació a l'IDE Arduino, el codi s'hauria de compilar per primera vegada.

Les biblioteques que s’hauran de carregar són les biblioteques Adafruit GFX i Touchscreen que haurien d’estar disponibles al gestor de biblioteques Arduino, una còpia de MCUFRIEND_kbv descarregable des de github i per a l’INA3221, la biblioteca SwitchDocLabs SDL_Arduino_INA3221 també descarregable de github. una cerca a Google.

Pas 11: tocs finals

Tocs finals
Tocs finals
Tocs finals
Tocs finals
Tocs finals
Tocs finals
Tocs finals
Tocs finals

La idea és utilitzar-lo per a treballs de projecte, de manera que s’ha creat un panell extraïble que inclou perns de muntatge per a taules Arduino i una placa de pa, tot el conjunt fixat a la tapa mitjançant un velcro perquè es puguin desmuntar i que es puguin fer diferents taules per contenir projectes i que la caixa es pot reutilitzar per a diferents projectes que s’executen simultàniament.

Espero que aquesta sigui una font per a algunes idees per fer alguna cosa diferent, millor o ambdues coses. Afegiré les funcions addicionals que he esmentat i les afegiré, però si és útil, si us plau, prengui el que vulgui i gaudeixi. Si hi ha algun problema flagrant, feu-me-ho saber.

Ara mateix continuaré fent-lo servir i el faré servir, tinc alguns projectes per treballar.

Recomanat: