Es mostren els missatges amb l'etiqueta de comentaris Multiplex. Mostrar tots els missatges
Es mostren els missatges amb l'etiqueta de comentaris Multiplex. Mostrar tots els missatges

diumenge, 16 de febrer del 2014

Muntatge del nostre projecte: METRE DIGITAL

Aquest any ens hem proposat un nou repte, i els alumnes de primer de batxiller de ciències amb l'ajuda del nostre porfessor de tecnologia industrial hem volgut realitzar un projecte que consisteix en un metre digital.
A hores d'ara ja tenim el projecte quasi finalitzat degut a que prompte hem de presenta-lo a un concurs al qual ens hem presentat, però ací us deixe algunes imatges del mutatge:
                                                                                                         
Muntat l'estructura

La base del funcionament dels nostres sensors 

Procés de muntatge 



divendres, 13 de desembre del 2013

Control display multiplex - Llibreria SevenSeg

Com el haver de controlar displays de 7 segments multiplexats és una cosa bastant habitual, hi ha programadors que han programat llibreries per a que no tinguem els altres programadors que re-inventar la roda cada vegada.
Així, a l'Arduino Playground he trobat aquesta llibreria SevenSeg (hi havia vàries més) que ja té pre-programades funcions pel control de diferents displays multiplexats de 7 segments, com podem consultar al seu extens manual d'ús. A l'apartat 4.4 d'aquest manual ens explica com fer ús de les funcions de la llibreria per controlar el display mitjançant interrupcions temporitzades i així poder fer ús de delay() i altres còmputs que requereixen molt de temps de procés per l'arduino i al mateix temps que el refresc continue funcionant sense interrompre's.
Ací tenim un vídeo del display comptant dècimes de segon, utilitzant la funció delay() i per tant refrescant el display per interrupcions temporitzades. També hem fet servir funcions de la llibreria pel control del punt decimal.
Aquest és el programa.


Aquestes tècniques de programació requereixen coneixements que ja queden fora d'aquesta introducció a la programació que estem fent al batxillerat, a més, per les característiques del nostre projecte, no caldrà fer-les servir ja que les altres tasques que ha d'atendre el micro-controlador són poques i no impediran el refresc cíclic del display.

Control display multiplexat - II: comptador

Com el control del display multiplexat necessita que s'estiga refrescant constantment la visualització del display, és extraordinàriament difícil programar la resta de les coses que ha de fer el programa,
Per exemple, no podem utilitzar la funció delay(), ja que l'arduino durant els delay() es queda sense fer res i el refresc s'aturaria.
Per programar açò bé, caldria utilitzar interrupcions temporitzades: fem al cos principal la programació de la resta de coses que ha de fer l'arduino i periodicament, l'arduino és interromput per anar a atendre el refresc del display.
Com a mostra de la dificultat he fet aquest programa, que és un simple comptador.
Un vídeo on es veu aquest programa comptant segons, sembla funcionar bé:


Però si volem comptar centèsimes de segon, és a dir la xifra de les centenes serien segons, falla el programa ja que hi hauria que tenir en compte els mil·lisegons que està dedicant a refrescar el display. Observeu al vídeo com els segons (dígit de les centenes) dura quasi dos segons:

dijous, 12 de desembre del 2013

Control display 4 dígits amb multiplex - I

Un programeta ràpid pel control del display multiplexat.
Cada dígit està un temps mostrant-se, controlat per la variable tempsMultiplex, si aquest temps és massa llarg el display tremolarà. Aquest exemple no fa res útil, només mostra pel display la xifra de 4 dígits que li diguem.
Ací està el programa.


dimecres, 11 de desembre del 2013

Display multiplex decodificat

Si encara volguérem controlar els 4 dígits utilitzant menys pins d'eixida, haguérem pogut utilitzar un descodificador BCD-7 segments i així, en lloc de treure els 7 pins dels segments, només hauríem de treure el valor BCD de cada xifra amb 4 pins.
El circuit és:



Ací teniu el fitxer fritzing d'aquesta solució.

dilluns, 9 de desembre del 2013

Display 4 dígits multiplexat: construcció.

Per a no tindre que muntar cada vegada sobre la protoboard els 4 displays, n'hem fet alguns prototips sobre tragetes de circuit imprés tipus Uniprint.
El circuit que voliem muntar era aquest:


Ací està el fitxer Fritzing.
Una imatge per davant d'un dels prototips:


I la visió per la part de les connexions, que és on està la feina:



dimecres, 4 de desembre del 2013

Multiplexat de displays de 7 segments

Per a poder realitzar el metre digital, necessitem un display que puga mostrar més d'un dígit. Hem decidit que el nostre display tindrà 4 xifres.
Per connectar cada dígit hem vist que necessitem una eixida digital per cada segment, com cada dígit té 7 segments (sense comptar amb el del punt decimal), per controlar un display amb 4 dígits ens caldrien 4 x 7 = 28 pins digital d'eixida i l'Arduino només en disposa de 14 i ens caldrà algun pin addicional per connectar els sensors del metre! Per solucionar això necessitem connectar aquests displays d'una altra manera, que no necessite tants pins. La solució s'anomena "Multiplex" de displays i es basa en un defecte dels nostres ulls aprofitat també per fer possible el cine i la televisió: la persistència de la retina.
Bàsicament la connexió consisteix en:

  • Connectar tots els segments a de tots els dígits, a través de la R limitadora a un unic pin d'eixida.
  • Anàlogament, connectem tots els b a un altre pin, tots els c, etc... utilitzarem 8 pins en total (7 segments i el punt decimal)
  • Per altra banda connectem el càtode comú del primer dígit a un altre pin, el del segon dígit a un altre, etc...
  • Així només necesitem, per a 4 dígits, un total de 12 eixides: 8 pels segments més 4 pels càtodes.
Aquesta és una imatge de la connexió, però amb 8 dígits (fan falta 8+8=16 pins, però sense multiplex caldrien 64 pins!!):



Ara, pel control, fem com si projectarem imatges del cine:

  • Activem (a 0) els pins dels segments necessaris per mostra la xifra del display de les unitats i activem (a 1) únicament el càtode del display de les unitats, els altres pins dels càtodes han d'estar a 0, així només s'il·luminaran els segments del display de les unitats.
  • A continuació desactivem el càtode de les unitats, canviem els pins dels segments per a mostrar la xifra de les desenes i activem el càtode de les desenes. En aquest instant només estan il·luminats els segments de les desenes.
  • Passem a les centenes i així successivament, en cada instant només hi ha il·luminada una xifra. Quan arribem a l'última xifra, tornem a començar per la primera.
  • Si anem refrescant les xifres prou ràpidament (un mínim de 25 vegades per segon), els nsotres ulls veuran com si totes les xifres estigueren il·luminades, cadascuna amb la seua xifra.
Una visualització gràfica ralentitzada de la tècnica, mostrant la xifra "1234":