Fan: O’rnatilgan tizimlar Mustaqil ishi Mavzu: ds3231 modulini Arduino uno platasiga ulash. Displey ekranida vaqtni ko'rsatish Bajardi


Download 0.81 Mb.
bet1/7
Sana17.01.2023
Hajmi0.81 Mb.
#1098035
  1   2   3   4   5   6   7
Bog'liq
Mustqil ish Rustamov Anvar


О‘ZBЕKISTОN RЕSPUBLIKАSI АXBОRОT TЕXNОLОGIYАLАRI VА KОMMUNIKАTSIYАLАRINI RIVОJLАNTIRISH VАZIRLIGI
MUHАMMАD АL-XОRАZMIY NОMIDАGI TОSHKЕNT АXBОRОT TЕXNОLОGIYАLАRI UNIVЕRSITЕTI SАMАRQАND FILIАLI
“Tеlеkоmmunikаtsiyа tеxnоlоgiyаlаri vа kаsb tа’limi” fаkultеti
“Tеlеkоmmunikаtsiyа injiniringi” kаfеdrаsi
5350100 – Telekommunikatsiya texnologiyalari yo‘nalishi


Fan: O’rnatilgan tizimlar
Mustaqil ishi


Mavzu: DS3231 modulini Arduino UNO platasiga ulash. Displey ekranida vaqtni ko'rsatish
Bajardi: Rustamov A.
Tekshirdi: Mirsaidov B. M.


SAMARQAND-2023

DS3231 modulidagi vaqtni kompyuter bilan sinxronlashtiring. Ulanish va foydalanish misollari
Bugun biz mukammal Real Time Clock (RTC) ICni qidirishni davom ettirmoqdamiz. asosida soatlar yasaymiz. Ko'rsatkich ishlab chiqish uchun qulayroq bo'ladi - LCD displey, sozlamalardan tashqari barcha ma'lumotlarni bir vaqtning o'zida aks ettiradi. Ushbu shaklda soatni ish stoli varianti sifatida ishlatish qulay.
Shunday qilib, DS3231 chipining o'zini ko'rib chiqing. DS3231 - bu o'rnatilgan haroratni kompensatsiya qiluvchi kvarts rezonatori tufayli juda aniq harakatga ega bo'lgan real vaqtda soat (ishlab chiqaruvchilar bu so'zni tanladilar). Ma'lumot uzatish interfeysi I 2 C. Bu mikrosxemada zaxira akkumulyator kuchlanishi uchun ham kirish mavjud, asosiy quvvat o'chirilganda mikrosxema avtomatik ravishda zahiraviy akkumulyatordan ishlashga o'tadi, zaxira batareyadan ishlashning aniqligi buzilmaydi. . Juda xursandman, shunday emasmi? DS3231 soniyalar, daqiqalar, soatlar, oy kunlari (sana), hafta kunlari, oylar va yillarni (shu jumladan oylar uchun kabisa yillarini) qo'llab-quvvatlaydi. 12 va 24 soatlik formatda ishlashni qo'llab-quvvatlaydi. Ularni sozlash va holatini kuzatish imkoniyatiga ega 2 ta budilnik mavjud. Harorat kompensatsiyasining aniqligini sozlash. Shuningdek, ikkita chiqish - 32 kHz (chiqish 32,768 kHz) va 1 Gts dan 8,192 kHz gacha bo'lgan dasturlashtiriladigan chiqish. Qayta tiklash pin - RST ham mavjud. real vaqtda soat chipi SO-16 paketida mavjud. Koson juda katta, lekin ichkarida allaqachon kvarts borligini va hatto haroratni qoplaganligini hisobga olsak, o'lchovlar bilan hamma narsa yaxshi bo'lib tuyuladi. DS3231 DS3232 ko'rinishidagi egizakga ega, ammo uning yana ikkita oyog'i bor. Bularning barchasi NXP mahsulotlarini - PCA2129 va PCF2129 soat chiplarini juda eslatadi. Xuddi shunday harorat bilan kompensatsiyalangan o'rnatilgan kvarts rezonatori, ikkalasi ham bir xil egizaklar, faqat turli xil miqdordagi n.k. vaqtni saqlashdan tashqari DS3231 uchun pinlar va shunga o'xshash funktsiyalar.
RTC DS3231 sotuvda kerakli bog'ichli modullar, shuningdek, ko'pincha hech narsa uchun kerak bo'lmagan EEPROM chipli to'plamgacha mavjud, u faqat og'irlikni oshiradi:

Kerakli tafsilotlarga qo'shimcha ravishda, modul platasida LED ham mavjud bo'lib, uning vazifasi quvvatning chiqishlarga ulanganligini ko'rsatishdir. Ehtimol, faqat go'zallik uchun yetkazib berilgan.
Bunday real vaqtda soat chipi bilan ishlashda bilish muhim bo'lgan narsa - undan ma'lumot olish yoki unga ma'lumot yozish. Soat I 2 C interfeysiga ega.Ma'lumotlarni yozish uchun (va bu ma'lumotlarni o'qish uchun ham kerak) ishga tushirish holatini uzatishingiz kerak (bu buyruqlar mikrokontroller uchun I 2 C apparat yoki dasturiy ta'minot yordamida amalga oshiriladi. ), so'ngra mikrosxemaning manzilini bit yozuvlari bilan o'tkazing, so'ngra biz kiradigan registr manzilini o'tkazing va keyin ma'lumotlar baytlarini ushbu registrga o'tkazing, agar keyingi ma'lumotlar bayti o'tkazilsa, u keyingisiga yoziladi. ro'yxatdan o'tish va boshqalar. Oxirida siz to'xtash shartidan o'tishingiz kerak. Grafik tasvir yuqoridagi rasmda:

Dastlabki sozlash va joriy vaqtni sozlash uchun maʼlumotlarni yozib olish talab qilinadi. Keyinchalik, biz doimiy ravishda joriy vaqt va sana haqida ma'lumot olishimiz kerak. Buning uchun ushbu ma'lumotlarni saqlash uchun registrlardan o'qish kerak. O'qish ikki protseduradan iborat - ko'rsatgichni kerakli registrga qo'ying va uni o'qing. Ko'rsatkichni kerakli registrga o'rnatish uchun siz boshlang'ich shartni o'tkazishingiz kerak, so'ngra yozish biti bilan mikrosxemaning manzilini va registr manzili bilan baytni o'tkazishingiz kerak. Bundan tashqari, to'xtash sharti va keyin boshlash sharti yoki shunchaki qayta ishga tushirish. Endi ikkinchi protsedura to'g'ridan-to'g'ri registrlardan o'qishdir. Boshlash uzatiladi, keyin siz o'qish biti bilan mikrosxemaning manzilini yuborishingiz kerak va keyin kerakli miqdorda registrlarni o'qing, oxirida to'xtash shartini yuboring. Agar registrdagi ma'lumotlar o'qilgan bo'lsa, u holda ko'rsatgich mikrokontrollerdan (qurilma ustasi) keraksiz harakatlarsiz avtomatik ravishda keyingi registrga o'tadi. Rasmda I 2 C interfeysidan foydalangan holda o'qish registrlari bo'yicha yuqorida aytilganlarning barchasi ko'rsatilgan:

Chip manzili:

  • yozish uchun - 0b11010000

  • o'qish uchun - 0b11010001

Dasturiy jihatdan C kodi quyidagicha ko'rinadi:
// soat funktsiyalari ============================================ == =================================================== ===== // boshlang'ich sozlamalarni ishga tushiring RTC_init(void)( i2c_start_cond(); // ishga tushirish i2c i2c_send_byte(RTC_adr_write); // qurilma manzilini uzatish, yozish rejimi i2c_send_byte(0x0E); // xotira manzilini i2c_send_0000 ); // haroratni o'zgartirishni boshlash va 1 Gts i2c_send_byte(0b00001000); // 32 kHz chiqishni yoqish i2c_stop_cond(); // to'xtatish i2c ) // vaqt va sanani bekor qilish RTC_read_time(void)( i2c_start_cond() ; // start i2c i2c_send_byte(RTC_adr_write); // qurilma manzilini o'tkazish, yozish rejimi i2c_send_byte(0x00); // xotira manzilini o'tkazish i2c_stop_cond(); // i2c i2c_start_cond(); // i2c i2c_start_cond(); // i2c i2c_send_cond(); // i2c i2c_send_write manzilini o'tkazish /ad_re); , o'qish rejimi sek = bcd(i2c_get_byte(0)); // o'qish soniyalari, ACK min = bcd(i2c_get_byte(0)); // o'qish daqiqalari, ACK soati = bcd(i2c_get_byte(0)); / / h soat pastga, ACK wday = bcd (i2c_get_byte (0)); // haftaning kunini o'qish, ACK kuni = bcd(i2c_get_byte(0)); // o'qish raqami, ACK oyi = bcd(i2c_get_byte(0)); // o'qish oyi, ACK yili = bcd(i2c_get_byte(1)); // o'qish yili, NACK i2c_stop_cond(); // to'xtatish i2c ) // vaqtni bekor qilish RTC_write_time(unsigned char hour1, unsigned char min1, unsigned char sec1)( i2c_start_cond(); // start i2c i2c_send_byte(RTC_adr_write); //qurilma manzilini o'tkazish(s_x_end i20) ; // xotira manzilini yuborish i2c_send_byte(bin(sec1)); // 0x00 soniya (soniyalarni ham belgilash maqsadga muvofiqmi?) i2c_send_byte(bin(min1)); // 0x01 daqiqa i2c_send_byte(bin(hour1)); / / 0x02 soati i2c_stop_cond(); // to‘xtat i2c ) // sanani o‘rnatish bekor RTC_write_date(unsigned char wday, unsigned char day, unsigned char oyi, unsigned char year)( i2c_start_cond(); // start i2c i2cRT_by(_te_ad); / qurilma manzilini yuborish, yozish rejimi i2c_send_byte(0x03); // xotira manzilini yuborish i2c_send_byte(bin(wday)); // haftaning 0x03 kuni (yakshanba - 1, dushanba, 2, ses 3, chorshanba, 4, payshanba, 5, juma 6, Sat 7 ) i2c_send_byte(bin(kun)); // 0x04 kun oy i2c_send_byte(bin(oy)); // 0x05 oy i2c_send_bayt(bin(yil)); // 0x06 yil i2c_stop_cond( ); // i2cni to'xtatish ) // haroratni o'qish void RTC_read_temper(void)( i2c_start_cond(); // ishga tushirish i2c i2c_send_byte(RTC_adr_write); // qurilma manzilini yuborish, yozish rejimi i2c_send_byte(0x11); //(s xotira i2c manzilini yuborish __d); // to'xtatish i2c i2c_start_cond(); // i2c i2c_send_byte(RTC_adr_read); // qurilma manzilini yuborish, o'qish rejimi t1 = i2c_get_byte(0); // o'qish harorati MSB t2 = i2c_get_byte(1); // LSBstop harorati i2c ni o'qish (); // stop i2c t2=(t2/128); // 6 ga siljish - aniqlik 0,25 (2 bit) // 7 ga siljish - 0,5 (1 bit) t2=t2*5; )
Hammasi manba kodi, mikrosxema bilan ishlash uchun ishlatilgan, soat tezligini sozlash ta'sir qilmadi, chunki soat bir necha kun ichida bir soniya ham o'tmagan.
Ha - ajoyib xususiyat DS3231 - xuddi shu mikrosxema termometrning funktsiyalarini (yoki haroratni qoplashni qanday amalga oshirishni) va joriy haroratni o'qish qobiliyatini bajaradi. Maksimal harorat o'lchamlari 0,25 daraja Selsiy. Bundan tashqari, haroratni yangilash davri juda katta - taxminan 1 daqiqa. Ha, bizda tezda uni yangilash uchun hech narsa yo'q.
Butun soat qurilmasining sxemasi quyidagicha ko'rinadi:

Mikrokontroller Atmega8 tomonidan keng tarqalishi va arzonligi uchun tanlangan. Ushbu mikrokontroller DIP-28 paketida ham, TQFP-32 paketidagi SMD versiyasida ham ishlatilishi mumkin. R3 rezistori PC6 pinida tasodifiy shovqin paydo bo'lganda mikrokontrollerning o'z-o'zidan qayta ishga tushishini oldini olish uchun kerak. Rezistor R3 bu pinga ijobiy ta'minotni tortadi va ishonchli tarzda unda potentsial yaratadi. Ko'rsatkich uchun suyuq kristalli displey (LCD yoki LCD) ishlatiladi. Men 2004A displeydan foydalandim - go'zallik uchun 20 belgidan iborat 4 qator ko'proq, shuning uchun siz ko'proq tanish displeydan foydalanishingiz mumkin - 16 belgidan iborat 2 qator. LCD displey mikrokontrollerga to'rt bitli tizim yordamida ulangan. Displeydagi belgilarning kontrastini sozlash uchun o'zgaruvchan qarshilik R2 kerak. Ushbu rezistorning dvigatelini aylantirib, biz ekranda biz uchun eng aniq ko'rsatkichlarga erishamiz. LCD displeyning orqa yorug'ligi displey panelidagi "A" va "K" chiqishi orqali tartibga solinadi. Orqa yorug'lik oqim cheklovchi qarshilik - R1 orqali yoqiladi. Qiymat qanchalik baland bo'lsa, displey shunchalik xiraroq yonadi. Biroq, orqa yorug'likka zarar bermaslik uchun bu qarshilikni e'tiborsiz qoldirmaslik kerak. S1 - S4 tugmalari soat sozlamalarini boshqaradi. LED signal yoqilganligini bildiradi. LED har qanday bilan almashtirilishi mumkin tovush sxemasi. R5 - R8 rezistorlari tortib olinadi va soat chipining chiqishlarida to'rtburchaklar impulslarni shakllantirish uchun zarurdir. Bu I2C protokolining to'g'ri ishlashi uchun ham zarur. Sxemani quvvatlantirish uchun L7805 chiziqli stabilizator chipi ishlatiladi, uni besh voltli chiziqli stabilizator KR142EN5A ning mahalliy analogi bilan almashtirish mumkin yoki siz kontaktlarning zanglashiga olib keladigan boshqa kuchlanish regulyatori chipidan foydalanishingiz mumkin (masalan, , LM317 yoki kommutatsiya regulyatorlari LM2576, LM2596, MC34063 va boshqalar). Bundan tashqari, 5 volt boshqa mikrosxema bilan barqarorlashtiriladi - AMS1117 ishlashda, bu chiqishda 3,3 voltni beradi. Ma'lumotlar varag'iga ko'ra, soat chipi 3,3 volt kuchlanish bilan quvvatlanadi. Biroq maksimal kuchlanish 5,5 voltni tashkil qiladi. Shuning uchun, bu stabilizatorni o'zingizning xohishingizga ko'ra ishlatish mumkin yoki siz foydalana olmaysiz. AMS1117 voltaj regulyatorini ADJ versiyasi (AMS1117ADJ) bilan ham almashtirish mumkin - ya'ni sozlanishi versiya, siz ushbu tanlov bilan kerakli kuchlanishni o'rnatishingiz kerak bo'ladi.mikrosxemaga ulangan ikkita rezistordan foydalanib, undagi ma'lumotlar varag'iga muvofiq.
Sxema ATmega8 mikrokontrolleri uchun disk raskadrovka paneli yordamida yig'ildi va disk raskadrovka qilindi:



Download 0.81 Mb.

Do'stlaringiz bilan baham:
  1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling