Sadržaj:
- Korak 1: Alati i materijali
- Korak 2: Zalijepite drveni okvir
- Korak 3: Izrežite okvir pomoću kružnog rezača
- Korak 4: Ispišite i sastavite zupčanike
- Korak 5: "Zalijepite" odjeljke zajedno
- Korak 6: Izrežite reljefe u okvir
- Korak 7: Izrežite razmak za Hall -ove senzore
- Korak 8: Zalijepite vanjski prsten
- Korak 9: Izrežite vijke za podešavanje osjetnika Hall efekta
- Korak 10: Zalijepite prstene na lesonit
- Korak 11: Zalijepite unutarnji disk
- Korak 12: Pričvrstite furnir
- Korak 13: Obrežite furnir
- Korak 14: Izrežite furnir
- Korak 15: Zalijepite furnir
- Korak 16: Pijesak i završna obrada
- Korak 17: Instalirajte napajanje
- Korak 18: Sastavite elektroniku
- Korak 19: Lemljenje i povezivanje elektronike
- Korak 20: Zadnja ploča
- Korak 21: Arduino kod
- Korak 22: STL datoteke
- Korak 23: Solidworks datoteke
- Korak 24: Zaključak
Video: Očaravajući magnetski zidni sat: 24 koraka (sa slikama)
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Mehanički satovi oduvijek su me fascinirali. Način na koji svi unutarnji zupčanici, opruge i izlazi djeluju zajedno i rezultira konstantnim pouzdanim satom uvijek se činio nedostižnim za moj ograničeni skup vještina. Srećom, moderna elektronika i 3D ispisani dijelovi mogu premostiti jaz kako bi stvorili nešto jednostavno što se ne oslanja na male precizne metalne dijelove.
Ovaj minimalistički zidni sat skriva par 3D tiskanih prstenastih zupčanika pogonjenih jeftinim koračnim motorima koji rotiraju magnete iza klasičnog furnira od oraha.
U početku inspiriran STORY satom, želio sam prikaz vremena koji prikazuje vrijeme u danu koristeći samo kuglične ležajeve u usporedbi s digitalnim očitanjem i sporo pokretnim kugličnim ležajevima koje koristi njihov proizvod.
Korak 1: Alati i materijali
Materijali:
- 13 x 13 x 2 inča. Šperploča/iverica (zalijepila sam 3 komada starog drveta)
- 13 x 13 inča. Tvrda ploča
- Arduino Nano
- Sat u realnom vremenu
- Koračni motori i upravljački programi
- Senzori Hall efekta
- Magneti
- Kabel za napajanje
- AC adapter
- Utikač
- Različiti strojni vijci
- Razni vijci za drvo
- 3D ispisani dijelovi (zadnji korak)
- Furnir (12 x 12 in. - lice, 40 in. Duga traka)
- Lak u spreju
- Crna boja u spreju
Alati:
- 3D pisač
- Kompas
- X-acto nož
- Ljepilo
- Stezaljke
- Žiga za rezanje krugova
- Hack Saw
- Brusilica za diskove
- Ratchet Stezaljka
- Sječivo
- Vladar
- Sander
- Bušilice
- Odvijači
- Lemilica
- Pištolj za vruće ljepilo
Korak 2: Zalijepite drveni okvir
Zalijepite tri komada drveta koji će činiti okvir sata. Koristio sam obnovljenu ivericu sa starog okvira kreveta.
Korak 3: Izrežite okvir pomoću kružnog rezača
Označite središte ploče i montirajte je na kružni ubodni rez. Izrežite pet krugova sljedećih promjera:
- 12 in.
- 11 1/4 in.
- 9 1/4 in.
- 7 1/4 inča
- 5 3/8 inča
Korak 4: Ispišite i sastavite zupčanike
Prstenasti zupčanici razbijeni su na segmente pa se mogu ispisati na malom pisaču i spojiti. Svi su dijelovi tiskani na ABS -u radi lakšeg procesa stapanja prikazanog u sljedećem koraku. Brusite sve rubove i površine dijelova.
Ispišite sljedeće količine dijelova koje ste pronašli u koraku 22:
- 1 - Magnet sa segmentnim zupčanikom za sat
- 6 - Osnovni segment prstenastog zupčanika
- 1 - Stepeni nosač segmenta za zadržavanje prstena
- 6 - Osnovni segment prstena za zadržavanje sata
- 1 - Nosač senzora za efekt satne dvorane
- 1 - Magnetni segmentni magnet s magnetskim prstenom
- 7 - Minute Ring Ring Gear Segment Basic
- 1 - Stepenasti nosač segmenta za zadržavanje prstena
- 6 - Osnovni segment prstena za zadržavanje minuta
- 1 - Držač senzora za minutni Hall efekt
- 2 - Zupčasti zupčanik
- 1 - Nosač za elektroniku
Korak 5: "Zalijepite" odjeljke zajedno
U staklenoj bočici s malo acetona otopite stare materijale za podlogu koje nisu uspjeli otisnuti itd. Obojite smjesu acetona na svakom šavu kako biste spojili komade. Nakon što se stvrdne, očistite svaki šav.
Korak 6: Izrežite reljefe u okvir
Postavite prstenaste zupčanike i potporne prstenove u okvir i izrežite reljefe za koračne motore. Izmjerio sam i izrezao unutarnji prsten prevelik pa sam ga prilagodio veličini koristeći neke javorove rubove koje sam imao oko trgovine.
Korak 7: Izrežite razmak za Hall -ove senzore
Izrežite zračni otvor kroz unutarnji prsten za osjetnik efekta minutne dvorane i utor za senzor učinka satne hodnice. Za rezanje ovih razmaka upotrijebio sam dlijeto, turpiju i malu ručnu pilu.
Korak 8: Zalijepite vanjski prsten
Zalijepite i zalijepite vanjski prsten u veličini minutnog sigurnosnog prstena.
Korak 9: Izrežite vijke za podešavanje osjetnika Hall efekta
Strojne vijke izrežite nožnom pilom tako da budu samo dulji od debljine pričvrsnog prstena i držača osjetnika Hall učinka. Izrežite utor u navojima tako da se može postaviti s kraja s navojem ravnim odvijačem.
Korak 10: Zalijepite prstene na lesonit
Izrežite krug od lesonita samo veći od vanjskog prstena. Vanjski i unutarnji prsten zalijepite na prednju ploču od lesonita. Upotrijebite minutu za pričvršćivanje prstena i zupčanik za postavljanje unutarnjeg prstena. Obratite veću pozornost nego ja da ne zalijepim unutarnji prsten unatrag. Slika dva prikazuje novi rez za senzor minutnog efekta Hall -a.
Brusilicom za rezanje obrežite lesonit ploču do veličine vanjskog prstena.
Korak 11: Zalijepite unutarnji disk
Zalijepite unutarnji disk na mjesto koristeći satni pričvrsni prsten i zupčanik za postavljanje unutarnjeg diska.
Korak 12: Pričvrstite furnir
Izrežite traku furnira širu nego što je sat dubok i dovoljno dugačak da ga omotate oko sata (3,14 * promjer sata, vratit će potrebnu duljinu. Dodajte centimetar kako biste bili sigurni da imate dovoljno.) Suho postavite furnir na izrezati na duljinu. Nanošenje dovoljno ljepila na furnir i stezanje na mjestu pomoću stezaljke za remen. Ostavite da se osuši nekoliko sati kako biste osigurali prianjanje.
Korak 13: Obrežite furnir
Oštrim dlijetom obrežite višak furnira s prednje i stražnje strane sata.
Korak 14: Izrežite furnir
Moj furnir je imao neke pukotine u sebi. Kako bih vam olakšao rad, nalijepio sam slikarske trake da ih drže zajedno. Nožem x-acto u kompasu izrežite furnir samo veći od prednje strane sata.
Korak 15: Zalijepite furnir
Isključenim prstenovima rasporedite pritisak po prednjoj strani sata. Nanesite dovoljno ljepila na stranu furnira koja nije traka. Orijentirajte zrno okomito na brojčaniku sata i primijenite mnoge stezaljke zatežući svaku po jednu. To će osigurati da se furnir ne pomiče i ima ravnomjeran pritisak po licu.
Koristio sam nekoliko ravnih dasaka na prednjoj strani sata i nekoliko kalupa na stražnjoj strani.
Korak 16: Pijesak i završna obrada
Brusnim papirom pažljivo uklonite višak furnira s prednje strane sata i izbrusite od 220 zrna do 600 zrna.
Nanesite između 10 i 20 slojeva laka. Time će se izgraditi površina po kojoj će kuglični ležaj voziti. Neizbježno zbog prašine i drugih čestica u zraku, mislim da će se linije pojaviti na putu svakog kugličnog ležaja. Nanošenje više slojeva završne obrade trebalo bi to odgoditi što je dulje moguće. Također će olakšati buduće dorađivanje. Ažurirat ću ovaj korak ako se na satu ikada pojave retci.
Korak 17: Instalirajte napajanje
Svrdlom od 27/64 inča izbušite rupu na dnu sata i uvrnite utikač na mjesto.
Korak 18: Sastavite elektroniku
Priključite upravljačke programe koraka i sat u stvarnom vremenu na elektroničku ploču. Morao sam pronaći način kako osigurati Arduino pa su izbušene rupe i izrezan utor za zatvarač. Ove su značajke dodane datoteci pronađenoj u koraku 22.
Korak 19: Lemljenje i povezivanje elektronike
Slijedeći blok dijagram, lemite sve komponente zajedno. Vruće zalijepite prstenove na mjesto i učvrstite sve zalutale žice vrućim ljepilom.
Korak 20: Zadnja ploča
Napravite stražnju ploču izrezivanjem drugog kruga 1/2 inča većeg od prednje strane sata i prstena s unutarnjim promjerom istim kao stražnji dio sata. Zalijepite prsten i zaokružite zajedno s nekim opružnim stezaljkama.
Kad se osuši, ispišite liniju 1/8 inča veću od unutarnjeg prstena i obrežite je pomoću tračne pile ili brusilice.
Izrežite utor 1 inča dugačak 1/4 in. Širok na vrhu stražnje strane pomoću glodalice ili svrdla. Upustite četiri rupe za pričvršćivanje stražnje strane u okvir sata.
Nanesite crnu boju u spreju i pričvrstite je na sat kad se osuši.
Korak 21: Arduino kod
Arduino kôd je komentiran što je bolje moguće. Imajte na umu da ja nisam programer, imam minimalno arduino iskustvo (budite ljubazni). Kôd se neprestano provjerava provjerava odgovara li trenutno vrijeme "Reset Time". Budući da nisam mogao smisliti način da prevedem trenutno vrijeme u korake, ono se ispravlja samo jednom dnevno (prema zadanim postavkama ponoć). U ponoć zupčanici se okreću u ponoćni položaj, zatim čekaju do 00:01 premještajući se na to vrijeme, a zatim nastavljaju od tamo. Kako trenutno sjedi, sat gubi samo oko 5 sekundi u razdoblju od 24 sata.
Trebat će vam instalirane knjižnice Stepper i RTClib.
Znam da kôd može optimizirati netko s više iskustva od mene. Ako ste dorasli izazovu, molimo vas da za sebe ponovno stvorite ovaj projekt i podijelite svoje znanje.
#uključi
#include "RTClib.h" RTC_DS1307 rtc; #define oneRotation 2038 // broj koraka u jednom okretu od 28BYJ-48 koračnog motora Stepper hourHand (oneRotation, 3, 5, 4, 6); Stepper minuteHand (oneRotation, 7, 9, 8, 10); #define hourStopSensor 12 #define minuteStopSensor 11 int endStep = 0; // Vrijeme određeno za brzinu sata. int setDelay1 = 168; int setDelay2 = 166; int setDelay3 = 5; // Trenutno vrijeme za matematiku. plovak hr = 0; plovak mn = 0; plovak sc = 0; // Postavite doba dana za poništavanje sata (24 -satni format). int resetHour = 0; int resetMinuta = 0; // Varijable za postavljanje točnog vremena pri pokretanju i resetiranju. float setTimeStepHour = 0; float setTimeStepMinute = 0; float handDelay = 0; float hourTest = 0; float minuteTest = 0; void setup () {Serial.begin (115200); // Postavljanje sata u stvarnom vremenu i resetiranje osjetnika Hall učinka. pinMode (hourStopSensor, INPUT_PULLUP); pinMode (minuteStopSensor, INPUT_PULLUP); rtc.begin (); // Uncomment line ispod za postavljanje vremena. // rtc.adjust (DateTime (2020, 2, 19, 23, 40, 30)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Postavite najveću brzinu koračnih motora. hourHand.setSpeed (15); minuteHand.setSpeed (15); // Petlja do minute i sata u podne while (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } else {odgoda (3); } if (digitalRead (minuteStopSensor) == LOW) {minuteHand.step (3); } else {odgoda (4); }} while (digitalRead (hourStopSensor)! = LOW || digitalRead (minuteStopSensor)! = LOW) {if (digitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } else {odgoda (3); } if (digitalRead (minuteStopSensor)! = LOW) {minuteHand.step (3); } else {odgoda (4); }} // Dobivanje trenutnog vremena DateTime now = rtc.now (); hr = sada.hour (); mn = sada.minuta (); sc = sada.second (); // Promijenite u 12 -satni format ako (hr> = 12) {hr = hr - 12; } // Pogledajte koja ruka mora dalje prijeći preko lica i upotrijebite tu udaljenost // da biste prema tome prilagodili postavljeno vrijeme. hourTest = hr / 12; minuteTest = mn / 60; if (hourTest> minuteTest) {handDelay = hourTest; } else {handDelay = minuteTest; } // Postavi trenutni sat setTimeStepHour = (hr * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // Postavi trenutnu minutu setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1,9); // Testiraj kojoj će ruci biti potrebno više koraka i postavi je na najduži broj koraka for petlje. if (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } else {endStep = setTimeStepMinute; } za (int i = 0; i <= endStep; i ++) {if (i <setTimeStepHour) {hourHand.step (2); } else {odgoda (3); } if (i <setTimeStepMinute) {minuteHand.step (3); } else {odgoda (4); }} // Postavi sat radi RPM hourHand.setSpeed (1); minuteHand.setSpeed (1); } void loop () {// Pokretanje petlje sata. za (int i = 0; i <22; i ++) {minuteHand.step (1); kašnjenje (setDelay1); // Testiraj vrijeme resetiranja, ako je spreman za resetiranje, prekini. if (rtc.now (). hour () == resetHour && rtc.now (). minute () == resetMinute) {break; }} kašnjenje (setDelay3); for (int i = 0; i <38; i ++) {hourHand.step (1); kašnjenje (setDelay1); // Testiraj vrijeme resetiranja, ako je spreman za resetiranje, prekini. if (rtc.now (). hour () == resetHour && rtc.now (). minute () == resetMinute) {break; } za (int i = 0; i <20; i ++) {minuteHand.step (1); kašnjenje (setDelay2); // Testiraj vrijeme resetiranja, ako je spreman za resetiranje, prekini. if (rtc.now (). hour () == resetHour && rtc.now (). minute () == resetMinute) {break; }}} // Vraćanje sata na vrijeme resetiranja if (rtc.now (). Hour () == resetHour && rtc.now (). Minute () == resetMinute) {// Promjena brzine sata hourHand.setSpeed (10); minuteHand.setSpeed (10); // Petlja do minute i sata do podneva. while (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } else {odgoda (3); } if (digitalRead (minuteStopSensor) == LOW) {minuteHand.step (3); } else {odgoda (4); }} while (digitalRead (hourStopSensor)! = LOW || digitalRead (minuteStopSensor)! = LOW) {if (digitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } else {odgoda (3); } if (digitalRead (minuteStopSensor)! = LOW) {minuteHand.step (3); } else {odgoda (4); }} // Pričekajte ovdje dok ne prođe vrijeme resetiranja. while (rtc.now (). minute () == resetMinute) {odgoda (1000); } // Dobijte trenutno vrijeme DateTime now = rtc.now (); hr = sada.hour (); mn = sada.minuta (); sc = sada.second (); // Promijenite u 12 -satni format ako (hr> = 12) {hr = hr - 12; } // Pogledajte koja ruka mora dalje prijeći preko lica i upotrijebite tu udaljenost // da biste prema tome prilagodili postavljeno vrijeme. hourTest = hr / 12; minuteTest = mn / 60; if (hourTest> minuteTest) {handDelay = hourTest; } else {handDelay = minuteTest; } // Postavi trenutni sat setTimeStepHour = (hr * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // Postavi trenutnu minutu setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1,9); // Testiraj kojoj će ruci biti potrebno više koraka i postavi je na najduži broj koraka for petlje. if (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } else {endStep = setTimeStepMinute; } za (int i = 0; i <= endStep; i ++) {if (i <setTimeStepHour) {hourHand.step (2); } else {odgoda (3); } if (i <setTimeStepMinute) {minuteHand.step (3); } else {odgoda (4); }} hourHand.setSpeed (1); minuteHand.setSpeed (1); }}
Korak 22: STL datoteke
Morat ćete ispisati sljedeće količine datoteka:
- 1 - Magnet sa segmentnim zupčanikom za sat
- 6 - Osnovni segment prstenastog zupčanika
- 1 - Stepeni nosač segmenta za zadržavanje prstena
- 6 - Osnovni segment prstena za zadržavanje sata
- 1 - Nosač senzora za efekt satne dvorane
- 1 - Magnetni segmentni magnet s magnetskim prstenom
- 7 - Minute Ring Ring Gear Segment Basic
- 1 - Stepenasti nosač segmenta za zadržavanje prstena
- 6 - Osnovni segment prstena za zadržavanje minuta
- 1 - Držač senzora za minutni Hall efekt
- 2 - Zupčasti zupčanik
- 1 - Nosač za elektroniku
Korak 23: Solidworks datoteke
Ovo su izvorne datoteke Solidworks korištene za stvaranje STL -ova pronađenih u prethodnom koraku. Slobodno uređujte i mijenjajte moje datoteke prema svom nahođenju.
Korak 24: Zaključak
Ovaj sat je ispao bolje nego što sam očekivao. S minimalnim iskustvom s Arduinom, drago mi je kako je ispao i koliko je točan. Izgleda odlično i funkcionira kako sam se nadao.