RADYO ELEKTRONİK VE ELEKTRİK MÜHENDİSLİĞİ ANSİKLOPEDİSİ LPT bağlantı noktasının başka bir ömrü. Bölüm 2. Radyo elektroniği ve elektrik mühendisliği ansiklopedisi Radyo elektroniği ve elektrik mühendisliği ansiklopedisi / Bilgisayarlar LPT bağlantı noktasına sinyal kaydetmek için, 1 Ohm - 270 kOhm dirençli sekiz anahtar ve sekiz dirençten oluşan bir devre (Şekil 1) kurmanızı öneririm. SW1-SW8 anahtarlarının (düğmelerinin) bu konumuyla, tüm üst kontaklarda mantıksal bir “1” vardır; herhangi biri kapatıldığında, karşılık gelen kontakta mantıksal bir “0” görünecektir. Pimler doğrudan D0-D7 veriyoluna (pim 2-9, adres &H378) veya ERROR, SELECT, PAPER END, ACK ve -BUSY'ye (pim 15, 13, 12, 10 ve 11, adres &H379) bağlanabilir.
LPT bağlantı noktasından gelen verileri görüntülemek için aşağıdaki şemayı öneririm.
Nominal değeri 1 - 8 ohm olan R270-R330 dirençleri, herhangi bir LED, AL307B diyor. Böyle bir devre güç gerektirmez, yine de her şey parlayacaktır. Tüm sinyalleri kendime getirdim, her şey anında görülebiliyor. Genel olarak, LPT 3D HARD Analizör programını valery-us4leh.narod.ru/dlpt.html adresinden indirmenizi şiddetle tavsiye ederim. Valery Kovtun tarafından yazılmıştır. Bu programın yardımıyla ... genel olarak kendiniz göreceksiniz. K561LA7 mikro devresini kullanarak dikdörtgen bir puls üreteci monte edelim. Jeneratör güç kaynağı +5V. Gerçek şu ki, tüm cihazları, örneğin 155, 555 serisine monte etmek, sinyallerin bir TTL seviyesine sahip olmasını sağlamak daha uygundur. Mantıksal “sıfır” 0-0,8V ve mantıksal “bir” 2,4-4,2V. 561 serisinin rahatlığı güç kaynağının çok yönlülüğünde yatmaktadır - +3V ile +12V arasında eşit derecede iyi çalışır. Bu nedenle mikro devrelerin seçimi zevkinize bağlıdır, tek soru genliği +5V'u geçmeyen dikdörtgen darbeler elde etmektir. Basit bir puls üretecinin devresi Şekil 3'te gösterilmektedir.
Jeneratörün kendisi D1.1-D1.3 elemanları kullanılarak monte edilmiştir ve ben sadece çıkış darbelerinin daha "güzel" kenarları için D1.4 elemanını kullandım. R1, R2, C1 - frekans ayar elemanları. Elementlerin bu parametreleriyle üretim frekansı yaklaşık 5-7 Hz'dir. Anlaşılır olması açısından jeneratörün çalışması aşağıdaki grafik şeklinde gösterilebilir:
İnvertör çıkışı D1.4, LPT konnektörünün (veri yolu D2) pin 0'sine bağlanır. Jeneratörü kullanmadan önce D0-D7 veriyolunu veri alma moduna geçirmek gerekir. Bunu yapmak için &H37A'ya 43 gönderiyoruz.
Bundan sonra, &H378 portunu sorgulamaya başlıyoruz.
değişken A 254 veya 255 değerini alacaktır. Neden?
Gerçek şu ki, D0-D7 otobüsleri veri alım moduna geçtikten sonra mantıksal bir seviyeye (sarı sıra) ayarlanır. D0 veriyolunda (mavi satır) log “0” seviyesi göründüğünde, ilk bit sıfır değerini alır, yani 0+2 anlamına gelir.1+22+23+24+25+26+27 = 254. Böylece D0 veriyolundaki sinyaldeki değişikliği takip edebiliriz, ancak 1 saniyedeki değişiklik sayısını sayarsak, elde ederiz... bu doğru - bir dijital frekans sayacı. bilmek sayı gelen dürtüler her saniye hakkında söylenebilir hertz cinsinden frekans. Yani, frekans sayacı programı. Formda 3 buton ve bir Etiket bulunmalıdır. Buton 1 frekans ölçeri başlatır, Buton 2 durdurur, Buton 3 - çıkış, Etiket - frekansı gösterir. ******************************************* inpout32.dll kullananlar için Seçenek Açıkça 'bağlantı noktası adresleriyle çalışmak için kitaplık bildirimi Özel Bildirme İşlevi Inp Lib "inpout32.dll" Takma Adı "Inp32" (ByVal PortAddress As Integer) As Integer Özel Bildir Sub Out Lib "inpout32.dll" Takma Adı "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer) 'milisaniye saymak için kitaplık bildirimi Özel Bildirme İşlevi GetTickCount Lib "kernel32" () As Long Dim FTV As Long ' sistem zamanının başlangıç değeri Dim STV As Long' sistem zamanının bitiş değeri Dim FV As Integer 'FV, bağlantı noktasının ilk durumudur Dim SV As Integer 'SV ile karşılaştırılabilir bağlantı noktası durumu Dim cntr 'darbe sayacı Dim J As Integer 'J=1 sayımına izin verilir, J=0 sayımına izin verilmez Özel Sub Command1_Click () &H37A, 43 'D0-D7 lastiklerini okuma moduna aldık FTV = GetTickCount 'sistem zamanını milisaniye cinsinden hatırladı J = 1 'say - izin ver FV = Inp(&H378) 'port durumunu oku SV = FV 'SV, bağlantı noktası durumuna eşittir cntr = 0 'sıfıra karşı sayaç J iken Yap <> 0 DoEvents STV = GetTickCount 'mevcut sistem saatini hatırla STV > FTV+1000 ise Frekans Gösterisi 'bir saniye geçerse sonucu görüntüle FV = Inp(&H378) 'sürekli yoklama adresi &H378 If FV <> SV Sonra 'bağlantı noktası durumu değiştiyse SV = FV 'SV, bağlantı noktası durumuna eşittir cntr = cntr + 0.5 'sayaç + 0.5 Eğer son J = 0 ise Kullanıcı Durdur'a basarsa Çık döngü End Sub Özel Sub Command2_Click () 'durdurma döngüsü 'kullanıcı Dur'a basarsa J=0 End Sub Özel Sub Command3_Click () J = 0 'say - dur Out &H37A, 0 'D0-D7 veri yolu durumunu geri yükle Beni kaldır 'programdan çık End Sub 'Frekans görüntüleme rutini Genel Alt FrekansGöster() Label1.Caption = Int(cntr) & " Hz" 'sonucu görüntüle cntr = 0 'sıfıra karşı sayaç Duraklatma (0.2)' gecikmesi. Düşük frekansları ölçmek için gereklidir FTV = GetTickCount 'sistem zamanını milisaniye cinsinden hatırladı End Sub 'Gecikme rutini. Çağrı formatı: Duraklat(saniye sayısı) Genel Alt Duraklatma(Tekli Değer) Dim Başlat, Bitir Başlat = Zamanlayıcı Zamanlayıcı Yaparken < Başlangıç + Değer DoEvents döngü Bitiş=Zamanlayıcı End Sub ******************************************* dlportio.dll kullananlar için Seçenek Açıkça 'bağlantı noktası adresleriyle çalışmak için kitaplık bildirimi Özel Bildirme İşlevi DlPortReadPortUchar Lib "dlportio.dll" (ByVal Bağlantı Noktası Uzunluğunda) Bayt Olarak Özel Bildirme Alt DlPortWritePortUchar Lib "dlportio.dll" (Uzun ByVal Bağlantı Noktası, Bayt Olarak ByVal Değeri) 'milisaniye saymak için kitaplık bildirimi Özel Bildirme İşlevi GetTickCount Lib "kernel32" () As Long Dim FTV As Long ' sistem zamanının başlangıç değeri Dim STV As Long' sistem zamanının bitiş değeri Dim FV As Integer 'FV, bağlantı noktasının ilk durumudur Dim SV As Integer 'SV ile karşılaştırılabilir bağlantı noktası durumu Dim cntr 'darbe sayacı Dim J As Integer 'J=1 sayımına izin verilir, J=0 sayımına izin verilmez Özel Sub Command1_Click () DlPortWritePortUchar &H37A, 43 'D0-D7 veriyollarını okuma moduna geçir FTV = GetTickCount 'sistem zamanını milisaniye cinsinden hatırladı J = 1 'sayı - izin ver FV = DlPortReadPortUchar (&H378) 'bağlantı noktası durumunu oku SV = FV 'SV, bağlantı noktası durumuna eşittir cntr = 0 'sıfıra karşı sayaç J iken Yap <> 0 DoEvents STV = GetTickCount 'mevcut sistem saatini hatırla STV > FTV+1000 ise Frekans Gösterisi 'bir saniye geçerse sonucu görüntüle FV = DlPortReadPortUchar (&H378) 'sürekli yoklama adresi &H378 If FV <> SV Sonra 'bağlantı noktası durumu değiştiyse SV = FV 'SV, bağlantı noktası durumuna eşittir cntr = cntr + 0.5 'sayaç + 0.5 Eğer son J = 0 ise Kullanıcı Durdur'a basarsa Çık döngü End Sub Özel Sub Command2_Click () 'durdurma döngüsü 'kullanıcı Dur'a basarsa J=0 End Sub Özel Sub Command3_Click () J = 0 'say - dur DlPortWritePortUchar &H37A, 0 'D0-D7 veri yolunun durumunu geri yükle Beni kaldır 'programdan çık End Sub 'Frekans görüntüleme rutini Genel Alt FrekansGöster() Label6.Caption = Int(cntr) & " Hz" 'sonucu görüntüle cntr = 0 'sıfıra karşı sayaç Duraklatma (0.2)' gecikmesi. Düşük frekansları ölçmek için gereklidir FTV = GetTickCount 'sistem zamanını milisaniye cinsinden hatırladı End Sub 'Gecikme rutini. Çağrı formatı: Duraklat(saniye sayısı) Genel Alt Duraklatma(Tekli Değer) Dim Başlat, Bitir Başlat = Zamanlayıcı Zamanlayıcı Yaparken < Başlangıç + Değer DoEvents döngü Bitiş=Zamanlayıcı End Sub ******************************************* Bu kadar? Sen sor. Bu kadar. Bir şekilde işe yarayan programın tamamı bu. Ø Gördüğünüz gibi kod farklı kütüphaneler için hemen hemen aynıdır, dolayısıyla aşağıdaki örneklerde kodu yalnızca kütüphaneyle ele alacağız dlportio.dll Frekans sayıcı programının kodunu dikkatli incelerseniz sayaca 0.5 eklendiğini fark edeceksiniz, merkez = merkez + 0.5, Gerçek şu ki, bu program kodu, bağlantı noktası durumunun hem 1'den 1'a hem de tam tersi 0'dan 0'e geçişini sayar, dolayısıyla frekansı saymak için ya 1 eklemeniz ve ardından çıktı almanız gerekir. Label1.Caption = Int(cntr) & "Hz" Veya 1 ekleyin merkez = merkez + 1, Ve sonra çıktı Label1.Caption = Int(cntr/2) & "Hz" İşte matematik. Bu arada herhangi bir motorun dönen miline herhangi bir sensör yerleştirmeyi denediniz mi? Muhtemelen, bu programın yardımıyla mükemmel bir takometre J elde edeceksiniz. Pekala, devam edelim. Aynı puls üretecini alıyoruz ve R2 veya R1 direnci yerine bir termistöre lehim yapıyoruz (makalenin yazarı bir araba mağazasına gitti ve 30 ruble karşılığında bir VAZ-2101'den bir sıcaklık sensörü satın aldı). Bu sıcaklık sensörü sıcaklığa bağlı olarak direncini değiştirir (+3200 sıcaklıkta 14 Ohm)0+143 sıcaklıkta C ve 100 Ohm0C.) Direnci değiştirdiğimiz için jeneratörün frekansı da değişir, bu da bir dönüştürücü elde ettiğimiz anlamına gelir sıcaklık-frekansyani Dijital termometre. Aşağıdaki grafikte görüldüğü gibi sıcaklığa bağlı olarak direnç değişiminin doğrusal olarak gerçekleşmediğine dikkatinizi çekmek isterim,
bu nedenle bilgisayara 100 darbenin 20 derece, 110 darbenin 21 derece olduğunu “açıklamak” çok kolay olmayacak ama yine de mümkün olacaktır. Tek soru kodun ve algoritmanın boyutudur. Direnç yerine gaz deposuna yakıt sensörü takarsak sıvı seviye göstergesi alırız. Böyle bir göstergeyi aşağıdaki gibi ayarlamak daha uygundur: 1. Kap boşken darbe frekansını ölçüyoruz 2. Biraz ses ekleyin (hangi tonlamayı - elde etmek istediğiniz doğruluğuna bağlı olarak) ve frekansı tekrar ölçün 3. Ve bu şekilde kabınızın en üstüne kadar devam edin. Aşağıdaki şekildeki yapıyı monte ederseniz farklı bir prensip kullanarak sıvı seviye göstergesi oluşturabilirsiniz.
Sıvı seviyesi değişirse, şamandıranın mıknatıslı konumu da değişir ve bu nedenle karşılık gelen reed anahtarları kapanır (açık). İnce duvarlı plastik bir tüp kullanmak en iyisidir. Bu cihazın şeması aşağıdaki gibidir:
Aşağıdaki algoritmayı kullanarak böyle bir cihazdan gelen bilgileri işleyebilirsiniz.
Ø Bazıları bana D0-D7 otobüslerini okuma moduna almanın gerekli olmadığını ve her şeyin bu şekilde çalışacağını söyleyerek itiraz edebilir. Buna ancak şu cevabı verebilirim: Dileyen tercüme yapmasın. Bu konuyu tartışmayacağım. Eğer &H378 portu veri alma modunda değilse ve kullanılan pin üzerinde mantıksal “2” varsa (bizim durumumuzda 0 - D1), o zaman jeneratör çalışmayacak. Veri aktarım modunda D0-D7 veriyolunun çıkış akımı, CMOS mikro devresinin (561LA7) çıkış akımından daha büyüktür, dolayısıyla üretim olmayacaktır. Elbette yerle teması cımbızla kısa devre yaparsanız hiçbir akım yeterli olmayacaktır. Ancak bana öyle geliyor ki, fazladan bir kod satırı yazıp bilgisayar donanımı geliştiricilerinin tavsiyelerini yapmak zor değil. Şimdi ters süreci ele alalım, yani. verileri bir bilgisayardan cihazınıza aktarma işlemi. Örnek olarak aynı puls üretecini ele alalım, sadece devresini biraz değiştirin.
Jeneratöre güç verdikten sonra bir anda jeneratörün çalışmadığını fark ediyoruz. Ve yalnızca D2 öğesinin 1.1. girişinde mantıksal seviye "1" göründüğünde çalışacaktır. DlPortWritePortUchar &H378, 1 Ve her şey hemen çalışmaya başladı. İşte bilgisayar kontrollü bir jeneratör. Jeneratörün tamamı küçük, ancak bu cihaza haraç vermemiz gerekmesine rağmen - birçok elektronik devrede puls üreteci temel alınır. Neden bilgisayara daha ciddi bir şey bağlamıyoruz? İşte böyle bir şema
Bu cihazın girişini istediğimiz herhangi bir çıkışa örneğin D3'e bağlıyoruz, GND girişini konnektörün ortak kablosuna bağlıyoruz ancak +12V'un ayrı bir güç kaynağından alınması gerekecek. Röle otomobile alınabilir. Genel olarak elemanların tüm parametreleri tamamen farklı olabilir (Elimde olanı aldım) DlPortWritePortUchar &H378, 8 veya DlPortWritePortUchar &H378, 9 veya DlPortWritePortUchar &H378, 10 Önemli olan D3 veriyolunda "1" günlüğünün bulunmasıdır. Röle çalışacaktır, ancak onu anladığınız şey sizin işinizdir. Genel olarak, yüksek voltajlı cihazları değiştirirken, kendinizi kısa devreden, mahfazanın arızalanmasından korumak için (her ihtimale karşı) gereklidir, genel olarak bunu yapın. Böylece bir kaza durumunda harika LPT bağlantı noktanız yanmaz. Bu nedenle, bu tür bağlantılar için, örneğin bir optokuplör aracılığıyla bağlantı noktasının ve cihazınızın galvanik izolasyonunu kullanmak uygundur.
Cihazınızdaki her şey "yanarsa", ne yazık ki ışıktan hiçbir akım geçmeyecektir, henüz böyle bir şey bulamadılar. Bu ikinci kısmı bitiriyor. Üçüncü bölüm olacak mı, sanırım olacak ama konu bu olacak... Yazar: Alexey Klyushnikov, İvanovo; Yayın: cxem.net Diğer makalelere bakın bölüm Bilgisayarlar. Oku ve yaz yararlı bu makaleye yapılan yorumlar. En son bilim ve teknoloji haberleri, yeni elektronikler: Bahçelerdeki çiçekleri inceltmek için makine
02.05.2024 Gelişmiş Kızılötesi Mikroskop
02.05.2024 Böcekler için hava tuzağı
01.05.2024
Diğer ilginç haberler: ▪ Mars toprağının kalitesinin iyileştirilmesi ▪ TV, bebeklerin konuşmayı öğrenmesini engelliyor Bilim ve teknolojinin haber akışı, yeni elektronik
Ücretsiz Teknik Kitaplığın ilginç malzemeleri: ▪ Web sitesinin iş tanımları bölümü. Makale seçimi ▪ Makale Gülmek, gerçekten, komik görünen her şeye karşı günah değildir. Popüler ifade ▪ XNUMX. yüzyılda ABD'de ne oldu? Ayrıntılı cevap ▪ makale Teknolojik ipuçları. Radyo elektroniği ve elektrik mühendisliği ansiklopedisi ▪ makale 35 volt için voltaj dengeleyici. Radyo elektroniği ve elektrik mühendisliği ansiklopedisi
Bu makaleye yorumunuzu bırakın: Bu sayfanın tüm dilleri Ana sayfa | Kütüphane | Makaleler | Site haritası | Site incelemeleri www.diagram.com.ua |