Inhoudsopgave:

Wort-Uhr: 5 stappen
Wort-Uhr: 5 stappen

Video: Wort-Uhr: 5 stappen

Video: Wort-Uhr: 5 stappen
Video: So kannst DU deine Freunde beeindrucken auf dem TRAMPOLIN🔥 #challenge #trampolin #tricks #tutorial 2024, November
Anonim
Wort-Uhr
Wort-Uhr

Hallo samen!

Dit zal mijn eerste instructable zijn en als je ideeën hebt om het te verbeteren of begrijpelijker te maken, aarzel dan niet om contact met me op te nemen!

Nou, in eerste instantie is dit soort "klok" niet mijn idee! Ik heb veel van het internet gezien en ze zijn voor slechts een paar dollar te bestellen in verschillende webwinkels. Maar ik wilde er geen kopen, ik wilde er zelf een maken om te leren en te begrijpen hoe het werkt.

Eén woord voor "niet-Duitse" leden… Sorry voor het feit dat dit slechts een "Duitse Wort Uhr" is. Het kan gemakkelijk worden omgezet in het Engels of een andere taal, maar omdat ik Duits ben, heb ik het in mijn taal gemaakt. Als je ondersteuning voor je taal nodig hebt, neem dan contact met me op en ik zal proberen je te helpen.

Dus laten we beginnen…

Stap 1: Het schema

het schema
het schema

Het schema is eenvoudig en als de afbeelding te slecht is om te lezen, is er ook een PDF-bestand.

Laten we beginnen in de linkerbenedenhoek. Er is een eenvoudige voeding met behulp van een LM7805 om een stabiele 5V-uitgang te genereren voor de PIC, schuifregisters (74HC164) en real-time chip DS3231. Vanuit dit onderdeel worden ook alle LED's geleverd. D22 aan de rechterkant is alleen voor het aangeven van de voeding en kan gemakkelijk uit elkaar worden gelaten als dit niet gewenst is.

U kunt elke DC-voeding voor de klok gebruiken met minder dan 40V, maar u moet dan de juiste waarde voor C7 kiezen. Het moet een nominale spanning hebben van ten minste het dubbele van de ingangsspanning en onthoud dat je warmte creëert in de LM7805, dus je moet proberen de ingangsspanning zo laag mogelijk te houden, want al het andere is gewoon verspilling van energie. De beste pasvorm is iets tussen 9V en 12V DC.

Maak je geen zorgen over de polariteit van je voeding… De p-kanaal MOSFET (Q1) fungeert als een valse polariteitsbeveiliging en de klok zal gewoon niet werken en geen schade oplopen. U kunt dit controleren op de "power" LED D22 indien gemonteerd.

Aan de rechterkant van het schema bevinden zich de serieel-in parallel-uit schuifregisters. Ik besloot ze te gebruiken omdat ik geen enorme PIC met veel I/O-poorten wilde gebruiken. Ik wilde een kleinere gebruiken en ik had nog wat 16F1829 in huis dus de keuze was al duidelijk. De gegevens (IN_1, IN_2 en IN_3) worden geleverd door de PIC (zie onderstaande codesectie) en ook door de REGISTER_CLK. Voor de eenvoud in mijn code en PCB-layout heb ik twee van de 74HC164 gebruikt voor de uren en de laatste voor de "logica".

In de linker bovenhoek staat de PIC en alle benodigde onderdelen. Ik heb de interne klok gebruikt, dus er is geen oscillator nodig. Slechts drie weerstanden voor SCL, SDA en MCLR. Voor het feit dat ik de 32kHz heb gebruikt als een indicatie van "exacte seconden" is er geen behoefte aan een vrij stabiele en nauwkeurige frequentie voor de PIC.

In het midden is er de DS3231 met een minimum aan externe onderdelen. In feite heb ik alleen de SDA- en SCL-ingangen gebruikt voor communicatie via I²C en de 32kHZ-uitgang als externe klokreferentie voor Timer1 van de PIC16F1829. Voor deze output zegt de datasheet dat er een externe pull-up weerstand nodig is. De andere uitgangen heb ik in dit project niet gebruikt en heb ik niet aangesloten.

Ook in het midden de LED's… Zoals je in het schema kunt lezen heb ik blauwe LED's gebruikt (die met doorzichtige behuizing) en een weerstandswaarde van 1k Ohm. Als u van plan bent dit project zelf te maken, moet u de waarden van deze weerstanden kiezen op basis van de kleur en het type van de LED's die u kiest. Houd er ook rekening mee waar u de klok wilt instellen. Die van mij staat in mijn slaapkamer, daarom wilde ik niet dat de LED's te fel waren en koos ik een grotere waarde voor de weerstanden. Probeer het eens op een breadboard met LED's en weerstandswaarden voordat je ze op de print monteert.

Stap 2: Lay-out

Lay-out
Lay-out
Lay-out
Lay-out
Lay-out
Lay-out

Na het voltooien van het schema is het tijd om de printplaat te routeren. Daarvoor gebruikte ik KiCAD (ook voor schema). Er valt niet veel te zeggen, alleen de lijnen leiden.

Voor het feit dat ik de behuizing van de klok zelf heb geprint, was het vrij belangrijk waar de LED's op de bovenste laag zich bevinden. Ik heb alleen de LED's en weerstanden op de bovenste laag gezet, omdat ik mijn PCB deels gemonteerd heb besteld (alle SMD-onderdelen) en omdat het bedrijf dat ik daarvoor heb gekozen onderdelen slechts aan één kant plaatst en niet dubbelzijdig.

Je kunt de plaatsing zien in de twee 3-dimensionale afbeeldingen die ik heb gemaakt met KiCAD.

Als je interesse hebt… Het is mogelijk om de KiCAD-printplaat naar Eagle te exporteren en dan is het vrij eenvoudig om de behuizing te bouwen, omdat je een referentie van de printplaat hebt.

Stap 3: "Logica" van de "Wort-Uhr"

Grootste onderdeel van dit project was de code voor de PIC…

Eerst de "logica" van gesproken tijd in het Duits vinden en deze naar code vertalen.

Helaas was het niet mogelijk om het Excel-bestand direct te uploaden, maar ik hoop dat de PDF-export leesbaar genoeg is voor u. Zo niet, neem dan contact met mij op en ik stuur je het originele Excel-bestand. In de PDF kun je zien hoe ik de logica voor mijn klok heb ingesteld. Je kunt zien hoe ik de verschillende tijdstappen heb doorlopen en hoe de spelling is. De berekening binnen de code (voornamelijk if-else-instructies) kan worden afgeleid uit de informatie aan de rechterkant van de tabel. Een deel is voor minuten en een deel voor de uren.

Zoals je kunt zien, is dit geen magie en kan het gemakkelijk worden gecodeerd in C. Het "lastigste" punt in de logica is hoe je met het uur moet omgaan, zoals je kunt zien in het bestand dat alleen aan het begin van een uur het werkelijke uur wordt weergegeven. In het Duits (misschien is dit alleen een Beiers specifiek iets) wordt het "volgende uur" vrij vroeg gebruikt.

Voor codering gebruikte ik MPLABX als mijn IDE naar keuze.

Stap 4: Codefragmenten

Codefragmenten
Codefragmenten
Codefragmenten
Codefragmenten

Ik zal mijn code hier niet posten, maar als je van plan bent om je eigen code te schrijven, zal ik je enkele hints geven waar ik tijdens de ontwikkeling "over struikelde" …

Eerst de "register"-vulling:

Als je te vaak en in te korte cycli nieuwe gegevens naar de registers overbrengt, heb ik de ervaring opgedaan, dat de LED's begonnen te flikkeren. Dus maakte ik een aantal "blokkeringsvlaggen", dat slechts elke minuut een nieuwe "berekening" van de gesproken tijd wordt gedaan en registerupdate wordt gemaakt.

De code voor het vullen van de registers staat in de afbeelding hierboven. Zoals je kunt zien, vul ik alle 3 registers parallel, dus ik heb 3 pinnen van de PIC nodig voor data en 1 pin voor CLK. De 74HC164 neemt nieuwe gegevens over bij een overgang op de CLK-lijn van 0 naar 1.

De rest van de code is voornamelijk PIC-afhankelijk spul, de "spoken time"-logica en het afhandelen van communicatie en knoppen. Communicatie wordt voornamelijk verzorgd door Microchip MPLABX omdat ik de MSSP-module heb gebruikt.

Een goed idee is om de datasheet van DS3231 te lezen, omdat de gegevens binnen als BCD worden opgeslagen, dus het kan zijn dat u dit in uw code moet "transformeren". Nou wat mij betreft ben ik een "lerend door te doen" man en NATUURLIJK heb ik de datasheet niet gelezen… Heeft me veel zenuwen en uren gekost.

Zoals je misschien hebt gemerkt, zijn er twee manieren om "de tijd op schema te houden" met deze implementatie.

  1. U kunt de werkelijke tijd van de DS3231 aflezen
  2. U kunt "seconden tellen" in de PIC zelf en de tijd gewoon van tijd tot tijd synchroniseren met DS3231

Het is aan jou en beide manieren zijn praktisch en ongecompliceerd. Ik heb de eerste optie gebruikt en alleen de tijd gesynchroniseerd bij het aanpassen van de tijd via de knoppen (schrijftijd naar DS3231) of elke 24 uur (leestijd vanaf DS3231), omdat ik meer logica zelf wilde implementeren. Ik draai ook 's nachts mijn klok uit (23:00 tot 05:00) dus dat was wat mij betreft iets makkelijker.

Stap 5: De behuizing

Last but not least is het tijd om een korte blik op de behuizing te werpen.

Zoals ik hierboven al zei, heb ik de behuizing zelf gemaakt (met Eagle) en geprint met mijn 3D-printer, zodat ik moest blijven kijken naar de posities van de verschillende LED's.

Bijgevoegd vindt u de STL-bestanden als u ze wilt gebruiken.

Ik hoop dat dit instructable je helpt bij het bouwen van je eigen "Wort-Uhr". Als er nog "open vragen" zijn, aarzel dan niet om contact met mij op te nemen. De beste manier om hieronder te reageren, want je bent misschien niet de enige met een specifieke vraag.

Aanbevolen: