工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

プロフェッショナル・アンテナローテータコントローラ ─ 衛星追跡ソフトとのシームレス連携(EasyComm IIプロトコル対応)

必要な部品と材料

Arduino UNO ×1
ロータリーポテンショメータ(汎用、最大1kΩ、500Ω推奨) ×2
ロータリーエンコーダ(プッシュボタン付き) ×2
ブレッドボード(汎用) ×1
リレーモジュール(汎用、2モジュール×2リレー NO-COM-NC) ×2
パワーMOSFET Nチャネルモジュール(最小12V/3A) ×2

使用するアプリとオンラインサービス

プロジェクト概要

最新更新:2021年11月

趣味で始めたプロジェクトが、本格的な機器へと進化しました。

このコントローラは、2つのロータリーエンコーダ(方位角Azimuth、仰角Elevation)による手動アンテナ位置決めに加え、USBでPCに接続して衛星追跡ソフトから自動追尾制御が可能です。

DCモータ版とACモータ版(リレーのみ)の2バージョンを用意。後者は市販アンテナローテータとインターフェース可能です。

DCモータ版の特長:ソフトスタート/ソフトストップ

PWM出力で滑らかなアンテナ駆動を実現。目標角度と実角度の誤差に比例した電力出力を行うため、起動時は徐々に加速、目標接近時に減速して完全停止します。調整可能なデッドゾーン(微小な目標ズレでは動作しない)も備えています。
プロフェッショナル・アンテナローテータコントローラ ─ 衛星追跡ソフトとのシームレス連携(EasyComm IIプロトコル対応)

ACモータ版でもソフトスタート/ソフトストップを実現するベータ版があります(ACディマーモジュール使用、現在方位角のみ対応)。試したい方はメールでご連絡ください。

180度仰角システム用バージョン、0.1度精度版もありますが、後者は極めて安定したポテンショメータ読み取りと堅牢な構造が必要なため非推奨です。詳細は私のWebページで公開中。

キャリブレーション手順(必須)

  1. ポテンショメータキャリブレーション:0-359°/0-90°の正確な読み取りを保証。使用するポテンショメータの種類に関わらず必須。
  2. モータキャリブレーション:ソフトスタート/ストップ機能のチューニング用。デフォルト設定が気に入らない場合のみ実施。

詳細な解説は動画とWebページを参照。コードは改良を重ねているため最新情報はWebページで確認を。ご質問は YO3RAK@gmail.com まで(このプラットフォームではコメント通知が来ないため)。フィードバック大歓迎です!

スケッチ

DCモータ版(2021年11月版・ソフトスタート/ストップ対応)

/* AZ/EL Antenna Rotator controller for Arduino - DC motors
 * Viorel Racoviteannu - https://racov.ro - YO3RAK@gmail.com
 * nov 2021 - cracked the secret of Soft-Start */
#include 
#include 
LiquidCrystal_I2C lcd(0x27, 16, 2);
// カスタム文字:上下矢印
byte DownArrow[8] = { B00000, B00100, B00100, B00100, B10101, B01110, B00100, B00000 };
byte UpArrow[8]   = { B00000, B00100, B01110, B10101, B00100, B00100, B00100, B00000 };

/********** アンテナ動作パラメータ(ここを調整)**********/
int AzMin = 1, AzMax = 1023;  // 方位角ポテンショメータ最小/最大
int ElMin = 1, ElMax = 1023;  // 仰角ポテンショメータ最小/最大
int AzErr = 8, ElErr = 4;     // 動作しない許容誤差(デッドゾーン)
int Amax = 25, Emax = 15;     // ソフトストップ開始角度差
int PwAzMin = 30, PwAzMax = 100; // 方位角モータ最小/最大電力(%)
int PwElMin = 30, PwElMax = 100; // 仰角モータ最小/最大電力(%)
/*********************************************************/

// エンコーダピン割り当て(割り込み使用)
enum AzPinAssignments { AzEncoderPinA=2, AzEncoderPinB=3, AzClearButton=4 };
enum ElPinAssignments { ElEncoderPinA=6, ElEncoderPinB=5 };

// 変数宣言多数(実角度、目標角度、PWM値、移動平均バッファ、シリアル通信用等)

void setup() {
  Serial.begin(9600); Serial.setTimeout(50);
  lcd.init(); lcd.backlight();
  lcd.createChar(1, DownArrow); lcd.createChar(2, UpArrow);
  // ピンモード設定、割り込みアタッチ、移動平均初期化、初期表示等
}

void loop() {
  // 移動平均フィルタで実角度を平滑化(25サンプル)
  // エンコーダ読み取り、シリアルコマンド処理
  // 実角度≠目標角度なら AzimRotate()/ElevRotate() でPWM制御
  // 表示更新(500msごと)、エンコーダボタンで10度ステップ切替等
}

// 以下、AzimRotate(), ElevRotate(), SerComm(), DisplAzim(), DisplElev(),
// ReadAzimEncoder(), ReadElevEncoder(), doEncoderA(), doEncoderB() 等の実装
// SerComm()では   形式のEasyComm IIコマンドを解析し、
//  照会コマンド受信時は "+実方位角.0 実仰角.0" で応答

ACモータ版(2021年8月版・ドライ接点出力)

市販ローテータと接続可能なドライ接点(ON/OFF)出力版。ソフトスタート/ストップなし、シンプルな方向制御のみ。
回路図:プロフェッショナル・アンテナローテータコントローラ ─ 衛星追跡ソフトとのシームレス連携(EasyComm IIプロトコル対応)

キャリブレーション手順(プレーンテキスト)

ポテンショメータ限界キャリブレーション(0-359°/0-90°)

1. コード内の DisplAzim()/DisplElev() のシリアル出力行をアンコメント
2. アップロードしてシリアルモニタを開く
3. エンコーダでアンテナを方位角0°、仰角0°に動かし、表示される値をメモ(AzMin, ElMin)
4. 方位角359°、仰角90°に動かし、値をメモ(AzMax, ElMax)
5. コード冒頭の AzMin,AzMax,ElMin,ElMax にメモした値を設定
6. シリアル出力行を再度コメントアウトしてアップロード

モータキャリブレーション(ソフトスタート/ストップ用)

デフォルト設定で問題なければ不要。調整したい場合のみ:
- Amax/Emax: ソフトストップ開始角度差(重いアンテナなら大きく)
- PwAzMax/PwElMax: 最大電力%(速すぎれば下げる)
- PwAzMin/PwElMin: 負荷下でモータが止まらない最小電力%
- AzErr/ElErr: デッドゾーン(小さいほど高精度だが微振動しやすい)

回路図

DCモータ版用:
プロフェッショナル・アンテナローテータコントローラ ─ 衛星追跡ソフトとのシームレス連携(EasyComm IIプロトコル対応)

ACモータ版用:
プロフェッショナル・アンテナローテータコントローラ ─ 衛星追跡ソフトとのシームレス連携(EasyComm IIプロトコル対応)

製造プロセス

  1. Arduino MegaでPWM制御:プッシュボタン付きLEDフェード制御チュートリアル
  2. Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
  3. DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
  4. Unopad: Ableton Live連携シームレスなArduino MIDIコントローラー
  5. Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
  6. Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
  7. ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
  8. DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
  9. Arduino Unoと1Sheeldで作る4x4x4 LEDキューブ – インタラクティブLEDプロジェクト
  10. ゲーム用カスタムArduinoジョイスティックハンドルの製作
  11. Arduino 101で作る万歩計:DHT11温湿度センサー&LCD表示付き