» elektronik » Arduino »Sıcaklık sensörü ve RTS'siz Arduino saati

Sıcaklık sensörlü ve RTS'siz Arduino saat

Sıcaklık sensörlü ve RTS'siz Arduino saat

İyi günler, bugün bir oda termometresi ile nasıl saat yapılacağına dair talimatları paylaşacağım. Saat çalışıyor Arduino Zaman ve sıcaklığı görüntülemek için UNO, WG12864B grafik ekranı kullanılır. Sıcaklık sensörü olarak - ds18b20. Diğer saatlerin aksine, RTS (Gerçek Zaman Saati) kullanmayacağım, ancak bu ek modül olmadan yapmaya çalışacağım.

Bunun için ev yapımı Aşağıdaki bileşenler gereklidir:
- Arduino UNO (Veya herhangi bir Arduino uyumlu kart)
- Grafik ekran WG12864B
- ds18b20 sıcaklık sensörü
- Direnç 4.7 Kom 0.25 W
- Direnç 100 ohm 0,25 W
- 4 adet AA pil “parmak tipi” için pil bölmesi
- Uygun kutu
- Küçük dosya
- Oje (siyah veya gövde rengi)
- Biraz ince plastik veya karton
- elektrik bandı
- bağlantı telleri
- devre kartı
- Düğmeler
- havya
- Lehim, reçine
- Çift taraflı bant

Adım 1 Muhafazayı hazırlama.
Yani, saatlerimiz bir yere yerleştirilmelidir. Uygun bir kutu bulmalısın. Önemli olan, WG12864B ekranın, Arduino'nun ve düğmeler için küçük bir devre kartının içine sığmasıdır. Minimum kutu boyutu 7 x 7 x 10 cm'dir.Küçük bir Arduino kartı kullanıyorsanız, bunu bir kutuya ve daha küçük bir kutuya itebilirsiniz, ancak örnek olarak Arduino UNO'yu kullanarak işlemi açıklayacağım. Kutunun yapıldığı malzeme tercihen plastiktir, eğer benim gibi demir ise, izolasyona dikkat etmeye değer, böylece içeride “dolaşacak” bir şey kalmaz. Kesilmesi daha kolay olduğu için plastik tercih edilir. Bir kutu ile, o bizim saatlerimizin durumudur, karar verdi. Şimdi ekranın altında 6.5x4 cm boyutlarında bir pencere kesmek gerekiyor.Kutu demir ise, dikkatli bir şekilde yapmak son derece zordur. Nasıl denerseniz deneyin, kesimin yakınında yontulmuş boya ve pürüzlülük olacaktır. Bu nedenle, önce kesiyoruz, bunun için "öğütücü", kesme için bir nozulu bir matkap veya genel olarak, seçtiğiniz el ile bir freze kesici kullanabilirsiniz. Bundan sonra kenarları bir dosya ile temizliyoruz. Tüm yontulmuş boyaları oje, uygun renkle boyadık. Sonuç aşağıdaki gibi olmalıdır:


Adım 2 Grafik ekranı hazırlayın.
Ekranın bağlanmasıyla, ilk bakışta birçok sorun ve zorluk ortaya çıkar. Ancak, türleriyle ilk olarak ilgilenirseniz, çok daha kolay ve daha anlaşılır hale gelecektir. Ks0107 / ks0108 denetleyicisinde birçok varyasyon ve ekran türü vardır.Tüm ekranlar genellikle 4 türe ayrılır:
Seçenek A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Seçenek B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Ekranlar AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG12864J-1, QY86464
Seçenek C: Shenzhen Jinghua Co Ltd görüntüler. JM12864
Seçenek D: Wintek-Kaskadlar WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202

Liste tam değil, birçoğu var. En yaygın ve bence uygun WG12864B3 V2.0. Ekran Arduino ya seri veya paralel bağlantı noktası üzerinden bağlanabilir. Arduino UNO ile birlikte kullanıldığında, bir seri port bağlantısı seçmek daha iyidir - o zaman paralel bir port üzerinden bağlandığında minimum 13 hat yerine mikrodenetleyicinin sadece 3 çıkışına ihtiyacımız vardır. Her şey oldukça basit bağlı. Bir nüans daha var, satışta, yerleşik bir potansiyometre (kontrastı ayarlamak için) ve onsuz iki tür ekran bulunabilir. Ben seçtim ve yerleşik olanla aynı şeyi yapmanızı tavsiye ederim.


Bu parça sayısını ve lehimleme süresini azaltır. Arka ışık için 100 Ohm'luk bir akım sınırlayıcı direnç koymak da faydalıdır. Doğrudan 5 volt bağlandığında, arka ışığın yanması riski vardır.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - direnç üzerinden - + 5V
20 (BLK) - GND

En uygun şey ekranın arkasındaki her şeyi toplamak ve Arduino UNO'ya bağlanmak için ondan 5 tel çıkışı yapmaktır. Sonuç böyle bir şey olmalı:


Hala paralel bağlantı seçenler için bir bağlantı tablosu vereceğim.


Ve B seçeneği ekranlarının düzeni:


Adım 3 Sıcaklık sensörünü bağlayın.
Söylediğim gibi, sıcaklığı ölçmek için DS18B20 entegre sensörünü kullanacağız. Yüksek ölçüm hassasiyeti için seçtim, hata 0.5 ° C'den fazla değil. Sensör üretim sırasında kalibre edilir; ek ayar gerekmez. Sıcaklık ölçüm aralığı -55 ... + 125 ° C İki çalışma modu vardır: harici güç kaynağı ve “sahte güç” ile. Harici güç modunda çalışırken bağlantı aşağıdaki gibidir:


"Sahte güç" kullanıldığında, sensör iletişim hattından güç alır. Bu modda, ds18b20'yi mikro denetleyiciye bağlamak için iki kablo yeterlidir. Sensörün dahili kondansatörü, veriyolu üzerindeki iletişim hattındaki düşük enerji nedeniyle şarj edilir. "Paraziter beslenme" modu birçok özelliğe sahiptir ve bu nedenle kullanılmasını önermiyorum. Ancak yine de kullanmaya karar verirseniz, şema şöyledir:


Veya "sahte güç" kullanırken gelişmiş bir bağlantı şeması kullanabilirsiniz:


Bir iletişim hattına birkaç sensör dahil edilebilir. Saatlerimiz için bir tane yeter. “DQ” ds18b20 pininden “pin 5” Arduino UNO'ya kabloyu bağlarız.

Adım 4 düğmeleri ile bir tahta hazırlama.
Saatteki tarihi ve saati ayarlamak için üç düğme kullanacağız. Kolaylık sağlamak için devre kartındaki üç düğmeyi lehimleyin ve kabloyu çıkarın.


Aşağıdaki gibi bağlanıyoruz: her üç düğmede de ortak olan tel “GND” Arduino ya bağlı. İlk düğme, zaman ayar moduna girmek ve zaman ve tarih arasında geçiş yapmak için hizmet vermektedir, "Pin 2". İkincisi, değeri artırmak için düğme "Pim 3" ve üçüncüsü, değeri azaltmak için düğme "Pim 4" tir.

Adım 5 Hepsini bir araya getirmek.
Kısa devreden kaçınmak için ekranı yalıtın. Bir daire içinde elektrik bandı ile sarıyoruz ve arkada, boyut olarak kesilmiş, bir yalıtım malzemesi şeridi olan çift taraflı bir banda tutturuyoruz. Kalın karton veya ince plastik uygundur. Kağıt tabletten plastik kullandım. Aşağıdaki ortaya çıktı:


Ekranın kenarı boyunca, çift taraflı bir bandı, tercihen siyah, köpük temelinde yapıştırıyoruz.


Ekranı Arduino'ya bağlarız:


Ayrıca pil bölmesinden “VIN” Arduino ya da eksi “GND” ye bağlanıyoruz. Arduino'nun arkasına yerleştiriyoruz. Kasaya kurmadan önce, sıcaklık sensörünü ve kartı düğmelerle bağlamayı unutmayın.


Adım 6 Eskiz hazırlayın ve doldurun.
Bir sıcaklık sensörü için OneWire kütüphanesi gerekir.
onewire.rar [16.75 Kb] (indirme: 154)


Ekran çıktısı U8glib kütüphanesi üzerinden:
u8glib.rar [906.95 Kb] (indirmeler: 156)


Çizimi düzenlemek ve doldurmak için bu iki kütüphaneyi yükleyin. Bunu yapmanın iki yolu vardır. Bu arşivleri açın ve sıkıştırılmış dosyaları Arduino IDE'nin yüklü olduğu klasörde bulunan “kütüphaneler” klasörüne yerleştirin.Veya ikinci seçenek kütüphaneyi doğrudan programlama ortamına kurmaktır. İndirilen arşivleri açmadan, Arduino IDE'de Sketch - Connect Library menüsünü seçin. Açılır listenin en üstünde ".Zip Kütüphanesi Ekle" öğesini seçin. Görünen iletişim kutusunda eklemek istediğiniz kitaplığı seçin. Sketch - Connect Library menüsünü tekrar açın. Açılır listenin en altında yeni bir kütüphane görmelisiniz. Artık kütüphane programlarda kullanılabilir. Tüm bunlardan sonra Arduino IDE'yi yeniden başlatmayı unutmayın.

Sıcaklık sensörü One Wire protokolüne göre çalışır ve her cihaz için benzersiz bir adrese sahiptir - 64 bit kod. Her seferinde bu kodu aramak pratik değildir. Bu nedenle, önce sensörü Arduino'ya bağlamalısınız, Dosya - Örnekler - Dallas Sıcaklığı - OneWireSearch menüsünde bulunan çizimi doldurmalısınız. Ardından, Araçlar - Bağlantı Noktası İzleyicisi'ni çalıştırın. Arduino sensörünüzü bulmalı, adresini ve mevcut sıcaklık değerlerini yazmalıdır. Sensörümüzün adresini kopyalıyor veya yazıyoruz. Arduino_WG12864B_Term çizimini açın, satırı arayın:

bayt adresi [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // sensörünümün adresi 


Sensörünüzün adresini değiştirerek, sensörünüzün adresini diş telleri arasında yazıyoruz.

Fotoğraf:

//u8g.setPrintPos (44, 64); u8g.print (sek); // Kursun doğruluğunu kontrol etmek için saniyeler yazdırın


“Veri” nin yanındaki saniyeleri görüntüler. Bu, zamanın seyrini doğru bir şekilde ayarlamak için gereklidir.
Saat acele veya gecikmediyse, satırdaki değeri değiştirmelisiniz:

eğer (micros () - prevmicros> 494000) {// düzenleme için başka bir tanesine değişiklik 500.000


Saatin oldukça doğru gittiğini deneysel olarak belirledim. Saatiniz acelesi varsa, bu sayıyı artırmalısınız; eğer arkadaysam, azaltın. Dersin doğruluğunu belirlemek ve bir sonuca varmak için saniye. Sayıyı doğru bir şekilde kalibre ettikten sonra saniyeler yorumlanabilir ve böylece ekrandan kaldırılabilir.

Krokiyi doldurun.
arduino_wg12864b_term.rar [3.64 Kb] (indirmeler: 314)

7
9
5.3

Yorum ekle

    • gülümsegülümsemelerxaxatamamdontknowyahoonea
      patronçizikaptalevetevet-evetagresifgizli
      üzgünümdansdance2dance3pardonyardımiçecekler
      Durarkadaşlariyigoodgooddüdükbaygınlıkdil
      dumanzırıltıcraybeyanalaycıDon-t_mentionindir
      ısıöfkelilaugh1mdatoplantımoskingnegatif
      Not_ipatlamış mısırcezalandırmakokumakkorkutmakkorkutuyorarama
      alaythank_youbuto_clueumnikakutanlaşmak
      kötübeeeblack_eyeblum3kızarmakövünçcan sıkıntısı
      sansürlüşakasecret2tehdit etmekzaferyusun_bespectacled
      shokrespektlolPrevedkarşılamaKrutoyya_za
      ya_dobryiyardımcıne_huliganne_othodiFludyasakyakın

Okumanızı tavsiye ederiz:

Akıllı telefon için verin ...