İçindekiler:
- Adım 1: Araçlar ve Malzemeler
- Adım 2: Ahşap Çerçeveyi Birbirine Yapıştırın
- Adım 3: Daire Kesme Jig Kullanarak Çerçeveyi Kesin
- 4. Adım: Dişlileri Yazdırın ve Birleştirin
- Adım 5: Bölümleri Birlikte "Yapıştırın"
- Adım 6: Çerçevedeki Kabartmaları Kesin
- Adım 7: Hall Etkisi Sensörleri için Kesinti Açıklığı
- Adım 8: Dış Halkayı Yapıştırın
- Adım 9: Hall Etkisi Sensörü Ayar Vidalarını Kesin
- Adım 10: Halkaları Suntaya Yapıştırın
- Adım 11: İç Diski Yapıştırın
- Adım 12: Kaplamayı Takın
- Adım 13: Kaplamayı Düzeltin
- Adım 14: Kaplamayı Kes
- Adım 15: Tutkal Kaplama
- Adım 16: Zımparalayın ve Bitirin
- Adım 17: Gücü Kurun
- Adım 18: Elektroniği Birleştirin
- Adım 19: Elektroniği Lehimleyin ve Bağlayın
- Adım 20: Arka Plaka
- Adım 21: Arduino Kodu
- Adım 22: STL Dosyaları
- Adım 23: Solidworks Dosyaları
- Adım 24: Sonuç
Video: Büyüleyici Manyetik Duvar Saati: 24 Adım (Resimli)
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Mekanik saatler beni her zaman büyülemiştir. Tüm iç dişlilerin, yayların ve eşapmanların birlikte çalışarak sabit ve güvenilir bir saat elde etme şekli, sınırlı beceri setim için her zaman ulaşılmaz görünüyordu. Neyse ki modern elektronikler ve 3D baskılı parçalar, küçük hassas metalik parçalara dayanmayan basit bir şey yaratmak için boşluğu doldurabilir.
Bu minimalist duvar saati, klasik bir ceviz kaplamanın arkasında mıknatısları döndüren ucuz step motorlar tarafından çalıştırılan bir çift 3D baskılı halka dişliyi gizler.
Başlangıçta STORY Clock'tan esinlenerek, ürünlerinin kullandığı dijital okuma ve yavaş hareket eden bilyalı rulmanlara karşı yalnızca bilyalı rulmanlar kullanarak günün saatini gösteren bir zaman parçası istedim.
Adım 1: Araçlar ve Malzemeler
Malzemeler:
- 13 x 13 x 2 inç Kontrplak/Sunta (3 adet hurda ahşabı birbirine yapıştırdım)
- 13 x 13 inç Sunta
- Arduino Nano
- Gerçek Zamanlı Saat
- Step Motorlar ve Sürücüler
- Hall Etkisi Sensörleri
- mıknatıslar
- Güç kablosu
- AC Adaptörü
- Fiş
- Çeşitli Makine Vidaları
- Çeşitli Ahşap Vidalar
- 3D Basılı Parçalar (Son Adım)
- Kaplama (12 x 12 inç - yüz, 40 inç uzun şerit)
- Sprey Lake
- Siyah Sprey Boya
Aletler:
- 3 boyutlu yazıcı
- Pusula
- X-acto Bıçak
- Zamk
- Kelepçeler
- Daire Kesme Jig
- Testere
- Disk Zımpara
- Cırcır Kelepçe
- keski
- Hükümdar
- zımpara
- Matkaplar
- Tornavidalar
- Havya
- Sıcak yapıştırıcı tabancası
Adım 2: Ahşap Çerçeveyi Birbirine Yapıştırın
Saatin çerçevesini oluşturacak üç parça ahşabı birbirine yapıştırın. Eski bir karyola çerçevesinden geri dönüştürülmüş yonga levha kullandım.
Adım 3: Daire Kesme Jig Kullanarak Çerçeveyi Kesin
Tahtanın ortasını işaretleyin ve bir daire kesme aparatına monte edin. Aşağıdaki çaplarda beş daire kesin:
- 12 inç
- 11 1/4 inç
- 9 1/4 inç
- 7 1/4 inç
- 5 3/8 inç
4. Adım: Dişlileri Yazdırın ve Birleştirin
Halka dişliler, küçük bir yazıcıda basılabilmeleri ve bir araya getirilebilmeleri için parçalara ayrılmıştır. Bir sonraki adımda gösterilen fırınlama işlemine yardımcı olmak için tüm parçalar ABS'de basılmıştır. Parçaların tüm kenarlarını ve yüzeylerini zımparalayın.
22. adımda bulunan aşağıdaki miktarları yazdırın:
- 1 - Saat Halka Dişli Segmenti Mıknatısı
- 6 - Saat Halka Dişli Segmenti Temel
- 1 - Saat Tutma Halkası Segmenti Step Montajı
- 6 - Saat Tutma Halkası Segmenti Temel
- 1 - Saatlik Hall Etkisi Sensörü Tutucu
- 1 - Dakika Halka Dişli Segmenti Mıknatısı
- 7 - Dakika Halka Dişli Segmenti Temel
- 1 - Dakika Tutma Halkası Segmenti Step Montajı
- 6 - Dakika Tutma Halkası Segmenti Temel
- 1 - Dakika Hall Etkisi Sensörü Tutucu
- 2 - Düz Dişli
- 1 - Elektronik Montaj
Adım 5: Bölümleri Birlikte "Yapıştırın"
Biraz asetonlu bir cam şişede, başarısız baskıları eski destek malzemesini vb. eritin. Parçaları birleştirmek için her bir dikişin üzerine aseton karışımını boyayın. Sertleştikten sonra, her dikişi düz bir şekilde zımparalayın.
Adım 6: Çerçevedeki Kabartmaları Kesin
Halka dişlileri ve tutma halkalarını çerçeveye yerleştirin ve step motorlar için kabartmaları kesin. İç halkayı çok büyük ölçtüm ve kestim, bu yüzden mağazanın etrafındaki bazı akçaağaç kenar bantlarını kullanarak boyutuna göre ayar yaptım.
Adım 7: Hall Etkisi Sensörleri için Kesinti Açıklığı
Dakika salonu efekt sensörü için iç halkadan ve saat salonu efekt sensörü için yuvadan bir boşluk deliği açın. Bu boşlukları kesmek için bir keski, eğe ve küçük el testeresi kullandım.
Adım 8: Dış Halkayı Yapıştırın
Dış halkayı, küçük tutma halkasının boyutunda yapıştırın ve bantlayın.
Adım 9: Hall Etkisi Sensörü Ayar Vidalarını Kesin
Makine vidalarını bir demir testeresi ile kesin, böylece tutma halkasının ve hall etkisi sensör tutucusunun kalınlığından biraz daha uzun olurlar. Düz bir tornavida ile dişli uçtan ayarlanabilmesi için dişlerde bir yuva açın.
Adım 10: Halkaları Suntaya Yapıştırın
Dış halkadan biraz daha büyük bir sunta çemberi kesin. Dış ve iç halkayı sunta yüzeyine yapıştırın. İç halkayı yerleştirmek için dakika tutma halkasını ve halka dişlisini kullanın. İç halkayı arkaya yapıştırmamaya benden daha iyi dikkat edin. İkinci resim, küçük salon efekt sensörü için yeni bir yuva kesimini göstermektedir.
Suntayı dış halkanın boyutuna indirmek için bir disk zımpara kullanın.
Adım 11: İç Diski Yapıştırın
İç diski yerleştirmek için saat tutma halkasını ve halka dişlisini kullanarak iç diski yerine yapıştırın.
Adım 12: Kaplamayı Takın
Saatin derinliğinden daha geniş ve saati saracak kadar uzun bir kaplama şeridi kesin (3,14 * saatin çapı, gereken uzunluğu döndürür. Yeterli olduğundan emin olmak için bir inç ekleyin.) Kaplamayı kuru olarak yerleştirin. uzunlamasına kesmek. Kaplamaya bol miktarda yapıştırıcı sürün ve bir kayış kelepçesi ile yerine sabitleyin. Yapışmayı sağlamak için birkaç saat kurumaya bırakın.
Adım 13: Kaplamayı Düzeltin
Keskin bir keski kullanarak, fazla kaplamayı saatin önünden ve arkasından kesin.
Adım 14: Kaplamayı Kes
Kaplamamda bazı çatlaklar vardı. Çalışmayı kolaylaştırmak için, bir arada tutmak için ressam bantı uyguladım. Bir pusulada bir x-acto bıçağı kullanarak, kaplamayı saatin yüzünden biraz daha büyük kesin.
Adım 15: Tutkal Kaplama
Basıncı saatin yüzeyine yaymak için kesilmiş halkaları kullanın. Kaplamanın bant olmayan tarafına bol miktarda yapıştırıcı sürün. Tahılları saat kadranına dikey olarak yönlendirin ve her birini biraz sıkarak birçok kelepçe uygulayın. Bu, kaplamanın kaymamasını ve yüz boyunca eşit bir baskı oluşturmasını sağlayacaktır.
Saatin ön yüzünde bir çift düz tahta ve arkada bazı cauls kullandım.
Adım 16: Zımparalayın ve Bitirin
Zımpara kağıdı kullanarak, saatin yüzeyindeki fazla kaplamayı dikkatlice çıkarın ve 220 kumdan 600 kuma kadar zımparalayın.
10 ila 20 kat cila uygulayın. Bu, bilyeli yatağın süreceği yüzeyi oluşturacaktır. Havadaki toz ve diğer parçacıklar nedeniyle kaçınılmaz olarak her bilyalı yatağın yolu boyunca çizgiler ortaya çıkacağını düşünüyorum. Daha fazla son kat uygulamak, bunu mümkün olduğunca geciktirmelidir. Ayrıca gelecekteki tamir işlemlerini de kolaylaştıracaktır. Saatimde çizgiler belirirse bu adımı güncelleyeceğim.
Adım 17: Gücü Kurun
27/64 inçlik bir matkap ucu kullanarak saatin alt kısmına bir delik açın ve elektrik fişini yerine vidalayın.
Adım 18: Elektroniği Birleştirin
Elektronik karta step sürücüleri ve gerçek zamanlı saati takın. Arduino'yu sabitlemenin bir yolunu bulmam gerekiyordu, böylece delikler açılmış ve bir fermuar bağı için bir yuva açılmıştı. Bu özellikler, 22. adımda bulunan dosyaya eklenmiştir.
Adım 19: Elektroniği Lehimleyin ve Bağlayın
Blok diyagramı izleyerek tüm bileşenleri birbirine lehimleyin. Halkaları sıcak tutkalla yapıştırın ve başıboş kabloları da sıcak tutkalla sabitleyin.
Adım 20: Arka Plaka
Saatin yüzünden 1/2 inç daha büyük başka bir daire ve iç çapı saatin arkasıyla aynı olan bir halka keserek arka plakayı oluşturun. Halkayı yapıştırın ve bazı yaylı kelepçelerle daire içine alın.
Kuruduktan sonra, iç halkadan 1/8 inç daha geniş bir çizgi çizin ve şerit testere veya disk zımpara kullanarak boyuta göre düzeltin.
Bir yönlendirici veya matkap uçları kullanarak 1 inç uzunluğunda 1/4 inç genişliğinde bir yuva açın. Arkayı saat çerçevesine sabitlemek için dört delik açın.
Siyah sprey boya uygulayın ve kuruduktan sonra saate takın.
Adım 21: Arduino Kodu
Arduino kodu mümkün olduğunca yorumlanır. Programcı olmadığımı unutmayın, minimum arduino deneyimim var (nazik olun). Kod, geçerli saatin "Sıfırlama Zamanı" ile eşleşip eşleşmediğini görmek için sürekli olarak kontrol eder. Şimdiki zamanı adımlara çevirmenin bir yolunu bulamadığım için, kendini günde yalnızca bir kez düzeltir (varsayılan olarak gece yarısı). Gece yarısı dişliler gece yarısı pozisyonuna döner ve 00:01'e kadar o saate hareket ederek bekler ve oradan devam eder. Şu anda olduğu gibi, saat 24 saatlik bir süre içinde yalnızca yaklaşık 5 saniye kaybeder.
Yüklü Stepper ve RTClib kitaplıklarına ihtiyacınız olacak.
Kodun kendimden daha fazla deneyime sahip biri tarafından optimize edilebileceğini biliyorum. Eğer meydan okumaya hazırsanız, lütfen bu projeyi kendiniz için yeniden yaratın ve bilginizi paylaşın.
#Dahil etmek
#include "RTClib.h" RTC_DS1307 rtc; #define oneRotation 2038 // 28BYJ-48 step motorun bir devrindeki adım sayısı Step saatHand(oneRotation, 3, 5, 4, 6); Adım DakikaHand(oneRotation, 7, 9, 8, 10); #define hourStopSensor 12 #define minuteStopSensor 11 int endStep = 0; // Saatin hızı için zaman anlaşması. int setDelay1 = 168; int setDelay2 = 166; int setDelay3 = 5; // Matematik yapmak için geçerli zaman. kayan saat = 0; kayan nokta mn = 0; kayan nokta sc = 0; // Saati sıfırlamak için günün saatini ayarlayın (24 saat formatı). int sıfırlamaSaati = 0; int resetDakika = 0; // Başlangıçta ve sıfırlamada doğru zamanı ayarlamak için değişkenler. float setTimeStepHour = 0; float setTimeStepMinute = 0; şamandıra elGecikmesi = 0; kayan saatTest = 0; float dakikaTest = 0; geçersiz kurulum() { Serial.begin(115200); // Gerçek zaman saatini ayarla ve salon efekt sensörlerini sıfırla. pinMode(hourStopSensor, INPUT_PULLUP); pinMode(dakikaStopSensor, INPUT_PULLUP); rtc.begin(); // Zamanı ayarlamak için aşağıdaki satırı kaldırın. // rtc.adjust(DateTime(2020, 2, 19, 23, 40, 30)); // rtc.adjust(DateTime(F(_DATE_), F(_TIME_))); // Step motorların en yüksek hızını ayarlayın. saatHand.setSpeed(15); dakikaHand.setSpeed(15); // Akrep ve yelkovan öğlen oluncaya kadar döngü while (digitalRead(hourStopSensor) == LOW || digitalRead(minuteStopSensor) == LOW) { if (digitalRead(hourStopSensor) == LOW) { hourHand.step(2); } başka { gecikme(3); } if (digitalRead(dakikaStopSensor) == DÜŞÜK) { dakikaHand.step(3); } başka { gecikme(4); } } while (digitalRead(hourStopSensor) != DÜŞÜK || digitalRead(dakikaStopSensor) != DÜŞÜK) { if (digitalRead(hourStopSensor) != DÜŞÜK) { saatHand.step(2); } başka { gecikme(3); } if (dijitalOkuma(dakikaStopSensor) != DÜŞÜK) { dakikaHand.step(3); } başka { gecikme(4); } } // Şimdiki saati alın DateTime şimdi = rtc.now(); saat = şimdi.saat(); mn = şimdi.dakika(); sc = şimdi.saniye(); // 12 saat formatına geç if (sa >= 12) { sa = sa - 12; } // Yüz boyunca hangi elin daha fazla hareket etmesi gerektiğini görün ve bu mesafeyi // ayarlanan zamanı buna göre ayarlamak için kullanın. saatTest = sa / 12; dakikaTest = dakika / 60; if (hourTest > dakikaTest) { handDelay = hourTest; } else { handDelay = dakikaTest; } // Geçerli saati ayarlayın setTimeStepHour = (sa * 498) + (dk * 8.3) + ((sc + (el Gecikmesi * 36)) *.1383); // Mevcut dakikayı ayarla setTimeStepMinute = (dk * 114) + ((sc + (el Gecikmesi * 45)) * 1.9); // Hangi elin daha fazla adıma ihtiyaç duyacağını test edin ve bunu for döngüsü için en uzun adım sayısına ayarlayın. if (setTimeStepHour > setTimeStepMinute) { endStep = setTimeStepHour; } else { endStep = setTimeStepMinute; } for (int i = 0; i <= endStep; i++) { if (i < setTimeStepHour) { hourHand.step(2); } başka { gecikme(3); } if (i < setTimeStepDakika) { dakikaHand.step(3); } başka { gecikme(4); } } // RPM çalışan saati ayarla hourHand.setSpeed(1); dakikaHand.setSpeed(1); } void loop() { // Saat çalıştırma döngüsünü başlat. for (int i = 0; i < 22; i++) { dakikaHand.step(1); gecikme(setDelay1); // Sıfırlama zamanı için test edin, sıfırlanmaya hazırsa ara verin. if (rtc.now().hour() == resetHour && rtc.now().dakika() == resetDakika) { ara; } } gecikme(setDelay3); for (int i = 0; i < 38; i++) { saatHand.step(1); gecikme(setDelay1); // Sıfırlama zamanı için test edin, sıfırlanmaya hazırsa ara verin. if (rtc.now().hour() == resetHour && rtc.now().dakika() == resetDakika) { ara; } for (int i = 0; i <20; i++) { dakikaHand.step(1); gecikme(setGecikme2); // Sıfırlama zamanı için test edin, sıfırlanmaya hazırsa ara verin. if (rtc.now().hour() == resetHour && rtc.now().dakika() == resetDakika) { ara; } } } // Saati sıfırlama zamanında sıfırla if (rtc.now().hour() == resetHour && rtc.now().minute() == resetMinute) { // Saatin hızını değiştir hourHand.setSpeed(10); dakikaHand.setSpeed(10); // Akrep ve yelkovan öğlene ulaşana kadar döngü. while (digitalRead(hourStopSensor) == DÜŞÜK || digitalRead(dakikaStopSensor) == DÜŞÜK) { if (digitalRead(hourStopSensor) == DÜŞÜK) { saatHand.step(2); } başka { gecikme(3); } if (digitalRead(dakikaStopSensor) == DÜŞÜK) { dakikaHand.step(3); } başka { gecikme(4); } } while (digitalRead(hourStopSensor) != DÜŞÜK || digitalRead(dakikaStopSensor) != DÜŞÜK) { if (digitalRead(hourStopSensor) != DÜŞÜK) { saatHand.step(2); } başka { gecikme(3); } if (dijitalOkuma(dakikaStopSensor) != DÜŞÜK) { dakikaHand.step(3); } başka { gecikme(4); } } // Sıfırlama zamanı geçene kadar burada bekleyin. while (rtc.now().dakika() == resetDakika) { gecikme(1000); } // Şimdiki saati alın DateTime şimdi = rtc.now(); saat = şimdi.saat(); mn = şimdi.dakika(); sc = şimdi.saniye(); // 12 saat formatına geç if (sa>= 12) { sa = sa - 12; } // Yüz boyunca hangi elin daha fazla hareket etmesi gerektiğini görün ve bu mesafeyi // ayarlanan zamanı buna göre ayarlamak için kullanın. saatTest = sa / 12; dakikaTest = dakika / 60; if (hourTest > dakikaTest) { handDelay = hourTest; } else { handDelay = dakikaTest; } // Geçerli saati ayarlayın setTimeStepHour = (sa * 498) + (dk * 8.3) + ((sc + (el Gecikmesi * 36)) *.1383); // Mevcut dakikayı ayarla setTimeStepMinute = (dk * 114) + ((sc + (el Gecikmesi * 45)) * 1.9); // Hangi elin daha fazla adıma ihtiyaç duyacağını test edin ve bunu for döngüsü için en uzun adım sayısına ayarlayın. if (setTimeStepHour > setTimeStepMinute) { endStep = setTimeStepHour; } else { endStep = setTimeStepMinute; } for (int i = 0; i <= endStep; i++) { if (i < setTimeStepHour) { hourHand.step(2); } başka { gecikme(3); } if (i < setTimeStepDakika) { dakikaHand.step(3); } başka { gecikme(4); } } saatHand.setSpeed(1); dakikaHand.setSpeed(1); } }
Adım 22: STL Dosyaları
Aşağıdaki miktarlarda dosya yazdırmanız gerekecektir:
- 1 - Saat Halka Dişli Segmenti Mıknatısı
- 6 - Saat Halka Dişli Segmenti Temel
- 1 - Saat Tutma Halkası Segmenti Step Montajı
- 6 - Saat Tutma Halkası Segmenti Temel
- 1 - Saatlik Hall Etkisi Sensörü Tutucu
- 1 - Dakika Halka Dişli Segmenti Mıknatısı
- 7 - Dakika Halka Dişli Segmenti Temel
- 1 - Dakika Tutma Halkası Segmenti Step Montajı
- 6 - Dakika Tutma Halkası Segmenti Temel
- 1 - Dakika Hall Etkisi Sensörü Tutucu
- 2 - Düz Dişli
- 1 - Elektronik Montaj
Adım 23: Solidworks Dosyaları
Bunlar, önceki adımda bulunan STL'leri oluşturmak için kullanılan orijinal Solidworks dosyalarıdır. Dosyalarımı uygun gördüğünüz şekilde düzenlemekten ve değiştirmekten çekinmeyin.
Adım 24: Sonuç
Bu saat beklediğimden daha iyi çıktı. Minimum Arduino deneyimine sahip olduğumdan, nasıl ortaya çıktığına ve ne kadar doğru olduğuna sevindim. Harika görünüyor ve umduğum gibi çalışıyor.