Innehållsförteckning:

Mekanisk klocka med sju segment: 7 steg (med bilder)
Mekanisk klocka med sju segment: 7 steg (med bilder)

Video: Mekanisk klocka med sju segment: 7 steg (med bilder)

Video: Mekanisk klocka med sju segment: 7 steg (med bilder)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Juli
Anonim
Mekanisk klocka med sju segment
Mekanisk klocka med sju segment
Mekanisk klocka med sju segment
Mekanisk klocka med sju segment

För ett par månader sedan byggde jag en tvåsiffrig mekanisk 7 -segmentskärm som jag förvandlade till en nedräkningstimer. Det kom ut ganska bra och ett antal personer föreslog att dubbelt skulle upp på displayen för att göra en klocka. Problemet var att jag redan hade slut på PWM IO på min Arduino Mega och inte hade tillräckligt med tillgängliga för den andra eller tredje siffran. Jag pekades då i riktning mot dessa PCA9685 16 -kanals PWM -drivrutiner som fungerar över ett I2C -gränssnitt. Dessa gjorde det möjligt att köra de 28 servon jag behövde alla med de två I2C -stiften på en Arduino. Så jag fick arbeta med att bygga en klocka som nu använder en DS1302 realtidsklocka för att hålla tiden och två 16 -kanals servodrivrutiner för att styra de 28 servon som används för att bilda displayen, alla drivna av en Arduino Uno.

Om du gillar den här instruktionsboken, kan du överväga att rösta på den i klocktävlingen

Tillbehör:

För att bygga din klocka behöver du följande tillbehör utöver några grundläggande verktyg:

  • Arduino Uno - Köp här
  • DS1302 klockmodul - Köp här
  • 2 x PCA9685 16Ch servodrivrutiner - Köp här
  • 28 x Micro Servos - Köp här
  • Bandkabel - Köp här
  • Male Pin Header Strips - Köp här
  • Female Pin Header Strips - Köp här
  • 3 mm MDF - Köp här
  • Svart sprayfärg - Köp här
  • 5V 5A batteri elimineringskrets - Köp här
  • 12V nätaggregat - Köp här

För detta projekt behöver du också några 3D -tryckta delar. Om du inte redan har en 3D -skrivare och tycker om att göra saker bör du definitivt överväga att köpa en. Creality Ender 3 Pro som används här är prisvärd och ger ganska bra utskrifter för sitt pris.

  • 3D -skrivare används - Köp här
  • Glödtråd - Köp här

Steg 1: 3D -utskrift av plastkomponenterna

3D -utskrift av plastkomponenterna
3D -utskrift av plastkomponenterna
3D -utskrift av plastkomponenterna
3D -utskrift av plastkomponenterna
3D -utskrift av plastkomponenterna
3D -utskrift av plastkomponenterna

Jag utformade de 7 segmentskärmarna för att vara så enkla som möjligt. Servon är också stödfästet för att hålla upp segmentet ovanför det. Det finns två 3D -tryckta komponenter som krävs för varje segment, ett distansblock för att stödja undersidan av servon och displayen som klistras direkt på servoarmen.

Ladda ner 3D -utskriftsfiler - Mekaniska 7 -segmentsklocka 3D -utskriftsfiler

Skriv ut servosegmenten och prickarna med en ljusfärgad PLA. Jag använde genomskinlig grön, men röd, orange eller gul borde också fungera bra. Jag använde svart PLA för distansblocken och prickstöd så att de inte syns när segmenten vrids till avstängt läge.

Om du inte har tillgång till en 3D -skrivare kan du prova en av online -utskriftstjänsterna. Det finns ett antal prisvärda tjänster tillgängliga som kommer att skriva ut komponenterna och leverera dem till din dörr om några dagar.

Steg 2: Förbered dina styrkort och ledningar

Förbered dina styrkort och ledningar
Förbered dina styrkort och ledningar
Förbered dina styrkort och ledningar
Förbered dina styrkort och ledningar
Förbered dina styrkort och ledningar
Förbered dina styrkort och ledningar
Förbered dina styrkort och ledningar
Förbered dina styrkort och ledningar

Du måste använda två PCA9685 16 -kanals PWM -drivrutiner för att driva dina 28 klocka servon. Jag delade in servona i timme och minutsiffror, där varje par av siffror drivs av ett bräde. Så jag har en tavla som styr servon för de två timmar långa siffrorna och den andra som styr servon för de två minuter långa siffrorna.

För att kedja ihop de två måste du göra en 6 -trådig bandkabelanslutning och löda en andra huvudremsa på andra änden av det första servokontrollkortet. Du måste också ändra I2C -adressen på det andra kortet så att det är annorlunda än det första och unikt identifierbart.

Du måste också göra kablaget för att ansluta de tre korten (två servokort och klockmodulen) till din Arduino. Du behöver 5V och GND till varje kort samt I2C -anslutningarna till dina Arduino -stift A4 och A5 (I2C på Arduino Uno) och klockmodulens stift CLK, DAT & RST till stift 6, 7 & 8 på din Arduino respektive.

Ström levereras till Arduino direkt från 12V strömförsörjningen och till servon med 5V 5A BEC som sedan ansluts till de två terminalerna på toppen av PWM -drivrutinen. Du behöver bara ansluta en servodrivrutin till strömmen och den kommer att mata ström till den andra genom den 6 -trådiga bandkabelanslutningen.

Steg 3: Montera servon

Montera servon
Montera servon
Montera servon
Montera servon
Montera servon
Montera servon

När du har skrivit ut dina segment måste du spruta baksidan och sidorna svarta så att de är mindre synliga när de vrids 90 grader till avstängt läge.

Du måste sedan limma segmenten på dina servoarmar med smältlim. Det hjälper att limma dem på servon med armen redan på servon, så kan du kontrollera att du limmar dem rakt och plant.

Du måste också limma ett distansblock på botten av varje servo.

Montera prickarna genom att limma en liten plugg eller kebabstick i baksidan av prickarna och sedan i basblocken. Jag sprayade även dessa pinnar svarta så att de är mindre synliga om de ses från en vinkel.

Steg 4: Konfigurera och testa

Konfigurera och testa
Konfigurera och testa
Konfigurera och testa
Konfigurera och testa

Jag numrerade alla servon och skrev numret på varje lead så att det var lättare att hålla reda på dem. Jag började med det översta segmentet på enhetssiffran och arbetade runt till mittsegmentet på tiotalet. Det här är också i vilken ordning jag kopplade in dem i servokontrollerna, kom ihåg att identifierarna på korten räknas från 0 till 13 och inte från 1 till 14.

Jag ställde sedan upp segmenten på ett bord med tillräckligt med utrymme mellan dem för att testa så att de inte flyttade in i det ena och andra samtidigt som jag satte resegränserna och riktningarna. Om du försöker ställa dem nära varandra har du troligen ett eller två försök att röra sig i fel riktning eller överresa vid något tillfälle och träffa ett annat som kan skada segmentet, servoarmen eller ta bort växlarna på servon.

Steg 5: Ladda upp koden

Ladda upp koden
Ladda upp koden
Ladda upp koden
Ladda upp koden
Ladda upp koden
Ladda upp koden

Koden ser komplicerad ut vid första anblicken, men den är faktiskt relativt enkel tack vare de två bibliotek som används. Det är också mycket upprepning eftersom det finns fyra olika 7 -segmentskärmar som behöver uppdateras.

Här är en sammanfattande beskrivning av koden, ta en titt på hela guiden för en mer detaljerad förklaring och en länk för att ladda ner koden - Mekanisk 7 -segmentsklocka

Vi börjar med att importera två bibliotek, virtuabotixRTC.h för klockmodulen och Adafruit_PWMServoDriver.h för servodrivrutinerna. Adafruit -biblioteket kan laddas ner och installeras direkt via bibliotekshanteraren i IDE.

Vi skapar sedan ett objekt för varje styrkort med relevant adress, ett för timsiffrorna och ett för minutsiffrorna.

Vi har sedan fyra matriser för att lagra av- och pålägen för varje servo. Du måste göra justeringar av dessa siffror i de kommande stegen för att se till att dina servon är upprätt när de är på, vridna 90 grader när de är avstängda och inte över resor.

En siffermatris lagrar positionerna för varje segment för varje siffra som ska visas.

Vi ställer sedan in klockmodulen och skapar variabler för att lagra nuvarande och tidigare enskilda siffror.

I installationsfunktionen startar vi och sätter upp PWM -styrkort samt uppdaterar klockan om det behövs. Vi kör sedan genom en slinga för att ställa in displayen till 8 8: 8 8 så att vi vet startpositionen för alla servon. Detta används också för att ställa in servon så att de alla är riktade uppåt.

I huvudslingan får vi den uppdaterade tiden från klockmodulen, spillde den i de fyra siffrorna och kontrollerar sedan om tiden har ändrats från den senaste kontrollen. Om tiden har ändrats uppdaterar vi displayen och uppdaterar sedan de tidigare siffrorna.

I uppdateringsvisningsfunktionen flyttar vi först de mellersta segmenten. Detta görs först eftersom det krävs viss logik för att flytta de två övre segmenten intill mittsegmentet lite ur vägen innan mittsegmentet flyttas, annars kommer det att stöta på dem. När de mellersta segmenten har flyttats flyttas de återstående segmenten till rätt position.

Steg 6: Montering av klockan på baksidan

Montering av klockan på baksidan
Montering av klockan på baksidan
Montering av klockan på baksidan
Montering av klockan på baksidan
Montering av klockan på baksidan
Montering av klockan på baksidan

När jag var klar med testet monterade jag servon på baksidan med ovanstående layout som en guide.

Det vita området är den övergripande brädstorleken, det ljusare grå är området kring varje siffra där servosegmenten rör sig in och konturen på det mörkgråa området är mittlinjen för de sex yttre segmenten för varje siffra.

Jag klippte brädan, markerade layouten och limde sedan siffrorna på plats för att skapa urskivan.

Jag borrade sedan hål nära varje servo och matade ledningarna till baksidan av brädet så att de är mindre synliga.

Jag monterade elektroniken på baksidan av klockan med dubbelsidig tejp.

Steg 7: Slutlig installation och drift

Slutlig installation och drift
Slutlig installation och drift
Slutlig installation och drift
Slutlig installation och drift
Slutlig installation och drift
Slutlig installation och drift
Slutlig installation och drift
Slutlig installation och drift

När servona var klara tog jag bort alla servoarmarna för de sista justeringarna av segmentens positioner. Du bör slå på Arduino i detta tillstånd så att 8 8: 8 8 visas och sedan koppla bort strömmen, detta centrerar om alla dina servon så att du kan sätta tillbaka servoarmarna med segmenten vända så nära vertikalen som möjligt.

Du måste sedan slå på din Arduino i följd och göra justeringar av segmentets av- och på -positioner i dina fyra matriser så att servon är helt vertikala när de är på och svänger 90 grader när de är avstängda utan att resa över. Detta steg är ganska tidskrävande och kräver lite tålamod men slutresultatet är väl värt det!

Klockan kan lämnas strömad med 12V strömförsörjning och 5V BEC ansluten till den. Om strömmen går, kommer batteriet på RTC -modulen att hålla tiden så att när strömmen återställs återställs klockan automatiskt till rätt tid.

Om du tyckte om denna instruktionsbara, vänligen rösta på den i klocktävlingen och meddela mig om eventuella förbättringar eller förslag du kan komma med i kommentarfältet nedan.

Tävlingar
Tävlingar
Tävlingar
Tävlingar

Andra pris i klocktävlingen

Rekommenderad: