[Archive] LabVIEW Café

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

【モータ制御】LabVIEWでステッピングモータ制御は簡単にできちゃう!?

コンシューマ向け電子機器のノートパソコン、テレビ、携帯等のディスプレイに関して「スリムベゼル」「ベゼルレス」などの表現を最近よく耳にします。

「ベゼル」とは液晶画面部を除いた周囲の枠を指す用語なのですが、実際どういった業界のトレンドがあるのでしょうか?

 

いきなりですが、この「ベゼル」に関する質問です!

iPhoneでおなじみのApple社、もちろんベゼルレス化のトレンドに必死に取り組んでいます。

そこで、以下2つのiPhoneの機種のうち、どちらが最新のものか分かりますか?

 

Motor1_2.PNG

一目見ただけでどちらが最新かは一目瞭然!

答え:左がiPhone X(2017リリース)で、右がiPhone 6(2014リリース)です!

 

最近の機種はベゼル(液晶画面の枠)がかなり削られていることがわかります。

 

なお、iPhone Xのデザインはは非常に美しいものですが、1点気になりませんか?

Motor3.png

そう、この部厚ノッチ(切り欠き)はかなり目立ちますよね

こちらのノッチはインカメのために設けられた部分となっています

 

多くのレビューでよく批判されたこのノッチ、2020リリース予定のiPhone 12はこちらのノッチを完全になくすことで、完全なノッチレス・ベゼルレスのスマートフォンを目指していると噂されています。 

 

一方で、このApple社でもまだに解決できていないノッチの課題を解決したAndroidのメーカがいることをご存知でしょうか。それが、OnePlus社(下記のイメージ)!!

 

Motor4.jpg

これこそが、完全「ベゼルレス」と名乗れるスマホではないでしょうか。

でも、疑問は残ります・・・・若者たちは自撮り写真をどう撮れば良いのでしょうか?

Popup.png

答え:ステッピングモータが可能にするポップアップカメラ!!!

はい、導入部分がかなり長くなってしまいました、本記事では

・意外に身近で使用されている「ステッピングモータ」について

・ステッピングモータをLabVIEWで制御する方法について

 

上記の二点についてご案内したいと思います。

 

実は私こちらのスマートホンを持っているので、ご参考までポップアップカメラの機能を紹介する下記の動画をご覧ください。(撮影+編集 by 水野)

 

 

【ステッピングモータの概要】

ステッピングモータはソフトウェアで簡単かつ精度良く制御可能なモータの一種です。

最近ですと、このような小型のステッピングモータが実装されるようになりましたが、

従来型のステッピングモータの用途としてはより大きいものに使われていました

例を挙げると、3D プリンタ、生産ラインのコンベアベルト、生産用ロボティックアーム等に使用されています!

Motor7.png

毎年安定に平均5%+売り上げが成長しているステッピングモータ、

今後はOneplusのスマホのように小型ステッピングモータがキートレンドになるといわれています。

 

ステッピングモータの需要が伸びる中、もちろんNI製品でステッピングモータの制御技術も提供しています

 

その一例として、Firefly社はNIのcRIOシステムを使ってトラクターのモータ制御を含んだスマートマシンのプロトタイプを短時間で実現した事例があります。

こちらの事例について、詳細につきましては以下のリンクをぜひご一読ください

 

スマートな芝収穫機で生産性の向上とコスト削減を実現

https://www.ni.com/ja-jp/innovations/case-studies/19/smart-turf-harvesting-machine-boosts-productivi...

 

今回メインで紹介する内容としては、上記リンクのようなCRIOを用いたステッピングモータ制御の具体的な方法となります!

 

ステッピングモータ機構の概要

ステッピングモータの制御方法は下記のような流れになります

① コントローラからモータドライバにパルス信号を送る

・各パルスは1ステップ回転するための指示

・各ステップで回転する角度はモータの種類のよって異なる

② モータドライバがパルス信号を元にモータを回転させる

・コントローラから受け取ったパルス信号を元に、適切な電流を

モータに駆動し回転させます

③回転方向(正転/逆転)は単一デジタルラインのロジックレベル(HIGHかLOW)で制御します。

 

Motor_Drive.PNG

例:

モータを18°回転させたいとします。

ステップサイズが0.9°の場合、各パルスでモータは0.9°回転します。

そのため、18°回転させるには合計20パルスの信号をコントローラから送ります。

 

【NIが提供するソリューション】

弊社が提供しているソリューションは、ステッピングモータのモータドライブにパルス信号を送るコントローラの部分です。

NIのLabVIEWとcRIOを用いて、簡単かつ正確にパルスをモータドライブに送ることができます。

本記事のサンプルでは下記の構成で作成しました。

 

ハードウェア:

  • cRIO-9039
  • NI-9401 (デジタルI/Oモジュール)
  • モータドライバ(他社製)

 

ソフトウェア:

  • LabVIEW開発システム
  • Real-Timeモジュール
  • FPGAモジュール
     

プログラムの概要

プログラムの回転速度と方向を制御するプログラムを作ります。

FPGAプログラムではドライブ用のデジタル出力FPGAノードが2つ存在します。

Real-Time (RT)のVIでユーザが回転速度と回転報告を制御できるUIを作成し、

それらの情報をFPGAに送りモータを制御します。

 

FPGAプログラム

デジタルI/Oラインは二つ使用します。

  • デジタルライン1:回転指示を送るパルス信号出力
  • デジタルライン2:回転方向(正転・逆転)のデジタル出力

 

コードの説明:

  • 「有効?」制御器で回転するか否かを制御
  • 「Count(uSec)」数値制御器でパルスの間隔を制御
  • バルス出力のDIO0に交互に「T」と「F」を入力
  • 出力が「F」の場合、「False」ケースを実行
    • 「Dir]ブール制御器で正転・逆転の制御
    • 「Counter」でパルスの数をカウント。回転方向によってカウントアップかダウン

Motor10.png

 

Real-Timeプログラム

 

フロントパネル

・速度、回転方向、ステップサイズを入力する(実行中でも変更可能)

・「モータの理論位置」でモータの理論位置を確認

・「1秒間のパルスカウント」表示器でパルス速度を計算

 

 

Motor11.png

ブロックダイアグラム

  • 「CalculateWaitTime」サブVIでパルス幅を計算
    • 速度とステップサイズを入力する
    • パルス幅の間隔(us)を計算して出力する
  • 「制御器を読み取る/書き込む」関数を用いてFPGAの制御・表示器にデータを入力
  • 「制御器を読み取る/書き込む」関数でFPGAのCounterを出力し、モータの理論位置に計算して表示

Motor12.png

結果

モータの速度と回転方向を自由自在に操れるモータ制御プログラムが簡単に作成できました!

実際に動いているプログラムは下記のリンクからご確認ください。

 

Easy cRIO Stepper Motor Example Using LabVIEW

 

 

この記事を書いた人

水野 智生

沖縄生まれ、カリフォルニア育ち、アメリカンな純日本人。
アメリカ滞在中は日本のメーカが日本人として誇りで、その素晴らしい日系企業に貢献したいと思い日本ナショナルインスツルメンツ(NI)に入社。
最先端のテクノロジーについて勉強するのが好きで、特にパソコンやスマホの課題、トレンド、進化を常にチェックしています!

ご相談・お問い合わせなどありましたら、こちらよりお気軽にお問い合わせください。

 

メッセージ1/2
8,078件の閲覧回数

添付が本記事でご紹介したサンプルプログラムになります。

0 件の賞賛
メッセージ2/2
6,964件の閲覧回数