İçindekiler:
- Adım 1: Şematik
- 2. Adım: Düzen
- 3. Adım: "Wort-Uhr"un "Mantığı"
- 4. Adım: Kod Parçacıkları
- Adım 5: Konut
Video: Wort-Uhr: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
Birlikte merhaba!
Bu benim ilk dersim olacak ve onu nasıl geliştireceğiniz veya daha kolay anlaşılır hale getireceğiniz konusunda herhangi bir fikriniz varsa lütfen benimle iletişime geçmekten çekinmeyin!
İlk başta, bu tür bir "saat" benim fikrim değil! İnternette pek çok şey gördüm ve farklı web mağazalarında sadece birkaç dolara sipariş edilebilirler. Ama bir tane satın almak istemedim, nasıl çalıştığını öğrenmek ve anlamak için kendimden bir tane yapmak istedim.
"Alman olmayan" üyelere bir kelime… Bunun sadece bir "Alman Wort Uhr" olduğu için üzgünüm. Kolayca ingilizceye veya başka bir dile çevrilebilir ama ben Alman olduğum için kendi dilimde yaptım. Diliniz için desteğe ihtiyacınız varsa benimle iletişime geçin, size yardımcı olmaya çalışacağım.
Haydi başlayalım…
Adım 1: Şematik
Şematik basittir ve resim okunamayacak kadar kötüyse, bir PDF dosyası da vardır.
Sol alt köşeden başlayalım. PIC, kaydırmalı yazmaçlar (74HC164) ve gerçek zamanlı çip DS3231 için kararlı bir 5V çıkış üretmek üzere bir LM7805 kullanan basit bir güç kaynağı vardır. Tüm LED'ler de bu kısımdan sağlanır. Sağ uçtaki D22 sadece güç kaynağını belirtmek içindir ve istenmediğinde kolayca ayrılabilir.
40V'dan daha az olan saat için herhangi bir DC güç kaynağı kullanabilirsiniz, ancak daha sonra C7 için uygun değeri seçmelisiniz. Giriş voltajının en az iki katı bir voltaj değerine sahip olmalıdır ve LM7805'te ısı ürettiğinizi unutmayın, bu nedenle giriş voltajını mümkün olduğunca düşük tutmaya çalışmalısınız çünkü diğer her şey sadece enerji israfıdır. En iyi uyum, 9V ile 12V DC arasında bir şeydir.
Güç kaynağınızın polaritesi ile uğraşmayın… P-kanal MOSFET (Q1) yanlış polarite koruması görevi görür ve saat çalışmaz ve herhangi bir hasar görmez. Takılıysa, bunu "güç" LED'i D22'de kontrol edebilirsiniz.
Şemanın sağ tarafında seri-giriş paralel-çıkış kaydırmalı yazmaçlar bulunur. Çok sayıda G/Ç Bağlantı Noktası olan büyük bir PIC kullanmak istemediğim için bunları kullanmaya karar verdim. Daha küçük bir tane kullanmak istedim ve evde hala 16F1829 vardı, bu yüzden seçim zaten açıktı. Veriler (IN_1, IN_2 ve IN_3) PIC (aşağıdaki kod bölümüne bakın) ve ayrıca REGISTER_CLK tarafından sağlanır. Kodum ve PCB düzenimdeki basitlik için 74HC164'ten ikisini saatlerce ve sonuncusunu "mantık" için kullandım.
Sol üst köşede PIC ve gerekli tüm parçalar bulunur. Osilatöre gerek kalmaması için dahili saati kullandım. SCL, SDA ve MCLR için sadece üç direnç. 32kHz'i "kesin saniye" göstergesi olarak kullandığım için PIC için oldukça kararlı ve doğru bir frekansa gerek yok.
Ortada, minimum harici parçalara sahip DS3231 var. Aslında I²C üzerinden iletişim için sadece SDA ve SCL girişlerini ve PIC16F1829'un Timer1'i için harici saat referansı olarak 32kHZ çıkışını kullandım. Bu çıktı için veri sayfası, gerekli olan harici bir çekme direnci olduğunu söylüyor. Diğer çıktıları bu projede kullanmadım ve bağlantısız bıraktım.
Yine ortada LED'ler… Şemada da okuyabileceğiniz gibi mavi LED'ler (şeffaf muhafazalı olanlar) ve 1k Ohm'luk bir direnç değeri kullandım. Bu projeyi kendiniz yapmayı düşünüyorsanız, bu dirençlerin değerlerini seçtiğiniz LED'lerin rengine ve tipine göre seçmelisiniz. Ayrıca saatin nereye kurulmasını istediğinizi de unutmayın. Benimki uyku odamda duruyor, bu yüzden LED'lerin çok parlak olmasını istemedim ve dirençler için daha büyük bir değer seçtim. PCB'ye monte etmeden önce LED'leri ve direnç değerleri olan bir devre tahtası üzerinde bazı denemeler yapın.
2. Adım: Düzen
Şemayı bitirdikten sonra PCB'yi yönlendirmenin zamanı geldi. Bunun için KiCAD kullandım (şematik için de). Söylenecek çok fazla bir şey yok, sadece hatları yönlendirin.
Saatin kasasını kendim bastığım için üst katmandaki LED'lerin nerede olduğu oldukça önemliydi. LED'leri ve dirençleri sadece üst katmana koydum, çünkü PCB'mi kısmen monte edilmiş olarak sipariş ettim (tüm SMD parçaları) ve bunun için seçtiğim şirket parçaları çift taraflı değil, sadece bir tarafa yerleştiriyor.
KiCAD'den yaptığım 3 boyutlu iki resimde yerleştirmeyi görebilirsiniz.
İlgileniyorsanız… KiCAD PCB'yi Eagle'a aktarmak mümkündür ve daha sonra PCB'den bir referansınız olduğu için gövdeyi inşa etmek oldukça kolaydır.
3. Adım: "Wort-Uhr"un "Mantığı"
Bu projenin en büyük kısmı PIC'in koduydu…
İlk başta Almanca konuşulan zamanın "mantığını" bulmak ve onu koda çevirmek.
Maalesef Excel dosyasını doğrudan yüklemek mümkün olmadı, ancak umarım PDF dışa aktarma sizin için yeterince okunabilir. Değilse, lütfen benimle iletişime geçin, size orijinal Excel dosyasını göndereceğim. PDF'de saatimin mantığını nasıl kurduğumu görebilirsiniz. Farklı zaman adımlarından nasıl geçtiğimi ve yazımın nasıl olduğunu görebilirsiniz. Kodun içindeki hesaplama (esas olarak if-else deyimleri), tablonun sağ tarafındaki bilgilerden elde edilebilir. Bir kısım dakikalar ve bir kısım saatler içindir.
Gördüğünüz gibi bu bir sihir değil ve C ile kolayca kodlanabilir. Mantık içindeki "en zor" nokta, saatin nasıl ele alınacağıdır, dosyada gördüğünüz gibi sadece bir saatin başında gerçek saat gösterilir.. Almanca'da (belki bu sadece Bavyera'ya özgü bir şey olabilir) "sonraki saat" oldukça erken kullanılır.
Kodlama için MPLABX'i IDE seçimim olarak kullandım.
4. Adım: Kod Parçacıkları
Kodumu burada yayınlamayacağım, ancak kendi kodunuzu yazmayı düşünüyorsanız, geliştirme sırasında "tökezlediğim" bazı ipuçları vereceğim…
İlk önce "kayıt" - doldurma:
Kayıtlara çok sık ve çok kısa döngülerde yeni veri aktarırsanız, LED'lerin titremeye başladığını deneyimledim. Bu yüzden bazı "engelleme işaretleri" yaptım, sadece her dakika konuşma süresinin yeni bir "hesabı" yapılır ve kayıt güncellemesi yapılır.
Kayıtları doldurma kodu yukarıdaki resimdedir. Gördüğünüz gibi 3 kaydı da paralel olarak dolduruyorum, bu yüzden data için PIC'in 3 pinine ve CLK için 1 pinine ihtiyacım var. 74HC164, CLK hattında 0'dan 1'e geçişte yeni verileri devralır.
Kodun geri kalanı esas olarak PIC'ye bağlı şeyler, "konuşma zamanı" - mantık ve iletişim ve düğmelerin kullanımıdır. MSSP modülünü kullandığım için iletişim ağırlıklı olarak Microchip MPLABX tarafından sağlanmaktadır.
DS3231'in veri sayfasını okumak iyi bir fikirdir, çünkü veriler BCD olarak içeride depolanır, bu nedenle bunu kodunuzda "dönüştürmeniz" gerekebilir. Bildiğim kadarıyla "yaparak öğrenen" bir adamım ve DERSİN veri sayfasını okumadım… Bana çok fazla sinir ve saate mal oldu.
Fark etmiş olabileceğiniz gibi, bu uygulama ile "zamanı takip etmenin" iki yolu vardır.
- DS3231'den gerçek zamanı okuyabilirsiniz
- PIC'in kendisinde "saniyeleri sayabilir" ve zaman zaman sadece DS3231 ile zamanı senkronize edebilirsiniz.
Bu size kalmış ve her iki yol da pratik ve yalındır. İlk seçeneği kullandım ve sadece zamanı butonlar aracılığıyla (DS3231'e yazma zamanı) veya her 24 saatte bir (DS3231'den okuma zamanı) ayarlarken senkronize ettim çünkü kendim daha fazla mantık uygulamak istedim. Ayrıca gece saatimi (23:00 - 05:00 arası) kapatıyorum, bu bence biraz daha kolay oldu.
Adım 5: Konut
Son olarak, muhafazaya kısa bir göz atmanın zamanı geldi.
Yukarıda bahsettiğim gibi, muhafazayı kendim yaptım (Eagle kullanarak) ve 3D Yazıcımla yazdırdım, bu yüzden farklı LED'lerin konumlarına bakmak zorunda kaldım.
Ekte kullanmak isterseniz STL dosyalarını bulabilirsiniz.
Umarım bu talimat, kendi "Wort-Uhr" unuzu oluştururken size yardımcı olur. Hala "açık sorular" varsa, benimle iletişime geçmekten çekinmeyin. Aşağıda yorum yapmanın en iyi yolu, çünkü belirli bir sorusu olan tek kişi siz olmayabilirsiniz.
Önerilen:
Akıllı Motosiklet HUD Prototipi (adım adım Navigasyon ve Çok Daha Fazlası): 9 Adım
Akıllı Motosiklet HUD Prototipi (adım adım Navigasyon ve Çok Daha Fazlası): Merhaba !Bu Talimatlar, motosiklet kasklarına monte edilmek üzere tasarlanmış bir HUD (Heads-Up Display) platformunu nasıl tasarladığımın ve inşa ettiğimin hikayesidir. "Haritalar" yarışması bağlamında yazılmıştır. Maalesef tamamen bitiremedim
Arduino Araba Geri Geri Park Uyarı Sistemi - Adım Adım: 4 Adım
Arduino Araba Geri Geri Park Uyarı Sistemi | Adım Adım: Bu projede Arduino UNO ve HC-SR04 Ultrasonik Sensör kullanarak basit bir Arduino Araba Geri Park Sensörü Devresi tasarlayacağım. Bu Arduino tabanlı Araba Ters uyarı sistemi, Otonom Navigasyon, Robot Mesafesi ve diğer menzil r
Adım Adım PC Oluşturma: 9 Adım
Adım Adım Bilgisayar Oluşturma: Sarf Malzemeleri: Donanım: AnakartCPU & CPU soğutucusuPSU (Güç kaynağı ünitesi)Depolama (HDD/SSD)RAMGPU (gerekli değil)CaseTools: TornavidaESD bilezik/aplikatörlü matstermal macun
Üç Hoparlör Devresi -- Adım Adım Eğitim: 3 Adım
Üç Hoparlör Devresi || Adım Adım Eğitim: Hoparlör Devresi, ortamdan alınan ses sinyallerini MIC'e güçlendirir ve bunu, güçlendirilmiş sesin üretildiği Hoparlöre gönderir. Burada, size bu Hoparlör Devresini kullanarak bu Hoparlör Devresini yapmanın üç farklı yolunu göstereceğim:
Adım Adım Arduino Uno ile Akustik Kaldırma (8 adım): 8 Adım
Arduino Uno ile Akustik Kaldırma Adım Adım (8 adım): ultrasonik ses dönüştürücüler L298N erkek dc pinli Dc dişi adaptör güç kaynağı Arduino UNOBreadboardBu nasıl çalışır: İlk olarak, Arduino Uno'ya kod yüklersiniz (dijital ile donatılmış bir mikrodenetleyicidir) ve kodu dönüştürmek için analog bağlantı noktaları (C++)