Меню English Ukrainian російська Головна

Безкоштовна технічна бібліотека для любителів та професіоналів Безкоштовна технічна бібліотека


Інше життя LPT порту. Частина 2. Енциклопедія радіоелектроніки та електротехніки

Безкоштовна технічна бібліотека

Енциклопедія радіоелектроніки та електротехніки / Комп'ютери

Коментарі до статті Коментарі до статті

Для запису сигналів на порт LPT я рекомендую зібрати схему (рис. 1), що складається з восьми перемикачів і восьми резисторів опором 270 Ом - 1 кОм. При цьому положенні перемикачів (кнопок) SW1-SW8 на всіх верхніх контактах є логічна "1", при замиканні будь-якого - на відповідному контакті з'явиться логічний "0". Контакти можна підключати безпосередньо до шини D0-D7 (контакти 2-9, адреса &H378) або до ERROR, SELECT, PAPER END, ACK та -BUSY (контакти 15, 13, 12, 10 та 11, адреса &H379).

Інше життя LPT порту
Рис. 1

Для відображення даних порту LPT рекомендую наступну схему.

Інше життя LPT порту
Рис. 2

Резистори R1-R8 номіналом 270 – 330 Ом, світлодіоди будь-які, скажімо АЛ307Б. Харчування така схема не вимагає, все й так світитиметься. Я собі вивів взагалі всі сигнали, одразу все видно. А взагалі рекомендую завантажити програму LPT 3D HARD Analyzer на valery-us4leh.narod.ru/dlpt.html. Написав її Валерій Ковтун. За допомогою цієї програми... загалом самі побачите.

Зберемо генератор прямокутних імпульсів на мікросхемі К561ЛА7. Живлення генератора +5В. Справа в тому, що зручніше всі пристрої збирати, наприклад, на 155, 555 серії, щоб сигнали мали рівень ТТЛ. Логічний "нуль" 0-0,8В та лог "одиниця" 2,4-4,2В. Зручність 561 серії полягає в універсальності харчування - вона однаково добре працює від +3 до +12в. Тому вибір мікросхем залишається на ваш смак, питання лише в тому, щоб отримати прямокутні імпульси амплітудою трохи більше +5В. Схема простого генератора імпульсів зображено малюнку 3.

Інше життя LPT порту
Рис. 3

Сам генератор зібраний на елементах D1.1-D1.3, а елемент D1.4 я просто використав для більш "гарних" фронтів вихідних імпульсів. R1, R2, C1 - частотозадаючі елементи. За даних параметрів елементів частота генерації становить приблизно 5-7 Гц. Для наочності роботу генератора можна як наступного графіка:

Інше життя LPT порту
Рис. 4

Вихід інвертора D1.4 з'єднаний із 2 контактом LPT роз'єму (шина D0). Перед використанням генератора необхідно перевести шину D0-D7 в режим прийому даних. Для цього на адресу &H37A ми надсилаємо 43.
Код наступний. Для тих, хто використовує
inpout32.dll dlportio.dll DOS
Out &H37A, 43 DlPortWritePortUchar &H37A, 43 OUT &H37A, 43

Після цього починаємо опитувати порт H378.
Код наступний. Для тих, хто використовує
inpout32.dll dlportio.dll DOS
Dim A як IntegerA = Inp(&H378) Dim A as IntegerDlPortReadPortUchar(&H378) DEFINT A-ZA=INP(&H378)

Мінлива A прийматиме значення то 254, то 255. Чому?
D0 D1 D2 D3 D4 D5 D6 D7  
20 21 22 23 24 25 26 27  
1 2 4 8 16 32 64 128  
1 1 1 1 1 1 1 1 255
0 1 1 1 1 1 1 1 254

Справа в тому, що після переведення шин D0-D7 в режим прийому даних, на них виставляється рівень логічної одиниці (жовтий ряд).

При появі на шині D0 рівня лог "0" (блакитний ряд) - перший біт набуває значення нуля, отже 0+21+22+23+24+25+26+27 = 254.

Таким чином, ми можемо відстежити зміну сигналу на шині D0, а якщо ми порахуємо кількість змін за 1 секунду, то ми отримаємо... правильно - цифровий частотомір. Знаючи кількість імпульсів, що прийшли за секунду можна сказати про частоті у Герцях.

Отже, програма частотомір. На формі мають бути 3 кнопки та Label. Кнопка 1 пуск частотомір, Кнопка 2 стоп, Кнопка 3 – вихід, Label – індикує частоту.

*******************************************

Для тих, хто використовує inpout32.dll

Варіант явний

оголошення бібліотеки для роботи з адресами порту

Private Declare Function Inp Lib "inpout32.dll" Alias ​​"Inp32" (ByVal PortAddress As Integer) As Integer

Private Declare Sub Out Lib "inpout32.dll" Alias ​​"Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

оголошення бібліотеки для підрахунку мілісекунд

Private Declare Function GetTickCount Lib "Kernel32" () As Long

Dim FTV As Long 'початкове значення системного часу

Dim STV As Long 'кінцеве значення системного часу

Dim FV As Integer 'FV-початковий стан порту

Dim SV As Integer 'SV-порівняний стан порту

Dim cntr 'лічильник імпульсів

Dim J As Integer 'J=1 рахунок дозволено, J=0 рахунок не дозволено

Private Sub Command1_Click()

Out &H37A, 43' переводимо шини D0-D7 в режим читання

FTV = GetTickCount 'запам'ятали системний час у мілісекундах

J = 1 'рахунок - дозволити

FV = Inp(&H378) 'вважали стан порту

SV = FV 'SV дорівнює стану порту

cntr = 0 'лічильник у нуль

Do While J <> 0

DoEvents

STV=GetTickCount' запам'ятовуємо поточний системний час

If STV > FTV + 1000 Then FrequencyShow 'якщо минула секунда, відображаємо результат

FV = Inp(&H378) 'постійно опитуємо адресу &H378

If FV <> SV Then 'якщо стан порту змінилося

SV = FV 'SV дорівнює стану порту

cntr = cntr + 0.5' лічильник + 0.5

End If

If J = 0 Then Exit Do 'якщо користувач натиснув Стоп

Петля

End Sub

Private Sub Command2_Click()

Зупинка циклу

Якщо користувач натиснув Стоп

J = 0 рік

End Sub

Private Sub Command3_Click()

J = 0' рахунок - стоп

Out &H37A, 0 'відновлюємо стан шини D0-D7

Unload Me 'вихід із програми

End Sub

'Підпрограма відображення частоти

Public Sub FrequencyShow()

Label1.Caption = Int(cntr) & "Hz" 'відображаємо результат

cntr = 0 'лічильник у нуль

Pause (0.2) 'затримка. Потрібна для вимірювання малих частот

FTV = GetTickCount 'запам'ятали системний час у мілісекундах

End Sub

'Підпрограма затримки. Формат виклику: Pause (число секунд)

Public Sub Pause(Value As Single)

Dim Start, Finish

Start = Timer

Do While Timer < Start + Value

DoEvents

Петля

Finish = Timer

End Sub

*******************************************

Для тих хто використовує dlportio.dll

Варіант явний

оголошення бібліотеки для роботи з адресами порту

Private Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte

Private Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)

оголошення бібліотеки для підрахунку мілісекунд

Private Declare Function GetTickCount Lib "Kernel32" () As Long

Dim FTV As Long 'початкове значення системного часу

Dim STV As Long 'кінцеве значення системного часу

Dim FV As Integer 'FV-початковий стан порту

Dim SV As Integer 'SV-порівняний стан порту

Dim cntr 'лічильник імпульсів

Dim J As Integer 'J=1 рахунок дозволено, J=0 рахунок не дозволено

Private Sub Command1_Click()

DlPortWritePortUchar &H37A, 43' переводимо шини D0-D7 в режим читання

FTV = GetTickCount 'запам'ятали системний час у мілісекундах

J = 1 'рахунок - дозволити

FV = DlPortReadPortUchar (&H378) 'вважали стан порту

SV = FV 'SV дорівнює стану порту

cntr = 0 'лічильник у нуль

Do While J <> 0

DoEvents

STV=GetTickCount' запам'ятовуємо поточний системний час

If STV > FTV + 1000 Then FrequencyShow 'якщо минула секунда, відображаємо результат

FV = DlPortReadPortUchar (&H378) 'постійно опитуємо адресу &H378

If FV <> SV Then 'якщо стан порту змінилося

SV = FV 'SV дорівнює стану порту

cntr = cntr + 0.5' лічильник + 0.5

End If

If J = 0 Then Exit Do 'якщо користувач натиснув Стоп

Петля

End Sub

Private Sub Command2_Click()

Зупинка циклу

Якщо користувач натиснув Стоп

J = 0 рік

End Sub

Private Sub Command3_Click()

J = 0' рахунок - стоп

DlPortWritePortUchar &H37A, 0 'відновлюємо стан шини D0-D7

Unload Me 'вихід із програми

End Sub

'Підпрограма відображення частоти

Public Sub FrequencyShow()

Label6.Caption = Int(cntr) & "Hz" 'відображаємо результат

cntr = 0 'лічильник у нуль

Pause (0.2) 'затримка. Потрібна для вимірювання малих частот

FTV = GetTickCount 'запам'ятали системний час у мілісекундах

End Sub

'Підпрограма затримки. Формат виклику: Pause (число секунд)

Public Sub Pause(Value As Single)

Dim Start, Finish

Start = Timer

Do While Timer < Start + Value

DoEvents

Петля

Finish = Timer

End Sub

*******************************************

І все? Запитайте ВИ. Та й усе. Ось і вся програма, яка чомусь працює.

Ø Як бачите код практично один і той же для різних бібліотек, тому на прикладах ми будемо розглядати код тільки з бібліотекою dlportio.DLL

Якщо уважно проаналізувати код програми частотомір, можна помітити, що до лічильника додається 0.5,

cntr = cntr + 0.5,

а не 1. Справа в тому, що даний код програми вважає перехід стану порту як з 1 в 0, так і навпаки з 0 в 1, тому щоб рахувати частоту треба або додавати 0.5, а потім виводити

Label1.Caption = Int(cntr) & "Hz"

Або додавати 1

cntr = cntr + 1,

А потім виводити

Label1.Caption = Int(cntr/2) & "Hz"

Ось така математика.

До речі, а ви не пробували посадити який-небудь датчик на обертовий вал якогось двигуна. Напевно, за допомогою цієї програми у вас вийде чудовий тахометр J

Ну що, поїхали далі.

Беремо той самий генератор імпульсів і замість резистора R2 або R1 впаюємо терморезистор (автор статті сходив в автомагазин і за 30 руб. купив термодатчик від ВАЗ-2101). Цей термодатчик змінює опір в залежності від температури (3200 Ом при температурі +140С та 143 Ома при температурі +1000С.) Якщо ми змінюємо опір, то змінюється і частота генератора, отже ми отримуємо перетворювач температура-частота, тобто. цифровий термометр. Хочу звернути вашу увагу на те, що зміна опору в залежності від температури відбувається не лінійно, що видно на наступному графіку,

Інше життя LPT порту
Рис. 5

тому "пояснити" комп'ютеру, що 100 імпульсів - це 20 градусів, а 110 імпульсів - це 21 градус буде не дуже просто, але проте можливо. Питання лише у розмірах коду та алгоритмі.

Якщо замість резистора встановити датчик палива від бензобака, то ми отримаємо індикатор рівня рідини. Відбудовувати такий індикатор зручніше в такий спосіб:

1. Вимірюємо частоту імпульсів при порожній ємності

2. Доливаємо якийсь обсяг (залежно від того, яку градацію – точність ви хочете отримати) і знову заміряємо частоту

3. І так до верху вашої ємності.

Можна побудувати індикатор рівня рідини за іншим принципом, якщо зібрати конструкцію на малюнку нижче.

Інше життя LPT порту
Рис. 6

Якщо змінюється рівень рідини, то змінюється і положення поплавця з магнітом, замикаються (розмикаються) відповідні геркони. Трубку найкраще використовувати тонкостінну пластикову. Схема цього пристрою така:

Інше життя LPT порту
Рис. 7

Обробляти інформацію з такого пристрою можна за таким алгоритмом.

  1. Перевести шини за адресою &H378 в режим читання.
  2. Порожній бак - 255
  3. Один поділ знизу - 254
  4. Два поділки знизу - 252
  5. Три поділки - 248
  6. Чотири поділки – 240
  7. П'ять поділів – 224 і т.д.

Деякі можуть мені заперечити, що не обов'язково переводити шини D0-D7 в режим читання, і так все працюватиме. На це можу відповісти лише наступне – хто хоче, хай не перекладає. Дискутувати на цей предмет – не буду. Якщо порт &H378 не стоїть в режимі прийому даних і на контакті, що використовується (у нашому випадку 2 - D0 ) присутня логічна "1", то генератор працювати не буде. Вихідний струм шини D0-D7 у режимі передачі даних більший, ніж вихідний струм КМОП мікросхеми (561ЛА7), тому генерації не буде. Звичайно, якщо закоротити пінцетом контакт на землю, то жодного струму не вистачить. Але мені здається, не важко набрати зайву строчку коду і зробити так, як радять розробники комп'ютерного заліза.

Давайте розглянемо зворотний процес, тобто. процес передачі даних із комп'ютера на ваш пристрій. Візьмемо для прикладу той самий генератор імпульсів, тільки трохи змінимо його схему.

Інше життя LPT порту
Рис. 8

Після подачі живлення на генератор ми раптом виявимо, що генератор не працює. А працюватиме він лише тоді, коли на вході 2 елементи D1.1 з'явиться рівень логічної "1".

DlPortWritePortUchar &H378, 1

І все одразу запрацювало. Ось вам генератор, керований комп'ютером. Ну, генератор це все дрібно, хоча треба віддати належне цьому пристрою - в багатьох електронних схемах за основу взятий саме генератор імпульсів. А чи не підключити нам щось серйозніше до комп'ютера.

Ось така схема

Інше життя LPT порту
Рис. 9

Вхід даного пристрою підключаємо до будь-якого виходу, що нам сподобався, наприклад до D3, вхід GND з'єднуємо із загальним проводом роз'єму, а ось +12В доведеться взяти від окремого джерела живлення. Реле можна взяти автомобільне. Взагалі, всі параметри елементів можуть бути зовсім іншими (я брав те, що було під рукою).

DlPortWritePortUchar &H378, 8

або

DlPortWritePortUchar &H378, 9

або

DlPortWritePortUchar &H378, 10

Головне, щоб на шині D3 була балка "1". Реле спрацює, а ось що ви до нього підчепите – це вже ваша справа. Взагалі при комутації високовольтних пристроїв необхідно (про всяк випадок) захиститися від короткого замикання, від пробою на корпус, загалом зробити так. Щоб у разі аварії ваш чудовий порт LPT не згорів. Тому для таких підключень зручно використовувати гальванічну розв'язку порту та вашого пристрою, наприклад через оптопару.

Інше життя LPT порту
Рис. 10

Якщо у вашому пристрої все "згорить", то через світло - на жаль, не пройде струм, не придумали ще такого.

На цьому друга частина закінчується. Чи буде третя частина - думаю буде, а ось про що в ній йтиметься.

Автор: Клюшников Олексій, м. Іваново; Публікація: cxem.net

Дивіться інші статті розділу Комп'ютери.

Читайте та пишіть корисні коментарі до цієї статті.

<< Назад

Останні новини науки та техніки, новинки електроніки:

Машина для проріджування квітів у садах 02.05.2024

У сучасному сільському господарстві розвивається технологічний прогрес, спрямований на підвищення ефективності догляду за рослинами. В Італії було представлено інноваційну машину для проріджування квітів Florix, створену з метою оптимізації етапу збирання врожаю. Цей інструмент оснащений мобільними важелями, що дозволяють легко адаптувати його до особливостей саду. Оператор може регулювати швидкість тонких проводів, керуючи ним із кабіни трактора за допомогою джойстика. Такий підхід значно підвищує ефективність процесу проріджування квітів, забезпечуючи можливість індивідуального налаштування під конкретні умови саду, а також сорт та вид фруктів, що вирощуються на ньому. Після дворічних випробувань машини Florix на різних типах плодів результати виявились дуже обнадійливими. Фермери, такі як Філіберто Монтанарі, який використовував машину Florix протягом кількох років, відзначають значне скорочення часу та трудовитрат, необхідних для проріджування кольорів. ...>>

Удосконалений мікроскоп інфрачервоного діапазону 02.05.2024

Мікроскопи відіграють важливу роль у наукових дослідженнях, дозволяючи вченим занурюватися у світ невидимих ​​для ока структур та процесів. Однак різні методи мікроскопії мають обмеження, і серед них було обмеження дозволу при використанні інфрачервоного діапазону. Але останні досягнення японських дослідників із Токійського університету відкривають нові перспективи вивчення мікросвіту. Вчені з Токійського університету представили новий мікроскоп, який революціонізує можливості мікроскопії в інфрачервоному діапазоні. Цей удосконалений прилад дозволяє побачити внутрішні структури живих бактерій із дивовижною чіткістю в нанометровому масштабі. Зазвичай мікроскопи в середньому інфрачервоному діапазоні обмежені низьким дозволом, але нова розробка японських дослідників дозволяє подолати ці обмеження. За словами вчених, розроблений мікроскоп дозволяє створювати зображення з роздільною здатністю до 120 нанометрів, що в 30 разів перевищує дозвіл традиційних метрів. ...>>

Пастка для комах 01.05.2024

Сільське господарство - одна з ключових галузей економіки, і боротьба зі шкідниками є невід'ємною частиною цього процесу. Команда вчених з Індійської ради сільськогосподарських досліджень – Центрального науково-дослідного інституту картоплі (ICAR-CPRI) у Шимлі представила інноваційне вирішення цієї проблеми – повітряну пастку для комах, яка працює від вітру. Цей пристрій адресує недоліки традиційних методів боротьби зі шкідниками, надаючи дані про популяцію комах у реальному часі. Пастка повністю працює за рахунок енергії вітру, що робить її екологічно чистим рішенням, яке не вимагає електроживлення. Її унікальна конструкція дозволяє відстежувати як шкідливі, так і корисні комахи, забезпечуючи повний огляд популяції в будь-якій сільськогосподарській зоні. "Оцінюючи цільових шкідників у потрібний час, ми можемо вживати необхідних заходів для контролю як комах-шкідників, так і хвороб", - зазначає Капіл. ...>>

Випадкова новина з Архіву

Планшет Eewrite Janus з екранами E Ink та LCD 09.05.2019

Компанія Eewrite анонсувала планшет Janus. Планшет оснащений кольоровим 9,7-дюймовим РК-дисплеєм з роздільною здатністю 2408 х 1536 пікселів і дисплеєм E Ink Carta з такою самою діагоналлю і роздільною здатністю 1200 х 825 пікселів. Заявлено підтримку введення цифровим пером Wacom (4096 рівнів чутливості до натискання).

Janus базується на шестиядерному процесорі MediaTek MT8176 з 2 Гбайт оперативної пам'яті, флеш-накопичувачем місткістю 32 Гбайт і слотом для карт пам'яті microSD об'ємом до 128 Гбайт.

Специфікації пристрою включають модулі Wi-Fi, Bluetooth, GPS-ресівер, 8-Мп камеру, батарею ємністю 5000 мАч, порт USB Type-C, роз'єм HDMI і стереодинаміки. Товщина корпусу планшета – 9,8 мм. Також повідомляється про опціональну підтримку 4G LTE.

Крім розташованих на одній стороні корпусу планшета кнопок живлення та регулювання гучності, з іншого боку є спеціальна кнопка для перемикання між кольоровим і чорно-білим дисплеями.

Скоро новинка буде доступна для замовлення за ціною $399.

Інші цікаві новини:

▪ Хробаки проти старіння

▪ Підвищення якості марсіанського ґрунту

▪ ТБ заважає немовлятам вчитися говорити

▪ Вираз котячої морди

▪ Нанотрубочки відштовхують воду

Стрічка новин науки та техніки, новинок електроніки

 

Цікаві матеріали Безкоштовної технічної бібліотеки:

▪ Розділ сайту Посадові інструкції. Добірка статей

▪ стаття Сміятися, право, не грішно з усього, що здається смішно. Крилатий вислів

▪ Що відбувалося у США у ХIХ ст.? Детальна відповідь

▪ стаття Черговий пульта керування з прийому сигналів. Типова інструкція з охорони праці

▪ стаття Технологічні поради. Енциклопедія радіоелектроніки та електротехніки

▪ Стабілізатор напруги на 35 вольт. Енциклопедія радіоелектроніки та електротехніки

Залишіть свій коментар до цієї статті:

ім'я:


E-mail (не обов'язково):


коментар:





All languages ​​of this page

Головна сторінка | Бібліотека | Статті | Карта сайту | Відгуки про сайт

www.diagram.com.ua

www.diagram.com.ua
2000-2024