Talaan ng mga Nilalaman:
- Hakbang 1: Mga Tool at Materyales
- Hakbang 2: Pandikit na Magkasama sa Wood Frame
- Hakbang 3: Gupitin ang Frame Gamit ang Circle Cutting Jig
- Hakbang 4: I-print at Magtipon ng mga Gears
- Hakbang 5: Mga Seksyon na "Pandikit" Magkasama
- Hakbang 6: Gupitin ang Mga relief sa Frame
- Hakbang 7: Gupitin ang Clearance para sa Mga Sensor ng Epekto ng Hall
- Hakbang 8: Kola Outer Ring
- Hakbang 9: Mga Screw ng Pagsasaayos ng Sensor ng Epekto ng Hall
- Hakbang 10: Mga Rings ng Pandikit sa Hardboard
- Hakbang 11: Pandikit Inner Disc
- Hakbang 12: Maglakip ng Veneer
- Hakbang 13: Trim Veneer
- Hakbang 14: Gupitin ang Veneer
- Hakbang 15: Pandikit Veneer
- Hakbang 16: Buhangin at Tapusin
- Hakbang 17: Mag-install ng Lakas
- Hakbang 18: Magtipon ng Elektronika
- Hakbang 19: Maghinang at Ikonekta ang Elektronika
- Hakbang 20: Plato sa Balik
- Hakbang 21: Arduino Code
- Hakbang 22: Mga File ng STL
- Hakbang 23: Mga Solidworks File
- Hakbang 24: Konklusyon
Video: Mesmerizing Magnetic Wall Clock: 24 Hakbang (na may Mga Larawan)
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Ang mga mekanikal na orasan ay palaging nabighani sa akin. Ang paraan ng lahat ng mga panloob na gear, spring, at pagtakas ay nagtutulungan upang magresulta sa isang pare-pareho na maaasahang relo ng orasan ay palaging tila hindi maaabot para sa aking limitadong hanay ng kasanayan. Sa kabutihang palad modernong mga electronics at 3D na naka-print na bahagi ay maaaring tulay ang puwang upang lumikha ng isang bagay na simple na hindi umaasa sa maliit na tumpak na mga bahagi ng metal.
Itinatago ng minimalist na orasan sa dingding na ito ang isang pares ng 3D naka-print na mga gears ng singsing na hinihimok ng mga murang stepper motor na paikutin ang mga magnet sa likod ng isang klasikong veneer ng walnut.
Sa paunang inspirasyon ng STORY Clock, gusto ko ng isang piraso ng oras na nagsasaad ng oras ng araw na gumagamit lamang ng mga bearings ng bola kumpara sa digital readout at mabagal na paggalaw ng bola na ginagamit ng kanilang produkto.
Hakbang 1: Mga Tool at Materyales
Mga Materyales:
- 13 x 13 x 2 in. Linya ng Plywood / Particle (Pinagsama ko ang 3 piraso ng scrap kahoy)
- 13 x 13 in. Hardboard
- Arduino Nano
- Oras ng Tunay na Oras
- Mga Stepper Motors at Driver
- Mga Sensor ng Epekto ng Hall
- Mga magnet
- Power Cable
- AC Adapter
- Plug
- Iba't ibang Mga Screw ng Makina
- Iba't ibang Mga Wood Screw
- Mga Naka-print na Bahaging 3D (Huling Hakbang)
- Veneer (12 x 12 in. - mukha, 40 in. Mahabang strip)
- Pagwilig ng Lacquer
- Pinta ng Itim na Spray
Mga tool:
- 3d printer
- Compass
- X-acto Knife
- Pandikit
- Mga clamp
- Circle Cutting Jig
- Saw Saw
- Disc Sander
- Ratchet Clamp
- Pait
- Pinuno
- Sander
- Drills
- Screwdrivers
- Panghinang
- Mainit na glue GUN
Hakbang 2: Pandikit na Magkasama sa Wood Frame
Idikit ang tatlong piraso ng kahoy na bubuo sa frame ng orasan. Gumamit ako ng reclaimed board ng maliit na butil mula sa isang lumang frame ng kama.
Hakbang 3: Gupitin ang Frame Gamit ang Circle Cutting Jig
Markahan ang gitna ng pisara at i-mount sa isang bilog na paggupit na jig. Gupitin ang limang bilog na may mga sumusunod na diameter:
- 12 sa.
- 11 1/4 sa.
- 9 1/4 sa.
- 7 1/4 sa.
- 5 3/8 sa.
Hakbang 4: I-print at Magtipon ng mga Gears
Ang mga gears ng singsing ay pinaghiwa-hiwalay sa mga segment upang maaari silang mai-print sa isang maliit na printer at magkakasama. Ang lahat ng mga bahagi ay naka-print sa ABS upang makatulong sa proseso ng fusing na ipinakita sa susunod na hakbang. Buhangin ang lahat ng mga gilid at ibabaw ng mga bahagi.
I-print ang mga sumusunod na dami ng mga bahagi na matatagpuan sa hakbang 22:
- 1 - Hour Ring Gear Segment Magnet
- 6 - Pangunahing Bahagi ng Gear Gear Segment
- 1 - Oras ng Pagpapanatili ng Ring Segment Stepper Mount
- 6 - Pangunahing Pananatili ng Segment ng Ring ng Oras
- 1 - Hour Hall Effect Sensor Holder
- 1 - Minuto ng Ring Gear Segment Magnet
- 7 - Pangunahing Minuto ng Ring Gear Segment
- 1 - Minuto Pagpapanatili ng Ring Segment Stepper Mount
- 6 - Pangunahing Pananatili ng Segment ng Segment ng Minuto
- 1 - May-hawak ng Minuto Hall Effect Sensor
- 2 - Spur Gear
- 1 - Electronics Mount
Hakbang 5: Mga Seksyon na "Pandikit" Magkasama
Sa isang bote ng baso na may ilang acetone, matunaw ang nabigong mga kopya ng lumang materyal ng suporta, atbp Kulayan ang halo ng acetone sa bawat seam upang pagsamahin ang mga piraso. Kapag gumaling, buhangin ang bawat seam patag.
Hakbang 6: Gupitin ang Mga relief sa Frame
Ilagay ang mga gears ng singsing at panatilihin ang mga singsing sa frame at gupitin ang mga relief para sa mga stepper motor. Sinukat ko at gupitin ang panloob na singsing na sobrang laki kaya shimmed ko ito sa laki gamit ang ilang maple edge banding na mayroon ako sa paligid ng shop.
Hakbang 7: Gupitin ang Clearance para sa Mga Sensor ng Epekto ng Hall
Gupitin ang isang butas ng clearance sa pamamagitan ng panloob na singsing para sa minutong sensor hall effect at puwang para sa sensor ng hour hall effect. Gumamit ako ng isang pait, file, at maliit na kamay na nakita upang maputol ang mga clearances na ito.
Hakbang 8: Kola Outer Ring
Kola at i-tape ang panlabas na singsing na laki ng minutong singsing na nagpapanatili.
Hakbang 9: Mga Screw ng Pagsasaayos ng Sensor ng Epekto ng Hall
Gupitin ang mga tornilyo ng makina gamit ang isang lagari sa pag-hack upang mas mahaba ang mga ito kaysa sa kapal ng nagpapanatili ng singsing at may hawak ng sensor ng hall effect. Gupitin ang isang puwang sa mga thread upang maaari itong maiakma mula sa may sinulid na dulo gamit ang isang patag na distornilyador.
Hakbang 10: Mga Rings ng Pandikit sa Hardboard
Gupitin ang isang bilog ng hardboard na mas malaki lamang sa panlabas na singsing. Pandikit sa labas at panloob na singsing sa mukha ng hardboard. Gamitin ang minutong mapanatili ang singsing at singsing na gear upang ilagay ang panloob na singsing. Magbayad ng mas mahusay na pansin kaysa sa ginawa ko upang hindi madikit ang panloob na singsing sa paatras. Ipinapakita ng pangalawang larawan ang isang bagong gupitin ng puwang para sa minutong hall sensor sensor.
Gumamit ng isang disc sander upang i-trim ang hardboard pababa sa laki ng panlabas na singsing.
Hakbang 11: Pandikit Inner Disc
Idikit ang panloob na disc sa lugar gamit ang oras na pagpapanatili ng singsing at singsing na singsing upang ilagay ang panloob na disc.
Hakbang 12: Maglakip ng Veneer
Gupitin ang isang strip ng pakitang-tao na mas malawak kaysa sa orasan ay malalim at sapat na mahaba upang ibalot sa paligid ng orasan (3.14 * diameter ng orasan, ibabalik ang haba na kinakailangan. Magdagdag ng isang pulgada upang matiyak na mayroon kang sapat.) Patuyuin ang pakitang-tao sa gupitin sa haba. Paglalapat ng sapat na pandikit sa pakitang-tao at i-clamp sa lugar na may isang strap clamp. Hayaang matuyo ng ilang oras upang matiyak ang pagdirikit.
Hakbang 13: Trim Veneer
Gamit ang isang matalim na pait, i-trim ang labis na pakitang-tao mula sa harap at likod ng orasan.
Hakbang 14: Gupitin ang Veneer
Ang aking pakitang-tao ay may ilang mga bitak dito. Upang gawing mas madali itong gumana, naglagay ako ng mga painter tape upang hawakan ito. Gamit ang isang x-acto na kutsilyo sa isang compass, gupitin ang pakitang-tao na mas malaki kaysa sa mukha ng orasan.
Hakbang 15: Pandikit Veneer
Gamitin ang mga putol na singsing na putol upang maikalat ang presyon sa mukha ng orasan. Mag-apply ng sapat na pandikit sa bahagi ng hindi tape ng pakitang-tao. I-orient ang butil nang patayo sa mukha ng orasan at maglagay ng maraming mga clamp na humihigpit ng bawat isa nang paunti-unti. Tiyakin nitong ang pakitang-tao ay hindi lumipat at may presyon pa sa mukha.
Gumamit ako ng isang pares na flat boards sa mukha ng orasan at ilang mga caul sa likuran.
Hakbang 16: Buhangin at Tapusin
Gamit ang papel de liha, maingat na alisin ang labis na pakitang-tao mula sa mukha ng orasan at buhangin na nagsisimula sa 220 grit hanggang sa 600 grit.
Mag-apply sa pagitan ng 10 at 20 coats ng may kakulangan. Itatayo nito ang ibabaw na sasakay sa bola. Hindi maiiwasang dahil sa alikabok at iba pang mga maliit na butil sa hangin, sa palagay ko lilitaw ang mga linya sa kahabaan ng landas ng bawat pagdadala ng bola. Ang paglalapat ng higit pang mga coats of finish ay dapat na antalahin ito hangga't maaari. Gagawa din nitong gawing mas madali ang refinishing sa hinaharap. Ia-update ko ang hakbang na ito kung may mga linya na lumitaw sa aking orasan.
Hakbang 17: Mag-install ng Lakas
Gamit ang isang 27/64 in. Drill bit, mag-drill ng isang butas sa ilalim ng orasan at i-tornilyo ang plug ng kuryente sa lugar.
Hakbang 18: Magtipon ng Elektronika
Maglakip ng mga driver ng stepper at real time na orasan sa electronic board. Kailangan kong maghanap ng isang paraan upang ma-secure ang Arduino kaya't ang mga butas ay na-drill at isang puwang ang pinutol para sa isang zip tie. Ang mga tampok na ito ay naidagdag sa file na matatagpuan sa hakbang 22.
Hakbang 19: Maghinang at Ikonekta ang Elektronika
Kasunod sa diagram ng block, magkasama ang lahat ng mga bahagi. Mainit na pandikit ang mga singsing sa lugar at i-secure ang anumang mga stray wires na may mainit na pandikit din.
Hakbang 20: Plato sa Balik
Lumikha ng plato sa likuran sa pamamagitan ng paggupit ng isa pang bilog na 1/2 sa mas malaki kaysa sa mukha ng orasan at isang singsing na may panloob na lapad na kapareho ng likod ng orasan. Kola ang singsing at bilugan kasama ang ilang mga spring clamp.
Sa sandaling matuyo, mag-iskrip ng isang linya na 1/8 pulgada mas malaki kaysa sa panloob na singsing at i-trim sa laki gamit ang band saw o disc sander.
Gupitin ang isang puwang na 1 ang haba ng 1/4 pulgada sa tuktok ng likod gamit ang isang router o drill bits. Countersink apat na butas upang ma-secure ang likod sa frame ng orasan.
Maglagay ng pinturang itim na spray at ilakip sa orasan sa sandaling matuyo.
Hakbang 21: Arduino Code
Ang arduino code ay nagkomento hangga't maaari. Tandaan na hindi ako isang programmer, mayroon akong kaunting karanasan sa arduino (maging mabait). Nagpapatakbo ang code ng patuloy na pagsuri upang makita kung ang kasalukuyang oras ay tumutugma sa "I-reset ang Oras". Dahil hindi ako nakaisip ng isang paraan upang isalin ang kasalukuyang oras sa mga hakbang, itinatama lamang nito ang sarili nito minsan araw-araw (hatinggabi bilang default). Sa hatinggabi ang mga gears ay umiikot sa posisyon ng hatinggabi pagkatapos maghintay hanggang 00:01 na lumilipat sa oras na iyon at pagkatapos ay magpapatuloy mula doon. Tulad ng kasalukuyang nakaupo, ang relo ay mawawala lamang ang tungkol sa 5 segundo sa loob ng 24 na oras na oras.
Kakailanganin mo ang naka-install na mga aklatan ng Stepper at RTClib.
Alam kong ang code ay maaaring ma-optimize ng isang taong may higit na karanasan kaysa sa aking sarili. Kung nasa hamon ka, mangyaring muling likhain ang proyektong ito para sa iyong sarili at ibahagi ang iyong kaalaman.
# isama
# isama ang "RTClib.h" RTC_DS1307 rtc; #define oneRotation 2038 // ang bilang ng mga hakbang sa isang rebolusyon ng 28BYJ-48 stepper motor Stepper hourHand (oneRotation, 3, 5, 4, 6); Stepper minuteHand (oneRotation, 7, 9, 8, 10); #define hourStopSensor 12 # tukuyin ang minutoStopSensor 11 int endStep = 0; // Time dealy para sa bilis ng orasan. int setDelay1 = 168; int setDelay2 = 166; int setDelay3 = 5; // Kasalukuyang oras upang gawin ang matematika. float hr = 0; float mn = 0; float sc = 0; // Itakda ang oras ng araw upang i-reset ang orasan (24 na oras na format). int resetHour = 0; int resetMinute = 0; // Mga variable upang maitakda ang tamang oras sa pagsisimula at pag-reset. float setTimeStepHour = 0; float setTimeStepMinute = 0; float handDelay = 0; float hourTest = 0; float minuteTest = 0; void setup () {Serial.begin (115200); // Setup real time na orasan at i-reset ang mga sensor ng epekto ng hall. pinMode (hourStopSensor, INPUT_PULLUP); pinMode (minuteStopSensor, INPUT_PULLUP); rtc.begin (); // Uncomment line sa ibaba upang magtakda ng oras. // rtc.adjust (DateTime (2020, 2, 19, 23, 40, 30)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Itakda ang pinakamataas na bilis ng mga stepper motor. hourHand.setSpeed (15); minutoHand.setSpeed (15); // Loop hanggang minuto at oras na kamay ay nasa tanghali habang (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } iba pa {antala (3); } kung (digitalRead (minuteStopSensor) == LOW) {minuteHand.step (3); } iba pa {antala (4); }} habang (digitalRead (hourStopSensor)! = LOW || digitalRead (minuteStopSensor)! = LOW) {kung (digitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } iba pa {antala (3); } kung (digitalRead (minuteStopSensor)! = LOW) {minuteHand.step (3); } iba pa {antala (4); }} // Kunin ang kasalukuyang oras DateTime ngayon = rtc.now (); hr = ngayon.hour (); mn = now.minute (); sc = ngayon.second (); // Change to 12 hour format if (hr> = 12) {hr = hr - 12; } // Tingnan kung anong kamay ang dapat na maglakbay sa mukha nang higit pa at gamitin ang distansya na iyon // upang ayusin ang itinakdang oras nang naaayon. hourTest = hr / 12; minutoTest = mn / 60; kung (hourTest> minuteTest) {handDelay = hourTest; } iba pa {handDelay = minuteTest; } // Itakda ang kasalukuyang oras na itinakdaTimeStepHour = (hr * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // Itakda ang kasalukuyang minutong setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1.9); // Subukan kung aling kamay ang mangangailangan ng higit pang mga hakbang at itakda iyon sa pinakamahabang bilang ng hakbang para sa para sa loop. kung (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } iba pa {endStep = setTimeStepMinute; } para sa (int i = 0; i <= endStep; i ++) {kung (i <setTimeStepHour) {hourHand.step (2); } iba pa {antala (3); } kung (i <setTimeStepMinute) {minuteHand.step (3); } iba pa {antala (4); }} // Itakda ang orasan na tumatakbo ang RPM hourHand.setSpeed (1); minutoHand.setSpeed (1); } void loop () {// Simulan ang loop na tumatakbo sa orasan. para sa (int i = 0; i <22; i ++) {minuteHand.step (1); antala (setDelay1); // Test for reset time, kung handa nang i-reset, masira. kung (rtc.now (). hour () == resetHour && rtc.now (). minuto () == resetMinute) {break; }} pagkaantala (setDelay3); para sa (int i = 0; i <38; i ++) {hourHand.step (1); antala (setDelay1); // Test for reset time, kung handa nang i-reset, masira. kung (rtc.now (). hour () == resetHour && rtc.now (). minuto () == resetMinute) {break; } para sa (int i = 0; i <20; i ++) {minuteHand.step (1); antala (setDelay2); // Test for reset time, kung handa nang i-reset, masira. kung (rtc.now (). hour () == resetHour && rtc.now (). minuto () == resetMinute) {break; }}} // I-reset ang orasan sa oras ng pag-reset kung (rtc.now (). Hour () == resetHour && rtc.now (). Minuto () == resetMinute) {// Baguhin ang bilis ng orasan hourHand.setSpeed (10); minutoHand.setSpeed (10); // Loop hanggang minuto at oras na kamay maabot ang tanghali. habang (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) {kung (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } iba pa {antala (3); } kung (digitalRead (minuteStopSensor) == LOW) {minuteHand.step (3); } iba pa {antala (4); }} habang (digitalRead (hourStopSensor)! = LOW || digitalRead (minuteStopSensor)! = LOW) {kung (digitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } iba pa {antala (3); } kung (digitalRead (minuteStopSensor)! = LOW) {minuteHand.step (3); } iba pa {antala (4); }} // Maghintay dito hanggang sa lumipas ang oras ng pag-reset. habang (rtc.now (). minuto () == resetMinute) {pagkaantala (1000); } // Kunin ang kasalukuyang oras DateTime ngayon = rtc.now (); hr = ngayon.hour (); mn = now.minute (); sc = ngayon.second (); // Change to 12 hour format if (hr> = 12) {hr = hr - 12; } // Tingnan kung anong kamay ang dapat na maglakbay sa mukha nang higit pa at gamitin ang distansya na iyon // upang ayusin ang itinakdang oras nang naaayon. hourTest = hr / 12; minutoTest = mn / 60; kung (hourTest> minuteTest) {handDelay = hourTest; } iba pa {handDelay = minuteTest; } // Itakda ang kasalukuyang oras na itinakdaTimeStepHour = (hr * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // Itakda ang kasalukuyang minutong setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1.9); // Subukan kung aling kamay ang mangangailangan ng higit pang mga hakbang at itakda iyon sa pinakamahabang bilang ng hakbang para sa para sa loop. kung (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } iba pa {endStep = setTimeStepMinute; } para sa (int i = 0; i <= endStep; i ++) {kung (i <setTimeStepHour) {hourHand.step (2); } iba pa {antala (3); } kung (i <setTimeStepMinute) {minuteHand.step (3); } iba pa {antala (4); }} hourHand.setSpeed (1); minutoHand.setSpeed (1); }}
Hakbang 22: Mga File ng STL
Kakailanganin mong i-print ang mga sumusunod na dami ng mga file:
- 1 - Hour Ring Gear Segment Magnet
- 6 - Pangunahing Bahagi ng Gear Gear Segment
- 1 - Oras ng Pagpapanatili ng Ring Segment Stepper Mount
- 6 - Pangunahing Pananatili ng Segment ng Ring ng Oras
- 1 - Hour Hall Effect Sensor Holder
- 1 - Minuto ng Ring Gear Segment Magnet
- 7 - Pangunahing Minuto ng Ring Gear Segment
- 1 - Minuto Pagpapanatili ng Ring Segment Stepper Mount
- 6 - Pangunahing Pananatili ng Segment ng Segment ng Minuto
- 1 - May-hawak ng Minuto Hall Effect Sensor
- 2 - Spur Gear
- 1 - Electronics Mount
Hakbang 23: Mga Solidworks File
Ito ang orihinal na mga file ng Solidworks na ginamit upang likhain ang mga STL na matatagpuan sa nakaraang hakbang. Huwag mag-atubiling i-edit at baguhin ang aking mga file ayon sa iyong nababagay.
Hakbang 24: Konklusyon
Ang orasan na ito ay naging mas mahusay kaysa sa inaasahan ko. Ang pagkakaroon ng kaunting karanasan sa Arduino, natutuwa ako sa kung paano ito naging at kung gaano ito katumpak. Mukhang mahusay at gumagana tulad ng Inaasahan ko.