arduino nano üzerinde led saat. Arduino'da kendi ellerimizle elektronik bir saat yapıyoruz. Arduino'da hazır saat

Fotoğrafta, tüm bu ekonomiyi yönetecek programın hatalarını ayıklamak için benim tarafımdan bir araya getirilmiş bir prototip var. Breadboard'un sağ üst köşesindeki ikinci arduino nano projeye ait değil ve orada öylece çıkıntı yapıyor, görmezden gelebilirsiniz.

Çalışma prensibi hakkında biraz: arduino, DS323 zamanlayıcısından veri alır, işler, bir fotodirenç kullanarak ışık seviyesini belirler, ardından her şeyi MAX7219'a gönderir ve sırayla gerekli bölümleri istenen parlaklıkta yakar . Ayrıca üç düğmeyi kullanarak yıl, ay, gün ve saati istediğiniz gibi ayarlayabilirsiniz. Fotoğrafta göstergeler, dijital sıcaklık sensöründen alınan zamanı ve sıcaklığı gösteriyor.

Benim durumumdaki ana zorluk, ortak bir anotlu 2,7 inç göstergelerin ve ilk olarak ortak bir katotlu göstergeler için keskinleştirilmiş max7219 ile bir şekilde arkadaş olmaları ve ikincisi, sorunu güç kaynaklarıyla çözmek için olmaları gerektiğidir. çünkü parlamak için max7219'un tek başına sağlayamayacağı 7,2 volta ihtiyaç duyarlar. Bir forumda yardım istemek, aynı cevabı aldım.

Ekran görüntüsü çözümü:


Bir mikro devre, sinyali ters çeviren max7219'dan segmentlerin çıkışlarına yapışır ve her çıkışa, aynı zamanda sinyalini ters çeviren ve voltajı artıran ekranın ortak katoduna bağlanması gereken üç transistörden oluşan bir devre yapışır. Böylece, max7219'a ortak bir anot ve 5 volttan fazla besleme voltajı olan ekranları bağlama fırsatı elde ediyoruz.

Test için bir gösterge bağladım, her şey çalışıyor, hiçbir şey içmiyor

toplamaya başlıyoruz.

Her şeyin tek bir tahta üzerinde olduğu çarpık pençelerimden boşanmış versiyondaki çok sayıda jumper nedeniyle devreyi 2 parçaya ayırmaya karar verdim. Saat, bir gösterge ünitesi ile bir güç kaynağı ve kontrol ünitesinden oluşacaktır. İlk önce ikincisini bir araya getirmeye karar verildi. Estetikler ve deneyimli radyo amatörleri, lütfen parçalara yapılan zalimce muameleden dolayı bayılmayın. LUT uğruna bir yazıcı satın alma arzusu yok, bu yüzden bunu eski moda bir şekilde yapıyorum - bir kağıt parçası üzerinde çalışıyorum, bir şablona göre delikler açıyorum, bir iz işaretleyici ile çiziyorum, sonra dağlıyorum.

Göstergeleri sabitleme ilkesi açık olduğu gibi kaldı.

Göstergelerin ve bileşenlerin konumunu kolaylık sağlamak için yapılmış bir pleksiglas şablon kullanarak işaretleriz.

İşaretleme işlemi







Ardından şablonu kullanarak doğru yerlere delikler açıp tüm bileşenleri deniyoruz. Her şey kusursuz bir şekilde yerine oturdu.

Yollar ve zehirler çizeriz.




demir klorür içinde banyo yapmak

Hazır!
kontrol Paneli:


gösterge panosu:


Kontrol panosu mükemmel çıktı, ekran kartındaki iz kritik bir şekilde yutulmadı, bu düzeltilebilir, lehimleme zamanı. Bu sefer SMD bakireliğimi kaybettim ve devreye 0805 bileşenlerini dahil ettim. En azından, ilk dirençler ve kapasitörler yerlerine lehimlendi. Sanırım elime alacağım, daha kolay olacak.
Lehimleme için satın aldığım bir akı kullandım. Onunla lehim yapmak bir zevk, şimdi sadece kalaylama için alkollü rosin kullanıyorum.

İşte bitmiş tahtalar. Kontrol kartında bir arduino nano için bir yuva, bir saat, ayrıca ekran kartına ve sensörlere bağlantı için çıkışlar (otomatik parlaklık için bir fotodirenç ve bir dijital termometre ds18s20) ve ayarlanabilir çıkış voltajına (için) sahip bir güç kaynağı ünitesi bulunur. büyük yedi segmentli) ve saate ve arduino'ya güç sağlamak için, ekran kartında ekranlar için iniş soketleri, max2719 ve uln2003a için soketler, dört büyük yedi segmente güç sağlamak için bir çözüm ve bir grup atlama teli vardır.




arka kontrol panosu

Geri gösterge panosu:

Korkunç smd montajı:


öğle yemeği

Tüm kabloları, düğmeleri ve sensörleri lehimledikten sonra, hepsini açmanın zamanı geldi. İlk çalıştırma birkaç sorunu ortaya çıkardı. Son büyük gösterge parlamadı ve geri kalanı loş bir şekilde parladı. İlk sorunu, smd transistörün bacaklarını lehimleyerek, ikincisi - voltaj çıkışını lm317 ile ayarlayarak hallettim.
YAŞIYOR!

Yeni başlayanların Arduino kartına dayalı olarak oluşturdukları ilk projelerden biri, zamanı takip eden basit bir saattir. Temel olarak, bu tür saatler Arduino'ya bağlı RTC (Gerçek Zamanlı Saat) modülünü temel alır. Bugün piyasada elektronik komponentler mevcuttur. farklı modeller RTC, doğruluk ve fiyat bakımından farklılık gösterir. Yaygın modeller arasında DS1302, DS1307, DS3231 bulunmaktadır.



Ancak, özellikle bu tür modülleri alamıyorsanız, bir RTC kullanmadan bir Arduino saati yapabilirsiniz. Tabii ki, bu durumda doğruluk düşük olacaktır, bu nedenle proje daha çok eğitici olarak düşünülmelidir.


Bu tür saatlerin çalışma prensibi oldukça basittir. Arduino'da bu saati her açtığınızda, tıpkı herhangi bir analog saat gibi şimdiki zamana ayarlamanız gerekecektir. Bu tür saatleri hiç kullanmamak kesinlikle daha iyidir. Gündelik Yaşam uzun süreli çalışma sırasında mevcut zamanla senkronizasyon önemli olabileceğinden, yeniden başlatma ve daha fazla ayar yapmadan uzun bir süre aktiflerse.


Bu saat, çok fazla bileşen gerektirmediği için normal bir devre tahtası üzerine monte edilebilir. Buradaki ana bağlantımız Arduino Uno kartı olacak. Saati görüntülemek için 16x2 LCD alabilirsiniz. Zaman ayarlarını değiştirmek için iki düğmeyi bağlayın (saat ve dakika için). Düğmeler, 10kΩ dirençler aracılığıyla Aduino'ya bağlanır. Ekran parlaklığını değiştirmek için 10 kΩ potansiyometre gereklidir. Tüm bu bileşenleri Arduino Uno kartına bağlama şeması aşağıda gösterilmiştir.



Şimdi Arduino'yu programlamanız gerekiyor. LCD ekranda zamanı görüntülemenizi sağlayan basit bir kod (kroki) aşağıda gösterilmiştir.


#katmak LiquidCrystal lcd(12,11,5,4,3,2); int h=12; intm; int; int bayrağı; int ZAMAN; sabit int hs=8; sabit int ms=9; int durum1; int durum2; geçersiz kurulum() ( lcd.begin(16,2); ) geçersiz döngü() ( lcd.setCursor(0,0); s=s+1; lcd.print("TIME:"); lcd.print(h) ); lcd.print(":"); lcd.print(m); lcd.print(":"); lcd.print(s); if(bayrak)<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12)lcd.print("ÖS"); if(flag==24)flag=0; gecikme(1000); lcd.clear(); if(s==60)( s=0; m=m+1; ) if(m==60) ( m=0; h=h+1; flag=flag+1; ) if(h==13 ) ( h=1; ) lcd.setCursor(0,1); lcd.print("İYİ GÜNLER DİLERİM"); //---------Zaman // ayar-------// durum1=digitalRead(hs); if(durum1==1) ( h=h+1; bayrak=bayrak+1; if(bayrak<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12)lcd.print("ÖS"); if(flag==24)flag=0; if(h==13)h=1; ) durum2=dijitalOkuma(ms); if(durum2==1)( s=0; m=m+1; ) )

   İlginiz için teşekkür ederiz bilgi projesiİnternet sitesi.
   İlginç ve faydalı materyallerin daha sık çıkmasını ve daha az reklam almasını istiyorsanız,
   Gelişimi için dilediğiniz miktarda bağışta bulunarak projemize destek olabilirsiniz.

Arduino mikrodenetleyicisinde LED arkadan aydınlatmalı ve yanıp sönen yelkovana sahip saat
Titreşen bir yelkovana sahip bu benzersiz LED arkadan aydınlatmalı saat, TLC5940 PWM denetleyici IC kullanılarak yapılmıştır. Ana görevi, PWM modülasyonu ile kontak sayısını artırmaktır. Bu saatin bir diğer özelliği de analog voltmetrenin dakikaları ölçen bir cihaza dönüştürülmesidir. Bunu yapmak için standart bir yazıcıda yeni bir ölçek yazdırıldı ve eskisinin üzerine yapıştırıldı. Bu nedenle, 5. dakika sayılmaz, sadece beşinci dakika boyunca zaman sayacı ölçeğin sonunda duran bir ok gösterir (ölçekten çıkar). Ana kontrol Arduino Uno mikrodenetleyici üzerinde uygulanmaktadır.

Karanlık bir odada saatin arka ışığının çok parlak yanmaması için, aydınlığa bağlı olarak parlaklığı otomatik olarak ayarlayan bir devre uygulandı (bir fotodirenç kullanıldı).

1. Adım: Gerekli Bileşenler



İşte gerekenler:

  • 5V DC için analog voltmetre modülü;
  • Arduino UNO mikrodenetleyici veya diğer uygun Arduino;
  • Arduino devre kartı (proto kartı);
  • Gerçek zamanlı saat modülü DS1307 (RTC);
  • PWM denetleyicisi TLC5940 ile modül;
  • Petal arka ışık LED'leri - 12 adet;
  • Otomatik parlaklık kontrolü (LDR) devresinin montajı için bileşenler.

Ayrıca, projenin diğer bazı bileşenlerinin üretimi için bir 3D yazıcı ve bir lazer kesim makinesine erişimin olması istenmektedir. Bu erişime sahip olduğunuz varsayılır, bu nedenle imalat çizimleri uygun aşamalarda talimatlara eklenir.

Adım 2: Kadran




Kadran, 3 mm MDF levhadan lazer kesim makinesinde kesilmiş ve cıvatalarla birbirine bağlanmış üç parçadan (katman) oluşur. Yarıksız bir plaka (resimde sağ alt), başka bir LED konumlandırma plakasının (sol alt) altına yerleştirilmiştir. Ardından, karşılık gelen yuvalara ayrı ayrı LED'ler yerleştirilir ve ön panel üste konur (şekilde üstte). Kadranın kenarı boyunca, üç parçanın da cıvatalarla birbirine sabitlendiği dört delik açılır.

  • Bu aşamada LED'lerin performansını test etmek için bir CR2032 düğme pil kullanıldı;
  • LED'leri sabitlemek için, LED'lerin arkasına yapıştırılmış küçük yapışkan bant şeritleri kullanıldı;
  • Tüm LED ayaklar buna göre önceden bükülmüştür;
  • Kenarlardaki delikler yeniden delinerek cıvatalama yapılmıştır. Çok daha uygun olduğu ortaya çıktı.

Kadran detaylarının teknik çizimi şu adreste mevcuttur:

Adım 3: Şematik Tasarım



Bu aşamada geliştirilen devre şeması. Bunun için çeşitli ders kitapları ve kılavuzlar kullanıldı. Bu sürece çok derinlemesine girmeyeceğiz, aşağıdaki iki dosya bu projede kullanılan bitmiş elektrik devresini göstermektedir.

Adım 4: Arduino Devre Kartının Bağlanması





  1. İlk adım, devre kartları ve kesme kartları üzerindeki tüm iğne temas noktalarını lehimlemektir;
  2. Ayrıca, 5V ve GND gücünün birçok kart tarafından kullanılması nedeniyle ve çevre birimleri, güvenilirlik için devre kartına 5V ve GND için iki kablo lehimlenmiştir;
  3. Ardından, kullanılan kontakların yanına bir TLC5940 PWM denetleyicisi kuruldu;
  4. Bundan sonra, bağlantı şemasına göre TLC5940 kontrol cihazı bağlanır;
  5. Bataryayı kullanabilmek için devre kartının kenarına bir RTC modülü takılmıştır. Tahtanın ortasına lehimlerseniz, kontakların tanımı görünmeyecektir;
  6. RTC modülü bağlantı şemasına göre bağlanmıştır;
  7. Otomatik parlaklık kontrol (LDR) devresi monte edilmiştir, linkte bulabilirsiniz.
  8. Voltmetrenin kablolaması, kabloları pim 6'ya ve GND'ye bağlayarak yapılır.
  9. Sonunda, LED'ler için 13 tel lehimlendi (Uygulamada, bunu 3. adıma geçmeden önce yapmanın daha iyi olduğu ortaya çıktı).

Adım 5: Kod

Aşağıdaki kod, internette bulunan çeşitli saat bileşenlerinden derlenmiştir. Tamamen hata ayıklandı ve artık tamamen işlevsel ve oldukça detaylı yorumlar eklendi. Ancak mikrodenetleyiciye indirmeden önce aşağıdaki noktaları göz önünde bulundurun:

  • Arduino'yu flaşlamadan önce, zamanı ayarlayan satırın açıklamasını kaldırmanız gerekir:
    rtc.adjust(DateTime(__DATE__, __TIME__))
    Denetleyiciyi bu satırla yanıp söndükten sonra (zaman ayarlanmıştır), tekrar yorum yapmanız ve denetleyiciyi tekrar flaşlamanız gerekir. Bu, RTC modülünün ana güç kesildiğinde zamanı hatırlamak için pili kullanmasına izin verir.
  • "Tlc.set()"i her kullandığınızda "Tlc.update"i kullanmanız gerekir.

Adım 6: Dış Halka

Dış saat halkası, bir Replicator Z18 üzerine 3 boyutlu olarak basılmıştır. Saatin ön kısmında bulunan vidalar ile saate takılır. Aşağıda, bir 3B yazıcıda yazdırmak için bir halkanın 3B modelini içeren bir dosya bulunmaktadır.

Adım 7: Saat Montajı


Diğer tüm elektronik aksamlarla birlikte Arduino mikrodenetleyici, ara parçalar olarak kendinden kılavuzlu vidalar ve somunlar kullanılarak saatin arkasına sabitlendi. Sonra tüm LED'leri, analog voltmetreyi ve LDR'yi daha önce devre kartına lehimlenmiş olan kablolara bağladım. Tüm LED'ler tek bir bacakla birbirine bağlanır ve TLC5940 denetleyicisindeki VCC pimine bağlanır (bir tel parçası basitçe bir daire şeklinde lehimlenir).

Şimdiye kadar, tüm bunlar kısa devrelerden çok iyi izole edilmedi, ancak bu konudaki çalışmalar gelecekteki sürümlerde devam edecek.




Tepe