運動制御エンコーダ



説明

電気モーターのシャフトに二相エンコーダーが取り付けられたギアモーターによる簡単な回転制御. 私は16F84A私が持っていたし、このために、私は16F628Aを使用燃やし試験中. プログラムはまだ16F84Aのメモリにあります, 適切なバージョンで.

プロジェクト

いいえgiudicoこれはそれ自体で完成したプロジェクトです, 私はまだ持っています のためのいくつかのアイデア 自分の目的に使える場所. 私が読んだとき、私は好奇心からそれをしました この議論.

A話し合いに似たタイプの仕事を売り始めました, 私はなんとかこのプロジェクトを元に戻すことができました. 私は関わってきました ディレイ期限 他の機能を追加したい場合.

コンポーネントをまとめる, インクルード ビデオ アセンブリがどのようにその仕事をすることができるかを示します.

プログラムはで開発されました プロトンベーシック, しかし、私はハイブリッドな方法で言うでしょう, アセンブリで書かれた多くのパーツが含まれているため, スペースを節約し、全体のパフォーマンスを向上させる.

もともとは16F84A用に書かれました 4 メガヘルツ, 構成のバリエーションとのみ互換性のある他のマイクロピンにも適合できることを期待して. タイプ16F18xxの拡張クラスのマイクロに適合するかどうかはわかりません. アセンブリがいくつかの点で異なる可能性があることに疑問があります.

私に起こった面白いこと, 私が使っていたマイクロが 4 Mhzとクォーツを置きます 20 メガヘルツ. 時々それはうまくいくことさえできました.

Quこのプロジェクトでは、重要なこのタイプのギアモーターを使用します 11 モーターの各回転のパルス, その後、比率で削減されます 1:600 ウォームギア減速機から. フォーラムディスカッションとして2ラウンドを行う, 数える必要があります 13200 パルス. 計算は次のようになります:

2 xになります 600 バツ 11 = 13200.

少なくともそれは私がシリアルレポートから見ることができるものです, 私が使用しているギアモーターで.

それを行うという考えは別として 2 ターン, リクエストのように, 機能ははるかに優れています, さらに数えることができます 65500 パルス, に近いでしょう 10 シャフトの回転が遅い.

遅いシャフトのナットねじを結合して直線運動をすることを考えることができます, これにより、 1:6600, モーションの復帰のリスクを冒さずに停止するという利点があります. 実際、減速機は元に戻せず、負荷がかかっても低速シャフトは元に戻りません。.

彼はしもべとして自分自身を使うことができました, 数度の動きでも可能.

このプログラムは、減速比またはパルス数が異なる別のアセンブリにも適しています。. やや高いカウント率が達成できるようです.

プログラムでは、いくつかの便利なコマンドを受け入れます, 別のマスターデバイスに関連付けられているものは、これらのプロジェクトのいくつかの動きを調整することができます. コントロールのEEPROMに最大16個の最も頻繁なコマンドを記憶する可能性もあります.

たとえば、衛星による皿のポインティングなど, または養鶏場のドア制御.

スキーム

L同じ材料

エンコーダの位置をEEPROMに時間内に保存できるように設計されています, 電源がないとき. 次に、最後のデータを回復し、停止した同じポイントから高精度で移動できるようにします.

マイクロコントローラのピンにあるダイオードは、iを維持するのに役立ちます 5 回路への電圧が急激に低下しているときでもボルト, コンデンサC3を介して. 研究をする, 私は彼らが最も役立つことがわかりました 8 EEPROMにバイトを保存するためのms. この場合、保存する必要があります 4 バイト. Con i 100 メートルF再起動に必要なすべてのデータを保存できます. しかし、豊富なままでいる方が良いので、私は間違いをしないことを選びました 330 メートルF.

リレーを使用すると、DCまたはACモーターで作業することが可能です, 速度制御がないという犠牲を払って. いずれにせよ、わずかな変更で速度制御を取り付け、2つの出力を使用して回転方向をアクティブにするのは簡単です。.

ソフトウェア

教育ファームウェアの使用

前提:

プログラムソースがコメントしています 豊富 あたり ヘルプ 書かれていることを理解する, 多分, その後の期間usally MAINTENANCEでn個E.

N最新バージョンでは、気分を良くするために多くの調整が必要でした あたり quこのチェ がある たくさんおよび組み立て中の部品. もしそうなら ウォッチドッグを置くことも考慮に入れる, その ある時点でプログラムがクラッシュした場合に備えて, マイクロがリセットされます. 特に停電が検出された場合, EEPROMにデータを保存した後にマイクロを再起動するために必要.

私はあなたを採用しましたnエンコーダ数が最小および最大として定義された値を超えないことに特に注意してください, DRIFTとMAXLIMITです (以下の定義を参照してください).

英語でコメントしました, ビデオは全世界に展示されており、おそらくインクルード イタリア人.

ヘッダー内xx.Incには、プログラムの他の部分で設定を忘れることなく、1か所で設定を変更できるようにする方法で多くの定義があります。. (xx 使用中のバージョンの番号です). プログラム名にも同じスタイルが続きます.

16F84Aまたは16f628Aを使用できるようにするために2つあります, すべてのEEPROMを使用できるように. これはコンパイルする前に選択する必要があります.

ハードウェア使用の差別化されたコンパイルを決定する最初の2つの定義に注意してください.

オプションは、:

DOTOGGLE

アクティベーションボタンまたは連絡先を許可するために使用されます, (ダイアグラムで実行) 周期的に動作する. この方法では、動きを開始および停止することができます, ソフトウェアリミットスイッチに達する前でも.

WITH_RS232

DTXDピンとRXDピンへのシリアル通信の追加を決定します.

シリアルで使用するピン割り当ての変更はすべて許可されます, しかし、私はそれをお勧めしません. 実際、私はこの回路が18F84Aと互換性のあるピンである他のマイクロコントローラーをマウントすることも可能になると予測しました.

このようにして、プログラム機能を拡張し、おそらくより高いクラスのマイクロコントローラーでパフォーマンスを向上させることが可能になります.

WITH_OSC

2つの制限内で動きを振るために使用されます. 以下のコマンドの説明を参照してください.

ここでは、別のオプションをアクティブにするために、コンパイルから除外する条件が設定されています, タイマーの使用など. すべてを合わせる場所がないので.

WITH_GOTO

特定の位置に移動コマンドを与えることができるオプション. 使用に興味がない場合, 除外できます.

WANTWDT

watcdogを使用するかどうかを決定するオプション. セキュリティを強化するためにさらに教育が必要なオプション, ただし、別のオプションを入力できない場合があります.

その他の関連する定義:

MAXLIMIT

エンコーダ値の上限を決定するために使用されます.

正しく設定すると便利です, 最初のテストの後, 中点値を定義するために (中間)

中間

自動的に計算. EEPROMに設定する初期値を定義するために使用します.

ドリフト

エンコーダカウンタがワードの制限を超える前の停止の計算を考慮した値 (それは私です 16 ビット).

エンジン停止後の回避事項, カウントは続きます, 運動中の慣性を考えると. だから請求書が, 例えば, ゼロに近く、減少し続けています, なるまでになります 65535 減少します. その理由はまさにこの計算によるものです.

待ち時間

モーターが完全に停止するのを待つためにミリ秒単位で使用される値. エンコーダから他のインパルスを検出した場合, その後、サイクルが繰り返されます.

デバッグ

問題が発生した場合にいくつかの検証テストを行うために使用されます.

どのように使用するために

最初の方法 ボタンコマンド.

単一の入力は、停止として定義されたポイントに向かってモーションを開始するように設計されています. アース接点を閉じる, プログラムは、最も遠いソフトウェアリミットスイッチへのパスを決定します.

上記のように, すでにプログラムされています, 接点はリミットスイッチに達する前に動きを止めることができます. 必要に応じて、モーション中に停止するこの機能を無効にすることができます.

連絡先が閉じられるとすぐに, おそらく数ミリ秒の遅延があります, 動きが始まり、LEDが (図のLED0) エンジンが作動している間オンになります. 私の実験では、トリコロールLEDを使用しました, したがって、LED0は青色です.

完全に動かなくなる前に慣性が発生した場合, このLEDが点滅して、完全停止時の待機フェーズを示します. 多分それはほんの少しのフラッシュです, 減速が速いとき.

ソフトウェアリミットスイッチに到着, 2つのリミットスイッチLEDの1つが点灯します. 私のトリコロールLEDでは、LED2は赤、LED1は緑です. 位置Aの終わりに緑が点灯し、位置Bに赤が点灯します.

モーターの回転方向に細心の注意を払ってください. 実際、エンコーダカウントが減少すると、モーションは位置Aに移動すると予想されます。. そのシリアル設定コマンドは小文字のpです.

エンコーダーがカウントを増やすとき, モーションが位置Bに移動します. そのシリアル設定コマンドは大文字のPです.

モーターを接続し、回転方向を決定する最初のフェーズで重要になります.

第二の方法 シリアルコマンド.

マイクロとの通信が予見されています, シリアル経由. これは、USB-RS232アダプタはマイクロの電圧レベルに対応していることができます. また、Bluetoothモジュールを使用することができます, 誰がマイクロの電圧レベルに焦点を必要とするかもしれません. 私はに適応する分圧器を置きます 3,3 ボルト脚RX Bluetoothモジュール. TXピンは深刻な問題を作成しません。.

ムーブメントを開始するための入り口も引き続き操作可能です, リミットスイッチまでの距離に応じて動きを決定します. この入力は、ボタン定義の図に示されています 実行.

シリアルからリストコマンド

制御モデルは、数字が続く最初の文字に基づいています, それが必要な場合.

このため、コマンドは特定の場合になります:

Xnnnnn

バツ 手紙を意味します (小文字または大文字) と n個 整数の1桁以上, ポジティブのみ. その他の記号または文字は、有効なエントリを終了します, 到達するまで 6 入力した文字.

コマンドを完了するには、次の条件があります:

  • コマンドはによって行われます 6 有効な文字, バッファコンプリート.

  • スペースまたはENTERが最後に配置されると、コマンドは終了します.

  • 左側の1つの消去文字 (バックスペース), エントリを中断します 電流.

シリアルのすべての信号, 動きを止める.

文字が到着したときに停止するように選択された理由は、ビットの受信の一時停止期間が、エンコーダに追いつくために必要な割り込みによって破損しているという事実によって与えられます。. これにより、ビットの測定値が失われるため、受信した文字は無効になります.

キャラクターを聞くとすぐに止まります, しかし、それはすぐにさらなるコマンドを受け取る準備ができていません, エンジン減速フェーズが引き継ぐため. また、WAITTIME定義がどのように設定されたかによって異なります.

数字のないコマンドは文字Aです, B, S, V, ザ・, C. 文字Vで。, 大文字で送信するか小文字で送信するかは関係ありません。最も関連性の高い情報が得られます。.

すべての文字について, 以下の詳細を参照してください.

タイプミスの場合, 文字を削除するコマンド (バックスペース) 値の入力を中断します.

シリアルから詳細なコマンド:

A

異なる モーションをアクティブにし、エンコーダカウントを減らします

B

異なる モーションをアクティブにしてエンコーダ数を増やします.

他のすべてのキャラクターは、開始時にモーションを停止します. Pこれ, モーションが停止するのを待って、コマンドを再入力することをお勧めします.

C

大文字では、リミットスイッチのEEPROM内のポインタを最初のポインタに移動します ロカ保存しました. 実際にはオフにすることさえ, データは残ります.

小文字の場合, デフォルト値をリセットする, 現在の場所へ.

詳細についてはNを参照してください.

G

小文字か大文字かを無差別に, モーターを次の桁で書かれたエンコーダー位置に移動させます.

M

無関心, 値の変更を許可します カウントの デルのエンコーダ.

次に、エンコーダ位置の新しい値を定義できます.

カウントを許容範囲内に戻し、制限を超えたという制約を排除すると便利な場合があります。. またはいくつかのずれを修正する.

ザ・

大文字, 2つのソフトウェアリミットスイッチ間の発振機能を設定します. 入力文字は発振を停止します, ただし、オプションを削除するには、コマンドを小文字で送信する必要があります.

P

小文字は、カウントのリミットスイッチを減らすように設定します. 受け入れられるためには、一貫した値を入力するように注意する必要があります. これはにあります Dエンコーダの方向 コマンドでカウントを増やす A.

リミットスイッチには大文字が適用されます の反対. これはにあります DエンコーダがコマンドBでカウントを増やす方向.

N

EEPROMメモリの位置を変更するコマンド. 1つまたは 原因 フィギュア, S大きいほど、より高い使用可能なメモリが選択されます. そうすることにより、異なるリミットスイッチ制限が使用されます.

S

Pコマンドと非常によく似ています, 現在のカウンター位置を保存するように命令するだけです, このため、文字の後に数字はありません. 現在の位置がリミットスイッチに近いため、有効として確立されていることを確認するのに役立ちます. 文字が小文字の場合は、サイドA用に保存する必要があります, 入力された値との一貫性が許可されます.

T

オプション, 他のオプションを犠牲にする, 番犬のように, スイングとGコマンド. このオプションを入力することもできます.
ndifferente, タイマーで出力を開始するために使用されます. この場合、最初の桁は2つのタイマーのどちらを使用するかを示します. それを考慮して 0 サイドAを参照し、 1 サイドBになります. あなたは以下まで受け入れます 9999, MAXTICKの定義を変更すると、秒以下になる場合があります. これは数えることです 5 timer0のミリ秒, 次に、デフォルトでに設定されます 200, だからあなたは分を得る.

V

無関心, リミットスイッチの値に関する情報を表示しますe Dell’encoder, プラスEEPROMのロケーション番号.

終了コマンドメッセージ:

各コマンドの最後に情報メッセージであります. プログラムメモリが限界にあります, 変更する価値はありません, 方法を知らずに.

メッセージは “[OK]” すべてが正しく行われた場合または “ERR n個” 操作エラーがあった場合.
あたり n個 エラーの考えられる説明があります. 以下のリストを参照してください.

1

欠陥制限を超えて移動しようとしたことを示します (ドリフトoMAXLIMIT)

2

入力した値が下限を超えています, リミットスイッチの限界とストロークの中央位置によって決定されます. (実際、中央値であるMIDDLEがあります)

3

入力した値が上限を超えています, MIDDLEと上限スイッチの間で決定.

4

値はMIDDLEより大きくなければなりません

5

値はMIDDLE未満である必要があります

6

送信された最初の文字が無効です, 破損している可能性があります.

7

EEPROMに書き込もうとしている場所が正しくありません

コンパイルでアクティブなコマンド なし RS232

シリアルを使用するオプションなしでコンパイルすることもできます.

このため、コマンドインパルスを使用することが計画されています ボタン1つで さまざまな機能を備えています.

機能はアドオンプログラムにあります OneButton.Inc これは、Timer0までの期間の測定リズムを使用できます。, LEDの点滅にも使用されます. このリズムは、ボタンを押すための有効な期間を決定します, 機械的インパルス振動をフィルタリングします.

ソフトウェアの遅延により期間を設定する可能性があります, 残念ながら、操作中にLEDの点滅を使用することはできません。. これらの部品を交換するのは不便だと思います.

すべての機能が有効になっているわけではありません, プログラムを少し以上に保つことを可能にする 600 機械の指示. このプログラムに役立つ定義のみを使用します, プログラムが OneButton.Inc 他のいくつかを提供します.

どれがアクティブか見てみましょう:

クリック

EEPROMに保存するために使用されます, プログラムフェーズで.

または一方向に移動するには, プログラムが最も遠いものを選択すること. モーションの停止にも適用されます (そのオプションを使用する場合).

ダブルクリック

プログラミングフェーズの開始と終了に使用されます. クリックして保存せずにもう一度押すと、EEPROMへの保存を回避することができます。. 制限はRAMにのみ適用されます. それらはEEPROMに保存されません.

長押し

方向Aに移動するために使用されます, プログラミング段階中. リミットスイッチは、DRIFTで定義された最大値に設定されます.

ショートクリックして

長押し

方向Bに移動するために使用されます, プログラミング段階中. 制限は最大に設定されます. リミットスイッチは、MAXLIMITで定義された最大値に設定されます.

これらの可能性により、プログラミングフェーズを開始するためにダブルクリックを必要とするシーケンスで限界位置をプログラミングすることを考えることができます. LED0 (ブルーレイ) すぐに点滅し始めます. その時点で、モーターを停止位置に移動するように動作できるようになります. 長押しすると、限界Aに向かって動き始めます. ボタンを離すと、制限がRAMに保存されます. ただし、中間点から必要な停止点に移動することをお勧めします.

同様に、それは他の回転方向に対しても行うことができます, この場合のコマンドは、クリックしてから長押しします, 低く抑えた. 長押しで十分な場合、モーターはB方向に動き始めます。, ボタンが押されている限り動き続けます. したがって、最初のコマンドを完了した後にコマンドを実行すると便利です。. この場合、希望の制限に達するまで押し続ける必要があります.

この時点で、RAMに制限が保存されます, ただし、操作を繰り返すことでいつでも変更できます. それらを明確にするために、簡単なワンクリックコマンドでEEPROMに保存することができます.

このクリックは、次の期間中にのみ有効になります。税金ダブルクリックシーケンスで区切られます, またはインクルード ダブル 初めにそしてインクルード ダブル プログラミングの最後に.

まとめ, プログラミングコマンドフェーズが開始され、ダブルクリックで終了することに注意してください。. それ以外では効果はありません. モーションを開始するために使用されるクリックを除いて.

あなたはダウンロードすることができます パッケージ および/またはを参照してください ビデオ

NOTE

プロジェクトは責任を伴う使用, 「著者は人や財産への原因の損傷に想定していること.

0 返信

返信を残す

議論に参加したいです?
貢献してお気軽に!

返信を残します