Безкоштовна технічна бібліотека ЕНЦИКЛОПЕДІЯ РАДІОЕЛЕКТРОНІКИ ТА ЕЛЕКТРОТЕХНІКИ Інше життя LPT порту. Частина 3. Енциклопедія радіоелектроніки та електротехніки Енциклопедія радіоелектроніки та електротехніки / Комп'ютери Кожен з вас напевно (якщо ви читаєте цей текст) стикався у своєму житті з флоппі, CD і т.д. дисководами, принтерами, сканерами загалом пристроями, до складу яких входить кроковий двигун. Ось зараз його включатимемо. На малюнку нижче схема, яку я виявив в інтернеті. Нехай простить мене автор, я не даю посилання на нього (просто не пам'ятаю, де я його знайшов), але якщо він побачить цю статтю, то дізнається про свою схему. Насправді, все чесно, все працює. Можна викласти ще купу всяких схем, але зараз важливо зрозуміти не принцип роботи схеми, а принцип подачі управляючих сигналів на двигун. На діаграмі нижче – це видно. На кожну з обмоток двигуна по черзі подаються імпульси, іноді на двох обмотках одразу є високий рівень сигналу. Якщо ви подивіться на ліву частину діаграми і помітите D0-D3, то відразу зрозумієте, куди я хилю. Ось що ми маємо зрештою, ну і, звичайно ж, комп'ютер з LPT портом. Живлення для двигуна доведеться робити самому, причому для кожного типу двигуна – своє. Відповідно до діаграми на входи A, B, C, D ми подаємо послідовно 3, 2, 6, 4, 12, 8, 9, 1 через H378. Причому звідки починати не критично, питання у збереженні послідовності та повторення її по "кругу" або стільки, скільки потрібно. Якщо змінити напрям послідовності (задом-наперед), обертання двигуна буде в протилежний бік. Дана послідовність дає команду двигуну робити півкроки (це залежить від конструкції двигуна), для керування повним кроком послідовність буде такою 3, 6, 12, 9. І тут мені на очі потрапив семисегментний індикатор на світлодіодах від калькулятора. Рішення прийшло миттєво. Ось як улаштований такий індикатор. Для простоти я намалював 4-розрядний (в моєму індикаторі їх 12) семисегментний індикатор на світлодіодах. На розряди 1-4 подаємо 0, але в сегменти подаємо + харчування (до кожного типу індикатора свої параметри харчування). Усі сегменти об'єднані, тому запалювати такий індикатор потрібно динамічною індикацією. Хто хоч раз сам збирав електронний годинник, той знає, що це таке, але про всяк випадок розглянемо це докладніше. Крок 1. Перший розряд подається низький рівень сигналу, але в сегментах (високим рівнем) виставляється код цифри, що ми хочемо побачити. Крок 2. На другий розряд подається низький рівень сигналу, але в сегментах (високим рівнем) виставляється код цифри, що ми хочемо побачити. Крок 3. На третій розряд подається низький рівень сигналу, але в сегментах (високим рівнем) виставляється код цифри, що ми хочемо побачити. Крок 4. На четвертий розряд подається низький рівень сигналу, але в сегментах (високим рівнем) виставляється код цифри, що ми хочемо побачити. І знову по новому кроку 1, 2 і т.д. Все це відбувається дуже швидко, тому наші очі не встигають побачити мерехтіння цифр. Беремо наш індикатор та розряди 1, 2, 3, 4 саджаємо на STROBE(1), AUTO(14), INIT(16), SELECT IN(17). Це буде керування розрядами, а сегменти A, B, C, D, E, F, G садимо на D0, D1, D2, D3, D4, D5, D6. Щоб запалити в першому розряді, наприклад 1 (сегменти B, C), треба подати на адресу &H378 число 6, а на адресу &H37A - 197. А ось і готова програма - електронний годинник. На формі дві кнопки. Перша запускає годинник, друга зупиняє. Параметр Z = 2 підбирав досвідченим шляхом. Якщо затримку не ставити, цифри зливаються, дуже швидко все відбувається, і світлодіод не встигає згаснути. Варіант явний Оголошення бібліотеки для роботи з адресами порту LPT 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) Dim I, J As Integer Dim Z As Single Dim A As String Private Sub Command1_Click() J = 1 'дозвіл циклу Z = 0.004' затримка Do While J <> 0 DoEvents A = Mid$(Time$, 5, 1) 'зчитуємо одиниці хвилин DlPortWritePortUchar &H37A, 197' дозволяємо засвітитися першому розряду writetime 'відображаємо одиниці хвилин A = Mid$(Time$, 4, 1) 'зчитуємо десятки хвилин DlPortWritePortUchar &H37A, 198' дозволяємо засвітитися другому розряду writetime 'відображаємо десятки хвилин A = Mid$(Time$, 2, 1) 'зчитуємо одиниці годинника DlPortWritePortUchar &H37A, 192' дозволяємо засвітитися третьому розряду writetime 'відображаємо одиниці годинника A = Mid$(Time$, 1, 1) 'зчитуємо десятки годин DlPortWritePortUchar &H37A, 204' дозволяємо засвітитися четвертому розряду writetime 'відображаємо десятки годин If J = 0 Then Exit Do Петля DlPortWritePortUchar &H378, 0 End Sub Public Sub writetime() Select Case Val(A) Case Is = 0 I = 63' код 0 для семисегментного індикатора Case Is = 1 I = 6' код 1 для семисегментного індикатора Case Is = 2 I = 91' код 2 для семисегментного індикатора Case Is = 3 I = 79' код 3 для семисегментного індикатора Case Is = 4 I = 102' код 4 для семисегментного індикатора Case Is = 5 I = 109' код 5 для семисегментного індикатора Case Is = 6 I = 125' код 6 для семисегментного індикатора Case Is = 7 I = 7' код 7 для семисегментного індикатора Case Is = 8 I = 255' код 8 для семисегментного індикатора Case Is = 9 I = 239' код 9 для семисегментного індикатора End Select DlPortWritePortUchar &H378, I 'пишемо код для семисегментного індикатора Pause (Z) 'затримка End Sub Private Sub Command2_Click() J = 0 рік DlPortWritePortUchar &H378, 0 End Sub 'Процедура затримки. Формат виклику: Pause (число секунд) Public Sub Pause(Value As Single) Dim Start, Finish Start = Timer Do While Timer < Start + Value DoEvents Петля Finish = Timer End Sub
Ось так це у житті працює. Я не описуватиму підключення люмінесцентних індикаторів, але скажу чесно пробував – працює. На сітки розрядів подавав позитивний потенціал, нитка напруження заземлив, а сегменти подавав 1 через D0-D6. Все світиться. РКІ індикатори не пробував, треба придумати, де взяти 64 Гц. Якщо хтось підключить - буду радий отримати від вас схему. До речі цікава думка - можна зробити рядок, що біжить, на світлодіодах для відображення буквенно-цифрової інформації. Загалом зайвий раз переконуюсь, що цей порт – чудовий інструмент для творчості. Ось ще невелика тема щодо електродвигунів. Не у всіх є крокові двигуни, та й не завжди це зручно та потрібно. Давайте спробуємо обійтися простим двигуном з редуктором, наприклад, для точного переміщення деякого пристрою в горизонтальній площині. Нехай це буде олівець чи фломастер. Двигун пов'язаний з понижувальним редуктором, який у свою чергу пов'язаний з віссю, що має різьблення. На осі з різьбленням жорстко закріплений диск із металевими секторами (контактними майданчиками або прорізами для оптики), наприклад, такий
або Це вже не принципово, важливо те, що, знаючи крок різьблення, наприклад, крок 1 мм, секторів у нас 4, значить, за повний оберт диска каретка просунеться вперед на 1 мм, а за чверть обороту - на 0,25 мм. Кількість секторів може бути будь-якою – кому скільки захочеться. Але що ми тепер маємо.
Йдемо далі. Програма керування двигуном працює, наприклад, за таким алгоритмом.
Управління йде через шини D0-D7 та/або через порт &H37A, команди від виконавчих пристроїв (датчиків) приходять на &H379 та/або &H378. Загалом, далі ваша фантазія та можливості. Той самий принцип логічно використовуватиме переміщення каретки в перпендикулярній площині. І ось вам верстат із переміщенням у двох напрямках. Тобто. побудувати вдома верстат з ЧПУ (числовим програмним управлінням) цілком реально. Автор: Клюшников Олексій, м. Іваново; Публікація: cxem.net Дивіться інші статті розділу Комп'ютери. Читайте та пишіть корисні коментарі до цієї статті. Останні новини науки та техніки, новинки електроніки: Машина для проріджування квітів у садах
02.05.2024 Удосконалений мікроскоп інфрачервоного діапазону
02.05.2024 Пастка для комах
01.05.2024
Інші цікаві новини: ▪ Нервові клітини таки відновлюються ▪ Алкоголь заважає пережити трагедію Стрічка новин науки та техніки, новинок електроніки
Цікаві матеріали Безкоштовної технічної бібліотеки: ▪ розділ сайту Заводські технології вдома. Добірка статей ▪ стаття Гай Юлій Цезар. Знамениті афоризми ▪ стаття Що таке кераміка? Детальна відповідь ▪ стаття Пістолет-пилосос. Домашня майстерня ▪ стаття Друге дихання холодильника. Енциклопедія радіоелектроніки та електротехніки ▪ стаття Проста тангента для буржуазної станції. Енциклопедія радіоелектроніки та електротехніки
Залишіть свій коментар до цієї статті: All languages of this page Головна сторінка | Бібліотека | Статті | Карта сайту | Відгуки про сайт www.diagram.com.ua |