Innholdsfortegnelse:
- Trinn 1: Verktøy og materialer
- Trinn 2: Lim sammen treramme
- Trinn 3: Klipp rammen ved hjelp av sirkelskjær
- Trinn 4: Skriv ut og sett sammen gir
- Trinn 5: "Lim" seksjoner sammen
- Trinn 6: Skjær avlastninger i ramme
- Trinn 7: Klipp klaring for hall -effekt sensorer
- Trinn 8: Lim ytre ring
- Trinn 9: Justeringsskruer for kutte hall -effektføler
- Trinn 10: Lim ringer til hardboard
- Trinn 11: Lim innvendig plate
- Trinn 12: Fest finer
- Trinn 13: Trim finér
- Trinn 14: Skjær finér
- Trinn 15: Lim finér
- Trinn 16: Slip og avslutt
- Trinn 17: Installer strøm
- Trinn 18: Monter elektronikk
- Trinn 19: Lodde og koble til elektronikk
- Trinn 20: Bakplate
- Trinn 21: Arduino -kode
- Trinn 22: STL -filer
- Trinn 23: Solidworks -filer
- Trinn 24: Konklusjon
Video: Imponerende magnetisk veggklokke: 24 trinn (med bilder)
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Mekaniske klokker har alltid fascinert meg. Måten alle de interne girene, fjærene og fluktene fungerer sammen for å resultere i en konstant pålitelig klokke har alltid virket utenfor rekkevidde for mitt begrensede ferdighetssett. Heldigvis kan moderne elektronikk og 3D -trykte deler bygge bro over gapet og skape noe enkelt som ikke er avhengig av små presise metaldeler.
Denne minimalistiske veggklokken skjuler et par 3D -trykte ringhjul drevet av rimelige steppermotorer som roterer magneter bak en klassisk valnøttfiner.
Opprinnelig inspirert av STORY Clock, ønsket jeg et tidsstykke som indikerte tidspunktet på dagen bare ved bruk av kulelager vs digital avlesning og sakte bevegelig kulelager som produktet bruker.
Trinn 1: Verktøy og materialer
Materialer:
- 13 x 13 x 2 in. Kryssfiner/sponplate (jeg limte sammen 3 stykker skrapvirke)
- 13 x 13 tommer. Hardboard
- Arduino Nano
- Sanntidsklokke
- Steppermotorer og drivere
- Hall Effect Sensors
- Magneter
- Strømkabel
- Vekselstrømadapter
- Støpsel
- Diverse maskinskruer
- Diverse treskruer
- 3D -trykte deler (siste trinn)
- Finér (12 x 12 tommer - ansikt, 40 tommer lang stripe)
- Spraylakk
- Svart spraymaling
Verktøy:
- 3D -skriver
- Kompass
- X-acto kniv
- Lim
- Klemmer
- Circle Cutting Jig
- Hack Saw
- Skivesliper
- Skralleklemme
- Meisel
- Hersker
- Sander
- Øvelser
- Skrutrekkere
- Loddejern
- Varm limpistol
Trinn 2: Lim sammen treramme
Lim sammen trebiter som skal danne rammen på klokken. Jeg brukte gjenvunnet sponplater fra en gammel sengeramme.
Trinn 3: Klipp rammen ved hjelp av sirkelskjær
Merk midten av brettet og fest det til en sirkelskjær. Klipp fem sirkler med følgende diametre:
- 12 tommer
- 11 1/4 tommer
- 9 1/4 tommer
- 7 1/4 tommer.
- 5 3/8 tommer
Trinn 4: Skriv ut og sett sammen gir
Ringhjulene er delt inn i segmenter, slik at de kan skrives ut på en liten skriver og festes sammen. Alle delene ble trykt i ABS for å hjelpe til med sammensmeltingsprosessen som ble vist i neste trinn. Slip alle kanter og overflater på delene.
Skriv ut følgende mengder deler som ble funnet i trinn 22:
- 1 - Time Ring Gear Segment Magnet
- 6 - timers ringutstyrssegment Basic
- 1 - timers låseringssegment Stepper Mount
- 6 - timers beholderingssegment Basic
- 1 - Holder for timesaleffektsensor
- 1 - Minutt ringutstyrssegmentmagnet
- 7 - Minutters ringutstyrssegment Basic
- 1 - Minutt tilbakeholdingsring segmentstegmontering
- 6 - Minutt beholderingssegment Basic
- 1 - Minute Hall Effect Sensor Holder
- 2 - Spur Gear
- 1 - Elektronikkfeste
Trinn 5: "Lim" seksjoner sammen
I en glassflaske med litt aceton, løses mislykkede utskrifter gamle støttematerialer osv. Mal acetonblandingen på hver søm for å smelte bitene sammen. Etter herding, sand hver søm flatt.
Trinn 6: Skjær avlastninger i ramme
Plasser ringhjulene og låseringene i rammen og kutt ut relieffer for trinnmotorene. Jeg målte og kuttet den indre ringen for stor, så jeg shimmed den til størrelsen ved hjelp av noen lønnkantbanding jeg hadde rundt i butikken.
Trinn 7: Klipp klaring for hall -effekt sensorer
Skjær et åpningshull gjennom den indre ringen for den lille hall -effektsensoren og sporet for time -hall -effektsensoren. Jeg brukte en meisel, fil og liten håndsag for å kutte disse klaringene.
Trinn 8: Lim ytre ring
Lim og teip den ytre ringen på størrelse med minuttringen.
Trinn 9: Justeringsskruer for kutte hall -effektføler
Kutt maskinskruene med en hacksag, slik at de bare er lengre enn tykkelsen på låseringen og hall -effektføleren. Klipp et spor i trådene slik at det kan justeres fra gjenget med en flat skrutrekker.
Trinn 10: Lim ringer til hardboard
Skjær en sirkel av hardboard som er bare større enn den ytre ringen. Lim ytre og indre ring på hardboardplaten. Bruk den lille låseringen og ringutstyret for å plassere den indre ringen. Vær mer oppmerksom enn jeg gjorde for ikke å lime den indre ringen bakover. Bilde to viser et nytt spor for en liten hall -effektsensor.
Bruk en skivesliper til å trimme hardboardet til størrelsen på den ytre ringen.
Trinn 11: Lim innvendig plate
Lim den indre platen på plass ved å bruke timebeskyttelsesringen og ringgiret for å plassere den indre platen.
Trinn 12: Fest finer
Klipp en stripe med finer bredere enn at klokken er dyp og lang nok til å vikle rundt døgnet (3,14 * diameter på klokken, vil returnere den nødvendige lengden. Legg til en tomme for å være sikker på at du har nok.) Tørrmonter fineren til kuttet i lengden. Påfør rikelig med lim på fineren og fest den med en stroppklemme. La det tørke et par timer for å sikre vedheft.
Trinn 13: Trim finér
Bruk en skarp meisel til å klippe overflødig finér foran og bak på klokken.
Trinn 14: Skjær finér
Fineren min hadde noen sprekker i den. For å gjøre det lettere å jobbe med, brukte jeg malertape for å holde det sammen. Ved å bruke en x-acto-kniv i et kompass, kutter du fineren bare større enn klokkens overflate.
Trinn 15: Lim finér
Bruk de avskårne ringene for å spre trykket utover klokken. Påfør rikelig lim på siden som ikke er teip. Orienter kornet vertikalt på urskiven og påfør mange klemmer som strammer hver og en litt om gangen. Dette vil sikre at fineren ikke forskyves og har jevnt trykk over ansiktet.
Jeg brukte et par flate brett på forsiden av klokken og noen cauls på baksiden.
Trinn 16: Slip og avslutt
Bruk sandpapir, fjern forsiktig overflødig finér fra klokken og sand fra 220 korn opp til 600 korn.
Påfør mellom 10 og 20 strøk lakk. Dette vil bygge opp overflaten som kulelageret skal sykle langs. Uunngåelig på grunn av støv og andre partikler i luften, tror jeg at linjer vil dukke opp langs banen til hvert kulelager. Påføring av flere strøk bør forsinke dette så lenge som mulig. Det vil også gjøre fremtidig lakkering enklere. Jeg vil oppdatere dette trinnet hvis det noen ganger vises linjer på klokken min.
Trinn 17: Installer strøm
Bor et hull i bunnen av klokken med en 27/64 tommer. Bor og skru på strømpluggen.
Trinn 18: Monter elektronikk
Fest stepperdrivere og sanntidsklokke til det elektroniske kortet. Jeg trengte å finne en måte å sikre Arduino på, slik at hull ble boret og et spor ble kuttet for glidelås. Disse funksjonene er lagt til i filen som ble funnet i trinn 22.
Trinn 19: Lodde og koble til elektronikk
Følg blokkdiagrammet og lodd alle komponentene sammen. Varm lim ringene på plass og fest eventuelle løse ledninger med varmt lim også.
Trinn 20: Bakplate
Lag bakplaten ved å kutte en annen sirkel 1/2 tommer større enn klokkens overflate og en ring med innvendig diameter som er på baksiden av klokken. Lim ringen og sirkel sammen med noen fjærklemmer.
Når den er tørket, skriver du en linje 1/8 tommer større enn den indre ringen og klipper til i størrelse med båndsagen eller skivesliperen.
Klipp et spor 1 tommer langt 1/4 tommer bredt øverst på baksiden ved hjelp av en ruter eller borekroner. Forsink fire hull for å feste ryggen i rammen på klokken.
Påfør svart spraymaling og fest til klokken når den er tørket.
Trinn 21: Arduino -kode
Arduino -koden kommenteres så godt som mulig. Husk at jeg ikke er en programmerer, jeg har minimal arduino -opplevelse (vær snill). Koden kjører kontinuerlig for å se om gjeldende tid samsvarer med "Tilbakestill tid". Fordi jeg ikke kunne tenke på en måte å oversette den nåværende tiden til trinn, korrigerer den seg bare en gang daglig (midnatt som standard). Ved midnatt roterer tannhjulene til midnattposisjon, deretter venter du til 00:01 til den tiden og fortsetter derfra. Som den sitter nå, mister klokken bare omtrent 5 sekunder over en 24 -timers periode.
Du trenger Stepper- og RTClib -bibliotekene installert.
Jeg vet at koden kan optimaliseres av noen med mer erfaring enn meg selv. Hvis du klarer utfordringen, kan du gjenskape dette prosjektet for deg selv og dele din kunnskap.
#inkludere
#include "RTClib.h" RTC_DS1307 rtc; #define oneRotation 2038 // antall trinn i en omdreining av 28BYJ-48 stepper motor Stepper hourHand (oneRotation, 3, 5, 4, 6); Stepper minuteHand (oneRotation, 7, 9, 8, 10); #define hourStopSensor 12 #define minuteStopSensor 11 int endStep = 0; // Tid dødelig for hastigheten på klokken. int setDelay1 = 168; int setDelay2 = 166; int setDelay3 = 5; // Nåværende tid å gjøre matte med. flyte hr = 0; float mn = 0; flyte sc = 0; // Still klokkeslettet for å tilbakestille klokken (24 -timers format). int resetHour = 0; int resetMinute = 0; // Variabler for å stille riktig tidspunkt ved oppstart og tilbakestilling. float setTimeStepHour = 0; float setTimeStepMinute = 0; float handDelay = 0; float hourTest = 0; float minuteTest = 0; ugyldig oppsett () {Serial.begin (115200); // Sett opp sanntidsklokke og tilbakestill hall effekt sensorer. pinMode (hourStopSensor, INPUT_PULLUP); pinMode (minuteStopSensor, INPUT_PULLUP); rtc.begin (); // Ukommenter linjen nedenfor for å angi tid. // rtc.adjust (DateTime (2020, 2, 19, 23, 40, 30)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Still inn topphastigheten til trinnmotorer. hourHand.setSpeed (15); minuteHand.setSpeed (15); // Sløyfe til minutt- og timeviseren er ved middagstid mens (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } annet {forsinkelse (3); } if (digitalRead (minuteStopSensor) == LOW) {minuteHand.step (3); } annet {forsinkelse (4); }} while (digitalRead (hourStopSensor)! = LOW || digitalRead (minuteStopSensor)! = LOW) {if (digitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } annet {forsinkelse (3); } if (digitalRead (minuteStopSensor)! = LOW) {minuteHand.step (3); } annet {forsinkelse (4); }}} // Få nåværende dato DateTime nå = rtc.now (); time = nå. time (); mn = nå. minutt (); sc = nå. sekund (); // Bytt til 12 -timers format hvis (hr> = 12) {hr = hr - 12; } // Se hvilken hånd som må reise over ansiktet ytterligere, og bruk avstanden // for å justere innstilt tid deretter. hourTest = time / 12; minuteTest = mn / 60; if (hourTest> minuteTest) {handDelay = hourTest; } annet {handDelay = minuteTest; } // Angi gjeldende time setTimeStepHour = (t * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // Angi gjeldende minutt setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1.9); // Test hvilken hånd som trenger flere trinn, og sett det til det lengste trinntallet for for -løkken. if (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } annet {endStep = setTimeStepMinute; } for (int i = 0; i <= endStep; i ++) {if (i <setTimeStepHour) {hourHand.step (2); } annet {forsinkelse (3); } if (i <setTimeStepMinute) {minuteHand.step (3); } annet {forsinkelse (4); }}} // Still klokken til å kjøre RPM hourHand.setSpeed (1); minuteHand.setSpeed (1); } void loop () {// Start loop loop loop. for (int i = 0; i <22; i ++) {minuttHånd.steg (1); forsinkelse (setDelay1); // Test for tilbakestillingstid, hvis den er klar til å tilbakestilles, går den i stykker. hvis (rtc.now (). time () == resetHour && rtc.now (). minutt () == resetMinute) {pause; }} forsinkelse (setDelay3); for (int i = 0; i <38; i ++) {timeHand.step (1); forsinkelse (setDelay1); // Test for tilbakestillingstid, hvis den er klar til å tilbakestilles, går den i stykker. hvis (rtc.now (). time () == resetHour && rtc.now (). minutt () == resetMinute) {pause; } for (int i = 0; i <20; i ++) {minuteHand.step (1); forsinkelse (setDelay2); // Test for tilbakestillingstid, hvis den er klar til å tilbakestilles, går den i stykker. hvis (rtc.now (). time () == resetHour && rtc.now (). minutt () == resetMinute) {pause; }}}} // Tilbakestill klokken på tilbakestillingstidspunktet hvis (rtc.now (). Time () == resetHour && rtc.now (). Minutt () == resetMinute) {// Endre hastigheten på klokken hourHand.setSpeed (10); minuteHand.setSpeed (10); // Sløyfe til minutt og time hånd når middag. while (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } annet {forsinkelse (3); } if (digitalRead (minuteStopSensor) == LOW) {minuteHand.step (3); } annet {forsinkelse (4); }} while (digitalRead (hourStopSensor)! = LOW || digitalRead (minuteStopSensor)! = LOW) {if (digitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } annet {forsinkelse (3); } if (digitalRead (minuteStopSensor)! = LOW) {minuteHand.step (3); } annet {forsinkelse (4); }} // Vent her til tilbakestillingstiden har gått. mens (rtc.now (). minutt () == resetMinute) {forsinkelse (1000); } // Få nåværende dato DateTime nå = rtc.now (); time = nå. time (); mn = nå. minutt (); sc = nå. sekund (); // Bytt til 12 -timers format hvis (hr> = 12) {hr = hr - 12; } // Se hvilken hånd som må reise over ansiktet ytterligere, og bruk avstanden // for å justere innstilt tid deretter. hourTest = time / 12; minuteTest = mn / 60; if (hourTest> minuteTest) {handDelay = hourTest; } annet {handDelay = minuteTest; } // Angi gjeldende time setTimeStepHour = (t * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // Angi gjeldende minutt setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1.9); // Test hvilken hånd som trenger flere trinn, og sett det til det lengste trinnet for for -løkken. if (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } annet {endStep = setTimeStepMinute; } for (int i = 0; i <= endStep; i ++) {if (i <setTimeStepHour) {hourHand.step (2); } annet {forsinkelse (3); } if (i <setTimeStepMinute) {minuteHand.step (3); } annet {forsinkelse (4); }} hourHand.setSpeed (1); minuteHand.setSpeed (1); }}
Trinn 22: STL -filer
Du må skrive ut følgende mengder av filene:
- 1 - Time Ring Gear Segment Magnet
- 6 - timers ringutstyrssegment Basic
- 1 - timers låseringssegment Stepper Mount
- 6 - timers beholderingssegment Basic
- 1 - Holder for timesaleffektsensor
- 1 - Minutt ringutstyrssegmentmagnet
- 7 - Minutters ringutstyrssegment Basic
- 1 - Minutt tilbakeholdingsring segmentstegmontering
- 6 - Minutt beholderingssegment Basic
- 1 - Minute Hall Effect Sensor Holder
- 2 - Spur Gear
- 1 - Elektronikkfeste
Trinn 23: Solidworks -filer
Dette er de originale Solidworks -filene som ble brukt til å lage STL -er som ble funnet i forrige trinn. Du er velkommen til å redigere og endre filene mine slik du synes.
Trinn 24: Konklusjon
Denne klokken ble bedre enn jeg hadde forventet. Etter å ha minimal Arduino -opplevelse, er jeg glad for hvordan det ble og hvor nøyaktig det er. Det ser bra ut og fungerer akkurat som jeg hadde håpet.