Taula de continguts:

Wort-Uhr: 5 passos
Wort-Uhr: 5 passos

Vídeo: Wort-Uhr: 5 passos

Vídeo: Wort-Uhr: 5 passos
Vídeo: Five(ish) Minute Dance Lesson - African Dance: Lesson 3: Dancing on the Clock 2024, Desembre
Anonim
Wort-Uhr
Wort-Uhr

Hola junts!

Aquest serà el meu primer instructiu i si teniu alguna idea sobre com millorar-lo o facilitar-ne la comprensió, no dubteu en posar-vos en contacte amb mi.

Bé, al principi, aquest tipus de "rellotge" no és la meva idea. He vist moltes coses a Internet i es poden demanar només un parell de dòlars a diferents botigues web. Però no en volia comprar cap, en volia fer un de propi per aprendre i entendre com funciona.

Una paraula per als membres "no alemanys" … Disculpeu el fet que això sigui només un "German Wort Uhr". Es podria convertir fàcilment a l'anglès o a qualsevol altre idioma, però com sóc alemany ho he fet en el meu idioma. Si necessiteu assistència per al vostre idioma, poseu-vos en contacte amb mi i intentaré ajudar-vos.

Comencem doncs …

Pas 1: l’esquema

L’Esquema
L’Esquema

L’esquema és senzill i, si la imatge és massa dolenta de llegir, també hi ha un fitxer PDF.

Comencem per la cantonada inferior esquerra. Hi ha una font d'alimentació senzilla que utilitza un LM7805 per generar una sortida estable de 5V per al PIC, els registres de desplaçament (74HC164) i el xip DS3231 en temps real. També es subministren tots els LED d’aquesta part. D22 a l'extrem dret és només per indicar la font d'alimentació i es pot deixar fàcilment separat si no es vol.

Podeu utilitzar qualsevol font d'alimentació de CC per al rellotge de menys de 40V, però hauríeu de triar el valor adequat per a C7. Hauria de tenir una tensió nominal d'almenys el doble de la tensió d'entrada i recordeu que esteu creant calor al LM7805, de manera que heu d'intentar mantenir el voltatge d'entrada el més baix possible perquè tota la resta només és una pèrdua d'energia. El millor ajust és entre 9V i 12V DC.

No us preocupeu de la polaritat de la vostra font d'alimentació … El MOSFET de canal p (Q1) actua com una protecció contra la falsa polaritat i el rellotge no funcionarà i no patirà cap dany. Podeu comprovar-ho al LED D22 "de potència" si està muntat.

A la part dreta de l'esquema hi ha els registres de desplaçament de sortida paral·lela en sèrie. Vaig decidir utilitzar-los perquè no volia utilitzar un PIC enorme amb molts ports d'E / S. Volia utilitzar-ne un de més petit i encara tenia 16F1829 a casa, de manera que l’elecció ja estava clara. Les dades (IN_1, IN_2 i IN_3) les proporciona el PIC (vegeu la secció de codis més avall) i el REGISTER_CLK. Per simplificar el disseny del codi i del PCB, he utilitzat dos dels 74HC164 per a les hores i l'últim per a la "lògica".

A l'extrem superior esquerre hi ha el PIC i totes les parts necessàries. He utilitzat el rellotge intern, de manera que no es necessita cap oscil·lador. Només tres resistències per a SCL, SDA i MCLR. Pel fet d'utilitzar els 32 kHz com a indicació de "segons exactes", no cal una freqüència bastant estable i precisa per al PIC.

Al centre hi ha el DS3231 amb un mínim a les parts externes. De fet, només he utilitzat les entrades SDA i SCL per a la comunicació a través de I²C i la sortida de 32 kHz com a referència de rellotge extern per al temporitzador 1 del PIC16F1829. Per a aquesta sortida, el full de dades diu que es necessita una resistència d'extracció externa. Els altres resultats no els he utilitzat en aquest projecte i els he deixat sense connexió.

També al mig, els LED … Com podeu llegir a l'esquema, he utilitzat LEDs blaus (aquells amb carcassa clara) i un valor de resistència d'1k Ohms. Si teniu intenció de fer aquest projecte vosaltres mateixos, heu de triar els valors d’aquestes resistències segons el color i el tipus de LEDs que trieu. Tingueu també en compte on voleu configurar el rellotge. El meu està parat a la meva habitació per dormir, per tant, no volia que els LED fossin massa brillants i vaig escollir un valor més gran per a les resistències. Feu alguns intents en una taula de proves amb LEDs i valors de resistència abans de muntar-los al PCB.

Pas 2: disseny

Disseny
Disseny
Disseny
Disseny
Disseny
Disseny

Després d’acabar l’esquema, és hora d’encaminar el PCB. Per a això vaig utilitzar KiCAD (també per a esquemes). No hi ha molt a dir, només cal encaminar les línies.

Pel fet d’imprimir jo mateix la carcassa del rellotge, era bastant important on es trobessin els LED de la capa superior. Només he posat els LEDs i les resistències a la capa superior, perquè he demanat que el meu PCB estigués parcialment muntat (totes les parts SMD) i perquè l’empresa que vaig escollir només col·loca parts d’un costat i no de doble cara.

Podeu veure la ubicació a les dues imatges en tres dimensions que he fet de KiCAD.

Si esteu interessats … És possible exportar el PCB KiCAD a Eagle i llavors és bastant fàcil construir la carcassa, ja que teniu una referència del PCB.

Pas 3: "Lògica" del "Wort-Uhr"

La part més important d’aquest projecte va ser el codi del PIC …

Al principi trobem la "lògica" del temps parlat en alemany i la traduïm a codi.

Malauradament, no ha estat possible carregar el fitxer Excel directament, però espero que l’exportació de PDF sigui prou llegible per a vosaltres. Si no, poseu-vos en contacte amb mi i us enviaré el fitxer Excel original. Al PDF podeu veure com he configurat la lògica del meu rellotge. Podeu veure com he recorregut els diferents passos temporals i com és l’ortografia. El càlcul dins del codi (principalment sentències if-else) es pot derivar de la informació de la part dreta de la taula. Una part és per minuts i una part per hores.

Com podeu veure, això no és màgic i es pot codificar fàcilment en C. El punt "més complicat" dins de la lògica és com gestionar l'hora, tal com es pot veure al fitxer que només al començament d'una hora es mostra l'hora real. En alemany (potser això només pot ser una cosa específica de Baviera), la "hora següent" s'utilitza força d'hora.

Per a la codificació, he utilitzat MPLABX com a IDE que he escollit.

Pas 4: fragments de codi

Fragments de codi
Fragments de codi
Fragments de codi
Fragments de codi

No publicaré el meu codi aquí, però si teniu intenció d'escriure el vostre propi codi, us donaré algunes pistes del que he "ensopegat" durant el desenvolupament …

Primer, empleneu "registre":

Si transfereu dades noves als registres massa sovint i en cicles massa curts vaig experimentar, que els LED van començar a parpellejar. Així doncs, he fet alguns "senyals de bloqueig", que només fan un nou "càlcul" del temps parlat i es fa l'actualització del registre.

El codi per omplir els registres es troba a la imatge superior. Com podeu veure, ompliu els 3 registres en paral·lel, de manera que necessito 3 pins del PIC per a dades i 1 pin per a CLK. El 74HC164 pren dades noves sobre una transició a la línia CLK de 0 a 1.

La resta de codi depèn principalment de PIC, la "lògica del temps parlat", la lògica i la manipulació de la comunicació i els botons. La comunicació la proporciona principalment Microchip MPLABX perquè he utilitzat el mòdul MSSP.

Una bona idea és llegir el full de dades de DS3231 perquè les dades s’emmagatzemen dins com a BCD, de manera que és possible que hagueu de “transformar-ho” al vostre codi. Bé, pel que fa a mi, sóc un noi "aprenent fent" i, per descomptat, no vaig llegir la fitxa tècnica … Em va costar molts nervis i hores.

Com hauríeu notat, hi ha dues maneres de "mantenir el temps en el camí" amb aquesta implementació.

  1. Podeu llegir l'hora real del DS3231
  2. Podeu "comptar segons" al propi PIC i sincronitzar el temps amb el DS3231 de tant en tant

Depèn de vosaltres i les dues maneres són pràctiques i senzilles. Vaig fer servir la primera opció i només el temps sincronitzat en ajustar el temps mitjançant els botons (temps d’escriptura a DS3231) o cada 24 hores (temps de lectura de DS3231), perquè volia implementar més lògica per mi mateix. També giro el rellotge durant la nit (de 23:00 a 05:00), de manera que al meu entendre va ser una mica més fàcil.

Pas 5: L'habitatge

Finalment, però no menys important, és hora de fer un breu repàs a l’habitatge.

Com he esmentat anteriorment, vaig fer la carcassa jo sola (amb Eagle) i les vaig imprimir amb la meva impressora 3D, de manera que hauria de mirar les posicions dels diferents LED.

Adjunt podeu trobar els fitxers STL si voleu utilitzar-los.

Espero que aquesta instrucció us ajudi a l'hora de construir el vostre propi "Wort-Uhr". Si encara hi ha "preguntes obertes", no dubti en posar-se en contacte amb mi. La millor manera de fer comentaris a continuació, perquè és possible que no sigueu l'únic que tingueu una pregunta específica.

Recomanat: