Innehållsförteckning:
Video: Wort-Uhr: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:35
Hej tillsammans!
Detta blir min första instruerbara och om du har några idéer om hur du kan förbättra det eller göra det lättare att förstå, tveka inte att kontakta mig!
Först är den här typen av "klocka" inte min idé! Jag har sett massor av internet och de kan beställas för bara några dollar i vanliga webbutiker. Men jag ville inte köpa en, jag ville göra en egen för att lära mig och förstå hur den fungerar.
Ett ord till "icke-tyska" medlemmar … Förlåt för att detta bara är en "tysk Wort Uhr". Det kan enkelt konverteras till engelska eller något annat språk, men eftersom jag är tyska gjorde jag det på mitt språk. Om du behöver stöd för ditt språk kontakta mig så ska jag försöka hjälpa dig.
Så låt oss börja …
Steg 1: Schemat
Schemat är rakt fram och om bilden är för dålig att läsa finns det också en PDF -fil.
Låt oss börja i nedre vänstra hörnet. Det finns en enkel strömförsörjning med en LM7805 för att generera en stabil 5V -utgång för PIC, skiftregister (74HC164) och realtidschip DS3231. Alla lysdioder levereras också från denna del. D22 i höger ände är bara för att indikera strömförsörjning och kan enkelt lämnas ifrån varandra om det inte önskas.
Du kan använda valfri likström för klockan med mindre än 40V, men du bör då välja lämpligt värde för C7. Den bör ha en spänning på minst dubbelt ingångsspänningen och kom ihåg att du skapar värme i LM7805 så du bör försöka hålla ingångsspänningen så låg som möjligt eftersom allt annat bara är slöseri med energi. Bästa passformen är något mellan 9V och 12V DC.
Bry dig inte om polariteten hos din strömförsörjning … P-kanal MOSFET (Q1) fungerar som ett falskt polaritetsskydd och klockan fungerar bara inte och får inga skador. Du kan kontrollera detta på "power" LED D22 om den är monterad.
På höger sida av schemat är de serie-in parallella ut-skiftregistren. Jag bestämde mig för att använda dem eftersom jag inte ville använda en enorm PIC med massor av I/O-portar. Jag ville använda en mindre och jag hade fortfarande några 16F1829 hemma så valet var redan klart. Data (IN_1, IN_2 och IN_3) tillhandahålls av PIC (se kodavsnitt nedan) och REGISTER_CLK också. För enkelhet i min kod och PCB -layout använde jag två av 74HC164 för timmarna och den sista för "logiken".
I det övre vänstra hörnet finns PIC och alla nödvändiga delar. Jag använde den interna klockan så ingen oszillator behövs. Endast tre motstånd för SCL, SDA och MCLR. För det faktum att jag använde 32 kHz som en indikation på "exakta sekunder" finns det inget behov av en ganska stabil och exakt frekvens för PIC.
I mitten finns DS3231 med ett minimum på yttre delar. Faktum är att jag bara använde SDA- och SCL -ingångarna för kommunikation över I²C och 32 kHz utgången som en extern klockreferens för Timer1 i PIC16F1829. För denna utgång säger databladet att det behövs ett externt uppdragningsmotstånd. De andra utgångarna använde jag inte i det här projektet och lämnade dem oanslutna.
Även i mitten, lysdioderna … Som du kan läsa i schemat använder jag blå lysdioder (de med klart hus) och ett motståndsvärde på 1k ohm. Om du tänker göra detta projekt själv bör du välja värdena för dessa motstånd beroende på färg och typ av lysdioderna du väljer. Tänk också på var du vill att klockan ska ställas in. Min står i mitt sovrum, därför ville jag inte att lysdioderna skulle vara för ljusa och valde ett större värde för motstånden. Gör några försök på en brödbräda med lysdioder och motståndsvärden innan du monterar dem på kretskortet.
Steg 2: Layout
Efter att ha slutfört schemat är det dags att dirigera kretskortet. För det använde jag KiCAD (för schematisk också). Det finns inte så mycket att säga, bara rutt linjerna.
För det faktum att jag skrev ut klockans hus själv var det ganska viktigt var lysdioderna på det översta lagret sitter. Jag satte bara lysdioderna och motstånden på det översta lagret, eftersom jag beställde mitt kretskort delvis monterat (alla SMD-delar) och för att företaget jag valde för det bara placerar delar på ena sidan och inte dubbelsidigt.
Du kan se placeringen i de två tredimensionella bilderna jag gjorde av KiCAD.
Om du är intresserad … Det är möjligt att exportera KiCAD -kretskortet till Eagle och då är det ganska enkelt att bygga huset, eftersom du har en referens från kretskortet.
Steg 3: "Logik" för "Wort-Uhr"
Den största delen för detta projekt var koden för PIC …
Först att hitta "logiken" för talad tid på tyska och översätta den till kod.
Tyvärr var det inte möjligt att ladda upp Excel -filen direkt, men jag hoppas att PDF -exporten är tillräckligt läsbar för dig. Om inte, vänligen kontakta mig så skickar jag dig den ursprungliga Excel -filen. I PDF -filen kan du se hur jag ställer in logiken för min klocka. Du kan se hur jag gick igenom de olika tidstegen och hur stavningen är. Beräkningen inuti koden (främst if-else-satser) kan härledas från informationen på höger sida av tabellen. En del är för minuter och en del för timmarna.
Som du kan se är detta ingen magi och kan enkelt kodas i C. Den "knepigaste" punkten i logiken är hur du hanterar timmen som du kan se i filen att bara i början av en timme visas den verkliga timmen. På tyska (kanske detta bara är en bayersk specifik sak) används "nästa timme" ganska tidigt.
För kodning använde jag MPLABX som min valda IDE.
Steg 4: Kodavsnitt
Jag kommer inte att lägga upp min kod här, men om du tänker skriva din egen kod kommer jag att ge dig några tips om vad jag har "snubblat över" under utvecklingen …
Först fyller du i "register":
Om du överför ny data till registren för ofta och i för korta cykler gjorde jag upplevelsen att lysdioderna började flimra. Så jag gjorde några "blockerande flaggor", att bara någon minut en ny "beräkning" av talad tid görs och registeruppdatering görs.
Koden för att fylla i registren finns på bilden ovan. Som du kan se fyller jag alla tre registren parallellt så jag behöver 3 stift av PIC för data och 1 stift för CLK. 74HC164 tar över nya data om en övergång vid CLK -linjen från 0 till 1.
Resten av koden är främst PIC-beroende saker, "taletid" -logiken och hantering av kommunikation och knappar. Kommunikation tillhandahålls främst av Microchip MPLABX eftersom jag använde MSSP -modulen.
En bra idé är att läsa databladet för DS3231 eftersom data lagras inuti som BCD så att du kanske måste "transformera" detta i din kod. För mig är jag en "learning by doing" -kille och självklart läste jag inte databladet … Kostade mig mycket nerver och timmar.
Som du kanske har märkt finns det två sätt att "hålla tiden på rätt spår" med denna implementering.
- Du kan läsa den faktiska tiden ur DS3231
- Du kan "räkna sekunder" i själva PIC och bara synkronisera tiden med DS3231 då och då
Det är upp till dig och båda sätten är praktiska och raka fram. Jag använde det första alternativet och synkroniserade bara tiden när jag justerade tiden via knapparna (skrivtid till DS3231) eller var 24: e timme (lästid från DS3231), eftersom jag ville implementera mer logik själv. Jag slår också på klockan under natten (23:00 till 05:00) så det var lite lättare enligt mig.
Steg 5: Huset
Sist men inte minst är det dags att ta en kort titt på huset.
Som jag nämnde ovan gjorde jag huset själv (med Eagle) och skrev ut dem med min 3D-skrivare så jag skulle behöva titta på positionerna för de olika lysdioderna.
Bifogad hittar du STL -filerna om du vill använda dem.
Hoppas att denna instruerbara hjälper dig när du bygger din egen "Wort-Uhr". Om det fortfarande finns "öppna frågor" tveka inte att kontakta mig. Bästa sättet att kommentera nedan, eftersom du kanske inte är den enda som har en specifik fråga.
Rekommenderad:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg
Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Steg-för-steg-utbildning i robotik med ett kit: 6 steg
Steg-för-steg-utbildning i robotik med ett kit: Efter ganska många månader av att bygga min egen robot (se alla dessa), och efter att två gånger ha misslyckats med delar, bestämde jag mig för att ta ett steg tillbaka och tänka om min strategi och riktning. De flera månaders erfarenhet var ibland mycket givande och
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)