• 締切済み

MATLABでサーボモータを制御する方法

私は今現在、独学でMATLABを勉強しています。 参考書を見ながらいくつかのMファイルやsimulinkのモデルなどを今までつくってきました。 そこでシミュレーションだけではなく、実際に実機を動かしてみたくなり、たまたま持っていたサーボモータを動かしてみようと思い立ちました。しかし、思い立ったは良いものの、実際にMATLABからの制御入力をサーボモータに伝達する方法がわかりません。多分RS232Cを経由して送るとは思うんですが、実際にsimulink上でどのように構成すれば良いのか教えていただきたいです。D/A変換の仕方もちょっとよくわかりません。 マイコンはPICの16F648Aです。 とりあえず、細かい制御は考えないでただMATLABで動かしてみたいだけです。教えてくれる方がいましたらよろしくお願いします。

みんなの回答

noname#137556
noname#137556
回答No.1

MATLAB をコントローラにしてリアルタイム処理をしたいなら, それなりの仕掛けが必要です。 http://www.mathworks.co.jp/mason/tag/proxy.html?dataid=11778&fileid=56466 制御自体はマイコンでやって, MATLAB はフロントエンドやオフラインの計算に使うだけなら, マイコンとの間は(とりあえず)シリアル通信でいいでしょう。 http://www.fl.ctrl.titech.ac.jp/seminar/2007/07FLsemifiles/FL07_13_1.pdf http://www.mathworks.co.jp/help/ja_JP/techdoc/ref/serial.html その先のサーボモータへの指令の仕方は,サーボモータの仕様次第ですね。

kanoseed
質問者

お礼

返答が遅くなってしまい申し訳ありません。 RS232Cでシリアル通信を用いることでどうにか動かすことが出来ました。 ありがとうございました。

関連するQ&A

  • 社会人だがMatlabを個人用に使いたい。

    現在メーカーの技術者ですが、制御工学を独学しています。 制御工学に関する市販書はMatlab/Simulinkの使用を前提としているものが多いので、私も自宅のPCでこれらを使いたいと考えています。 しかし、正規版は、数十万円もするので個人で買うにキツイです。 また、学生であればstudent版を安価で購入できるのですが、社会人の場合それができません。 機能限定があってもいいので、Matlab/Simulinkと同等の計算ができるソフト(サードパーティ製?)はないでしょうか?

  • サーボモータの制御を学びたいのですが.......

    今からサーボモータの回転制御を学びたいと思っております。 やりたいことは、スティック型のポテンションメータ(可変抵抗器?)でサーボモーターを自由に左右回転させてみたいです。 全くの初心者なので、どのようなものを揃えたり、どのようにプログラムを組み、マイコン?IC・へ書き込んでよいかも分からないところからのスタートです。 サーボモータの制御だけが目的です。 何かよい学習キットのようなものなどはありませんでしょうか? また、参考になる回路図などが紹介されているサイト等がありましたら教えていただきたいです。 現在手元にあるパーツは........ ・スティック型ポテンションメータ ALPS スティックコントローラ ※こちらの商品です (http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-07GA) ・360度回転可能なサーボモータ ※こちらのモータです (http://www.enroute.co.jp/store/index.php?main_page=product_info&cPath=127_558&products_id=10733) こちらの回路図(http://www.eleki-jack.com/KitsandKids2/2008/12/11/2-2CQ.jpg)を参考に組んで試してみまして、上記のスティックとサーボで左右回転をさせるところまではうまくいったのですが、スティックが中央に戻った時の抵抗値にバラつきがでるのか、無操作の時にも止まらなかったり、少しづつ回転してしまう状態です。無操作の時には止まってほしいので、もう自分でマイコン使っての制御プログラムを覚えるしかないかな?と思いました。 正月休みを利用して作ってみたいなと思いながら上手くいっていないので 詳しい方、ご教授をお願い致します。 追記ですみません..........サーボモータの構造を見たく分解してバラバラにしてしまったモーターがひとつあります。この中のモーターは普通にDCモーターとして使用することもできるのでしょうか? 試しにモーターに取り付けられていた回路パーツを外して電流を流してみたのですが、動かないみたいみたいです.........

  • MATLAB/simulinkでのD/A変換の仕方

    現在MATLABで制御の勉強をしている大学生です。 今、デジタル制御について勉強しているのですが、MATLAB/simulinkを使いながら進めています。 MATLAB/simulinkでのD/A変換のやり方がわからなくて質問いたしました。 通常のアナログ制御の場合、 入力 → コントローラー → プラント → 出力 で多分、設計されると思うのですが、 デジタル制御の場合、 入力 → A/D変換器 → コントローラー → D/A変換器 → プラント → 出力 という流れになると聞きました。 A/D変換器はゼロ次ホールドを行うブロックがsimulinkにあったのでそれを使えばいいと思うのですが、D/A変換器を行ってくれるブロックが見当たりません。 探し方が悪いのでしょうか。。。 もしご存知であればD/A変換に相当するブロックを教えてください。 無ければ、s-functionか何かでのD/A変換のやり方を教えて頂けると助かります。 よろしくお願いします。

  • 制御系としての性能指標とは何なのでしょうか?

    モータ制御系の実験をしていたときに、制御系の性能指標(例えば,開ループ伝達関数の周波数応答や閉ループ伝達関数の周波数応答など)を求め評価しなさいと言われたのですが、普通どうやって求めるのでしょうか? ボード線図をMatlab/simulinkなので計算して解くのでしょうか?それとも実験から求めるのでしょうか? 判る方いらっしゃいましたらお教えください。

  • PIC16F877Aでのサーボモータ制御

    PIC16F877Aでのサーボモータ(futaba S3003)を制御したいのですが、ネットでのソースが少なく難航しています。ちなみに言語はC言語を使っています。とくにパルス出力?のところがわかりません。どなたか教えていただきたいです。

  • サーボモータの低速回転制御

     サーボモータの回転制御方法について教えてください。  マイコンで回路設計して、試行錯誤でサーボモータをPWM出力で回転させているのですが、負荷をかけた時、高回転(4500RPMまで)は安定するのですが、低速回転が安定しません。特に150から200RPMで、試しに手で急につかむと反応が遅くなりロックしてしまいます。反応を早くすると、少しの負荷で反応してしまいます。低速度で負荷が小さい時はオシロスコープで計測してもモータ電流は最低電流で回転しています。 なにか良い制御方法がありませんか。 三相サーボモータ 500W 200V 電流制御あり 検知電流はA/D変換しています。(200uSecインターバルで検知しています) 速度制御 2度ごとに速度計測(低速度時)基本的にはフィードフォワード制御方式です。

  • MATLAB/SIMULINK化学プロセス制御実装

    MATLAB / SIMULINKを用いて、 化学ベンチプロセスの制御系を、 自分で手作業で実装することは可能でしょうか? 具体的行いたい制御は、 PCV制御(圧力計とバルブ開閉)、流量制御(ドラムAに20L移液したらバルブ閉とする。)、TCV制御(ジャケット付きドラムの内温を設定した温度になるようにジャケット側スチーム圧力コントロール弁を開閉する。)等です。   また、参考となるような教科書等ございましたら、ご紹介いただけますと幸いです。

  • マイコン制御

    マイコン制御の仕事がしたく、今マイコンを勉強しています。そこでいろいろな疑問が出てきました。 1、求人によく8、16、32ビットマイコンなどとありますが、それはやはり処理量をさしているのでしょうか?私はPICとH8を勉強しているのですがPICは命令長でH8はバス幅でクラス分けをしていますよね!?ちなみに処理量だとしたらPICは8ビット、H8は32ビットと言うことになるのでしょうか? 2、組み込み関係の求人がすごく多いけれど、派遣や請負いばかりが目につくのですが。実際、組み込み関係のお仕事をしている方はどんな感じなのでしょうか。 3、私は求人によくあるカーナビや携帯のソフトなどではなく、もっとハードよりな感じのロボットやFAの制御などがしたいと思っています。地元で中小企業でとなるとPLCが多い気がするのですがマイコンでそのような仕事はやはりむりですかね・・・。有限会社とかだと結構あったりするのですが・・・、だれかOEMとかでもいいので中小で物作り実感してマイコン制御してる方いらっしゃいますか? 4、リアルタイムOSを使うのはロボット制御などではなくカーナビや携帯などのようなアプリケーションよりな感じなのでしょうか? よろしくお願いします。

  • 制御プログラム

    私はマイコンの勉強をしているのですが(今できるのはPICだけです)私の今のマイコンのイメージでいくと、タイマーやPWMやシリアル通信などの内蔵モジュールを使っていろいろ制御をする感じなのですが、求人などに良くあるファームウエアやドライバとは実際どのような感じで出来ているのでしょうか。 内臓モジュールを使って作っているのでしょうか、またリアルタイムOSなどの通信などのライブラリとかがあってそれをを使っているのでしょうか、全部自分で作っているのでしょうか、いろいろなパターンがあるとは思いますが、だいたいどんな感じなのでしょうか。

  • matlab 衝突のシミュレーション

    現在、Matlabで簡単な衝突のシミュレーションを行っていますが、うまくいかず、どなたがご教授ください。 【やりたいこと】 ボールを自由落下させた時の地面との衝突のシミュレーションを、 Simulinkではなく、自分で作成したmfileから実現させたい。 【質問】 以下のプログラムでodeの計算が終わらず、どのようにすればいいのか ご教授ください。 ======================= 【diff_freefall.m】 function dx = diff_freefall(t,x0) g = 9.81; % 重力 k = 1; % 反発係数 A = [0 1; 0 0]; B = [ 0; -g]; % 衝突判定 if x0(1)<=0 && x0(2)<0 x0(1) = 0; x0(2) = -k*x0(2); end dx = A * x0 + B; ======================= ======================= 【simu.m】 Ts = 0; %シミュレーション開始時間 Te = 10; %シミュレーション終了時間 y0 = [10; 15;]; %初期位置、初期速度 [T,Y] = ode45('diff_freefall',[Ts:0.1:Te],y0); subplot(2,1,1); plot(T,Y(:,1),'g'); subplot(2,1,2); plot(T,Y(:,2),'r'); ======================= 【補足】 ・以下のmathworksのサイトのサンプル(simulink版)を、mfileで記述したいです。 <http://jp.mathworks.com/help/simulink/examples/simulation-of-a-bouncing-ball_ja_JP.html> ・すべてのodeのタイプを試しましたが、ずっと終わらない、  もしくは途中でシミュレーションが止まります。 ・衝突した時に、odeの積分の累積値がクリアできていないことが原因だと思うのですが、  クリアする方法がわからず困っています。

専門家に質問してみよう