Cuprins:
- Pasul 1: Instrumente și materiale
- Pasul 2: lipiți împreună cadru din lemn
- Pasul 3: Tăiați cadrul folosind Jigul de tăiere cerc
- Pasul 4: Imprimați și asamblați unelte
- Pasul 5: secțiunile „lipici” împreună
- Pasul 6: Tăiați reliefurile în cadru
- Pasul 7: Tăiați spațiul liber pentru senzorii de efect Hall
- Pasul 8: lipiți inelul exterior
- Pasul 9: Tăiați șuruburile de reglare a senzorului de efect Hall
- Pasul 10: lipiți inelele pe panoul dur
- Pasul 11: lipiți discul interior
- Pasul 12: Atașați furnir
- Pasul 13: Decupați furnirul
- Pasul 14: Tăiați furnirul
- Pasul 15: lipiți furnirul
- Pasul 16: Nisipează și termină
- Pasul 17: Instalați alimentarea
- Pasul 18: Asamblați electronice
- Pasul 19: lipiți și conectați electronice
- Pasul 20: Placa din spate
- Pasul 21: Cod Arduino
- Pasul 22: Fișiere STL
- Pasul 23: Fișiere Solidworks
- Pasul 24: Concluzie
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Ceasurile mecanice m-au fascinat dintotdeauna. Modul în care toate treptele de viteză, arcurile și evacuările interne funcționează împreună pentru a rezulta într-un ceas constant de încredere a părut întotdeauna în afara accesului pentru setul meu de abilități limitate. Din fericire, componentele electronice moderne și piesele imprimate 3D pot elimina decalajul pentru a crea ceva simplu care nu se bazează pe piese metalice precise.
Acest ceas de perete minimalist ascunde o pereche de roți dințate imprimate 3D acționate de motoare pas cu pas ieftine care rotesc magneții în spatele unui furnir clasic de nuc.
Inspirat inițial de STORY Clock, am vrut o piesă de timp care să indice ora din zi folosind doar rulmenți cu bile față de citirea digitală și cu bile cu mișcare lentă care utilizează produsele lor.
Pasul 1: Instrumente și materiale
Materiale:
- 13 x 13 x 2 in. Placaj / plăci aglomerate (am lipit 3 bucăți de resturi de lemn)
- 13 x 13 in. Panou dur
- Arduino Nano
- Ceas în timp real
- Motoare și drivere pas cu pas
- Senzori de efect Hall
- Magneți
- Cablu de alimentare
- Adaptor de curent alternativ
- Priza
- Șuruburi pentru mașini asortate
- Șuruburi pentru lemn asortate
- Piese tipărite 3D (ultimul pas)
- Furnir (12 x 12 inci - față, bandă lungă de 40 inci)
- Lac de pulverizare
- Vopsea cu spray negru
Instrumente:
- imprimantă 3d
- Busolă
- Cuțit X-acto
- Lipici
- Cleme
- Cerc de tăiere a cercului
- Hack Saw
- Disc Sander
- Clemă cu clichet
- Daltă
- Rigla
- Sander
- Burghie
- Șurubelnițe
- Ciocan de lipit
- Hot Glue Gun
Pasul 2: lipiți împreună cadru din lemn
Lipiți împreună trei bucăți de lemn care vor forma cadrul ceasului. Am folosit plăci aglomerate recuperate dintr-un cadru vechi de pat.
Pasul 3: Tăiați cadrul folosind Jigul de tăiere cerc
Marcați centrul plăcii și montați pe un dispozitiv de tăiere circular. Tăiați cinci cercuri cu următoarele diametre:
- 12 in.
- 11 1/4 in.
- 9 1/4 in.
- 7 1/4 in.
- 5 3/8 in.
Pasul 4: Imprimați și asamblați unelte
Angrenajele inelare sunt împărțite în segmente, astfel încât să poată fi imprimate pe o imprimantă mică și fixate împreună. Toate piesele au fost tipărite în ABS pentru a ajuta la procesul de fuzionare prezentat în pasul următor. Șlefuiți toate marginile și suprafețele pieselor.
Imprimați următoarele cantități de piese găsite în pasul 22:
- 1 - Magnet segment segment inel orar
- 6 - Segment de viteză inel orar de bază
- 1 - Montaj pas cu pas pentru segmentul inelului de fixare
- 6 - Segment de inel de reținere a orelor de bază
- 1 - Suport senzor de efect Hall
- 1 - Magnet segment segment inel de minut
- 7 - Minute Ring Gear Segment Basic
- 1 - Suport pas cu pas pentru segmentul inelului de reținere
- 6 - Segment de inel de reținere de minute de bază
- 1 - Suport senzor de efect Hall Minute
- 2 - Gear Spur
- 1 - Suport electronic
Pasul 5: secțiunile „lipici” împreună
Într-o sticlă de sticlă cu puțină acetonă, dizolvați materialele vechi de imprimare defecte, etc. Vopsiți amestecul de acetonă pe fiecare cusătură pentru a contopi bucățile. Odată vindecat, șlefuiți fiecare cusătură.
Pasul 6: Tăiați reliefurile în cadru
Așezați roțile dințate și inelele de fixare în cadru și tăiați reliefurile pentru motoarele pas cu pas. Am măsurat și am tăiat inelul interior prea mare, așa că l-am redus la dimensiuni folosind niște benzi de margine de arțar pe care le aveam în jurul magazinului.
Pasul 7: Tăiați spațiul liber pentru senzorii de efect Hall
Tăiați o gaură de degajare prin inelul interior pentru senzorul de efect de hală minut și fanta pentru senzorul de efect de hol de oră. Am folosit o dalta, un dosar și un ferăstrău de mână mic pentru a tăia aceste distanțe.
Pasul 8: lipiți inelul exterior
Lipiți și lipiți inelul exterior de mărimea inelului de fixare a minutelor.
Pasul 9: Tăiați șuruburile de reglare a senzorului de efect Hall
Tăiați șuruburile mașinii cu un ferăstrău, astfel încât acestea să fie mai lungi decât grosimea inelului de fixare și a suportului senzorului de efect de hol. Tăiați o fantă în fire, astfel încât să poată fi reglată de la capătul filetat cu o șurubelniță plană.
Pasul 10: lipiți inelele pe panoul dur
Tăiați un cerc de panou tare mai mare decât inelul exterior. Lipiți inelul exterior și interior pe fața panoului dur. Utilizați inelul de fixare a minutelor și angrenajul inelar pentru a plasa inelul interior. Acordați o atenție mai bună decât am făcut-o pentru a nu lipi inelul interior pe spate. Imaginea a doua prezintă o nouă tăietură a slotului pentru senzorul de efect de hală minut.
Utilizați o mașină de șlefuit pentru a tăia placa dură până la dimensiunea inelului exterior.
Pasul 11: lipiți discul interior
Lipiți discul interior cu ajutorul inelului de fixare a orelor și a angrenajului pentru a plasa discul interior.
Pasul 12: Atașați furnir
Tăiați o fâșie de furnir mai lată decât ceasul este suficient de adânc și suficient de lung pentru a înfășura ceasul (diametrul 3,14 * al ceasului, va restitui lungimea necesară. Adăugați un centimetru pentru a vă asigura că aveți suficient.) Montați uscat furnirul la tăiat la lungime. Aplicarea unui adeziv suficient pentru furnir și clemă în loc cu o clemă pentru curea. Lăsați să se usuce câteva ore pentru a asigura aderența.
Pasul 13: Decupați furnirul
Folosind o dalta ascuțită, tăiați excesul de furnir din partea din față și din spate a ceasului.
Pasul 14: Tăiați furnirul
Furnirul meu avea câteva fisuri. Pentru a ușura lucrul, am aplicat bandă pentru pictori pentru ao ține împreună. Folosind un cuțit x-acto într-o busolă, tăiați furnirul doar mai mare decât fața ceasului.
Pasul 15: lipiți furnirul
Utilizați inelele tăiate pentru a răspândi presiunea pe fața ceasului. Aplicați adeziv suficient pe partea fără bandă a furnirului. Orientați bobul vertical pe fața ceasului și aplicați multe cleme strângând fiecare câte o dată. Acest lucru va asigura furnirul nu se schimbă și are chiar presiune pe față.
Am folosit câteva scânduri plate pe fața ceasului și niște cauluri pe spate.
Pasul 16: Nisipează și termină
Folosind hârtie de șlefuit, îndepărtați cu atenție excesul de furnir de pe fața ceasului și șlefuiți începând de la 220 grit până la 600 grit.
Aplicați între 10 și 20 de straturi de lac. Aceasta va construi suprafața pe care rulează bile. Inevitabil din cauza prafului și a altor particule din aer, cred că vor apărea linii de-a lungul traseului fiecărui rulment cu bile. Aplicarea mai multor straturi de finisare ar trebui să întârzie acest lucru cât mai mult posibil. De asemenea, va facilita viitoarele finisări. Voi actualiza acest pas dacă apar vreodată linii pe ceasul meu.
Pasul 17: Instalați alimentarea
Folosind un burghiu de 27/64 in, găuriți o gaură în partea de jos a ceasului și înșurubați fișa de alimentare în poziție.
Pasul 18: Asamblați electronice
Atașați driverele pas cu pas și ceasul în timp real la placa electronică. Trebuia să găsesc o modalitate de a asigura Arduino, astfel încât să fie găurite găuri și să fie tăiată o fantă pentru o cravată cu fermoar. Aceste caracteristici au fost adăugate la fișierul găsit la pasul 22.
Pasul 19: lipiți și conectați electronice
Urmând schema bloc, lipiți toate componentele împreună. Lipiți inelele fierbinți în poziție și fixați orice fire fără stăpân și cu lipici fierbinte.
Pasul 20: Placa din spate
Creați placa din spate tăind un alt cerc de 1/2 inch mai mare decât fața ceasului și un inel cu diametrul interior la fel ca partea din spate a ceasului. Lipiți inelul și cercul împreună cu câteva cleme de arc.
Odată uscat, scrieți o linie de 1/8 in mai mare decât inelul interior și tăiați la dimensiune folosind ferăstrăul cu bandă sau șlefuitorul de disc.
Tăiați un slot de 1 in. Lung de 1/4 in. În partea de sus a spatelui folosind un router sau burghie. Răsuciți patru găuri pentru a fixa partea din spate în cadrul ceasului.
Aplicați vopsea neagră și atașați-o la ceas odată uscată.
Pasul 21: Cod Arduino
Codul arduino este comentat cât mai bine posibil. Rețineți că nu sunt programator, am o experiență minimă de arduino (fiți amabili). Codul rulează continuu verificând dacă ora curentă se potrivește cu „Reset Time”. Deoarece nu mi-am putut gândi la o modalitate de a traduce ora curentă în pași, se corectează doar o dată pe zi (la miezul nopții în mod implicit). La miezul nopții uneltele se rotesc în poziția de miezul nopții, apoi așteptați până la 00:01 trecând la acel moment, apoi continuă de acolo. Pe măsură ce se așează în prezent, ceasul pierde doar aproximativ 5 secunde într-o perioadă de 24 de ore.
Veți avea nevoie de bibliotecile Stepper și RTClib instalate.
Știu că codul poate fi optimizat de cineva cu mai multă experiență decât mine. Dacă sunteți la înălțimea provocării, vă rugăm să recreați acest proiect pentru dvs. și să vă împărtășiți cunoștințele.
#include
#includeți "RTClib.h" RTC_DS1307 rtc; #define oneRotation 2038 // numărul de pași într-o rotație a motorului pas cu pas 28BYJ-48 Stepper hourHand (oneRotation, 3, 5, 4, 6); Stepper minuteHand (oneRotation, 7, 9, 8, 10); #define hourStopSensor 12 #define minuteStopSensor 11 int endStep = 0; // Timpul amețit pentru viteza ceasului. int setDelay1 = 168; int setDelay2 = 166; int setDelay3 = 5; // Ora curentă pentru a face matematică. float hr = 0; plutitor mn = 0; plutitor sc = 0; // Setați ora din zi pentru resetarea ceasului (format 24 de ore). int resetHour = 0; int resetMinute = 0; // Variabile pentru a seta ora corectă la pornire și resetare. float setTimeStepHour = 0; float setTimeStepMinute = 0; float handDelay = 0; float hourTest = 0; float minuteTest = 0; void setup () {Serial.begin (115200); // Configurați ceasul în timp real și resetați senzorii de efect de sală. pinMode (hourStopSensor, INPUT_PULLUP); pinMode (minuteStopSensor, INPUT_PULLUP); rtc.begin (); // Decomentați linia de mai jos pentru a seta ora. // rtc.adjust (DateTime (2020, 2, 19, 23, 40, 30)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))); // Setați viteza maximă a motoarelor pas cu pas. hourHand.setSpeed (15); minuteHand.setSpeed (15); // Buclați până când minutul și ora sunt la amiază în timp ce (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } else {delay (3); } if (digitalRead (minuteStopSensor) == LOW) {minuteHand.step (3); } else {delay (4); }} while (digitalRead (hourStopSensor)! = LOW || digitalRead (minuteStopSensor)! = LOW) {if (digitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } else {delay (3); } if (digitalRead (minuteStopSensor)! = LOW) {minuteHand.step (3); } else {delay (4); }} // Obțineți ora curentă DateTime acum = rtc.now (); hr = now.hour (); mn = now.minute (); sc = now.second (); // Treceți la formatul de 12 ore dacă (hr> = 12) {hr = hr - 12; } // Vedeți ce mână trebuie să călătorească peste față mai departe și utilizați acea distanță // pentru a regla timpul setat în consecință. hourTest = hr / 12; minuteTest = mn / 60; if (hourTest> minuteTest) {handDelay = hourTest; } else {handDelay = minuteTest; } // Setați ora curentă setTimeStepHour = (hr * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // Setați minutul curent setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1.9); // Testați care mână va avea nevoie de mai mulți pași și setați-o la cel mai lung număr de pași pentru bucla for. if (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } else {endStep = setTimeStepMinute; } for (int i = 0; i <= endStep; i ++) {if (i <setTimeStepHour) {hourHand.step (2); } else {delay (3); } if (i <setTimeStepMinute) {minuteHand.step (3); } else {delay (4); }} // Setați ceasul care rulează RPM hourHand.setSpeed (1); minuteHand.setSpeed (1); } void loop () {// Începeți bucla de rulare a ceasului. for (int i = 0; i <22; i ++) {minuteHand.step (1); întârziere (setDelay1); // Testați timpul de resetare, dacă este gata de resetare, rupeți. if (rtc.now (). hour () == resetHour && rtc.now (). minute () == resetMinute) {pauză; }} întârziere (setDelay3); for (int i = 0; i <38; i ++) {hourHand.step (1); întârziere (setDelay1); // Testați timpul de resetare, dacă este gata de resetare, rupeți. if (rtc.now (). hour () == resetHour && rtc.now (). minute () == resetMinute) {pauză; } pentru (int i = 0; i <20; i ++) {minuteHand.step (1); întârziere (setDelay2); // Testați timpul de resetare, dacă este gata de resetare, rupeți. if (rtc.now (). hour () == resetHour && rtc.now (). minute () == resetMinute) {pauză; }}} // Resetați ceasul la ora de resetare dacă (rtc.now (). Hour () == resetHour && rtc.now (). Minute () == resetMinute) {// Modificați viteza ceasului hourHand.setSpeed (10); minuteHand.setSpeed (10); // Buclați până când minutele și orele ajung la prânz. while (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } else {delay (3); } if (digitalRead (minuteStopSensor) == LOW) {minuteHand.step (3); } else {delay (4); }} while (digitalRead (hourStopSensor)! = LOW || digitalRead (minuteStopSensor)! = LOW) {if (digitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } else {delay (3); } if (digitalRead (minuteStopSensor)! = LOW) {minuteHand.step (3); } else {delay (4); }} // Așteptați aici până când a trecut timpul de resetare. while (rtc.now (). minute () == resetMinute) {întârziere (1000); } // Obțineți ora curentă DateTime acum = rtc.now (); hr = now.hour (); mn = now.minute (); sc = now.second (); // Treceți la formatul de 12 ore dacă (hr> = 12) {hr = hr - 12; } // Vedeți ce mână trebuie să călătorească peste față mai departe și utilizați acea distanță // pentru a regla timpul setat în consecință. hourTest = hr / 12; minuteTest = mn / 60; if (hourTest> minuteTest) {handDelay = hourTest; } else {handDelay = minuteTest; } // Setați ora curentă setTimeStepHour = (hr * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // Setați minutul curent setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1.9); // Testați care mână va avea nevoie de mai mulți pași și setați-o la cel mai lung număr de pași pentru bucla for. if (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } else {endStep = setTimeStepMinute; } for (int i = 0; i <= endStep; i ++) {if (i <setTimeStepHour) {hourHand.step (2); } else {delay (3); } if (i <setTimeStepMinute) {minuteHand.step (3); } else {delay (4); }} hourHand.setSpeed (1); minuteHand.setSpeed (1); }}
Pasul 22: Fișiere STL
Va trebui să imprimați următoarele cantități de fișiere:
- 1 - Magnet segment segment inel orar
- Segment de angrenaj inelar 6 ore de bază
- 1 - Montare pas cu pas pentru segmentul inelului de fixare
- 6 - Segmentul de bază al inelului de reținere a orelor
- 1 - Suport senzor de efect Hall
- 1 - Magnet segment segment inel de minut
- 7 - Minute Ring Gear Segment Basic
- 1 - Suport pas cu pas pentru segmentul inelului de reținere
- 6 - Segment de inel de reținere de minute de bază
- 1 - Suport senzor de efect Hall Minute
- 2 - Gear Spur
- 1 - Suport electronic
Pasul 23: Fișiere Solidworks
Acestea sunt fișierele originale Solidworks folosite pentru a crea STL-urile găsite în pasul anterior. Simțiți-vă liber să editați și să modificați fișierele după cum doriți.
Pasul 24: Concluzie
Acest ceas a ieșit mai bine decât anticipasem. Având o experiență minimă în Arduino, mă bucur cum s-a dovedit și cât de exactă este. Arată minunat și funcționează exact așa cum am sperat.