ENSIKLOPEDIA ELEKTRONIK RADIO DAN KEJURUTERAAN ELEKTRIK Satu lagi kehidupan pelabuhan LPT. Bahagian 2. Ensiklopedia elektronik radio dan kejuruteraan elektrik Ensiklopedia elektronik radio dan kejuruteraan elektrik / Komputer Untuk merakam isyarat pada port LPT, saya cadangkan memasang litar (Rajah 1) yang terdiri daripada lapan suis dan lapan perintang dengan rintangan 270 Ohm - 1 kOhm. Dengan kedudukan suis (butang) SW1-SW8 ini, terdapat logik "1" pada semua kenalan atas, apabila mana-mana satu ditutup, logik "0" akan muncul pada kenalan yang sepadan. Pin boleh disambungkan terus ke bas D0-D7 (pin 2-9, alamat &H378) atau ke ERROR, SELECT, PAPER END, ACK dan -BUSY (pin 15, 13, 12, 10 dan 11, alamat &H379) .
Untuk memaparkan data yang datang dari port LPT, saya mengesyorkan skema berikut.
Perintang R1-R8 dengan nilai nominal 270 - 330 ohm, sebarang LED, katakan AL307B. Litar sedemikian tidak memerlukan kuasa, semuanya akan bersinar. Saya membawa semua isyarat kepada diri saya sendiri, semuanya dapat dilihat dengan serta-merta. Secara umum, saya amat mengesyorkan untuk memuat turun program LPT 3D HARD Analyzer di valery-us4leh.narod.ru/dlpt.html. Ditulis oleh Valery Kovtun. Dengan bantuan program ini ... secara umum, anda akan melihat sendiri. Mari kita pasang penjana nadi segi empat tepat pada cip K561LA7. Penjana kuasa + 5V. Hakikatnya adalah lebih mudah untuk memasang semua peranti, contohnya, pada siri 155, 555, supaya isyarat mempunyai tahap TTL. Logik "sifar" 0-0,8V dan log "satu" 2,4-4,2V. Kemudahan siri 561 terletak pada fleksibiliti bekalan kuasa - ia berfungsi dengan baik dari + 3V hingga + 12V. Oleh itu, pilihan litar mikro kekal mengikut citarasa anda, satu-satunya soalan adalah untuk mendapatkan denyutan segi empat tepat dengan amplitud tidak lebih daripada + 5V. Gambar rajah penjana nadi ringkas ditunjukkan dalam Rajah 3.
Penjana itu sendiri dipasang pada elemen D1.1-D1.3, dan saya hanya menggunakan elemen D1.4 untuk bahagian hadapan yang lebih "cantik" bagi denyutan output. R1, R2, C1 - elemen tetapan frekuensi. Dengan parameter unsur ini, frekuensi penjanaan adalah lebih kurang 5-7 Hz. Untuk kejelasan, operasi penjana boleh diwakili dalam bentuk graf berikut:
Output penyongsang D1.4 disambungkan ke pin 2 penyambung LPT (bas D0). Sebelum menggunakan penjana, adalah perlu untuk meletakkan bas D0-D7 ke dalam mod penerimaan data. Untuk melakukan ini, kami menghantar 37 ke &H43A.
Selepas itu, kami mulakan port mengundi &H378.
Pembolehubah A akan mengambil nilai sama ada 254 atau 255. Mengapa?
Hakikatnya ialah selepas bas D0-D7 ditukar kepada mod penerimaan data, ia ditetapkan ke tahap unit logik (baris kuning). Apabila tahap D0 muncul pada bas D0, log "0" (baris biru) - bit pertama mengambil nilai sifar, yang bermaksud 2 + XNUMX1+22+23+24+25+26+27 = 254. Oleh itu, kita boleh menjejaki perubahan isyarat pada bas D0, tetapi jika kita mengira bilangan perubahan dalam 1 saat, kita akan mendapat ... betul - pembilang frekuensi digital. Mengetahui nombor impuls yang masuk sesaat boleh dikatakan tentang kekerapan dalam hertz. Jadi, program pembilang frekuensi. Borang hendaklah mempunyai 3 butang dan Label. Butang 1 meter kekerapan mula, Butang 2 berhenti, Butang 3 - keluar, Label - menunjukkan kekerapan. ******************************************* Bagi mereka yang menggunakan inpout32.dll Pilihan Eksplisit 'perisytiharan perpustakaan untuk bekerja dengan alamat port Fungsi Isytihar Peribadi Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress Sebagai Integer) Sebagai Integer Peribadi Mengisytiharkan Sub Keluar Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress Sebagai Integer, ByVal Value Sebagai Integer) 'pengisytiharan perpustakaan untuk mengira milisaat Fungsi Isytihar Peribadi GetTickCount Lib "kernel32" () Selagi Malapkan FTV Selagi ' nilai awal masa sistem Malapkan STV Selagi nilai tamat masa sistem Malapkan FV Sebagai Integer 'FV ialah keadaan awal port Malapkan SV Sebagai Integer 'keadaan port setanding SV Kaunter nadi cntr malap Malapkan J Sebagai Integer 'J=1 kiraan dibenarkan, J=0 kiraan tidak dibenarkan Sub Perintah Peribadi1_Klik() Keluar &H37A, 43 'kami meletakkan tayar D0-D7 ke dalam mod baca FTV = GetTickCount 'mengingati masa sistem dalam milisaat J = 1 'kiraan - benarkan FV = Inp(&H378) 'keadaan port baca SV = FV 'SV sama dengan keadaan port cntr = 0 'berbilang kepada sifar Lakukan Semasa J <> 0 DoEvents STV = GetTickCount 'ingat masa sistem semasa Jika STV > FTV + 1000 Kemudian FrequencyShow 'jika sesaat telah berlalu, paparkan hasil FV = Inp(&H378) 'alamat undian secara berterusan &H378 Jika FV <> SV Kemudian 'jika keadaan port telah berubah SV = FV 'SV sama dengan keadaan port cntr = cntr + pembilang 0.5' + 0.5 End If Jika J = 0 Kemudian Keluar Lakukan 'jika pengguna menekan Stop Gelung Akhir Sub Sub Perintah Peribadi2_Klik() 'gelung berhenti 'jika pengguna menekan Stop J=0 Akhir Sub Sub Perintah Peribadi3_Klik() J = 0 'kiraan - berhenti Keluar &H37A, 0 'pulihkan keadaan bas D0-D7 Putuskan saya 'keluar dari program Akhir Sub 'Rutin paparan kekerapan SubFrequencyShow () Awam Label1.Kapsyen = Int(cntr) & " Hz" 'hasil paparan cntr = 0 'berbilang kepada sifar Jeda (0.2) 'kelewatan. Diperlukan untuk mengukur frekuensi rendah FTV = GetTickCount 'mengingati masa sistem dalam milisaat Akhir Sub 'Tunda rutin. Format panggilan: Jeda(bilangan saat) Sub Jeda Awam (Nilai Sebagai Tunggal) Malapkan Mula, Selesai Mula = Pemasa Lakukan Semasa Pemasa < Mula + Nilai DoEvents Gelung Selesai=Pemasa Akhir Sub ******************************************* Bagi mereka yang menggunakan dlportio.dll Pilihan Eksplisit 'perisytiharan perpustakaan untuk bekerja dengan alamat port Fungsi Pengisytiharan Peribadi DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port Selagi) Sebagai Byte Peribadi Mengisytiharkan Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port Selagi, Nilai ByVal Sebagai Byte) 'pengisytiharan perpustakaan untuk mengira milisaat Fungsi Isytihar Peribadi GetTickCount Lib "kernel32" () Selagi Malapkan FTV Selagi ' nilai awal masa sistem Malapkan STV Selagi nilai tamat masa sistem Malapkan FV Sebagai Integer 'FV ialah keadaan awal port Malapkan SV Sebagai Integer 'keadaan port setanding SV Kaunter nadi cntr malap Malapkan J Sebagai Integer 'J=1 kiraan dibenarkan, J=0 kiraan tidak dibenarkan Sub Perintah Peribadi1_Klik() DlPortWritePortUchar &H37A, 43 'letakkan bas D0-D7 ke dalam mod baca FTV = GetTickCount 'mengingati masa sistem dalam milisaat J = 1 'kiraan - benarkan FV = DlPortReadPortUchar (&H378) 'baca keadaan port SV = FV 'SV sama dengan keadaan port cntr = 0 'berbilang kepada sifar Lakukan Semasa J <> 0 DoEvents STV = GetTickCount 'ingat masa sistem semasa Jika STV > FTV + 1000 Kemudian FrequencyShow 'jika sesaat telah berlalu, paparkan hasil FV = DlPortReadPortUchar (&H378) 'alamat undian secara berterusan &H378 Jika FV <> SV Kemudian 'jika keadaan port telah berubah SV = FV 'SV sama dengan keadaan port cntr = cntr + pembilang 0.5' + 0.5 End If Jika J = 0 Kemudian Keluar Lakukan 'jika pengguna menekan Stop Gelung Akhir Sub Sub Perintah Peribadi2_Klik() 'gelung berhenti 'jika pengguna menekan Stop J=0 Akhir Sub Sub Perintah Peribadi3_Klik() J = 0 'kiraan - berhenti DlPortWritePortUchar &H37A, 0 'pulihkan keadaan bas D0-D7 Putuskan saya 'keluar dari program Akhir Sub 'Rutin paparan kekerapan SubFrequencyShow () Awam Label6.Kapsyen = Int(cntr) & " Hz" 'hasil paparan cntr = 0 'berbilang kepada sifar Jeda (0.2) 'kelewatan. Diperlukan untuk mengukur frekuensi rendah FTV = GetTickCount 'mengingati masa sistem dalam milisaat Akhir Sub 'Tunda rutin. Format panggilan: Jeda(bilangan saat) Sub Jeda Awam (Nilai Sebagai Tunggal) Malapkan Mula, Selesai Mula = Pemasa Lakukan Semasa Pemasa < Mula + Nilai DoEvents Gelung Selesai=Pemasa Akhir Sub ******************************************* Dan semua? Anda bertanya. Ya, itu sahaja. Itulah keseluruhan program, yang atas sebab tertentu berfungsi. Ø Seperti yang anda lihat, kod adalah hampir sama untuk perpustakaan yang berbeza, oleh itu, dalam contoh berikut, kami akan mempertimbangkan kod hanya dengan perpustakaan dlportio.dll Jika anda menganalisis dengan teliti kod program pembilang frekuensi, anda akan melihat bahawa 0.5 ditambahkan pada pembilang, cntr = cntr + 0.5, dan bukan 1. Hakikatnya ialah kod program ini mempertimbangkan peralihan keadaan port kedua-dua dari 1 ke 0, dan sebaliknya dari 0 hingga 1, oleh itu, untuk mengira kekerapan, anda mesti sama ada menambah 0.5, dan kemudian output Label1.Kapsyen = Int(cntr) & "hz" Atau tambah 1 cntr = cntr + 1, Dan kemudian output Label1.Kapsyen = Int(cntr/2) & "hz" Inilah matematiknya. Ngomong-ngomong, adakah anda telah cuba meletakkan beberapa jenis sensor pada aci berputar beberapa enjin. Mungkin, dengan bantuan program ini, anda akan mendapat tachometer J yang indah Baiklah, mari kita teruskan. Kami mengambil penjana nadi yang sama dan bukannya perintang R2 atau R1 kami menyolder termistor (pengarang artikel pergi ke kedai kereta dan membeli sensor suhu dari VAZ-30 untuk 2101 rubel). Sensor haba ini menukar rintangannya bergantung pada suhu (3200 ohm pada +140C dan 143 Ohm pada suhu +1000C.) Oleh kerana kita menukar rintangan, kekerapan penjana juga berubah, yang bermaksud kita mendapat penukar kekerapan suhu, iaitu termometer digital. Saya ingin menarik perhatian anda kepada fakta bahawa perubahan rintangan bergantung pada suhu tidak berlaku secara linear, seperti yang dapat dilihat dalam graf berikut,
oleh itu, "menjelaskan" kepada komputer bahawa 100 nadi ialah 20 darjah, dan 110 nadi ialah 21 darjah tidak akan menjadi sangat mudah, tetapi bagaimanapun mungkin. Persoalannya hanya dalam saiz kod dan algoritma. Jika bukannya perintang kami meletakkan sensor bahan api dari tangki gas, maka kami mendapat penunjuk tahap cecair. Adalah lebih mudah untuk membina penunjuk seperti berikut: 1. Kami mengukur kekerapan nadi dengan tangki kosong 2. Kami menambah beberapa kelantangan (bergantung pada penggredan - ketepatan yang anda mahu dapatkan) dan sekali lagi mengukur kekerapan 3. Dan seterusnya ke bahagian paling atas bekas anda. Dan anda boleh membina penunjuk aras cecair mengikut prinsip yang berbeza, jika anda memasang struktur dalam rajah di bawah.
Jika paras cecair berubah, maka kedudukan apungan dengan magnet juga berubah, jadi buluh yang sepadan bertukar tutup (terbuka). Sebaiknya gunakan tiub plastik berdinding nipis. Skim peranti ini adalah seperti berikut:
Anda boleh memproses maklumat daripada peranti sedemikian mengikut algoritma berikut.
Ø Sesetengah mungkin membantah saya bahawa tidak perlu meletakkan bas D0-D7 ke dalam mod baca, dan ini akan berfungsi. Untuk ini saya hanya boleh menjawab yang berikut - sesiapa yang mahu, jangan dia menterjemah. Saya tidak akan membincangkan perkara ini. Jika port &H378 tidak berada dalam mod terima data dan pin yang digunakan (dalam kes kami 2 - D0 ) mempunyai logik "1", maka penjana tidak akan berfungsi. Arus keluaran bas D0-D7 dalam mod pemindahan data adalah lebih besar daripada arus keluaran cip CMOS (561LA7), jadi tidak akan ada penjanaan. Sudah tentu, jika anda membuat litar pintas kenalan ke tanah dengan pinset, maka arus tidak akan mencukupi. Tetapi nampaknya saya tidak sukar untuk menaip baris tambahan kod dan melakukan seperti yang dinasihatkan oleh pembangun perkakasan komputer. Sekarang mari kita pertimbangkan proses terbalik, i.e. proses pemindahan data dari komputer ke peranti anda. Kita ambil contoh penjana nadi yang sama, cuma tukar litarnya sedikit.
Selepas menggunakan kuasa kepada penjana, kami tiba-tiba mendapati penjana tidak berfungsi. Dan ia akan berfungsi hanya apabila tahap logik "2" muncul pada input 1.1 elemen D1. DlPortWritePortUchar &H378, 1 Dan semuanya segera berfungsi. Berikut ialah penjana terkawal komputer. Nah, penjana semuanya kecil, walaupun kita mesti memberi penghormatan kepada peranti ini - dalam banyak litar elektronik, penjana nadilah yang diambil sebagai asas. Mengapa tidak kita sambungkan sesuatu yang lebih serius kepada komputer. Berikut adalah skim sedemikian
Kami menyambungkan input peranti ini ke mana-mana output yang kami suka, sebagai contoh, ke D3, kami menyambungkan input GND ke wayar biasa penyambung, tetapi + 12V perlu diambil dari sumber kuasa yang berasingan. Relay boleh diambil kereta. Secara umum, semua parameter elemen boleh sama sekali berbeza (saya mengambil apa yang ada di tangan) DlPortWritePortUchar &H378, 8 atau DlPortWritePortUchar &H378, 9 atau DlPortWritePortUchar &H378, 10 Perkara utama ialah perlu ada log "3" pada bas D1. Geganti akan berfungsi, tetapi perkara yang anda ambil ialah perniagaan anda. Secara umum, apabila menukar peranti voltan tinggi, adalah perlu (untuk berjaga-jaga) untuk melindungi diri anda daripada litar pintas, daripada kerosakan kepada kes, secara umum, untuk berbuat demikian. Supaya jika berlaku kemalangan port LPT anda yang indah tidak hangus. Oleh itu, untuk sambungan sedemikian adalah mudah untuk menggunakan pengasingan galvanik port dan peranti anda, contohnya, melalui optocoupler.
Jika segala-galanya dalam peranti anda "terbakar", maka melalui cahaya - malangnya, arus tidak akan berlalu, mereka belum lagi menghasilkan perkara sedemikian. Di sinilah bahagian kedua berakhir. Adakah akan ada bahagian ketiga - saya fikir ia akan berlaku, tetapi inilah yang akan menjadi tentang ... Pengarang: Alexey Klyushnikov, Ivanovo; Penerbitan: cxem.net Lihat artikel lain bahagian Komputer. Baca dan tulis berguna komen pada artikel ini. Berita terkini sains dan teknologi, elektronik baharu: Cara Baharu untuk Mengawal dan Memanipulasi Isyarat Optik
05.05.2024 Papan kekunci Seneca Prime
05.05.2024 Balai cerap astronomi tertinggi di dunia dibuka
04.05.2024
Berita menarik lain: ▪ Tidak akan ada pemproses NVIDIA ▪ Hati yang sihat ditanam daripada penderma yang berpenyakit ▪ Cahaya matahari meningkatkan aktiviti seksual lelaki Suapan berita sains dan teknologi, elektronik baharu
Bahan-bahan menarik Perpustakaan Teknikal Percuma: ▪ bahagian tapak Panggilan dan simulator audio. Pemilihan artikel ▪ artikel Tujuh kaki di bawah lunas. Ungkapan popular ▪ artikel Bagaimana upah Inggeris berkaitan dengan garam? Jawapan terperinci ▪ pasal Ketua jabatan perakaunan. Deskripsi kerja ▪ artikel Penyekat telefon selari. Ensiklopedia elektronik radio dan kejuruteraan elektrik
Tinggalkan komen anda pada artikel ini: Semua bahasa halaman ini Laman utama | Perpustakaan | artikel | Peta Laman | Ulasan laman web www.diagram.com.ua |