Aquest és l'esquema d'inter-connexionat de tots els elements del metre digital amb mòdul LCD ADM1602K.
S'ha posat un potenciòmetre pel control del contrast i un interruptor per apagar el llum de backlight i estalviar bateria.
Els sensors s'han simulat amb dos blocs negres, ja que el Fritzing no disposava dels TCRT5000 a la seua llibreria de components.
Es mostren els missatges amb l'etiqueta de comentaris Display. Mostrar tots els missatges
Es mostren els missatges amb l'etiqueta de comentaris Display. Mostrar tots els missatges
divendres, 31 de gener del 2014
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.
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.
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Multiplex,
Programació,
Projecte
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:
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Multiplex,
Programació,
Projecte
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.
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.
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Multiplex,
Programació,
Projecte
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ó.
El circuit és:
Ací teniu el fitxer fritzing d'aquesta solució.
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Multiplex,
Programació,
Projecte
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:
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:
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Multiplex,
Programació,
Projecte
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:
Ara, pel control, fem com si projectarem imatges del cine:
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.
- 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.
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Multiplex,
Programació,
Projecte
dilluns, 28 d’octubre del 2013
Comptador Amunt/Avall
Un vídeo d'una utilització senzilla de la funció que programarem amb l'Arduino de control directe d'un display de 7 segments: segons polsem o no un polsador, el display compta cap amunt o cap avall. És el que devíeu programar en aquesta tasca.
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Projecte
dilluns, 21 d’octubre del 2013
Display 7 segments descodificat - Vídeo
Un vídeo on es veu el control des d'Arduino d'un display de 7 segments amb un descodificador BCD-7 segments 74LS47:
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Projecte
Display 7 segments amb descodificador
Aquesta vegada hem utilitzat un descodificador BCD - 7 segments per controlar el display. Aquests descodificadors tenen 4 entrades digitals per on entrem el codi binari de la xifra que volem que mostre el display, de 0 a 9, que en binari és de 0000 a 1001. El circuit electrònic que té dins, a base de portes lògiques, s'encarrega de posar a 0 o a 1 les eixides adequades on van connectats els segments per a encendre la xifra corresponent.
Ací teniu el fitxer Fritzing.
Ací teniu el fitxer Fritzing.
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Projecte
dilluns, 14 d’octubre del 2013
Display 7 segments controlat per Arduino - II
Utilitzant també el "control directe", és a dir, sense circuit descodificador BCD-7 segments, vam millorar el nostre programa en diversos aspectes:
I aquest és el programa.
- Utilitzàrem un array unidimensional per emmagatzemar a quin pin de l'Arduino connectàvem cada segment, així ja no cal utilitzar pins successius i correlatius, es pot utilitzar qualsevol ordre.
- En un altre array bidimensional posàrem quins segments s'havien d'encendre (posar a "0") i quins calia apagar (a "1") per encendre cada xifra.
- Definirem una funció que accepta com a paràmetre una xifra de 0 a 9 i com a resultat activa el display per a que la mostre.
I aquest és el programa.
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Projecte
dilluns, 7 d’octubre del 2013
Display 7 segments controlat per Arduino
Per fer el projecte que tenim pensat per aquest curs, primer caldria conèixer les peces més importants que anem a utilitzar.
El nostre projecte el que farà al final és mostrar una sèrie de xifres i això ho ha de fer utilitzant una tecnologia que complixca aquests requeriments:
Vam utilitzar displays d'ànode comú, aquests displays tenen tots els ànodes de cada segment connectats junts, per tant aquest ànode cal posar-lo a tensió positiva i per encendre cada segment cal posar el seu contacte, que serà el càtode del LED, a negatiu.
En aquesta pàgina (que és sub-pàgina d'aquesta altra) es pot trobar més informació sobre aquests displays i sobre els descodificadors BCD-7 segments.
El nostre projecte el que farà al final és mostrar una sèrie de xifres i això ho ha de fer utilitzant una tecnologia que complixca aquests requeriments:
- Econòmica.
- Fàcilment transportable.
- Funcionament amb font d'energia transportable (piles o bateries) i baix consum.
- Propedèutica: per aprendre coses noves.
però per complir l'últim requeriment s'ha decidit fer-la utilitzant display de 7 segments a LED's.
Vam utilitzar displays d'ànode comú, aquests displays tenen tots els ànodes de cada segment connectats junts, per tant aquest ànode cal posar-lo a tensió positiva i per encendre cada segment cal posar el seu contacte, que serà el càtode del LED, a negatiu.En aquesta pàgina (que és sub-pàgina d'aquesta altra) es pot trobar més informació sobre aquests displays i sobre els descodificadors BCD-7 segments.
Per aprendre a controlar aquests displays des d'arduino, primer n'hem connectat un directament, utilitzant 7 pins de l'Arduino com eixida, també hem posat una resistència limitadora d'intensitat de 220 Ω a cada segment:
Primer vam fer un programa sense "intel·ligència": posàvem a 0 o a 1 diferents pins per encendre i apagar segments i que així aparegueren diferents xifres.
Aquest és el programa i aquest el circuit fritzing.
Aquest és el programa i aquest el circuit fritzing.
Etiquetes de comentaris:
Arduino,
Display,
Joan Salelles,
Projecte
Subscriure's a:
Missatges (Atom)










