Attiny2313-də termometr daha kiçik deyil. Attiny2313-də termometr daha kiçik ola bilməz. Termometr dövrəsinin işinin təsviri

ev / Keçmiş

İnternetdə AVR üçün çoxlu termometr diaqramları var, amma həmişə olduğu kimi, özünüzə məxsus bir şey istəyirsiniz... Həm də beyninizi uzatmalısınız. Bu termometr mənim ilk layihələrimdən biri idi.

İstədiyim:

  • minimum ölçülər (məqbul məhdudiyyətlər daxilində)
  • minimum xərc
  • dizaynın sadəliyi
  • yüksək təkrarlanma qabiliyyəti
  • çox yönlülük (bu barədə daha sonra)

Nə olub:

Bənzər dizaynlara baxdıqdan və əlində olan tinny təsvirini çəkdikdən sonra (ATtiny2313) mən belə qənaətə gəldim ki, mövcud dizaynları bir qədər sadələşdirmək və onların xüsusiyyətlərini bir qədər yaxşılaşdırmaq mümkündür.

Diaqram, tək telli bir avtobusla işləmək istəmədiyi təqdirdə temperatur sensorunu açmaq üçün ikinci variantı göstərir (bu, çox nadirdir). Nəzərə alın ki, pin 11-də açılan rezistor tam olaraq 4,7 kOhm olmalıdır.. Azaldılması və ya artması, tək telli bir dövrədə işə salındıqda sensorun qeyri-sabit işləməsinə səbəb ola bilər.

Gördüyünüz kimi, bu dövrə seqmentləri idarə etmək üçün tranzistorların olmaması ilə oxşarlardan fərqlənir. Beləliklə, dövrə oxşar sxemlərlə müqayisədə 4 tranzistor və 4 rezistorla sadələşdirilmişdir. Burada bəziləri deyəcək: "bu mümkün deyil - limanlarda böyük yük var!!!" Bu nəzarətçidə oxuyuruq " Giriş/çıxış pininə görə DC cərəyanı - 40,0 mA". Hər bir simvolda 8 seqmentimiz var, hər biri 5 mA - 40 mA çıxır!!!.

İndi eyni təsvirdən olan qrafiklərə baxaq:

Qrafiklərdən aydın olur ki, cərəyan hər bir pin üçün 60 mA və hətta 80 mA-a çata bilər. Yaxşı, özümüzə getməyək - hər seqmentə 5 mA (bir simvol üçün 40 mA) bizim üçün kifayətdir! Məhdudlaşdırıcı rezistorlar seqment başına təxminən 5 mA cərəyan yaratmaq üçün seçilir. Mənim dövrəmdə 470 Ohm var. Seqmentlərin parlaqlığı əladır!!! Beləliklə, mən nəzəriyyəyə qapıldım.

Təcrübə edin!!!

Çap dövrə lövhəsini onların “mümkün qədər kiçik, lakin mümkün qədər sadə” mülahizələrinə əsaslanaraq çəkdim. Buna görə də, bir neçə jumper ilə çıxdı ...

Şəkildə kvars üçün bir yer var - bu bir az çox yönlülük üçündür - daxili osilatoru olmayan bir neçə AT90S2313 parçasım var idi. CRANK SOT-89 korpusunda istifadə olunur. DO-35 korpusunda qoruyucu zener diodları BZX79-C5V1. Güc filtrindəki kondansatörlər 10mkF * 16V tantaldır (başqaları tapılmadı), ölçüsü 3528 (SMD-B). Mən adətən onları quraşdırmıram, əksinə - 1mkF * 50V ölçüsü 1206. Enerji ilə bağlı heç bir nasazlıq müşahidə edilmədi.

"lazer dəmir" tərəfindən hazırlanmış boş lövhə

yığılmış lövhə: keçiricilərin tərəfdən görünüş (stabilizator yoxdur)

elementlər tərəfdən görünüş (göstərici möhürlənmir)

Layihə hissə-hissə yığılıb, bəziləri internetdən hazır layihələrdən, bəziləri mənim tərəfimdən əlavə edilib... İlkin ideya dinamik ekran idi. Problem onda idi ki, DS18B20 temperatur sensoru ilə əlaqə qurarkən, göstəricinin "skan edilməsi" dayandığı zaman anlar yarandı. Buna görə də, indikatorun yenilənməsi fasilələrlə deyil, əsas proqram dövrəsində həyata keçirilirdi və sensorla əlaqə yaratmaq prosedurunda da ora-bura daxil edilirdi... Bu metodun üstünlüyü yüksək yeniləmə tezliyi idi ki, bu da yenilənməni aradan qaldırırdı. titrəmə problemi.

Demək olar ki, unutdum - termometrin normal işləməsi üçün qoruyucular:

Beləliklə, biz onu işıqlandırdıq, işə saldıq... Hmm... işləyir!!!

Beləliklə, gördüyümüz kimi, ölçüsünə görə göstəricinin ölçüsünü aşmayan kifayət qədər sadə (nə qədər sadə???) cihaz əldə etdik. Bundan əlavə, dəqiqlik də yüksəkdir: sensorun təsvirinə əsasən, “±0,5°C dəqiqlik –10°C-dən +85°C-dək. Təcrübə göstərdiyi kimi, dəqiqlik daha yüksəkdir - təxminən ± 0,1 ° C. 10 nüsxəni metroloji nəzarətdən keçmiş laboratoriya termometri ilə yoxladım...

Radio bazarında üç rəqəmli yeddi seqmentli radioya baxdım. Mən bir SOIC paketində bir Attiny2313 mikro nəzarət cihazı, DS18B20, bir SMD rezistoru və bir SMD kondansatörü aldım. Çap dövrə lövhəsi çəkdim, çap dövrə lövhəsi əsasında sxem çəkdim, proqram yazdım, MK-ya yüklədim və:

Və belə oldu:

Göstəriciyə rəngli bir film yapışdırılır (onsuz göstəricini düzgün şəkildə çəkmək mümkün deyildi).

Ölçü istifadə olunan göstərici ilə də qiymətləndirilə bilər:

Sxem:

Diaqram və proqram haqqında bir neçə söz. Kompaktlıq qurbanlar olmadan gəlmədi. Dövrədə cərəyanı məhdudlaşdıran müqavimətlər yoxdur, bu tamamilə yaxşı deyil. Yük qabiliyyətini artırmaq üçün göstərici katodları bir anda MK-nin iki terminalına qoşulur.
Proqramda orginal hecne yoxdur. Şablon CVAVR-dən sehrbazdan istifadə edərək hazırlanır, qalan hissələr termometr saatımdan götürülür. Mən düzəldilmiş DS18B20 kitabxanasından istifadə etdim, daha doğrusu bu, DS1820/DS18S20 və DS18B20 üçün CVAVR-dən iki kitabxananın cəmidir, yəni. Yuxarıda göstərilən sensorlardan hər hansı bir termometrdə istifadə edilə bilər. Daha doğrusu, hər hansı bir birləşmədə 4-dən çox sensor yoxdur.
Qoruyucular: MK daxili RC osilatorundan 4 MHz tezliyində işləmək üçün konfiqurasiya edilmişdir. CKSEL = 0010, SUT = 10, bütün digərləri = 1.

Nəticə:
Yeddi seqmentli göstəricidən istifadə edən termometr versiyamın ən kiçik olduğuna əmin deyiləm.

Fayllar:

- SL 5.0 formatında çap edilmiş elektron lövhə.

Sizin serverimizdən faylları endirmək imkanınız yoxdur - MK proqram təminatı.

Sizin serverimizdən faylları endirmək imkanınız yoxdur - Firmware mənbələri.

Sizin serverimizdən faylları endirmək imkanınız yoxdur - Proteus üçün layihə.

Bu yazıda nəzərdən keçirəcəyik rəqəmsal termometr, üzərində qurulmuşdur mikro nəzarətçi Attiny2313, təchiz olunub uzaq rəqəmsal sensor DS18B20. Temperatur ölçmə diapazonu -55 ilə +125 dərəcə Selsi arasındadır, temperaturun ölçülməsi addımı 0,1 dərəcədir. Dövrə çox sadədir, minimum hissələrdən ibarətdir və öz əllərinizlə asanlıqla yığıla bilər.

Termometr dövrəsinin işinin təsviri

Uzaqdan sensorlu evdə hazırlanmış elektron termometr məlum olan hər şey üzərində qurulmuşdur. Dallasdan olan DS18B20 mikrosxem temperatur sensoru kimi çıxış edir. Bir termometr dövrəsində 8-ə qədər rəqəmsal sensor istifadə edilə bilər. Mikrokontroller DS18B20 ilə 1Wire protokolu vasitəsilə əlaqə saxlayır.

Əvvəlcə bütün qoşulmuş sensorlar axtarılır və işə salınır, sonra temperatur onlardan oxunur və sonra üç rəqəmli yeddi seqmentli HL1 göstəricisində göstərilir. Göstərici həm ümumi katod (CC), həm də ümumi anod (CA) ilə istifadə edilə bilər. Bənzər bir göstərici də istifadə edilmişdir. Hər bir göstəricinin öz proqram təminatı var. Siz həm evdə, həm də çöldə temperaturu ölçə bilərsiniz, bunun üçün DS18B20-ni pəncərədən kənara aparmalısınız.

Attiny2313 üçün qoruyucuları aşağıdakı kimi təyin etməlisiniz (proqram üçün

Xərclədiyiniz vaxta, pula, təfərrüatlara və s.-yə görə dərhal bütün məsuliyyəti öz üzərinizə götürürəm... Əgər bir şey sizin üçün işləmirsə, onu əyri əllərinizə yıxın.....

Bu yaxınlarda tamamilə passiv soyutma ilə kompüter qururdum. Prosessorun temperaturunu rahat şəkildə izləmək üçün tez bir zamanda termometr yığmaq lazım idi. "Everest", "Aida" və başqaları kimi hər cür proqramlar bir sadə səbəbdən mənim üçün uyğun deyildi: hətta monitor söndürüldükdə də temperaturu idarə etmək istədim. Və ya hətta monitor tamamilə söndürüldükdə. DS18B20 rəqəmsal sensoru, ucuz AVR mikrokontrolleri və yeddi seqmentli göstərici əsasında termometrin yığılması qərara alındı. Əvvəlcə İnternetdə təklif olunan variantlardan birinə uyğun olaraq termometr dövrəsini təkrarlamaq istədim. Amma internetdə yerləşdirilən diaqramları təhlil etdikdən sonra belə qənaətə gəldim ki, öz “velosipedimi” icad etməliyəm.

İnternetdə təqdim olunan dizaynların bir sıra çatışmazlıqları var idi, yəni:
* dinamik ekranın aşağı sürəti (50...100 herts), buna görə göstəriciyə baxmaq narahat olur, ona tez nəzər salsanız, rəqəmlərin “hərəkət etdiyi” görünür;
* bütün dizaynlar bütün temperatur diapazonunu (-55-dən +125-ə qədər) adekvat şəkildə ölçməmişdir; məsələn, sıfır dərəcədən aşağı temperaturu ölçməyən və ya 100 dərəcədən yuxarı yanlış ölçülmüş temperaturu ölçməyən dizaynlar var idi;
* yoxlama məbləğinin yoxlanılması (CRC) yox idi;
* seqmentlərin ümumi sancaqları mikrokontrolörün bir ayağına əsas tranzistorlar olmadan qoşuldu, MİKRONƏZARƏT LİMANLARINI HƏDDƏN YÜKLƏDƏN.

MK portları həddindən artıq yüklənirsə, göstəricinin parlaqlığı azala bilər və mikrokontrolörün ayaqları da yana bilər. Bir neçə il əvvəl İnternetdən bir diaqramdan istifadə edərək ATtiny2313+DS18B20 istifadə edərək termometr yığdım. Dövrə əsas tranzistorlar olmadan idi. 18 dərəcə temperaturda "1" rəqəmi parlaq şəkildə parladı və "8" rəqəmi nəzərəçarpacaq dərəcədə azaldı, ümid edirəm hər kəs hər şeyin niyə belə baş verdiyini başa düşür. Buna görə də, gələcəkdə MK ayaqlarını çox yükləməyəcəyimə söz verdim. Yeri gəlmişkən, internetdəki diaqrama uyğun yığılmış o termometrin şəklini təqdim edirik; məncə, heç bir şərhə ehtiyac yoxdur:

Mən də bir neçə təkmilləşdirmək istədim:
* göstəricidə dərəcə simvolunu göstərin (dərəcənin onda biri mənim üçün o qədər də vacib deyildi);
* mikrokontrolleri xarici kvarsdan saat edin, çünki sensorun istifadə etdiyi "1-tel" protokolu vaxt intervallarının (vaxt aralıqlarının) formalaşması üçün çox vacibdir, buna görə də quraşdırılmış saatın sabitliyi üçün dua etmək istəmədim. generator;
* proqrama yoxlama məbləğini yoxlayın, yoxlama məbləği uyğun gəlmirsə, göstəricidə göstərin: "Crc";
* dövrəyə bir diod əlavə edin (dövrəni gücün dəyişməsindən qorumaq üçün);
* güc tətbiq edildikdə, bütün seqmentlər 1 saniyə işıqlandırılır (sözdə seqment testi);
* DS18B20 yoxlama məbləğinin yoxlanılmasını həyata keçirin.

Layihəni AVR Studio 5 mühitində yazdım, İnternetdə haradasa sensorla işləmək üçün funksiyaları tapdım və qalanlarını mənbə kodunu bol-bol şərh edərək öz qaydasında yenidən yazdım. Məqalənin sonunda proqram təminatı və mənbə kodunu yükləmək üçün bir keçid var.

3 tanış yer, ümumi anodlu seqmentlər üçün yeddi seqmentli göstəricidən istifadə etdim. Arxivdə (məqalənin sonunda) ümumi katodlu bir göstərici üçün proqram təminatı da var. Seqmentlərin ümumi terminallarını paralel olaraq bağlanmış MK-nin iki terminalına bağladım. Beləliklə, seqment göstəricisinin hər bir ümumi pinində sancaqların yük qabiliyyətini artırmaq üçün 2 MK pinindən istifadə olunur.

Mən ATtiny2313A mikrokontrolöründən (siz ATtiny2313 və ya ATtiny2313L-dən də istifadə edə bilərsiniz) istifadə etdim, demək olar ki, bütün pulsuz ayaqları istifadə etdim (sıfırlama pinindən başqa). ATmega8-də bir termometr yığsanız, portların yük qabiliyyətini artırmaq üçün paralel olaraq 3 və ya 4 ayağı birləşdirə bilərsiniz.

Cihaz diaqramı:

Mən yığılmış termometrin fotoşəkillərini əlavə edirəm. Termometr kompüter qutusuna quraşdırılacağı üçün hələ heç bir vəziyyət yoxdur.

Göstəriş.
Temperatur sensoru qoşulmayıb və ya məlumat xəttində qısa qapanma var:

Yoxlama məbləği xətası (CRC):

Temperatur sensoru qoşulub, temperatur -55 ilə -10 dərəcə arasında:

Temperatur sensoru qoşulub, temperatur -9 ilə -1 dərəcə arasında:

Temperatur sensoru qoşulub, temperatur 0 ilə 9 dərəcə arasında:

Temperatur sensoru qoşulub, temperatur 10 ilə 99 dərəcə arasında:

Temperatur sensoru qoşulub, temperatur 100 ilə 125 dərəcə arasında:

Dinamik displey tezliyi bir neçə kiloherts təşkil edir, buna görə də indikatora tez bir nəzər saldıqda belə titrəmə gözə görünmür.
Dizaynı təkrarlamaq istəyənlər üçün müxtəlif kvars üçün bir neçə proqram təminatı tərtib etdim: 4 MHz, 8 MHz, 10 MHz, 12 MHz, 16 MHz.
Mən həmçinin ümumi anod (OA) və ümumi katod (OC) olan göstəricilər üçün proqram təminatı hazırladım. Bütün proqram təminatı arxivdədir (aşağıya bax).

UPD
Firmware yeniləndi. Kiçik düzəlişlər, kiçik yaxşılıqlar. Əsas olanlar stdint məlumat növləri, seqmentlər üçün ayaqların çevik konfiqurasiyasıdır. Bütün dəyişikliklər mənbə başlığında təsvir edilmişdir.

İnternetdə AVR üçün çoxlu termometr diaqramları var, amma həmişə olduğu kimi, özünüzə məxsus bir şey istəyirsiniz... Həm də beyninizi uzatmalısınız. Bu termometr mənim ilk layihələrimdən biri idi.

İstədiyim:

  • minimum ölçülər (məqbul məhdudiyyətlər daxilində)
  • minimum xərc
  • dizaynın sadəliyi
  • yüksək təkrarlanma qabiliyyəti
  • çox yönlülük (bu barədə daha sonra)

Nə olub:

Bənzər dizaynlara baxdıqdan və əlində olan tinny təsvirini çəkdikdən sonra (ATtiny2313) mən belə qənaətə gəldim ki, mövcud dizaynları bir qədər sadələşdirmək və onların xüsusiyyətlərini bir qədər yaxşılaşdırmaq mümkündür.

Diaqram, tək telli bir avtobusla işləmək istəmədiyi təqdirdə temperatur sensorunu açmaq üçün ikinci variantı göstərir (bu, çox nadirdir). Nəzərə alın ki, pin 11-də açılan rezistor tam olaraq 4,7 kOhm olmalıdır.. Azaldılması və ya artması, tək telli bir dövrədə işə salındıqda sensorun qeyri-sabit işləməsinə səbəb ola bilər.

Gördüyünüz kimi, bu dövrə seqmentləri idarə etmək üçün tranzistorların olmaması ilə oxşarlardan fərqlənir. Beləliklə, dövrə oxşar sxemlərlə müqayisədə 4 tranzistor və 4 rezistorla sadələşdirilmişdir. Burada bəziləri deyəcək: "bu mümkün deyil - limanlarda çox yük var!!!". Bu nəzarətçidə oxuyun " Giriş/çıxış pininə görə DC cərəyanı - 40,0 mA". Hər bir simvolda 8 seqmentimiz var, hər biri 5 mA - 40 mA çıxır !!!.

İndi eyni təsvirdən olan qrafiklərə baxaq:

Qrafiklərdən aydın olur ki, cərəyan hər bir pin üçün 60 mA və hətta 80 mA-a çata bilər. Yaxşı, özümüzə getməyək - hər seqmentə 5 mA (bir simvol üçün 40 mA) bizim üçün kifayətdir! Məhdudlaşdırıcı rezistorlar seqment başına təxminən 5 mA cərəyan yaratmaq üçün seçilir. Mənim dövrəmdə 470 Ohm var. Seqmentlərin parlaqlığı əladır!!! Beləliklə, mən nəzəriyyəyə qapıldım.

Təcrübə edin!!!

Çap dövrə lövhəsini onların “mümkün qədər kiçik, lakin mümkün qədər sadə” mülahizələrinə əsaslanaraq çəkdim. Buna görə də bir neçə jumper olduğu ortaya çıxdı...

Şəkildə kvars üçün bir yer var - bu bir az çox yönlülük üçündür - daxili osilatoru olmayan bir neçə AT90S2313 parçasım var idi. CRANK SOT-89 korpusunda istifadə olunur. DO-35 korpusunda qoruyucu zener diodları BZX79-C5V1. Güc filtrindəki kondansatörlər 10mkF * 16V tantaldır (başqaları tapılmadı), ölçüsü 3528 (SMD-B). Mən adətən onları quraşdırmıram, əksinə - 1mkF * 50V ölçüsü 1206. Enerji ilə bağlı heç bir nasazlıq müşahidə edilmədi.

"lazer dəmir" tərəfindən hazırlanmış boş lövhə

yığılmış lövhə: keçiricilərin tərəfdən görünüş (stabilizator yoxdur)

elementlər tərəfdən görünüş (göstərici möhürlənmir)

Layihə hissə-hissə yığılıb, bəziləri internetdən hazır layihələrdən, bəziləri mənim tərəfimdən əlavə edilib... İlkin ideya dinamik ekran idi. Problem onda idi ki, DS18B20 temperatur sensoru ilə əlaqə qurarkən, göstəricinin "skan edilməsi" dayandığı zaman anlar yarandı. Buna görə də, indikatorun yenilənməsi fasilələrlə deyil, əsas proqram dövrəsində həyata keçirilirdi və sensorla əlaqə yaratmaq prosedurunda da ora-bura daxil edilirdi... Bu metodun üstünlüyü yüksək yeniləmə tezliyi idi ki, bu da yenilənməni aradan qaldırırdı. titrəmə problemi.

Demək olar ki, unutdum - termometrin normal işləməsi üçün qoruyucular:

Beləliklə, biz onu işıqlandırdıq, işə saldıq... Hmm... işləyir!!!

Beləliklə, gördüyümüz kimi, ölçüsünə görə göstəricinin ölçüsünü aşmayan kifayət qədər sadə (nə qədər sadə???) cihaz əldə etdik. Bundan əlavə, dəqiqlik də yüksəkdir: sensorun təsvirinə görə - “±0,5°C dəqiqlik -10°C-dən +85°C-dək”. Təcrübə göstərdiyi kimi, dəqiqlik daha yüksəkdir - təxminən ± 0,1 ° C. 10 nüsxəni metroloji nəzarətdən keçmiş laboratoriya termometri ilə yoxladım...


26.04.2014
sPlan elektron sxemlərin çəkilməsi üçün əlverişli vasitədir. Sadə və intuitiv interfeysə malikdir. Proqrama daxildir...

Pdf Foxit Reader oxumaq üçün çox rahat proqram
26.04.2014
Foxit Reader - PDF fayllarını oxumaq üçün yığcam və sürətli proqram. Məşhur PDF görüntüləyicisinə alternativ kimi xidmət edə bilər - Adobe Reader....


22.04.2014
Proteus VSM mikro nəzarət cihazı simulyator proqramıdır. MK dəstəkləyir: PIC, 8051, AVR, HC11, ARM7/LPC2000 və digər ümumi prosessorlar....


01.04.2014
Uzun müddət donmuş vəziyyətdə olan layihə saytı yenidən yeni güclə, yeni məqalələrlə və...

Proteus 7.7 SP2 + Crack v1.0.2 + RUS
22.04.2014
Proteus VSM mikro nəzarət cihazı simulyator proqramıdır. MK dəstəkləyir: PIC, 8051, AVR, HC11, ARM7/LPC2000 və digər ümumi prosessorlar....

Splan 7.0.0.9 Rus + Portativ + Viewer Final
26.04.2014
sPlan elektron sxemlərin çəkilməsi üçün əlverişli vasitədir. Sadə və intuitiv interfeysə malikdir. Proqrama daxildir...

DIY rəqəmsal lehimləmə stansiyası (ATmega8, C)
27.05.2012
Tərkibi: ATmega8, LM358, IRFZ44, 7805, körpü, 13 rezistor, bir potensiometr, 2 elektrolit, 4 kondansatör, üç rəqəmli LED yeddi seqmentli...

© 2023 skudelnica.ru -- Sevgi, xəyanət, psixologiya, boşanma, hisslər, mübahisələr