İçindekiler:

USB İç/Dış Mekan Termometresi (veya 'İlk USB Cihazım'): 4 Adım (Resimlerle)
USB İç/Dış Mekan Termometresi (veya 'İlk USB Cihazım'): 4 Adım (Resimlerle)

Video: USB İç/Dış Mekan Termometresi (veya 'İlk USB Cihazım'): 4 Adım (Resimlerle)

Video: USB İç/Dış Mekan Termometresi (veya 'İlk USB Cihazım'): 4 Adım (Resimlerle)
Video: Şehidin Var Türkiye..! 2024, Temmuz
Anonim
USB İç/Dış Mekan Termometresi (veya 'İlk USB Cihazım')
USB İç/Dış Mekan Termometresi (veya 'İlk USB Cihazım')

Bu, PIC 18F'lerde USB çevre birimini gösteren basit bir tasarımdır. Çevrimiçi olarak 18F4550 40 pinli yongalar için bir sürü örnek var, bu tasarım daha küçük 18F2550 28 pinli versiyonu gösteriyor. PCB, yüzeye monte parçalar kullanır, ancak tüm bileşenler açık delikli versiyonlarda mevcuttur. Yüzeye montaj parçaları kullanıyorum çünkü tahtayı delik açmadan yapmak daha hızlı. Sonuç, iç/dış sıcaklıkları ölçen küçük bir USB çevre birimidir. Veriler, sanal bir seri bağlantı noktası aracılığıyla PC'ye sunulur. Örnekte sıcaklık sensörleri kullanılmıştır, ancak diğer analog sensörler eklenebilir. PS Kaydedicimden alınan verilerin canlı grafiğine buradan bakın:https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/?format= grafik

1. Adım: Tasarıma Genel Bakış

Tasarıma Genel Bakış
Tasarıma Genel Bakış
Tasarıma Genel Bakış
Tasarıma Genel Bakış
Tasarıma Genel Bakış
Tasarıma Genel Bakış

Gerekli PIC bileşenleri

Bu USB çevre birimi, 28 pinli PIC 18F2550'ye dayanmaktadır. Bu çip, tam hızlı bir USB arabirimi için gereken her şeye sahiptir. Güç ve toprak arasındaki 0.1uf kapasitör, PIC'yi güç kaynağından ayırır. 20MHz kristal (48MHz dahili saat oluşturmak için kullanılır) ve iki adet 27pf kapasitör. Güçten MCLR pinine 10K'lık bir direnç. Programlama sırasında MCLR'ye yerleştirilen 13+volt'un devre kartındaki diğer bileşenlere zarar vermemesi için direnç ve güç arasına 1n4148 eşdeğer diyot ekledim. Cihazı programlamak ve hata ayıklamak için bir ICSP başlığı (5 pin) kullanılır. Gerekli USB malzemeleri Bir USB dişi 'B' tarzı soket. Dahili USB voltaj regülatörü için 220nf-440nf kapasitans gereklidir. İki 0.1uf kapasitör (ayrıştırma için kullanılanla aynı) sorunsuz kullanıyorum. USB bağlantı durumunu görüntülemek için 330ohm akım sınırlama direncine sahip bir LED kullanılır. Gerekli sensör malzemeleri İç sıcaklık sensörü olarak mikroçip TC1047A sıcaklık sensörünü kullandım. Panoya fiziksel olarak lehimlenmiştir - bu, oda sıcaklığından birkaç derece daha sıcak çalışmasına neden olur. Bir dış sıcaklık probunu bağlamak için bir başlık kullanılır (TC1047a'nın TO-92 versiyonu). Ek bir 0.1uf kapasitör, kartın geri kalanından uzun bir kabloyu ayırmaya yardımcı olur. USB voltaj seviyeleri, analog sensörlerden gelen sıcaklığı doğru bir şekilde ölçmek ve hesaplamak için yeterince tutarlı değil. Harici bir voltaj referansı (MCP1525, 2.5 volt) kullanılır. Voltaj referansı, 1uf ila 10uf çıkışında bir kapasitör gerektirir. Bu kapasitör olmadan voltaj referansı çalışmayacaktır.

2. Adım: Bellenim

Ürün yazılımı, bir seri bağlantı noktasına öykünmek için CDC USB sınıfını kullanır. Cihaz, bir PC'de sanal bir com bağlantı noktası olarak görünecektir. Ürün yazılımı üç bölüme ayrılmıştır: 1. USB sürücüsü, aygıtı bir PC'de numaralandırmak ve bir COM bağlantı noktasını taklit etmekle ilgilenir. 2. Bir servis rutini dönüşümlü olarak sıcaklık değerlerini okur ve bunları okunabilir bir formata dönüştürür. Bu işlemlerin her ikisinin de aynı anda yapılması, USB cihazının PC bağlantısını kaybetmesine neden oldu (zaman tıkanması). Dönüşümün ardından hizmet döngüsünde kayan nokta değerlerinin bir dizgeye dönüştürülmesi, bağlantı sorununu ortadan kaldırdı.* 3. Son olarak, bir ana rutin, PC'den gönderilen baytları alır ve istenen ölçümleri döndürür. Çoklu ölçümler virgülle ayrılır, satırlar boş karakterle sonlandırılır (onaltılı 0x00) Gösteri üretici yazılımı aşağıdaki komutları kabul eder: Onaltılı değer döndürür 0x00 İç ortam sıcaklığı (yerleşik sensör)0x01 Dış sıcaklık (harici başlık)0x02 Her iki sıcaklık (virgül) ayrılmış)Sıcaklık, 2,5 volt referansı ve Microchip TC1047A ofseti ve eğimi temel alınarak hesaplanır. Diğer sıcaklık sensörleri farklı özelliklere sahip olabilir. TC1047A veri sayfasına şuradan ulaşılabilir:https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdfFirmware, PIC C18 derleyici gösterimi ile MPLAB'de yazılmıştır. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011Gerçek USB bellenimi Microchip tarafından sağlanır. Orijinal ortama şuradan ulaşılabilir:https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021631Firmware'i düzenlemek için: kaynağın tüm dizin yapısını kök dizininize çıkarın (c:\MCHPFSUSB). Daha sonra çalışma alanı dosyasını MPLAB'a yükleyebilirsiniz.*Dizeye kayan yordam bir kaynak domuzudur. Bağlantı sorununu aşmak için, USB servis rutini, float2string rutininin çeşitli noktalarında çağrılır. Bu, en iyi şekilde, bir kesinti sırasında USB çevre birimine servis verilerek düzeltilebilir. Donanım yazılımının mümkün olduğunca referans sürüme yakın kalması için hack'i kullandım.

Adım 3: Cihazı Test Etme

Cihazı Test Etme
Cihazı Test Etme
Cihazı Test Etme
Cihazı Test Etme
Cihazı Test Etme
Cihazı Test Etme

Yönergeler pencereler içindir, ancak aygıt, CDC seri bağlantı noktası öykünme sürücüleri olan herhangi bir şeye bağlanabilir.

Aygıtı bellenim ile programlayın. Tüm konfigürasyon bitleri, bellenimde doğru şekilde ayarlanmalıdır. Cihazı bir USB bağlantı noktasına takın. Windows bunu algılayacak ve sizden bir sürücü seçmenizi isteyecektir. 'ÖZEL SÜRÜCÜ İÇİN GÖZAT'A TIKLADIĞINIZDAN EMİN OLUN. Proje arşivinde bulunan.inf dosyasının konumuna gidin (driver-win2k_winxp). Windows, aygıtı yüklemek için bu dosyayı kullanır. *CDC sürücüsüyle ilgili bir not – CDC seri bağlantı noktası öykünme sürücüsü Windows'ta bulunur..inf dosyası (Microchip tarafından sağlanır) Windows'a bu sürücüleri aygıta bağlamasını söyler. Aygıta hangi COM bağlantı noktasının atandığını öğrenmek için aşağıdakileri yapın: Kontrol paneline gidin (başlat->ayarlar->kontrol paneli) 'sistem'e çift tıklayın 'donanım' sekmesine tıklayın. "Aygıt yöneticisi"ne tıklayın Bağlantı noktalarının yanındaki "+" işaretine tıklayın Sistemdeki COM bağlantı noktalarının bir listesi gösterilir. Cihazın COM 3 ve 4 olarak göründüğünü gördüm, ancak sisteme göre değişecektir. Hangi bağlantı noktasının yeni olduğu belli değilse şunu deneyin: Aygıtı USB bağlantı noktasından çıkarın. Bağlantı noktalarından biri kaybolacak. Bu, aygıtın COM bağlantı noktası #'dir. Cihazı tekrar takın, bağlantı noktası yeniden görünecektir. Küçük VB uygulaması (kaynak dahil) cihazı test etmek için kullanılabilir. Gönderilecek komutu girin, 'Başlat'ı tıklayın. Cevap pencerede gösterilecektir.

Adım 4: Başka Ne Yapabilir?

Başka Ne Yapabilir?
Başka Ne Yapabilir?

Bu tanıtım panosu, küçük bir ev hava durumu istasyonu için iyi bir başlangıç noktasıdır: Bir HIH3160 nem sensörü ekleyin veya analog sıcaklık sensörünü Sensiron HT74 yüksek doğruluklu seri sıcaklık ve nem sensörü ile değiştirin. barometrik basıncı ölçün. Bu verileri web'e göndermek ister misiniz? Kendi web sitenize ekleyin, google earth'de görüntüleyin veya RSS reed'inizde güncellemeler alın. Bu cihazı syndicIT.com web arka ucuyla entegre etme konusunda bu talimata bakın:https://www.instructables.com/id/E25ZKI1NDCEQZJJOTC/

Önerilen: