Inhoudsopgave:
- Stap 1: 3D print de plastic onderdelen
- Stap 2: Bereid uw besturingskaarten en bedrading voor
- Stap 3: Monteer de servo's
- Stap 4: Instellen en testen
- Stap 5: De code uploaden
- Stap 6: Montage van de klok op het achterbord
- Stap 7: definitieve installatie en bediening
Video: Mechanische klok met zeven segmenten - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Een paar maanden geleden heb ik een tweecijferig mechanisch 7-segmentsdisplay gebouwd dat ik in een afteltimer heb veranderd. Het kwam redelijk goed uit en een aantal mensen stelde voor om het display te verdubbelen om een klok te maken. Het probleem was dat ik al bijna geen PWM IO meer had op mijn Arduino Mega en niet genoeg beschikbaar had voor het tweede of derde cijfer. Ik werd toen gewezen in de richting van deze PCA9685 16-kanaals PWM-stuurprogramma's die via een I2C-interface werken. Deze maakten het mogelijk om de 28 servo's aan te sturen die ik allemaal nodig had met behulp van de twee I2C-pinnen op een Arduino. Dus ging ik aan de slag met het bouwen van een klok die nu een DS1302 real-time klokmodule gebruikt om de tijd bij te houden en twee 16-kanaals servodrivers om de 28 servo's te besturen die worden gebruikt om het display te maken, allemaal aangedreven door een Arduino Uno.
Als je deze Instructable leuk vindt, overweeg dan om ervoor te stemmen in de klokkenwedstrijd
Benodigdheden:
Om je klok te bouwen, heb je naast enkele basisgereedschappen de volgende benodigdheden nodig:
- Arduino Uno - Koop hier
- DS1302 Klokmodule - Hier kopen
- 2 x PCA9685 16Ch servostuurprogramma's - hier kopen
- 28 x micro-servo's - hier kopen
- Lintkabel - hier kopen
- Mannelijke Pin Header Strips - Koop hier
- Vrouwelijke pin-headerstrips - hier kopen
- 3 mm MDF - Koop hier
- Zwarte spuitverf - hier kopen
- 5V 5A batterij-eliminatiecircuit - hier kopen
- 12V-voeding - hier kopen
Voor dit project heb je ook enkele 3D-geprinte onderdelen nodig. Als je nog geen 3D-printer hebt en je vindt het leuk om dingen te maken, dan moet je zeker overwegen om er een te kopen. De hier gebruikte Creality Ender 3 Pro is betaalbaar en produceert prints van redelijk goede kwaliteit voor zijn prijs.
- 3D-printer gebruikt - hier kopen
- Filament - Koop hier
Stap 1: 3D print de plastic onderdelen
Ik heb de 7 segment displays zo eenvoudig mogelijk ontworpen. De servo is ook de steunbeugel om het segment erboven op te houden. Er zijn twee 3D-geprinte componenten nodig voor elk segment, een afstandsblok om de onderkant van de servo te ondersteunen en het displaysegment dat rechtstreeks op de servo-arm wordt gelijmd.
Download de 3D-afdrukbestanden - Mechanische klok met 7 segmenten 3D-afdrukbestanden
Print de servo-segmenten en stippen met behulp van een felgekleurde PLA. Ik gebruikte doorschijnend groen, maar rood, oranje of geel zou ook goed moeten werken. Ik heb zwarte PLA gebruikt voor de afstandsblokken en puntsteunen, zodat ze niet zichtbaar zijn als de segmenten in de uit-stand staan.
Als je geen toegang hebt tot een 3D-printer, probeer dan een van de online printservices. Er zijn een aantal betaalbare services beschikbaar die de componenten printen en binnen een paar dagen bij u thuis bezorgen.
Stap 2: Bereid uw besturingskaarten en bedrading voor
U moet twee PCA9685 16-kanaals PWM-stuurprogramma's gebruiken om uw 28 klokservo's aan te sturen. Ik scheidde de servo's in de uur- en minutencijfers, waarbij elk paar cijfers door één bord werd aangestuurd. Dus ik heb een bord dat de servo's bestuurt voor de cijfers van twee uur en het tweede dat de servo's bestuurt voor de cijfers van twee minuten.
Om de twee aan elkaar te koppelen, moet je een 6-aderige lintkabelconnector maken en een tweede headerstrip op het andere uiteinde van de eerste servobesturingskaart solderen. U moet ook het I2C-adres op het tweede bord wijzigen, zodat het verschilt van het eerste en uniek identificeerbaar is.
Je moet ook de kabelboom maken om de drie kaarten (twee servokaarten en de klokmodule) op je Arduino aan te sluiten. Je hebt 5V en GND nodig voor elk bord, evenals de I2C-verbindingen naar je Arduino-pinnen A4 en A5 (I2C op Arduino Uno), en de klokmodule-pinnen CLK, DAT & RST naar pinnen 6, 7 en 8 op je Arduino respectievelijk.
De Arduino wordt rechtstreeks van stroom voorzien vanuit de 12V-voeding en naar de servo's met behulp van de 5V 5A BEC die vervolgens wordt aangesloten op de twee terminals aan de bovenkant van de PWM-driver. U hoeft slechts één servodriver op de voeding aan te sluiten en deze zal de tweede via de 6-aderige lintkabelverbinding van stroom voorzien.
Stap 3: Monteer de servo's
Nadat u uw segmenten hebt afgedrukt, moet u de achterkant en zijkanten zwart spuiten, zodat ze minder zichtbaar zijn wanneer ze 90 graden naar de uit-stand worden gedraaid.
Vervolgens moet je de segmenten op je servo-armen lijmen met smeltlijm. Het helpt om ze op de servo te lijmen met de arm al op de servo, op deze manier kun je controleren of je ze recht en waterpas lijmt.
Je moet ook een afstandsblok op de onderkant van elke servo lijmen.
Zet de stippen in elkaar door een kleine deuvel of kebabstok in de achterkant van de stippen en vervolgens in de basisblokken te lijmen. Ik heb deze sticks ook zwart gespoten zodat ze vanuit een hoek minder zichtbaar zijn.
Stap 4: Instellen en testen
Ik heb alle servo's genummerd en het nummer op elke lead geschreven, zodat het gemakkelijker was om ze bij te houden. Ik begon met het bovenste segment op het cijfer van de eenheden en werkte rond naar het middensegment op het tiental. Dit is ook de volgorde waarin ik ze op de servobesturingskaarten heb aangesloten, onthoudend dat de identifiers op de kaarten van 0 tot 13 tellen en niet van 1 tot 14.
Ik plaatste de segmenten vervolgens op een tafel met voldoende ruimte ertussen om te testen, zodat ze niet in elkaar overgingen terwijl de reislimieten en richtingen werden ingesteld. Als je ze dicht bij elkaar probeert te plaatsen, zul je waarschijnlijk een of twee proberen om op een bepaald moment in de verkeerde richting of over de reis te bewegen en een andere te raken die het segment, de servo-arm kan beschadigen of de tandwielen op de servo kan strippen.
Stap 5: De code uploaden
De code ziet er op het eerste gezicht ingewikkeld uit, maar is eigenlijk relatief eenvoudig dankzij de twee gebruikte bibliotheken. Er is ook veel herhaling omdat er vier verschillende 7 segment displays moeten worden bijgewerkt.
Hier is een beknopte beschrijving van de code, bekijk de volledige gids voor een meer gedetailleerde uitleg en een link om de code te downloaden - Mechanische 7 Segment Display Clock
We beginnen met het importeren van twee bibliotheken, virtuabotixRTC.h voor de klokmodule en Adafruit_PWMServoDriver.h voor de servodrivers. De Adafruit-bibliotheek kan rechtstreeks worden gedownload en geïnstalleerd via de bibliotheekmanager in de IDE.
Vervolgens maken we voor elke besturingsprint een object aan met het betreffende adres, één voor de uurcijfers en één voor de minutencijfers.
We hebben dan vier arrays om de aan- en uit-posities voor elke servo op te slaan. U moet deze nummers in de komende stappen aanpassen om ervoor te zorgen dat uw servo's rechtop staan wanneer ze zijn ingeschakeld, 90 graden zijn gedraaid wanneer ze zijn uitgeschakeld en niet te lang reizen.
Een cijferreeks slaat de posities van elk segment op voor elk cijfer dat moet worden weergegeven.
Vervolgens stellen we de klokmodule in en maken we variabelen om de huidige en vroegere individuele cijfers op te slaan.
In de setup-functie starten en configureren we de PWM-besturingskaarten en werken we indien nodig de kloktijd bij. Vervolgens doorlopen we een lus om het display in te stellen op 8 8: 8 8, zodat we de startpositie van alle servo's kennen. Dit wordt ook gebruikt om de servo's zo in te stellen dat ze allemaal correct naar boven wijzen.
In de hoofdlus halen we de bijgewerkte tijd van de klokmodule, morsen deze in de vier cijfers en controleren vervolgens of de tijd is veranderd sinds de laatste controle. Als de tijd is veranderd, werken we het display bij en werken vervolgens de vorige cijfers bij.
In de update-weergavefunctie verplaatsen we eerst de middensegmenten. Dit wordt eerst gedaan omdat er enige logica nodig is om de twee bovenste segmenten naast het middensegment een beetje uit de weg te schuiven voordat het middensegment wordt verplaatst, anders zal het er tegenaan stoten. Zodra de middelste segmenten zijn verplaatst, worden de resterende segmenten op de juiste posities verplaatst.
Stap 6: Montage van de klok op het achterbord
Toen ik klaar was met testen, heb ik de servo's op het achterbord gemonteerd met behulp van de bovenstaande lay-out als richtlijn.
Het witte gebied is de totale grootte van het bord, het lichtere grijs is het gebied rond elk cijfer waar de servosegmenten naar toe bewegen en de omtrek op het donkergrijze gebied is de middellijn voor de buitenste 6 segmenten voor elk cijfer.
Ik sneed het bord, markeerde de lay-out en plakte de cijfers op hun plaats om de wijzerplaat te vormen.
Ik boorde toen gaten in de buurt van elke servo en voerde de draden door naar de achterkant van het bord, zodat ze minder zichtbaar zijn.
Ik heb de elektronica op de achterkant van de klok gemonteerd met dubbelzijdig plakband.
Stap 7: definitieve installatie en bediening
Toen de servo's allemaal klaar waren, heb ik alle servo-armen verwijderd voor de laatste aanpassingen aan de posities van de segmenten. U moet de Arduino in deze staat inschakelen zodat 8 8: 8 8 wordt weergegeven en vervolgens de stroom loskoppelen, dit centreert al uw servo's opnieuw zodat u de servo-armen weer kunt plaatsen met de segmenten zo dicht mogelijk bij verticaal als mogelijk.
U moet dan uw Arduino achtereenvolgens inschakelen en aanpassingen maken aan uw segment aan en uit-posities in uw vier arrays, zodat de servo's perfect verticaal zijn wanneer ze aan staan en 90 graden draaien wanneer ze zijn uitgeschakeld zonder te veel te reizen. Deze stap is behoorlijk tijdrovend en vereist een beetje geduld, maar het eindresultaat is het zeker waard!
De klok kan gevoed blijven met de 12V-voeding en 5V BEC erop aangesloten. Als de stroom uitvalt, houdt de batterij op de RTC-module de tijd bij, zodat wanneer de stroom wordt hersteld, de klok automatisch wordt gereset naar de juiste tijd.
Als je deze Instructable leuk vond, stem er dan op in de Clock-wedstrijd en laat me weten welke verbeteringen of suggesties je kunt bedenken in de comments hieronder.
Tweede prijs in de klokkenwedstrijd
Aanbevolen:
Gloeiende klok met luchtbellen; Mogelijk gemaakt door ESP8266: 7 stappen (met afbeeldingen)
Gloeiende klok met luchtbellen; Aangedreven door ESP8266: "gloeiende luchtbellenklok" geeft de tijd en enkele afbeeldingen weer door verlichte luchtbellen in vloeistof. In tegenstelling tot een led-matrixdisplay, geven langzaam zwevende, gloeiende luchtbellen me iets om te ontspannen. Begin jaren 90 stelde ik me "bubbeldisplay" voor. niet
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
Een klok maken van een klok: 11 stappen (met afbeeldingen)
Een klok maken van een klok: in deze Instructable neem ik een bestaande klok en creëer ik een betere klok. We gaan van de afbeelding links naar de afbeelding rechts. Voordat u op uw eigen klok begint, moet u weten dat het opnieuw in elkaar zetten een uitdaging kan zijn, aangezien de piv
Lange afstand draadloze waterniveau-indicator met alarm - Bereik tot 1 km - Zeven niveaus: 7 stappen
Lange afstand draadloze waterniveau-indicator met alarm | Bereik tot 1 km | Zeven niveaus: bekijk het op YouTube: https://youtu.be/vdq5BanVS0YJe hebt misschien veel bedrade en draadloze waterniveau-indicatoren gezien die een bereik van 100 tot 200 meter zouden bieden. Maar in deze instructable zie je een Long Range Wireless Water Level Indi
Teller met 7 segmenten: 3 stappen
7-segments display-teller: vandaag heb ik een ander project voor u - een 1-cijferige 7-segments display-teller. Het is een leuk klein project dat telt van 0 tot 9 en dan terug van 0. Je kunt het gewoon gebruiken als een algemene tutorial over het gebruik van dit populaire soort display. De onderdelen hiervoor