Indholdsfortegnelse:

Mekanisk ur med syv segmenter: 7 trin (med billeder)
Mekanisk ur med syv segmenter: 7 trin (med billeder)

Video: Mekanisk ur med syv segmenter: 7 trin (med billeder)

Video: Mekanisk ur med syv segmenter: 7 trin (med billeder)
Video: Jeg arbejder på Privatmuseet for de rige og berømte. Skrækhistorier. Rædsel. 2024, Juli
Anonim
Mekanisk ur med syv segmenter
Mekanisk ur med syv segmenter
Mekanisk ur med syv segmenter
Mekanisk ur med syv segmenter

For et par måneder siden byggede jeg et tocifret mekanisk 7 -segment display, som jeg forvandlede til en nedtællingstimer. Det kom ganske godt ud, og en række mennesker foreslog at fordoble sig på displayet for at lave et ur. Problemet var, at jeg allerede var ved at løbe tør for PWM IO på min Arduino Mega og ikke havde nok til rådighed til det andet eller tredje ciffer. Jeg blev derefter peget i retning af disse PCA9685 16 -kanals PWM -drivere, der fungerer over et I2C -interface. Disse gjorde det muligt at køre de 28 servoer, jeg havde brug for, alle ved hjælp af de to I2C -ben på en Arduino. Så jeg gik i gang med at bygge et ur, der nu bruger et DS1302 real -time urmodul til at holde tiden og to 16 kanals servodrivere til at styre de 28 servoer, der bruges til at udgøre displayet, alle drevet af en Arduino Uno.

Hvis du nyder denne instruks, kan du overveje at stemme på den i urkonkurrencen

Tilbehør:

For at bygge dit ur skal du bruge følgende forbrugsvarer ud over nogle grundlæggende værktøjer:

  • Arduino Uno - Køb her
  • DS1302 Urmodul - Køb her
  • 2 x PCA9685 16Ch Servodrivere - Køb her
  • 28 x Micro Servoer - Køb her
  • Båndkabel - Køb her
  • Male Pin Header Strips - Køb her
  • Kvinde Pin Header Strips - Køb her
  • 3 mm MDF - Køb her
  • Sort spraymaling - Køb her
  • 5V 5A Batteri Elimination Circuit - Køb her
  • 12V strømforsyning - Køb her

Til dette projekt skal du også bruge nogle 3D -trykte dele. Hvis du ikke allerede har en 3D -printer, og du kan lide at lave ting, bør du helt sikkert overveje at købe en. Creality Ender 3 Pro, der bruges her, er overkommelig og producerer print af temmelig god kvalitet til prisen.

  • 3D printer brugt - Køb her
  • Filament - Køb her

Trin 1: 3D -udskriv plastkomponenterne

3D -udskriv plastkomponenterne
3D -udskriv plastkomponenterne
3D -udskriv plastkomponenterne
3D -udskriv plastkomponenterne
3D -udskriv plastkomponenterne
3D -udskriv plastkomponenterne

Jeg har designet de 7 segmentskærme til at være så enkle som muligt. Servoen er også støttebeslaget til at holde segmentet over det. Der er to 3D -printede komponenter påkrævet til hvert segment, en afstandsstykket blok til understøtning af undersiden af servoen og display segmentet, som limes direkte på servo armen.

Download 3D -udskrivningsfiler - Mekanisk 7 -segmenters displayur 3D -udskrivningsfiler

Udskriv servosegmenter og prikker ved hjælp af en lysfarvet PLA. Jeg brugte gennemsigtig grøn, men rød, orange eller gul burde også fungere godt. Jeg brugte sort PLA til afstandsstykkerne og prikstøtterne, så de ikke er synlige, når segmenterne drejes til slukket position.

Hvis du ikke har adgang til en 3D -printer, kan du prøve en af online udskrivningstjenester. Der er en række overkommelige tjenester til rådighed, som udskriver komponenterne og leverer dem til din dør om et par dage.

Trin 2: Forbered dine kontrolkort og ledninger

Forbered dine kontrolkort og ledninger
Forbered dine kontrolkort og ledninger
Forbered dine kontrolkort og ledninger
Forbered dine kontrolkort og ledninger
Forbered dine kontrolkort og ledninger
Forbered dine kontrolkort og ledninger
Forbered dine kontrolkort og ledninger
Forbered dine kontrolkort og ledninger

Du skal bruge to PCA9685 16 -kanals PWM -drivere til at køre dine 28 ur -servoer. Jeg adskilte servoerne i time- og minutcifrene, hvor hvert par cifre blev drevet af et bræt. Så jeg har et bord, der styrer servoerne i de to timers cifre og det andet, der styrer servoerne i de to minutters cifre.

For at kæde de to sammen skal du oprette et 6 -tråds båndkabelstik og lodde en anden headerstrimmel på den anden ende af det første servokontrolkort. Du skal også ændre I2C -adressen på det andet bord, så det er anderledes end det første og entydigt identificerbart.

Du skal også sammensætte ledningsnettet for at forbinde de tre tavler (to servo -tavler og urmodulet) til din Arduino. Du skal bruge 5V og GND til hvert bræt samt I2C -forbindelserne til dine Arduino -ben A4 og A5 (I2C på Arduino Uno) og urmodulets ben CLK, DAT & RST til stifter 6, 7 & 8 på din Arduino henholdsvis.

Strøm leveres til Arduino direkte fra 12V strømforsyningen og til servoer ved hjælp af 5V 5A BEC, som derefter tilsluttes de to terminaler på toppen af PWM -driveren. Du behøver kun at tilslutte en servodriver til strømmen, og den tilfører strøm til den anden via 6 -bånds kabelforbindelsen.

Trin 3: Saml servoerne

Saml servoerne
Saml servoerne
Saml servoerne
Saml servoerne
Saml servoerne
Saml servoerne

Når du har udskrevet dine segmenter, skal du sprøjte bagsiden og siderne sorte, så de er mindre synlige, når de drejes 90 grader til slukket position.

Du skal derefter lime segmenterne på dine servoarme med smeltelim. Det hjælper at lime dem på servoen med armen allerede på servoen, på denne måde kan du kontrollere, at du limer dem lige og i vater.

Du skal også lime en afstandsstykker på bunden af hver servo.

Saml prikkerne ved at lime en lille dyvle eller kebabstang ind på bagsiden af prikkerne og derefter i basisblokkene. Jeg sprøjtede også disse pinde sorte, så de er mindre synlige, hvis de ses fra en vinkel.

Trin 4: Opsætning og test

Opsætning og test
Opsætning og test
Opsætning og test
Opsætning og test

Jeg nummererede alle servoer og skrev nummeret på hvert emne, så det var lettere at holde styr på dem. Jeg startede med det øverste segment på enhedscifret og arbejdede rundt til det midterste segment på tiertallet. Dette er også den rækkefølge, hvor jeg tilsluttede dem til servokontrolkortene, og huskede, at identifikatorerne på kortene tæller fra 0 til 13 og ikke fra 1 til 14.

Jeg lagde derefter segmenterne op på et bord med nok plads mellem dem til testning, så de ikke bevægede sig ind i det ene og det andet, mens jeg satte rejsegrænser og retninger op. Hvis du prøver at placere dem tæt på hinanden, vil du sandsynligvis have et eller to forsøg på at bevæge sig i den forkerte retning eller over rejse på et tidspunkt og ramme et andet, som kan beskadige segmentet, servoarmen eller fjerne gearene på servoen.

Trin 5: Upload af koden

Upload af koden
Upload af koden
Upload af koden
Upload af koden
Upload af koden
Upload af koden

Koden ser kompliceret ud ved første øjekast, men den er faktisk relativt enkel takket være de to anvendte biblioteker. Der er også meget gentagelse, fordi der er fire forskellige 7 segmentskærme, der skal opdateres.

Her er en opsummerende beskrivelse af koden, se på den fulde vejledning for en mere detaljeret forklaring og et link til at downloade koden - Mekanisk 7 segmenters displayur

Vi starter med at importere to biblioteker, virtuabotixRTC.h til urmodulet og Adafruit_PWMServoDriver.h til servodriverne. Adafruit -biblioteket kan downloades og installeres direkte via bibliotekschefen i IDE.

Vi opretter derefter et objekt til hvert kontrolkort med den relevante adresse, et for timecifrene og et for minutcifrene.

Vi har derefter fire arrays til at gemme tænd- og sluk -positionerne for hver servo. Du bliver nødt til at foretage justeringer af disse tal i de kommende trin for at sikre, at dine servoer står oprejst, når de er tændt, drejes 90 grader, når de er slukket og ikke overstiger rejser.

Et cifferarray gemmer positionerne for hvert segment for hvert ciffer, der skal vises.

Vi konfigurerede derefter urmodulet og opretter variabler til lagring af de nuværende og tidligere individuelle cifre.

I opsætningsfunktionen starter og konfigurerer vi PWM -kontrolkortene samt opdaterer uret, hvis det kræves. Vi løber derefter gennem en loop for at indstille displayet til 8 8: 8 8, så vi kender startpositionen for alle servoer. Dette bruges også til at konfigurere servoerne, så de alle vender korrekt opad.

I hovedsløjfen får vi den opdaterede tid fra urmodulet, spildte det ind i de fire cifre og kontrollerer derefter, om tiden er ændret fra den sidste kontrol. Hvis tiden har ændret sig, opdaterer vi displayet og opdaterer derefter de tidligere cifre.

I opdateringsvisningsfunktionen flytter vi først de midterste segmenter. Dette gøres først, fordi der er en vis logik, der kræves for at flytte de to øverste segmenter, der støder op til det midterste segment, lidt af vejen, før det midterste segment flyttes, ellers vil det støde ind i dem. Når de midterste segmenter flyttes, flyttes de resterende segmenter til de korrekte positioner.

Trin 6: Montering af uret på bagpladen

Montering af uret på bagsiden
Montering af uret på bagsiden
Montering af uret på bagsiden
Montering af uret på bagsiden
Montering af uret på bagsiden
Montering af uret på bagsiden

Da jeg var færdig med testen, samlede jeg servoerne på bagpladen ved hjælp af ovenstående layout som en vejledning.

Det hvide område er den samlede pladestørrelse, det lysere grå er området omkring hvert ciffer, hvor servosegmenterne bevæger sig ind, og konturen på det mørkegrå område er midterlinjen for de ydre 6 segmenter for hvert ciffer.

Jeg skar tavlen, markerede layoutet og limede derefter cifrene på plads for at udgøre urskiven.

Jeg borede derefter huller i nærheden af hver servo og førte ledningerne igennem til bagsiden af brættet, så de er mindre synlige.

Jeg monterede elektronikken på bagsiden af uret med dobbeltsidet tape.

Trin 7: Endelig opsætning og betjening

Endelig opsætning og betjening
Endelig opsætning og betjening
Endelig opsætning og betjening
Endelig opsætning og betjening
Endelig opsætning og betjening
Endelig opsætning og betjening
Endelig opsætning og betjening
Endelig opsætning og betjening

Når servoerne var klar, fjernede jeg alle servoarmene til de sidste justeringer af segmenternes positioner. Du bør tænde for Arduino i denne tilstand, så 8 8: 8 8 vises, og derefter afbryde strømmen, denne centrerer alle dine servoer igen, så du kan sætte servoarmene på igen med segmenterne vendt så tæt på lodret som muligt.

Du bliver derefter nødt til sekventielt at tænde for din Arduino og foretage justeringer af dit segment til og fra -positioner i dine fire arrays, så servoerne er helt lodrette, når de er tændt og drejer 90 grader, når de er slukket uden at skulle rejse for meget. Dette trin er ret tidskrævende og kræver lidt tålmodighed, men slutresultatet er det hele værd!

Uret kan efterlades ved hjælp af 12V strømforsyningen og 5V BEC tilsluttet det. Hvis strømmen går ned, holder batteriet på RTC -modulet tiden, så når uret genoprettes, nulstilles uret automatisk til det korrekte tidspunkt.

Hvis du nød denne instruktive, skal du stemme for den i urkonkurrencen og lade mig vide om eventuelle forbedringer eller forslag, du kan komme med i kommentarfeltet herunder.

Ur konkurrence
Ur konkurrence
Ur konkurrence
Ur konkurrence

Anden pris i urkonkurrencen

Anbefalede: