Arduino nano üzərində led saat. Arduino-da öz əlimizlə elektron saat düzəldirik. Arduino-da hazır saat

Fotoşəkildə bütün bu obyekti idarə edəcək proqramı sazlamaq üçün yığdığım prototip göstərilir. Çörək lövhəsinin yuxarı sağ küncündəki ikinci arduino nano layihəyə aid deyil və elə orada qalır, ona diqqət yetirmək lazım deyil.

İş prinsipi haqqında bir az: Arduino DS323 taymerindən məlumat alır, onu emal edir, fotorezistordan istifadə edərək işıq səviyyəsini təyin edir, sonra hər şeyi MAX7219-a göndərir və o, öz növbəsində tələb olunan seqmentləri lazımi parlaqlıqla işıqlandırır. Həmçinin, üç düymədən istifadə edərək, ili, ayı, günü və vaxtı istədiyiniz kimi təyin edə bilərsiniz. Fotoşəkildə göstəricilər rəqəmsal temperatur sensorundan alınan vaxt və temperaturu göstərir

Mənim vəziyyətimdə əsas çətinlik odur ki, 2,7 düymlük göstəricilərin ümumi anodu var və onlar, birincisi, ümumi katodlu göstəricilər üçün nəzərdə tutulmuş max7219 ilə birtəhər dostluq etməli, ikincisi, problemi onların köməyi ilə həll etməli idilər. enerji təchizatı, çünki parıltı üçün 7,2 volta ehtiyac duyurlar, yalnız max7219 təmin edə bilməz. Bir forumda kömək istədim, cavab aldım.

Ekran görüntüsündə həll:


Siqnalın çevrilməsini təmin edən max7219-dan olan seqmentlərin çıxışlarına bir mikrosxem əlavə olunur və hər çıxışa üç tranzistordan ibarət bir dövrə əlavə olunur, bu da ekranın ümumi katoduna qoşulmalıdır ki, bu da onun siqnalını çevirir və sürətini artırır. gərginlik. Beləliklə, ümumi anodlu və 5 voltdan çox təchizatı gərginliyi olan displeyləri max7219-a qoşmaq imkanı əldə edirik.

Test üçün bir göstərici bağladım, hər şey işləyir, heç nə siqaret çəkmir

Gəlin yığmağa başlayaq.

Hər şeyin bir lövhədə olduğu əyri pəncələrimlə ayrılmış versiyada çox sayda atlayıcıya görə dövrəni 2 hissəyə bölmək qərarına gəldim. Saat displey blokundan və güc və idarəetmə blokundan ibarət olacaq. Qərara alındı ​​ki, ilk növbədə sonuncular toplansın. Estetiklərdən və təcrübəli radio həvəskarlarından xahiş edirəm, hissələrin amansız rəftarına görə huşunu itirməsinlər. LUT xatirinə printer almaq istəyim yoxdur, buna görə də bunu köhnə üsulla edirəm - bir kağız parçası üzərində məşq edirəm, şablona uyğun olaraq deliklər qazıram, markerlə yollar çəkirəm, sonra oyadıram.

Göstəricilərin əlavə edilməsi prinsipi əvvəlki kimi qaldı.

Rahatlıq üçün hazırlanmış pleksiglas şablondan istifadə edərək göstəricilərin və komponentlərin yerini qeyd edirik.

İşarələmə prosesi







Sonra bir şablondan istifadə edərək, lazımi yerlərdə deliklər qazırıq və bütün komponentləri sınayırıq. Hər şey mükəmməl uyğun gəlir.

Biz yollar çəkirik və aşındırırıq.




dəmir xloriddə çimmək

Hazır!
nəzarət lövhəsi:


göstərici lövhəsi:


İdarəetmə lövhəsi əla çıxdı, ekran lövhəsindəki yol tənqidi şəkildə yeyilmədi, düzəldilə bilər, lehimləmə vaxtı gəldi. Bu dəfə mən SMD bakirəliyimi itirdim və dövrəyə 0805 komponentlərini daxil etdim. Ən azı, ilk rezistorlar və kondansatörlər yerinə lehimləndi. Düşünürəm ki, daha yaxşı olacaq, daha asan olacaq.
Lehimləmə üçün satın aldığım fluxdan istifadə etdim. Onunla lehimləmək xoşdur, indi spirt kanifolundan yalnız qalaylama üçün istifadə edirəm.

Budur bitmiş lövhələr. İdarəetmə lövhəsində Arduino nano üçün oturacaq, saat, həmçinin displey lövhəsinə və sensorlara qoşulmaq üçün çıxışlar (avtomatik parlaqlıq üçün fotorezistor və rəqəmsal termometr ds18s20) və tənzimlənən çıxış gərginliyi olan enerji təchizatı (böyüklər üçün) var. yeddi seqmentli qurğular) və saatı və Arduino-nu gücləndirmək üçün displey lövhəsində displeylər üçün montaj rozetkaları, max2719 və uln2003a üçün yuvalar, dörd böyük yeddi seqmentli cihazı gücləndirmək üçün həll və bir dəstə jumper var.




arxa idarəetmə lövhəsi

Arxa ekran lövhəsi:

Dəhşətli smd quraşdırılması:


Başlayın

Bütün kabelləri, düymələri və sensorları lehimlədikdən sonra hamısını işə salmağın vaxtı gəldi. İlk buraxılış bir sıra problemləri üzə çıxardı. Sonuncu böyük göstərici yanmadı, qalanları isə zəif parladı. Birinci problemi SMD tranzistorunun ayağını lehimləməklə, ikincisi ilə - lm317 tərəfindən istehsal olunan gərginliyi tənzimləməklə həll etdim.
O CANLIDIR!

Arduino lövhəsindən istifadə edərək yeni başlayanların qurduğu ilk layihələrdən biri vaxt saxlayan sadə saatdır. Əsasən, belə saatlar Arduino ilə əlaqəli RTC (Real Time Clock) moduluna əsaslanır. Bu gün elektron komponentlər bazarda mövcuddur müxtəlif modellər Dəqiqliyi və qiyməti ilə fərqlənən RTC-lər. Ümumi modellərə DS1302, DS1307, DS3231 daxildir.



Ancaq RTC istifadə etmədən Arduino-da saat düzəldə bilərsiniz, xüsusən də belə modulları əldə edə bilmirsinizsə. Əlbəttə ki, bu vəziyyətdə dəqiqlik aşağı olacaq, buna görə layihə daha çox təlim layihəsi kimi qəbul edilməlidir.


Belə saatların iş prinsipi olduqca sadədir. Bu Arduino saatını hər dəfə yandırdığınız zaman istənilən analoq saat kimi onu cari vaxta təyin etməlisiniz. Əlbətdə ki, bu cür saatlardan istifadə etməmək daha yaxşıdır Gündəlik həyat rebooting və əlavə konfiqurasiya olmadan uzun müddət fəaliyyəti ilə, çünki uzunmüddətli əməliyyat zamanı cari vaxt ilə desinxronizasiya əhəmiyyətli ola bilər.


Bu saat adi çörək lövhəsində yığıla bilər, çünki çox komponent tələb etmir. Buradakı əsas əlaqəmiz Arduino Uno lövhəsi olacaq. Vaxtı göstərmək üçün siz 16x2 LCD displey götürə bilərsiniz. Vaxt parametrlərini dəyişdirmək üçün iki düyməni birləşdirmək lazımdır (saat və dəqiqə üçün). Düymələr 10KΩ rezistorlar vasitəsilə Aduino-ya qoşulur. Ekranın parlaqlığını dəyişdirmək üçün sizə 10 kOhm potensiometr lazımdır. Bütün bu komponentlərin Arduino Uno lövhəsinə qoşulma diaqramı aşağıda təqdim olunur.



İndi Arduino-nu proqramlaşdırmalısınız. LCD ekranda vaxtı göstərməyə imkan verən sadə kod (eskiz) aşağıda verilmişdir.


#daxildir LiquidCrystal lcd(12,11,5,4,3,2); int h=12; int m; int s; int bayrağı; int TIME; const int hs=8; const int ms=9; int state1; int state2; void setup() ( lcd.begin(16,2); ) void loop() ( lcd.setCursor(0,0); s=s+1; lcd.print("TIME:"); lcd.print(h ); lcd.print(":"); lcd.print(m); lcd.print(":"); lcd.print(lər); if(bayraq)<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12)lcd.print("PM"); if(bayraq==24)bayraq=0; gecikmə (1000); lcd.clear(); if(s==60)( s=0; m=m+1; ) if(m==60) ( m=0; h=h+1; bayraq=bayraq+1; ) if(h==13) ) ( h=1; ) lcd.setCursor(0,1); lcd.print("GÖZƏL GÜN OLSUN"); //-------Vaxt // təyini-------// state1=digitalRead(hs); if(state1==1) ( h=h+1; bayraq=bayraq+1; if(bayraq)<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12)lcd.print("PM"); if(bayraq==24)bayraq=0; əgər(h==13)h=1; ) state2=digitalRead(ms); if(state2==1)( s=0; m=m+1; ) )

   Maraq üçün təşəkkür edirik məlumat layihəsi vebsayt.
   Maraqlı və faydalı materialların daha tez-tez və daha az reklamla dərc olunmasını istəyirsinizsə,
   Layihəmizin inkişafı üçün istənilən məbləği ianə etməklə dəstəkləyə bilərsiniz.

Arduino mikrokontrolöründə LED arxa işığı və pulsasiya edən dəqiqə əqrəbi ilə saat
LED arxa işığı və pulsasiya edən dəqiqə əqrəbi olan bu unikal saat TLC5940 PWM nəzarətçi çipindən istifadə edilməklə hazırlanmışdır. Onun əsas vəzifəsi PWM modulyasiya kontaktlarının sayını genişləndirməkdir. Bu saatın başqa bir xüsusiyyəti odur ki, o, analoq voltmetri dəqiqələri ölçən cihaza çevirib. Bunun üçün standart printerdə yeni tərəzi çap edilib və köhnənin üzərinə yapışdırılıb. Beləliklə, 5-ci dəqiqə hesablanmır, sadəcə olaraq, beşinci dəqiqədə vaxt sayğacı şkalanın sonuna işarə edən oxu göstərir (miqyasdan kənar). Əsas idarəetmə Arduino Uno mikro nəzarətçisində həyata keçirilir.

Qaranlıq otaqda saatın arxa işığının çox parlaq parlamamasını təmin etmək üçün işıqlandırmadan asılı olaraq parlaqlığı avtomatik tənzimləmək üçün bir dövrə həyata keçirildi (bir fotorezistor istifadə edildi).

Addım 1: Tələb olunan komponentlər



Budur sizə lazım olacaq:

  • 5V DC analoq voltmetr modulu;
  • Arduino UNO mikro nəzarətçi və ya digər uyğun Arduino;
  • Arduino dövrə lövhəsi (proto board);
  • DS1307 Real Time Clock (RTC) modulu;
  • TLC5940 PWM nəzarətçi ilə modul;
  • Ləçəkli LED arxa işıqlar – 12 ədəd;
  • Avtomatik parlaqlığa nəzarət (LDR) dövrəsinin yığılması üçün komponentlər.

Həmçinin, layihənin bəzi digər komponentlərinin istehsalı üçün 3D printer və lazer kəsmə maşınına çıxışın olması arzu edilir. Güman edilir ki, sizin bu girişiniz var, buna görə təlimatlar müvafiq mərhələlərdə istehsal təsvirlərini əhatə edəcəkdir.

Addım 2: yığın




Siferblat 3 mm MDF təbəqəsindən lazer kəsici maşında kəsilmiş, boltlar ilə bərkidilmiş üç hissədən (qatlardan) ibarətdir. Ledləri (aşağı solda) yerləşdirmək üçün başqa bir boşqabın altına yuvaları olmayan bir boşqab (şəkildə sağ altda) yerləşdirilir. Sonra, fərdi LEDlər müvafiq yuvalara yerləşdirilir və ön panel üstə qoyulur (şəkildə yuxarıda). Siferblin kənarında dörd delik qazılır, onların vasitəsilə hər üç hissə bir-birinə bağlanır.

  • Bu mərhələdə LED-lərin işini yoxlamaq üçün CR2032 sikkə hüceyrə batareyası istifadə edilmişdir;
  • LED-ləri təmin etmək üçün LED-lərin arxasına yapışdırılmış kiçik yapışan lentlər istifadə edilmişdir;
  • Bütün LED ayaqları müvafiq olaraq əvvəlcədən əyilmişdir;
  • Kenarlar boyunca deliklər yenidən qazılmış, onların vasitəsilə boltlama aparılmışdır. Məlum oldu ki, bu, daha rahatdır.

Sifariş hissələrinin texniki rəsmini aşağıdakı ünvanda əldə etmək olar:

Addım 3: Dövrə dizayn edin



Bu mərhələdə inkişaf etdirildi elektrik diaqramı. Bunun üçün müxtəlif dərsliklərdən və bələdçilərdən istifadə olunub. Bu prosesi çox dərindən araşdırmayacağıq; Aşağıdakı iki fayl bu layihədə istifadə edilmiş bitmiş elektrik dövrəsini göstərir.

Addım 4: Arduino dövrə lövhəsini birləşdirin





  1. İlk addım dövrə lövhələrində və bölmə lövhələrindəki bütün iynə kontaktlarını lehimləməkdir;
  2. Bundan əlavə, 5V güc və GND-nin çoxlu lövhələr tərəfindən istifadə edilməsinə görə periferik cihazlar, etibarlılıq üçün dövrə lövhəsində 5V və GND üçün iki tel lehimləndi;
  3. Sonra, istifadə olunan kontaktların yanında TLC5940 PWM nəzarətçisi quraşdırıldı;
  4. Sonra TLC5940 nəzarətçisi əlaqə diaqramına uyğun olaraq bağlanır;
  5. Batareyanı istifadə edə bilmək üçün elektron lövhənin kənarında bir RTC modulu quraşdırılmışdır. Əgər onu lövhənin ortasında lehimləsəniz, pin işarələri görünməyəcək;
  6. RTC modulu əlaqə diaqramına uyğun olaraq qoşulmuşdur;
  7. Avtomatik parlaqlığa nəzarət (LDR) sxemi yığılıb, ona linkdən baxa bilərsiniz
  8. Voltmetr üçün naqillər telləri pin 6 və GND ilə birləşdirərək birləşdirilir.
  9. Sonda LED-lər üçün 13 tel lehimləndi (Praktikada 3-cü addıma keçməzdən əvvəl bunu etmək daha yaxşı olduğu ortaya çıxdı).

Addım 5: Kod

Aşağıdakı kod İnternetdə tapılan müxtəlif saat komponentlərindən tərtib edilmişdir. O, tam sazlanmış və indi tam işlək vəziyyətdədir və bəzi olduqca təfərrüatlı şərhlər əlavə edilmişdir. Lakin mikrokontrollerə yükləməzdən əvvəl aşağıdakı məqamları nəzərə alın:

  • Arduino proqram təminatını yandırmazdan əvvəl vaxtı təyin edən sətri çıxartmalısınız:
    rtc.adjust(TarixSaat(__DATE__, __TIME__))
    Kontrolleri bu sətirlə yandırdıqdan sonra (vaxt təyin olunur), onu yenidən şərh etməli və nəzarətçini yenidən yandırmalısınız. Bu, RTC moduluna əsas enerjinin itirildiyi vaxtı yadda saxlamaq üçün batareyadan istifadə etməyə imkan verir.
  • Hər dəfə "Tlc.set()" istifadə etdiyiniz zaman "Tlc.update" istifadə etməlisiniz.

Addım 6: Xarici Halqa

Xarici saat halqası Replicator Z18 printerindən istifadə edərək 3D çap edilib. O, saatın üz hissəsindəki vintlərdən istifadə edərək saata bərkidilir. Aşağıda 3D printerdə çap üçün halqanın 3D modeli olan bir fayl var.

Addım 7: Saatın yığılması


Arduino mikro nəzarət cihazı bütün digər elektronika ilə birlikdə vintlər və qoz-fındıqlardan istifadə edərək saatın arxasına bərkidildi. Sonra bütün LEDləri, analoq voltmetri və LDR-ni əvvəllər dövrə lövhəsinə lehimlənmiş naqillərə bağladım. Bütün LED-lər bir ayaqla bir-birinə bağlanır və TLC5940 kontrollerindəki VCC pininə qoşulur (bir tel parçası sadəcə bir dairədə lehimlənir).

Hələlik bütün bunlar qısa qapanmalardan çox yaxşı izolyasiya olunmayıb, lakin gələcək versiyalarda bununla bağlı işlər davam etdiriləcək.




Üst