メニュー English Ukrainian ロシア語 ホーム

愛好家や専門家向けの無料テクニカル ライブラリ 無料のテクニカルライブラリ


無線電子工学および電気工学の百科事典
無料のライブラリ / 無線電子および電気機器のスキーム

LPTポートのもう一つの人生。 パート 2. 無線エレクトロニクスと電気工学の百科事典

無料のテクニカルライブラリ

無線電子工学と電気工学の百科事典 / コンピューター

記事へのコメント 記事へのコメント

LPT ポートで信号を記録するには、1 つのスイッチと 270 オームから 1 kオームの抵抗を持つ 1 つの抵抗で構成される回路 (図 8) を組み立てることをお勧めします。 スイッチ (ボタン) SW1 ~ SW0 がこの位置にあると、上部のすべての接点に論理「0」が表示され、いずれかが閉じられると、対応する接点に論理「7」が表示されます。 ピンは、D2 ~ D9 バス (ピン 378 ~ 15、アドレス &H13) または ERROR、SELECT、PAPER END、ACK、および -BUSY (ピン 12、10、11、379、および XNUMX、アドレス &HXNUMX) に直接接続できます。 。

LPTポートのもう一つの人生
図。 1

LPTポートからのデータを表示するには、次のスキームをお勧めします。

LPTポートのもう一つの人生
図。 2

公称値が 1 ~ 8 オームの抵抗 R270 ~ R330、任意の LED、たとえば AL307B。 このような回路は電力を必要とせず、とにかくすべてが光ります。 私はすべての信号を自分自身にもたらしました、すべてがすぐに目に見えます。 一般に、valery-us3leh.narod.ru/dlpt.html から LPT 4D HARD Analyzer プログラムをダウンロードすることを強くお勧めします。 ヴァレリー・コフトゥン著。 このプログラムの助けを借りて...一般的に、あなたは自分の目で見るでしょう。

K561LA7 チップ上に方形パルス発生器を組み立ててみましょう。 発電機+5V。 実際には、すべてのデバイスを、たとえば 155、555 シリーズで信号が TTL レベルになるように組み立てる方が便利です。 ロジック「ゼロ」は 0 ~ 0,8V、ログ「ワン」は 2,4 ~ 4,2V。 561 シリーズの利便性は電源の多用途性にあり、+ 3V から + 12V まで同様に動作します。 したがって、超小型回路の選択は好みに応じて変わります。唯一の問題は、+ 5V以下の振幅を持つ方形パルスを取得することです。 単純なパルス発生器の図を図 3 に示します。

LPTポートのもう一つの人生
図。 3

ジェネレーター自体は要素 D1.1 ~ D1.3 で組み立てられており、出力パルスの前面をより「美しく」するために要素 D1.4 を使用しただけです。 R1、R2、C1 - 周波数設定要素。 これらの要素のパラメーターを使用すると、生成周波数は約 5 ~ 7 Hz になります。 わかりやすくするために、ジェネレーターの動作は次のグラフの形式で表すことができます。

LPTポートのもう一つの人生
図。 4

インバータ出力 D1.4 は、LPT コネクタ (バス D2) のピン 0 に接続されます。 ジェネレーターを使用する前に、D0-D7 バスをデータ受信モードにする必要があります。 これを行うには、37 を &H43A に送信します。
コードは次です。 ご利用の方へ
input32.dll dlportio.dll DOS
Out&H37A, 43 DlPortWritePortUchar &H37A, 43 OUT&H37A、43

その後、ポート &H378 のポーリングを開始します。
コードは次です。 ご利用の方へ
input32.dll dlportio.dll DOS
IntegerAとしてのDimA=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 レベルが D0 バスに現れると、ログ「0」(青い行) - 最初のビットはゼロの値をとり、これは 2 + XNUMX を意味します。1+22+23+24+25+26+27 = 254。

したがって、D0 バス上の信号の変化を追跡できますが、1 秒間の変化の数を数えると、... 正しく、デジタル周波数カウンターが得られます。 知ること 入ってくる衝動 毎秒 について言うことができます ヘルツの周波数.

ということで、周波数カウンタプログラムです。 フォームには 3 つのボタンとラベルが必要です。 ボタン 1 は周波数メーターを開始、ボタン 2 は停止、ボタン 3 - 終了、ラベル - 周波数を示します。

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

inpout32.dllを使用している場合

Option Explicit

'ポートアドレスを操作するためのライブラリ宣言

プライベート宣言関数 Inp Lib "inpout32.dll" エイリアス "Inp32" (ByVal PortAddress As Integer) As Integer

プライベート宣言サブ Out Lib "inpout32.dll" エイリアス "Out32" (整数としての ByVal PortAddress、整数としての ByVal 値)

'ミリ秒をカウントするためのライブラリ宣言

プライベート宣言関数 GetTickCount Lib "kernel32" () As Long

Dim FTV AsLong'システム時間の初期値

Dim STV AsLong'システム時間の終了値

Dim FV As Integer 'FV はポートの初期状態

Dim SV AsInteger'SV-比較可能なポート状態

Dimcntr'パルスカウンター

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 'XNUMX秒経過したら結果を表示

FV = Inp(&H378) '常にアドレス &H378 をポーリングします

If FV <> SV then 'ポートの状態が変化した場合

SV = FV 'SV はポート状態と等しい

cntr = cntr +0.5'カウンター+0.5

終了する場合

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 バス状態を復元

アンロードしてプログラムを終了

End Subの

'周波数表示ルーチン

Public SubFrequencyShow()

Label1.Caption = Int(cntr) & " Hz" '表示結果

cntr = 0 'ゼロへのカウンター

一時停止 (0.2) ' 遅延。 低周波の測定に必要

FTV = GetTickCount 'システム時間をミリ秒単位で記憶しました

End Subの

'遅延ルーチン。 通話形式:一時停止(秒数)

パブリックサブポーズ(シングルとしての値)

薄暗い開始、終了

開始 = タイマー

Do While タイマー < 開始 + 値

DoEvents

ループ

フィニッシュ=タイマー

End Subの

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

dlportio.dllをお使いの方へ

Option Explicit

'ポートアドレスを操作するためのライブラリ宣言

プライベート宣言関数 DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte

プライベート宣言サブ DlPortWritePortUchar Lib "dlportio.dll" (ByVal ポート長、ByVal 値 As Byte)

'ミリ秒をカウントするためのライブラリ宣言

プライベート宣言関数 GetTickCount Lib "kernel32" () As Long

Dim FTV AsLong'システム時間の初期値

Dim STV AsLong'システム時間の終了値

Dim FV As Integer 'FV はポートの初期状態

Dim SV AsInteger'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 'XNUMX秒経過したら結果を表示

FV = DlPortReadPortUchar (&H378) '常にアドレス &H378 をポーリングします

If FV <> SV then 'ポートの状態が変化した場合

SV = FV 'SV はポート状態と等しい

cntr = cntr +0.5'カウンター+0.5

終了する場合

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 バス状態を復元します

アンロードしてプログラムを終了

End Subの

'周波数表示ルーチン

Public SubFrequencyShow()

Label6.Caption = Int(cntr) & " Hz" '表示結果

cntr = 0 'ゼロへのカウンター

一時停止 (0.2) ' 遅延。 低周波の測定に必要

FTV = GetTickCount 'システム時間をミリ秒単位で記憶しました

End Subの

'遅延ルーチン。 通話形式:一時停止(秒数)

パブリックサブポーズ(シングルとしての値)

薄暗い開始、終了

開始 = タイマー

Do While タイマー < 開始 + 値

DoEvents

ループ

フィニッシュ=タイマー

End Subの

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

そして全部? あなたが尋ねる。 はい、それだけです。 これがプログラム全体ですが、何らかの理由で機能します。

Ø ご覧のとおり、コードは異なるライブラリでもほぼ同じです。そのため、次の例では、ライブラリのみを使用したコードを検討します。 ドルポルティオ.DLL

周波数カウンターのプログラム コードを注意深く分析すると、カウンターに 0.5 が追加されていることがわかります。

中央 = 中央 + 0.5,

実際のところ、このプログラム コードはポート状態の 1 から 1 への遷移、および 0 から 0 へのポート状態の遷移を考慮しているため、周波数をカウントするには、1 を加算してから出力する必要があります。

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

または1を追加

中央 = 中央 + 1,

そして出力

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

これが数学です。

ところで、エンジンの回転軸にセンサーのようなものを取り付けてみたことはありますか。 おそらく、このプログラムの助けを借りて、素晴らしいタコメーター J を手に入れることができるでしょう。

さて、次に進みましょう。

同じパルス発生器を使用し、抵抗器R2またはR1の代わりにサーミスタをはんだ付けします(記事の著者は自動車店に行き、VAZ-30から2101ルーブルで温度センサーを購入しました)。 この温度センサーは温度に応じて抵抗値を変化させます (+3200 で 14 オーム)0+143の温度でCおよび100オーム0C.) 抵抗を変えると、発電機の周波数も変わります。つまり、コンバーターが得られます。 温度-周波数、つまりデジタル温度計。 次のグラフに見られるように、温度に応じた抵抗の変化は直線的には発生しないという事実に注意してください。

LPTポートのもう一つの人生
図。 5

したがって、100 パルスが 20 度、110 パルスが 21 度であることをコンピュータに「説明」することは、それほど簡単ではありませんが、それでも可能です。 問題はコードのサイズとアルゴリズムだけです。

抵抗器の代わりにガソリンタンクからの燃料センサーを取り付けると、液面インジケーターが得られます。 次のようにそのようなインジケーターを構築する方が便利です。

1. 空のタンクでパルス周波数を測定します

2. ある程度のボリュームを追加し(どのような階調 - 得たい精度に応じて)、再度周波数を測定します。

3. コンテナの最上部まで同様に続きます。

また、下図の構造を組み立てれば、別の原理で液面計を作ることもできます。

LPTポートのもう一つの人生
図。 6

液面が変化すると磁石付きフロートの位置も変化し、対応するリードスイッチが閉(開)します。 薄肉のプラスチックチューブを使用するのが最善です。 このデバイスのスキームは次のとおりです。

LPTポートのもう一つの人生
図。 7

このようなデバイスからの情報は、次のアルゴリズムに従って処理できます。

  1. アドレス &H378 のバスを読み取りモードにします。
  2. 空のタンク - 255
  3. 下から254分割-XNUMX
  4. 下から252分割-XNUMX
  5. 248つの部門-XNUMX
  6. 240分割 - XNUMX
  7. 224つの部門-XNUMXなど。

Ø D0 ~ D7 バスを読み取りモードにする必要はなく、これで機能すると反対する人もいるかもしれません。 これに対して私は次のように答えることしかできません。誰が望むとしても、翻訳しないでください。 この件については議論しません。 &H378 ポートがデータ受信モードではなく、使用されているピン (この例では 2 - D0 ) が論理「1」である場合、 ジェネレーターが機能しない。 データ転送モード時の D0-D7 バスの出力電流は CMOS チップ (561LA7) の出力電流より大きいため、電流は発生しません。 もちろん、ピンセットで接点をグランドに短絡すると、電流は十分に流れなくなります。 しかし、追加のコード行を入力して、コンピューター ハードウェアの開発者のアドバイスどおりに実行することは、それほど難しいことではないと私には思えます。

次に、逆のプロセスを考えてみましょう。 コンピューターからデバイスにデータを転送するプロセス。 たとえば、同じパルス発生器の回路を少し変更したものを考えてみましょう。

LPTポートのもう一つの人生
図。 8

発電機に電力を供給した後、突然発電機が動作していないことに気づきます。 また、論理レベル「2」が D1.1 要素の入力 1 に現れる場合にのみ機能します。

DlPortWritePortUchar &H378、1

そしてすべてがすぐにうまくいきました。 こちらはコンピューター制御の発電機です。 さて、この発生器はすべて小さいですが、このデバイスに敬意を表する必要があります。非常に多くの電子回路で、基礎として使用されているのはパルス発生器です。 もっと本格的なものをコンピュータに接続してみませんか。

ここにそのようなスキームがあります

LPTポートのもう一つの人生
図。 9

このデバイスの入力を任意の出力、たとえば D3 に接続し、GND 入力をコネクタの共通線に接続しますが、+ 12V は別の電源から取得する必要があります。 リレーは自動車に持ち込むことができます。 一般に、要素のすべてのパラメータは完全に異なる場合があります(私は手元にあったものを使用しました)

DlPortWritePortUchar &H378, 8

または

DlPortWritePortUchar &H378, 9

または

DlPortWritePortUchar &H378、10

重要なことは、D3 バスに「1」のログが存在することです。 リレーは機能しますが、それをどう受け取るかはあなた次第です。 一般に、高電圧デバイスを切り替えるときは、(万が一に備えて)ショートやケースの故障から身を守る必要があります。 事故が発生した場合に、素晴らしい LPT ポートが燃え尽きることがないようにするためです。 したがって、このような接続の場合は、フォトカプラなどを介してポートとデバイスのガルバニック絶縁を使用すると便利です。

LPTポートのもう一つの人生
図。 10

デバイス内のすべてが「燃え尽きた」場合、光を通して - 残念ながら、電流は流れません、彼らはまだそのようなことを思い付いていません。

ここで第二部は終了です。 第三部はあるのでしょうか - あると思いますが、内容は次のとおりです...

著者: Alexey Klyushnikov、Ivanovo; 出版物: cxem.net

他の記事も見る セクション コンピューター.

読み書き 有用な この記事へのコメント.

<<戻る

科学技術の最新ニュース、新しい電子機器:

昆虫用エアトラップ 01.05.2024

農業は経済の重要な分野の 1 つであり、害虫駆除はこのプロセスに不可欠な部分です。インド農業研究評議会 - 中央ジャガイモ研究所 (ICAR-CPRI) シムラーの科学者チームは、この問題に対する革新的な解決策、つまり風力発電の昆虫エアトラップを考案しました。このデバイスは、リアルタイムの昆虫個体数データを提供することで、従来の害虫駆除方法の欠点に対処します。このトラップは風力エネルギーのみで駆動されるため、電力を必要としない環境に優しいソリューションです。そのユニークな設計により、有害な昆虫と有益な昆虫の両方を監視することができ、あらゆる農業地域の個体群の完全な概要を提供します。 「対象となる害虫を適切なタイミングで評価することで、害虫と病気の両方を制御するために必要な措置を講じることができます」とカピル氏は言います。 ... >>

地球磁場に対するスペースデブリの脅威 01.05.2024

地球を取り囲むスペースデブリの量が増加しているという話を聞くことがますます増えています。しかし、この問題の原因となるのは、現役の衛星や宇宙船だけではなく、古いミッションからの破片も含まれます。 SpaceX のような企業によって打ち上げられる衛星の数が増えると、インターネットの発展の機会が生まれるだけでなく、宇宙の安全保障に対する深刻な脅威も生まれます。専門家たちは現在、地球の磁場に対する潜在的な影響に注目している。ハーバード・スミソニアン天体物理学センターのジョナサン・マクダウェル博士は、企業は急速に衛星群を配備しており、今後100年間で衛星の数は000万基に増加する可能性があると強調する。これらの宇宙艦隊の衛星の急速な発展は、地球のプラズマ環境を危険な破片で汚染し、磁気圏の安定性を脅かす可能性があります。使用済みロケットからの金属破片は、電離層や磁気圏を破壊する可能性があります。これらのシステムは両方とも、大気の保護と維持において重要な役割を果たします。 ... >>

バルク物質の固化 30.04.2024

科学の世界には数多くの謎が存在しますが、その一つにバルク物質の奇妙な挙動があります。それらは固体のように振る舞うかもしれませんが、突然流れる液体に変わります。この現象は多くの研究者の注目を集めており、いよいよこの謎の解明に近づいているのかもしれません。砂時計の中の砂を想像してください。通常は自由に流れますが、場合によっては粒子が詰まり始め、液体から固体に変わります。この移行は、医薬品生産から建設に至るまで、多くの分野に重要な影響を及ぼします。米国の研究者は、この現象を説明し、理解に近づけようと試みました。この研究では、科学者たちはポリスチレンビーズの袋からのデータを使用して実験室でシミュレーションを実施しました。彼らは、これらのセット内の振動が特定の周波数を持っていること、つまり特定の種類の振動のみが材料を通過できることを発見しました。受け取った ... >>

アーカイブからのランダムなニュース

銅の水差しの中で生き残ることができるのはホッタビッチ老人だけ 10.09.2005

インド人は、銅製の容器に水を貯めることで病気が防げることを長い間知っていました。 ノーサンブリア大学 (英国) とパンジャブ大学 (インド) の微生物学者による新しい研究では、銅製水差しの抗菌特性が確認されました。

科学者たちは、インドのすべての家庭にある瓶に、大腸菌培養液を混入した滅菌水のサンプルと、汚染された川からの水のサンプルを入れました。 すべての瓶のバクテリア数は、水 XNUMX ミリリットルあたり XNUMX 万個から XNUMX 日でゼロになりました。

同時に、プラスチック製またはセラミック製の水差しの水中の微生物の数は同じままでした. どうやら、水に溶けた微量の銅が微生物を殺します。

その他の興味深いニュース:

▪ マッハ エクストリーム エクスプレス SSD

▪ 皮膚プロフィロメトリー

▪ 天の川で発見されたエイリアンの星

▪ 血液から脳

▪ 電動スクールバス

科学技術、新しいエレクトロニクスのニュースフィード

 

無料の技術ライブラリの興味深い資料:

▪ サイトセクション 最も重要な科学的発見。 記事の選択

▪ 記事 すべては可能な限り最高の世界で最高のために。 人気の表現

▪ 記事 サイモンとガーファンクルの曲の 2 つが 74:XNUMX としてリストされているのはなぜですか? 詳細な回答

▪ 記事 システムプログラマー。 仕事内容

▪ 記事 非同期モーター。 無線エレクトロニクスと電気工学の百科事典

▪ 記事 ADP3301 チップの電圧安定器。 無線エレクトロニクスと電気工学の百科事典

この記事にコメントを残してください:

Имя:


Eメール(オプション):


コメント:





このページのすべての言語

ホームページ | 図書館 | 物品 | サイトマップ | サイトレビュー

www.diagram.com.ua

www.diagram.com.ua
2000-2024