Cuprins:

Arduino Portable Workbench Partea 3: 11 pași
Arduino Portable Workbench Partea 3: 11 pași

Video: Arduino Portable Workbench Partea 3: 11 pași

Video: Arduino Portable Workbench Partea 3: 11 pași
Video: Portable Electronics Workbench with 3D Printed Parts 2024, Iulie
Anonim
Arduino Portable Workbench Partea 3
Arduino Portable Workbench Partea 3
Arduino Portable Workbench Partea 3
Arduino Portable Workbench Partea 3

Dacă ați vizualizat părțile 1, 2 și 2B, până acum nu a existat prea mult Arduino în acest proiect, dar doar câteva fire de plăci etc. nu este vorba despre aceasta și partea de infrastructură trebuie construită înainte de lucrările de odihnă.

Acesta este codul electronic și Arduino. Anterior 2B instructabil listează detaliile sursei de alimentare.

Această secțiune completează bancul de lucru portabil cu următoarele caracteristici

Un ecran tactil TFT care oferă un afișaj, condus de un Arduino Mega pentru a furniza următoarele

  1. 8 afișaje digitale, oprit / pornit / oscilant
  2. 4 afișaje de tensiune
  3. 3 afișaje de curent / tensiune
  4. Rezistent E24 (pentru că nu mai pot citi benzile de culori)

Voi adăuga și alte lucruri, dar acesta a fost obiectivul meu inițial. Codul Arduino listează, de asemenea, un afișaj serial, afișaj I2C, contor de capacitate, comutatoare digitale și osciloscop pe care le voi adăuga pe măsură ce trece timpul. De asemenea, nu prea am decis dacă merită să adăugați o sursă de alimentare de 3V3, o sursă de alimentare variabilă sau monitorizarea tensiunii / curentului de alimentare. Până în prezent, acest lucru a fost construit folosind Mega, dar mă uit și la mutarea unor funcții pentru a separa circuitele accesate I2C, fie cipuri dedicate, fie Atmel 328 programate, care vor găzdui mai ușor un alt controler.

Provizii

Mufe antet 5 x 16 căi

Mufe dupont 5 x 8 căi, realizate de fapt din prize lungi cu 40 căi simple în linie tăiate la lungimea necesară

1 x ecran tactil ILI9486 TFT de 3,5"

1 x Arduino Mega 2650

Componente individuale

Conform textului, valoarea unora dintre acestea nu este absolut fixă și dacă pierdeți o funcție nu va fi deloc necesară:)

Intrare digitală

Rezistențe 16 x 10K

Intrare analogică

1 x TL074 un quad jfet opamp, asta am avut ca rezervă, ceva similar va face:)

4 x 68K și 4 x 430k rezistențe utilizate ca divizoare de tensiune.

4 x 1N4001 sau similar

Contor de rezistență

1 x TL072 un opamp jfet dublu, asta am avut ca rezervă, ceva similar va face:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (Dacă aceste valori sunt modificate, codul Arduino trebuie actualizat)

Pasul 1: Prezentare generală a produselor electronice

Prezentare generală a produselor electronice
Prezentare generală a produselor electronice
Prezentare generală a produselor electronice
Prezentare generală a produselor electronice
Prezentare generală a produselor electronice
Prezentare generală a produselor electronice
Prezentare generală a produselor electronice
Prezentare generală a produselor electronice

Consola gri a fost făcută de mine acum 30 de ani și este încă în uz regulat, dar vremurile au trecut. Oferă surse de alimentare duble în stânga, un amplificator audio central în mijloc, cu difuzor intern și un oscilator în stânga. În zilele noastre, majoritatea circuitelor mele au nevoie doar de sursa de alimentare și, numai, de șina pozitivă. A fost nevoie de ceva diferit, precum și de etichetarea fără de care am trăit, bine am reușit.

Principalele cerințe pentru electronica cutiei de proiect a fost alimentarea unor circuite mai noi folosind Arduino sau Raspberry PI, astfel încât 5V a fost esențial, la fel ca prizele USB. Comutatoarele iluminate îmi spun dacă este pornită sau nu, iar la testare trebuie să construiesc în mod regulat mici circuite auxiliare pentru a afișa temporar starea. Am o cutie de contoare voluminoase care consumă mult spațiu pe bancă și, mai presus de toate, am nevoie de un afișaj pe care să-l citesc cu ușurință pe măsură ce mi se deteriorează vederea, ceva cu caractere mari și luminoase. Așa că am nevoie de afișaje digitale, contoare de tensiune, contoare de curent și, în acest caz, un pic de lux sub forma unui contor de rezistență pentru a identifica rapid rezistențele din seria E24, toate la 15 cm de placa de proiect și într-o carcasă compactă și portabilă.

Alimentatorul principal, descris într-un articol anterior, furnizează energie capacului folosind un cablu cu bandă cu 40 de căi care permite conectarea celor două în timp ce capacul este închis. Aceasta asigură consumabile comutate de 5v și 12V pentru electronica panoului și pentru alimentarea panoului de control.

Toate intrările de putere și semnal sunt furnizate de prize de antet PCB 2x8way în paralel cu o priză dupont cu 8 căi. Acest lucru este, probabil, exagerat, majoritatea panourilor având șine de alimentare, dar a fost ușor de făcut.

Pe prizele de alimentare, șina principală 0V a sursei de alimentare este comună tuturor alimentărilor și este pusă la dispoziție. Deasupra acesta este o sursă de alimentare de 5V, pornită pe unitatea de bază, iar deasupra sunt două surse furnizate de + 12V și -12V, care sunt fixate în prezent, deși am o idee de a sparge sursa pentru a o face variabilă și a oferi un 3.3-20V aprovizionare variabilă.

Pasul 2: Electronica

Electronica
Electronica
Electronica
Electronica
Electronica
Electronica

Am postat serigrafii ale aspectului plăcii, cum arată circuitul atunci când este construit pe o placă matricială, o schemă ca PDF și fișierele Fritzing originale. Aceasta nu este o electronică deosebit de complexă și este acolo pentru a monta rezistențe de limitare, amplificatoare tampon și conexiuni de ventilare pentru placa Arduino. Dar există mai multe imagini care să arate mult mai clar conexiunile. Cea mai mare parte a cablajului a fost alcătuită din lungimi standard de cablu panglică dupont pre-sertizat reasamblat în carcase multiple pentru a le face atât mai ușor de re-conectat, cât și mai fiabile.

Arduino Mega 2650 este montat în capac cu mufa USB disponibilă pentru programare. Acționează ecranul tactil TFT folosit pentru a afișa toate ieșirile și intrările.

8 intrări digitale sunt puse la dispoziție printr-un antet PCB 2 x 8 căi și starea lor este afișată pe ecran dacă această funcție este selectată. Acesta este un afișaj simplu pornit / oprit, roșu oprit, verde pornit. Aș putea adăuga oscilant ca o schimbare viitoare.

4 intrări de tensiune sunt, de asemenea, puse la dispoziție prin antetul PCB și un divizor de tensiune, tensiunea afișată pe ecran. Fiecare tensiune de intrare de pe panoul frontal, cu referire la pământul comun, este trecută la o divizare de 7 divizor de tensiune și apoi tamponată de unul dintre cele patru amplificatoare op într-un TL074 configurat ca amplificator rectificator, doar pentru a evita accidentele cu tensiuni negative. Ar fi frumos să adăugați o indicație de polaritate la un moment dat, dar nu de data aceasta. Ieșirea de la fiecare op-amplificator este la una dintre intrările ADC ale Arduino.

Un alt antet PCB expune atât conexiunile seriale, cât și conexiunile I2C. Acest lucru a fost făcut pentru a permite implementarea unei console de afișare serială și a unei funcții de identificare de bază I2C.

Este posibil ca intrările de tensiune / digitale să nu fie toate necesare, astfel încât acestea pot fi reconfigurate pentru a furniza ieșiri de comutare digitale.

Arduino alimentează o matrice de rezistență pe un divizor de tensiune pentru a oferi o funcționalitate a contorului de rezistență. Ieșirea acestuia este tamponată de un amplificator opțional (o jumătate de TL072) înainte de a fi citită de Arduino și rezistența calculată. Scopul acestui lucru nu este măsurarea precisă a rezistenței, ci identificarea rapidă a valorilor seriei E24, deși cu o anumită calibrare ar putea fi utilizată ca contor de bază. Funcționarea este de a detecta când este prezentă o rezistență mai mică de 9M9 pe cele două arcuri montate pe panoul frontal și apoi comutați selectiv 5V la fiecare rezistor din matricea divizorului până când se măsoară valoarea cea mai apropiată de 2,5V sau când este selectat ultimul rezistor, o calculul și comparația se fac apoi pentru a determina cea mai apropiată valoare E24. 5V provine din ieșirile digitale 3-10 de pe Arduino, care sunt reconfigurate ca intrări de impedanță ridicată între fiecare măsurare pentru a minimiza erorile. Pinii Arduino D3-10 au fost folosiți în mod deliberat, deoarece o viitoare adăugare ar putea fi un contor de capacitate care utilizează capacitatea PWM a acestor ieșiri, care ar putea fi doar o schimbare de software.

O placă INA3221 modificată oferă măsurători suplimentare de tensiune și curent prin interfața I2C cu intrări de pe panoul frontal. Totul este conectat cu cabluri jumper, astfel încât realocarea funcțiilor să fie ușoară în viitor.

Pasul 3: INA3221 Intrare tensiune / curent

INA3221 Intrare tensiune / curent
INA3221 Intrare tensiune / curent

Aceasta a fost intenționată ca o soluție rapidă pentru a furniza măsurători de tensiune / curent în cutie, dar sa dovedit că, așa cum a fost implementat pe placa pe care am cumpărat-o, a fost destinat să monitorizeze încărcarea bateriei, astfel încât a trebuit să fie modificată pentru a furniza trei măsurători independente. Dacă atunci când construiți acest proiect puteți obține o placă INA3221 care implementează acest cip conform fișei tehnice, atunci nu este necesar.

Privind imaginea, trebuie făcute trei tăieturi în urmele PCB pentru a separa rezistențele de măsurare. Tampoanele pentru aceste trei rezistențe trebuie, de asemenea, tăiate pentru a le separa de restul PCB-ului. Rezistențele sunt apoi unite la tampoane prin lipirea unor fire suplimentare ca punți. Documentez acest lucru, deoarece acesta este un forum comun și poate fi singurul disponibil.

Conexiunile la placa de pe panoul frontal sunt apoi realizate prin cabluri jumper peste rezistențele de măsurare.

Puterea plăcii este preluată de la pinii Arduino 5V la fel ca și solul, conexiunile I2C mergând la placa electronică.

Pasul 4: ecranul de afișare

Ecranul de afișare
Ecranul de afișare

Aceasta a fost o achiziție eBay și disponibilă din mai multe surse și este un afișaj alimentat cu ILI9486. Am constatat că a funcționat cel mai bine cu bibliotecile MCUFRIEND ale lui David Prentice, dar trebuie calibrate înainte de utilizare, ceea ce necesită doar ca unul dintre exemplele de bibliotecă furnizate de David să fie rulat cu ecranul conectat, urmați instrucțiunile de pe ecran și scrieți parametrii afișați, inserând în fișierul de cod Arduino_Workstation_v01 dacă este diferit.

Pentru acest proiect este esențial un ecran tactil, acesta se rotește fără să aibă comutatoare dedicate și posibilitatea de a adăuga meniuri și funcții în viitor, fără prea multe cabluri.

Pasul 5: conectarea împreună

Conectând-o împreună
Conectând-o împreună
Conectând-o împreună
Conectând-o împreună
Conectând-o împreună
Conectând-o împreună

Arduino Mega este situat pe LHS-ul capacului, cu porturile USB și de alimentare accesibile din exteriorul carcasei. Pe RHS de lângă Arduino se află electronica montată pe placa matrice și deasupra acesteia este montată placa INA3221 pe partea din spate a capacului.

De asemenea, în partea din spate a capacului la LHS deasupra Arduino este o placă comună de conectare la masă la care sunt conectate toate terenurile.

Câți clienți potențiali au fost consolidați împreună în conectori multi-way. Acest lucru face ca conectarea circuitelor împreună să fie mult mai ușoară și mai fiabilă, iar sprijinul reciproc al conectorilor într-o carcasă cu mai multe căi oferă o rezistență îmbunătățită la eliberare. Urmează o listă a acestor consolidări.

Toți conectorii au fost adăugați într-un mod logic, oferind cel mai mare acces pentru a face conexiuni cu degetele mele stângace, lăsând conexiunile panoului frontal până la final, conexiunile finale ale afișajului trecând prin orificiul de montare pentru a fi finalizate ultima. Ecranul a fost fixat pe loc cu o ramă imprimată 3D.

Pasul 6: Oportunități consolidate

Oportunități consolidate
Oportunități consolidate
  1. Intrări de tensiune și rezistență la porturile Arduino ADC, cinci conductoare de 20 cm cu conectori masculi individuali la un capăt consolidate într-o carcasă cu șase căi, cu un spațiu pentru a găzdui spațiul din anteturile Arduino.
  2. Cablu cu 4 căi de 10 cm de la o carcasă cu patru căi la două carcase cu 2 căi pentru a conecta pinii de tensiune de pe panoul frontal la placa de circuit.
  3. Cablu 8 cai 10cm de la un antet masculin 2x4 cai la un antet feminin cu 8 căi
  4. Cablu cu 4 căi de 10 cm de la carcasă cu 4 căi pentru femeie la carcasă cu 4 căi pentru a conecta Serial și I2C la panoul frontal
  5. Cablu cu 4 căi de 10 cm de la carcasă cu 4 căi la patru conectori simpli pentru a conecta INA3221 la panoul frontal
  6. Cablu cu 4 căi de 20 cm pentru a conecta carcasa feminină cu patru căi la carcasa pentru bărbați cu patru căi pentru a lua Serial și I2C de la Arduino la ventilatorul plăcii de circuite.
  7. Cablu de 8 căi de 10 cm de la carcasa feminină de 8 căi la carcasa de 8 căi pentru femeie pentru a prelua intrările digitale de la panoul frontal la placa de circuit.
  8. Cablu cu 8 căi de 10 cm pentru a lua carcasa feminină cu 8 căi la o carcasă tată cu 3 căi și o carcasă tată cu 5 căi pentru a conecta divizorul de rezistență la placa de circuit. Cele două carcase sunt utilizate pentru a găzdui golul non-standard din anteturile de pe placa Arduino.
  9. Cablu cu 2 căi de 20 cm pentru a transporta carcasa feminină cu 2 căi la doi conectori masculi simpli pentru sursa de alimentare INA3221.
  10. Cablu cu 2 căi de 10 cm pentru a duce carcasa feminină cu 2 căi la două carcase simple pentru a conecta a treia conexiune a monitorului INA3221 la panoul frontal.
  11. Cablu cu 2 căi de 10cm pentru a transporta carcasa feminină cu 2 căi la carcasa cu 2 căi pentru a conecta INA3221 la conexiunile ventilatorului I2C.

Pasul 7: Cod Arduino

Cod Arduino
Cod Arduino
Cod Arduino
Cod Arduino

Acest proiect se bazează în jurul Arduino Mega 2650 din simplul motiv pentru care am dorit o mulțime de porturi I / O dedicate sarcinilor într-un format simplu. Bibliotecile pentru ecranul tactil TFT implicit acceptă Arduino Uno și trebuie editate pentru a suporta Mega. Editarea bibliotecilor este acceptată de autorul codului TFT original, este simplă și descrisă în pasul următor.

Folosirea unui afișaj cu ecran tactil este baza acestei părți a proiectului, dar pe măsură ce afișajul pe care cineva îl folosește poate fi diferit de cel pe care l-am folosit, codul plasează doar funcții specifice hardware în rutine separate, astfel încât toate modificările necesare pot fi identificate.

O versiune de lucru a codului este inclusă aici și va fi actualizată, dar cele mai recente actualizări vor fi pe github.

Funcția principală a codului se învârte în jurul afișajului, fiecare element de pe afișaj având o intrare într-o singură matrice care deține tipul de element, unde pe ecran afișează, culoare și parametri suplimentari, cum ar fi sursa de intrare. O captură de ecran a acestei matrice cu comentarii este prezentată mai sus. De asemenea, deține un câmp pentru a controla dacă urmează să fie afișat sau nu pe ecran. Prin editarea acestei matrice, pot fi adăugate funcții noi sau pot fi eliminate. Rutina „buclă” a codului trece prin această matrice în mod continuu, procesând fiecare element eligibil secvențial și apoi repetând. În prezent există 6 elemente diferite.

Elemente de meniu - acestea nu afișează informații, dar atunci când sunt atinse executați un subrutină asociat, identificat în parametrii elementului

Elemente digitale - se afișează ca o cutie pe ecran, fie roșie, fie verde, în funcție de starea pinului de intrare digital asociat. Consola de exemplu este conectată la 8 pini digitali, dar aceasta poate fi mărită sau micșorată după cum doriți.

Elemente analogice - afișează o tensiune aproximativă măsurată pe pinul analog asociat. Patru sunt specificate inițial.

Elemente de precizie - afișează intrarea de la un modul extern de precizie volt / curent. Există doar trei dintre acestea, dar ar putea fi adăugat un al doilea sau al treilea modul.

Element de rezistență - acesta este un singur element care afișează intrarea de la contorul de rezistență.

Atingere - aceasta este singura rutină care se execută întotdeauna pentru a detecta dacă ecranul a fost atins și apoi să ia o decizie pe baza a ceea ce a fost atins. de exemplu, dacă este un element de meniu, ce înseamnă că este afișat în continuare.

Ecranul are trei moduri de stare, normal, mare și ecran complet și toate elementele își schimbă funcționarea în funcție de stare. Cele trei moduri sunt selectabile din meniu atingând un element și opțiunea de meniu asociată.

Mod normal - afișează 8 intrări digitale, patru intrări analogice de tensiune, trei elemente de precizie, elementul de rezistență și patru elemente de meniu. Selectarea Normal din meniu afișează în acest mod.

Mod mare - este selectat atingând oricare dintre elementele de pe ecran urmat de mare. Când este selectat, acel tip de element este singurul tip selectat și elementele de acel tip sunt rearanjate pentru a umple întregul ecran.

Mod ecran complet - este selectat atingând oricare dintre elementele de pe ecran urmat de ecran complet. Atunci când este selectat, acel element este singurul element afișat și este rearanjat pentru a umple întregul ecran, oferind vizibilitate maximă pentru acel articol.

Pentru a adăuga funcționalități suplimentare, trebuie adăugate următoarele rutine

rutina „draw” care este chemată pentru a obține informațiile pentru acel element, apelați rutina corespunzătoare de actualizare a ecranului și înregistrați informațiile tactile returnate

rutina „logică” care acceptă informațiile din rutina de extragere și folosește rutinele corespunzătoare ale driverului de ecran pentru a afișa informațiile pe ecran și a returna informațiile tactile corecte pentru zona ecranului desenat

rutina „setup” care se numește ca parte a configurării Arduino

Pot fi incluse și alte rutine, dar nu ar trebui să existe nicio interdependență între codul elementului, dacă un element nu a fost activat, atunci codul său nu ar trebui executat și structura multifuncțională simplă își păstrează integritatea.

Pasul 8: Editarea bibliotecilor Arduino

Editarea bibliotecilor Arduino
Editarea bibliotecilor Arduino
Editarea bibliotecilor Arduino
Editarea bibliotecilor Arduino

Afișajul pe care l-am folosit funcționează foarte bine cu Arduino Uno și cu bibliotecile de bază scrise pentru acesta, dar funcționează încet când este transferat direct pe Arduino Mega. Pentru a conduce corect ecranul, trebuie utilizat un set diferit de pini de date și această schimbare de utilizare trebuie configurată în biblioteci. Aceasta este o schimbare simplă și a fost intenționată de autor. Imaginile evidențiază modificările făcute.

Cele două fișiere sunt stocate în folderul utilitar MCUFRIEND_kbv / ca mcufriend_shield.h și mcufriend_special.h. Modificările necesare sunt mai întâi în fișierul antet „scut” pentru a asigura citirea primei linii

#define USE_SPECIAL

pentru a vă asigura că fișierul antet „special” este încărcat.

Fișierul antet „special” trebuie, de asemenea, actualizat pentru a se asigura că linia

#define USE_MEGA_8BIT_PROTOSHIELD

este necomentat.

Aceste două modificări înseamnă că codul de afișare pentru acest afișaj va funcționa folosind pinii 20-29 de pe Arduino Mega în loc de 3-10 implicit pe Uno.

Pasul 9: Capturi de ecran

Capturi de ecran
Capturi de ecran
Capturi de ecran
Capturi de ecran
Capturi de ecran
Capturi de ecran

Am pus capturi de ecran aici, astfel încât este ușor să vedeți ce ar trebui să facă consola. Următoarea secțiune se referă la încărcarea codului în Arduino.

Primul ecran afișează ecranul „normal” cu meniuri deasupra, măsurători de tensiune pe LHS, măsurători de tensiune și curent pe RHS și starea digitală a pinului de jos, roșu pentru „fals / scăzut”, verde pentru „adevărat / înalt” '. În sfârșit, în centru se află măsurarea rezistenței.

Al doilea ecran arată intrările digitale activate în modul Mare, fiecare intrare fiind afișată clar.

Al treilea ecran arată intrările de tensiune în modul Mare.

Pasul 10: Încărcarea codului Arduino

Codul este atașat, dar așa cum s-a menționat mai devreme, va fi pus la github la un moment dat și locația va fi adăugată aici. Fișierul principal al codului sursă este Arduino_Workbench_v01.ino, iar celelalte rutine trebuie să furnizeze diferitele caracteristici.

Dacă bibliotecile au fost modificate ok și Arduino Mega2650 a fost setat ca platformă țintă în Arduino IDE, atunci codul ar trebui să fie compilat prima dată.

Bibliotecile care vor trebui încărcate sunt bibliotecile Adafruit GFX și Touchscreen care ar trebui să fie disponibile de la managerul de bibliotecă Arduino, o copie a MCUFRIEND_kbv descărcabilă de pe github și pentru INA3221, biblioteca SwitchDocLabs SDL_Arduino_INA3221 descărcabilă și de pe github, ambele apar rapid pe o căutare pe google.

Pasul 11: Atingeri finale

Atingeri finale
Atingeri finale
Atingeri finale
Atingeri finale
Atingeri finale
Atingeri finale
Atingeri finale
Atingeri finale

Ideea este să-l utilizați pentru lucrări de proiect, astfel încât a fost realizat un panou detașabil care cuprinde șuruburi de montare pentru plăcile Arduino și o placă de prindere, ansamblul atașat la capac prin velcro pentru a le face detașabile și astfel încât să se poată face diferite plăci pentru a conține proiecte și că cutia poate fi refolosită pentru diferite proiecte care rulează simultan.

Mă aștept ca aceasta să fie o sursă pentru câteva idei pentru a face ceva diferit, mai bun sau ambele. Voi adăuga funcțiile suplimentare pe care le-am menționat și le voi adăuga, dar dacă acest lucru este de ajutor, vă rugăm să luați ceea ce doriți și să vă bucurați. Dacă există probleme flagrante, vă rugăm să ne anunțați.

Chiar acum voi continua și îl voi folosi, am câteva proiecte la care să lucrez!

Recomandat: