<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>フィードバック制御 | 即戦力モノづくり!エンジニアへの道標</title>
	<atom:link href="https://depfields.com/tag/%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E3%83%90%E3%83%83%E3%82%AF%E5%88%B6%E5%BE%A1/feed/" rel="self" type="application/rss+xml" />
	<link>https://depfields.com</link>
	<description>組み込み（マイコン）スキルを楽しんで学びながら身につけて短期間で効率よく自由自在に扱えるようになりたいと思いませんか？</description>
	<lastBuildDate>Thu, 18 Apr 2024 00:49:22 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.4</generator>

<image>
	<url>https://depfields.com/wp-content/uploads/2020/07/cropped-favicon-1-32x32.png</url>
	<title>フィードバック制御 | 即戦力モノづくり!エンジニアへの道標</title>
	<link>https://depfields.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>制御入門【ARMマイコンによる応用と実践】</title>
		<link>https://depfields.com/controltheory/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=controltheory</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Mon, 11 Apr 2022 14:41:09 +0000</pubDate>
				<category><![CDATA[制御入門と実践]]></category>
		<category><![CDATA[制御理論]]></category>
		<category><![CDATA[モーションコントロール]]></category>
		<category><![CDATA[フィードバック制御]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=12491</guid>

					<description><![CDATA[<p>実践で使う制御理論 みなさんは制御と聞くと何を思い浮かべるでしょうか。イメージはひとそれぞれだと思いますが、ロボットなどの装置を構想したとおりの動作になるようにプログラミング等で実現することを想像するひとも多いのではない [&#8230;]</p>
<p>The post <a href="https://depfields.com/controltheory/">制御入門【ARMマイコンによる応用と実践】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img fetchpriority="high" decoding="async" width="640" height="480" src="https://depfields.com/wp-content/uploads/2022/04/gyro-boy.jpg" class="attachment-large size-large wp-post-image" alt="" srcset="https://depfields.com/wp-content/uploads/2022/04/gyro-boy.jpg 640w, https://depfields.com/wp-content/uploads/2022/04/gyro-boy-300x225.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>




<h2 class="wp-block-heading">実践で使う制御理論</h2>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">みなさんは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御</span></strong>と聞くと何を思い浮かべるでしょうか。イメージはひとそれぞれだと思いますが、ロボットなどの装置を構想したとおりの動作になるようにプログラミング等で実現することを想像するひとも多いのではないでしょうか。このサイトで扱う制御はプログラミング等で命令を順次実行して想定通りの動作を実現するいわゆるシーケンス制御ではなく、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィードバック制御</span></strong>と呼ばれるものです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィードバック制御</span></strong>は実行したいターゲット（制御対象）に与えた目標値（入力）に対して、センサーなどで検知した動作量（出力）を入力側に戻して自動で最適に調整して目標値に近づける制御方式です。フィードバック制御は感覚的に実現するものではなく、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御理論</span></strong>に基づいて設計するものですが、この制御理論というものは工学というよりむしろ数学に近いものでとても難解なものです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">制御理論は制御工学に属するものですが他の工学分野と比較してとても<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">抽象的</span></strong>なものです。学問としての制御理論について詳しい解説等はよく見られるのですが、理論の範囲内にとどまっていて実際のモノに適用して実験レベルを超えて実用化させた経験のある人は果たしてどれくらいいるでしょうか。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">実際のモノに適用する際には、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">理論とのインターフェースがわかりにくい</span></strong>部分で、物理的モデルの不確かさ、外乱やノイズによる影響、入出力の物理的制限（電流制限、センサ分解能等）、またプログラミングによる離散化の影響など現実に直面する多くの要素すべて解決しなければ実用的なものとはなりません。そういった意味で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">本当に使える人</span></strong>はあまりいないのではないでしょうか。それだけに、基礎を理解し<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実際にモノに適用して経験を積む</span></strong>と人より一歩先に進めることは確実です。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">このサイトでは独学ではなかなか理解しにくい制御理論をできるだけ感覚的に理解できるように物理的な<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モーションコントロール</span></strong>を例にあげて解説しています。<strong><a href="https://depfields.com/controltheory-preparation/" target="_blank" rel="noreferrer noopener" title="マイコンで実現するフィードバック制御のための基礎知識【準備編】">「準備編」</a></strong>からはじめて<strong><a href="https://depfields.com/controltheory-advanced/" target="_blank" rel="noreferrer noopener" title="マイコンで実現するフィードバック制御のための基礎知識【発展編】">「発展編」</a></strong>まで理解できるころには実践で応用できるきっかけはつかめるのではないでしょうか。<strong><a href="#motioncontrol">モーションコントロールアプリ</a></strong>では実際のモノに適用して検証していますので制御理論が本当に有効で実用的であることが実感できると思います。</p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h3 class="wp-block-heading">準備編</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/controltheory-preparation" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2020.12.07</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2020/12/control-theory1-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">マイコンで実現するフィードバック制御のための基礎知識【準備編】</div></div><div class="lkc-url">https://depfields.com/controltheory-preparation</div><div class="lkc-excerpt">組み込み・マイコンを使ったモーションコントロールを実現するうえで使いこなせれば設計開発の世界が広がる制御理論の概要について自分なりにまとめてみました。制御といってもプログラミングのように命令順に実行するシーケンス制御ではなく、コントロール対象の出力を入力側に返して比較修正するフィードバック制御についてです 。 一般的に制御工学と呼ばれている分野のもので、市販の書物や教科書などに書かれている内容は物理的なものというよりむしろ数学的で初心者には抽象的すぎて独学ではとても簡単に理解できるものではあり...</div></div><div class="clear"></div></div></a></div></div>



<h3 class="wp-block-heading">解析編</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/controltheory-analysis" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2020.12.08</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2020/12/control-theory2-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">マイコンで実現するフィードバック制御のための基礎知識【解析編】</div></div><div class="lkc-url">https://depfields.com/controltheory-analysis</div><div class="lkc-excerpt">マイコンで実現するフィードバック制御のための基礎知識【準備編 】ではフィードバック制御の概要およびモデリングした制御対象を複素数s空間にラプラス変換して伝達関数を作成するところまでをまとめています。この【解析編】ではブロック線図の見方および伝達関数の基本形である1次遅れおよび2次遅れ系の特性を解説してから、いよいよフィードバック制御システムを設計するための勘所をできるだけ数式と物理的な観点を合わせて解説していきたいとおもいます。特に安定性や追従性を解説するには最低限の数式で表現しなければ説明でき...</div></div><div class="clear"></div></div></a></div></div>



<h3 class="wp-block-heading">応用編</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/controltheory-application" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div>&nbsp;<div class="lkc-share"> <div class="lkc-sns-po">1 Pocket</div></div><div class="lkc-date">2020.12.08</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2020/12/control-application-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">マイコンで実現するフィードバック制御のための基礎知識【応用編】</div></div><div class="lkc-url">https://depfields.com/controltheory-application</div><div class="lkc-excerpt"> マイコンで実現するフィードバック制御のための基礎知識【解析編 】 では制御理論として制御対象を数式でモデリングをしてフィードバックを施して特性を改善させたり出力の目標値への追従性を向上させるための手段を数式により解説をしてきました。これからは制御理論を実践現場の技術として応用されているものを紹介しながら、実際にどのように活用されているかを確認していきたいと思います。           PID制御とはめかのとろPID制御とは現場でよく聞かれるフィードバック制御の一種です。PIDは比例Proportional, 積分Integral, 微...</div></div><div class="clear"></div></div></a></div></div>



<h3 class="wp-block-heading">発展編</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/controltheory-advanced" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2021.01.11</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2021/01/harddisk-4002369_640-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">マイコンで実現するフィードバック制御のための基礎知識【発展編】</div></div><div class="lkc-url">https://depfields.com/controltheory-advanced</div><div class="lkc-excerpt">マイコンで実現するフィードバック制御のための基礎知識【応用編 】では古典制御理論をベースに実践で使われるPID制御を解説しました。PID制御は感覚的にゲインを設定できるので、制御をするモデルが比較的単純なものである場合は現場でも使いやすいのですが、外乱や制御対象のパラメータ変動などによりモデル化できなかった部分の影響が大きい場合は望んだとおりの性能は期待できないことになります。そこで、本編では従来の古典制御理論を発展させたDCモータを制御モデルとしたアドバンスト制御とよばれるものを紹介します。目的は実...</div></div><div class="clear"></div></div></a></div></div>



<h3 class="wp-block-heading">番外編</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/controltheory-modern" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div>&nbsp;<div class="lkc-share"> <div class="lkc-sns-po">1 Pocket</div></div><div class="lkc-date">2021.01.15</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2021/01/2387976_s-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">マイコンで実現するフィードバック制御のための基礎知識【番外編】</div></div><div class="lkc-url">https://depfields.com/controltheory-modern</div><div class="lkc-excerpt">倒立振子は現代制御理論の典型的な教材です。一般的に出回っている情報では学術的すぎるか、試行錯誤的すぎるかのものが多く初心者でも理解できるように体系的に検証したものはあまりみられないため、実践で使えそうなものに絞りまとめてみました。さらにロバスト制御を適用し、より実用的な検証をしてみました。    現代制御理論の適用めかのとろこれまで伝達関数をベースとしてフィードバック制御について検証してきました。いわゆる古典制御でのアプローチです。制御できるのは原則として1入力1出力の制御対象システムで温度コント...</div></div><div class="clear"></div></div></a></div></div>



<h3 class="wp-block-heading">多角的な解釈</h3>


<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/inpulse" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2022.04.29</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2022/04/impact-front-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">インパルス応答とその伝達関数の物理的解釈</div></div><div class="lkc-url">https://depfields.com/inpulse</div><div class="lkc-excerpt">システム入出力間の時間領域における関数g(t)が入力信号に応じてどのような特性をもつのか検証してみました。この検証のためにはインパルス応答というものが必要ですので、まずインパルス信号について要点を押さえていきます。インパルス応答は機械系のモーションコントロールを扱っているうえでは普段はあまり意識せずともよいところですが、制御理論としてはよく目にするものです。電気系システムの信号解析などにはよく使用されるかもしれません。周波数領域であるs空間での伝達関数表記では入力U(s)、制御対象G(s)、出力Y(s)は分け...</div></div><div class="clear"></div></div></a></div></div>


<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/circuit-reactance" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2020.12.07</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2020/12/交流回路-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">コイルとコンデンサの実際の働き</div></div><div class="lkc-url">https://depfields.com/circuit-reactance</div><div class="lkc-excerpt">マイコンのインターフェースを構成する電気回路は主に直流回路ですので抵抗を負荷としたオームの法則に従う比較的単純なものでした。ところが、交流回路となると話が変わってきます。それは回路に使われるコイルやコンデンサは流れる電気信号の周波数によってインピーダンスという直流回路でいう抵抗値が変化し、信号の電圧と電流の位相がずれる特性があるからです。 なぜコイルとコンデンサでは電流に対して電圧の位相がずれるか数式だけに頼らず物理的に考察してみます。 &nbsp;コイル：めかのとろ コイルには流れる電流が時間変化す...</div></div><div class="clear"></div></div></a></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>





<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2><a id="motioncontrol"></a>モーションコントロールアプリ</h2>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御理論</span></strong>は理解するだけでは<strong>数学の域を超えません。<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実際のモノに適用して初めて利用価値がある</span>といえます。</strong>また、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実際に適用させてはじめて本質が理解できる</span></strong>こともあります。制御工学とはいえ、大学の講義などでは数学の範囲内であるものも数多いため、より敷居が高いものとなっています。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">この章では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御理論の適用</span></strong>として<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レゴ</span></strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">®</span></strong></strong></span><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マインドストーム<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">®</span></strong></strong></span>EV3モータ</span></strong>を使用したさまざまなアプリケーションで実際に動作させて、理論の有効性を確認していきます。それぞれのアプリケーションには実践で得たノウハウがつまっています。学術論文レベルのものもありますが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">敷居をずっとさげた実用的なもの</span></strong>にしています。制御理論の応用は非常にシンプルで実用的であることがおわかりいただけると思います。</p>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h3 class="wp-block-heading">PWMオープンコントロール</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/dcmotor-pwmcontrol" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2021.01.25</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2021/01/ev3-Lmotor-150x150.png" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">DCモータのマイコンPWM出力による回転速度制御（オープンループ制御）</div></div><div class="lkc-url">https://depfields.com/dcmotor-pwmcontrol</div><div class="lkc-excerpt">レゴ®マインドストーム®EV3のLモータを使って、STM32Nucleoボードにより実際にモータを動作させてみます。EV3のモータにはエンコーダが内蔵していますので速度のモニターをするのみならず、フィードバックさせることでより高度な運転ができるようになります。まず、マイコンを使ったモーションコントロールの手始めとしてエンコーダからのフィードバックを使わないPWM信号によるオープン制御をしてみたいと思います。      実機で使うモータモジュールめかのとろマイコンで実現するフィードバック制御のための基礎知識【応用編】でDCモ...</div></div><div class="clear"></div></div></a></div></div>



<h3 class="wp-block-heading">速度フィードバックコントロール</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/dcmotor-highgainfeedback" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2021.02.01</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2021/01/DCmotor-150x150.png" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">DCモータの実用的な速度フィードバック制御システムをマイコンで構築する</div></div><div class="lkc-url">https://depfields.com/dcmotor-highgainfeedback</div><div class="lkc-excerpt">DCモータは市販のドライバを用いると電圧制御タイプではマイコンからのPWMパルス出力を与えるとデューティ比に応じてオープンループで簡単に速度をコントロールすることができます。速度はデューティ比にほぼ比例しているのですが、これは運転条件が無負荷での場合です。突発的な負荷や定常負荷がかかると速度は安定しないのがオープンループでの限界です。そこでエンコーダなどのセンサによる速度のフィードバックを施すことにより特性を改善して、多少の負荷があっても安定させ、また、定常状態でも速度を安定させることを図ります。...</div></div><div class="clear"></div></div></a></div></div>



<h3 class="wp-block-heading">ロバストコントロール</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/dcmotor-robustcontrol" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2021.02.04</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2021/02/excavator-51665_640-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">実践で使えるDCモータのロバスト速度制御をマイコンで構築する</div></div><div class="lkc-url">https://depfields.com/dcmotor-robustcontrol</div><div class="lkc-excerpt">ギアを介した負荷側にエンコーダが装着しているレゴEV3LモータにPI速度制御と2自由度ロバスト制御を適用してみてそれらの運転特性と効果を調べてみます。簡易モータでも実装が簡単で効果があれば積極的に採用したいものです。          PI速度フィードバックコントロールめかのとろ一般的なフィードバック制御といえばPID制御がまず挙げられます。難しい理論抜きでも感覚的にゲインを設定して出力を調整することも多いです。めかのとろもともと安定しているEV3モータに多少の条件が変わっても一定の目標値を維持するための制御です。偏...</div></div><div class="clear"></div></div></a></div></div>



<h3 class="wp-block-heading">速度サーボコントロール</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/dcmotor-speedservo" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2021.03.22</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2021/03/lego-4504048_640-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">実践で使えるDCモータの速度サーボ制御をマイコンで構築する</div></div><div class="lkc-url">https://depfields.com/dcmotor-speedservo</div><div class="lkc-excerpt">これまではDCモータを使ったレゴEV3モータをさまざまな制御方式のステップ応答(一定値入力）でそれぞれの特性を確認しました。実際にモータを運転する場合は一定の速度だけで使うのみならず加減速も任意に与えたパターンに追従させるいわゆるサーボ運転をさせる用途も多いです。そこで、今回はそれぞれの制御方式において、あらかじめ作成した台形の速度パターンを指令値入力としたときに、手動で負荷を加えたときの追従性と外乱による変動の影響を確認してみます。まずそれぞれの制御方式をシミュレーションで確認してから、プログラ...</div></div><div class="clear"></div></div></a></div></div>



<h3 class="wp-block-heading">位置決めサーボコントロール</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/dcmotor-positionservo" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div>&nbsp;<div class="lkc-share"> <div class="lkc-sns-po">1 Pocket</div></div><div class="lkc-date">2021.04.07</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2021/04/2021-04-02_21h44_11-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">実践で使えるDCモータの位置決め制御サーボシステムをマイコンで構築する</div></div><div class="lkc-url">https://depfields.com/dcmotor-positionservo</div><div class="lkc-excerpt">前回ではレゴEV3モータをテーマとして実践で使える速度サーボ運転をマイコンで実現するのに、このサイトで紹介したPI制御方式、ハイゲインフィードバック方式そして２自由度ロバスト方式を適用してそれぞれの特性を実機において検証しました。 今回は速度サーボのさらなる発展としてモータの回転位置をコントロールする位置サーボ（位置追従制御）を実機を使って検証していきたいと思います。    位置決めサーボ（加速度指令方式）めかのとろ速度制御系でハイゲインフィードバック方式や2自由度ロバスト制御が適用されて指令値通りに応...</div></div><div class="clear"></div></div></a></div></div>



<h3 class="wp-block-heading">位置決めサーボコントロール２</h3>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/dcmotor-positionservo2" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div><div class="lkc-date">2021.05.08</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2021/04/racing-car-4438174_640-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">パルスに追従する位置決めサーボ制御システムをマイコンで構築する</div></div><div class="lkc-url">https://depfields.com/dcmotor-positionservo2</div><div class="lkc-excerpt">これまではあらかじめ作成したモータ位置の軌道に追従する方式として加速度指令方式での位置決めモーションコントロールを実現し、その動作の有効性を確認しました。 実際のモータ位置決めサーボシステムではパルスを位置決め指令として与えるものが多いです。そこで、今回は外部のエンコーダで発生させたパルスを指令値としてその動作に追従させる位置決めシステムをマイコンで実現してみます。パルスに追従するところからステッピングモータのように与えたパルス分だけ動作することになります。      一般的な位置決めサーボシステム...</div></div><div class="clear"></div></div></a></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>





<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div class="linkcard"><div class="lkc-internal-wrap"><a class="lkc-link no_icon" href="https://depfields.com/nucleo" target="_blank"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">即戦力モノづくり!エンジニアへの道標</div>&nbsp;<div class="lkc-share"> <div class="lkc-sns-po">5 Pockets</div></div><div class="lkc-date">2020.05.06</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/2020/07/nureo-f103rb-150x150.jpg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">マイコン学習の初心者にArduinoでなくSTM32 Nucleoをすすめるわけ</div></div><div class="lkc-url">https://depfields.com/nucleo</div><div class="lkc-excerpt">現役エンジニア社長のめかのとろです。組み込みエンジニアをめざしているひとにとって、本格的に勉強を始めるためにどんなものを教材にすれば効率よく短期間で本当につかえるスキルが身につくのかを検討しておすすめでとっておきの方法を紹介します。ここでは電子工作において巷で大流行のArduinoとARMのオープンソース開発環境であるMbed、そして今回の紹介するNucleoマイコンボードを使いこなすために開発環境STM32CubeIDEをカスタマイズしたものとの比較をしていきます。ArduinoについてArduino センサーシールドArduinoめかのとろA...</div></div><div class="clear"></div></div></a></div></div>



<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/controltheory/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/14391beeb18bec41035675bbdd77739c7b506453b370ee2c517c7e4ada05774e.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Tutorial to Feedback Control [ARM in Practice] | Most Powerful Bible to Becom...</div></div><div class="lkc-url">https://en.depfields.com/controltheory/</div><div class="lkc-excerpt">Control Theory Used in PracticeWhat comes to mind when you hear the word &quot;Control&quot;?  Although the image may vary from person to person, many people probably imagine programming robots and other devices to operate as envisioned. The k</div></div><div class="clear"></div></div></a></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div><p>The post <a href="https://depfields.com/controltheory/">制御入門【ARMマイコンによる応用と実践】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>加速度センサ・ジャイロセンサによる姿勢検知【STM32Nucleo】</title>
		<link>https://depfields.com/accel-gyro/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=accel-gyro</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Sun, 11 Jul 2021 06:59:24 +0000</pubDate>
				<category><![CDATA[計測アプリ]]></category>
		<category><![CDATA[計測]]></category>
		<category><![CDATA[I2C]]></category>
		<category><![CDATA[モーションコントロール]]></category>
		<category><![CDATA[フィードバック制御]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=9649</guid>

					<description><![CDATA[<p>加速度センサ・ジャイロセンサ（MPU-6050)を搭載したセンサボードGY-521は 3軸加速度、 3軸ジャイロデータをインターフェースI2Cで簡単に取得でき、情報量も多く安価でお勧めなボードです。 ただし、ネット情報で [&#8230;]</p>
<p>The post <a href="https://depfields.com/accel-gyro/">加速度センサ・ジャイロセンサによる姿勢検知【STM32Nucleo】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img decoding="async" width="620" height="552" src="https://depfields.com/wp-content/uploads/2021/07/gyro-scope.png" class="attachment-large size-large wp-post-image" alt="" srcset="https://depfields.com/wp-content/uploads/2021/07/gyro-scope.png 620w, https://depfields.com/wp-content/uploads/2021/07/gyro-scope-300x267.png 300w" sizes="(max-width: 620px) 100vw, 620px" /></div>
<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-sm--margin-top"></div></div>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">加速度センサ・ジャイロセンサ（MPU-6050)を搭載したセンサボードGY-521は 3軸加速度、 3軸ジャイロデータをインターフェースI<sup>2</sup>Cで簡単に取得でき、情報量も多く安価でお勧めなボードです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ただし、ネット情報ではほとんどがArduino向けのもので、プログラミングは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">既存のライブラリ関数を使用して誰でも簡単に活用できる</span></strong>ようになっていて仕様について理解しなくても動作させることができる反面、なんとなく使うことができてしまいますのでスキルは身につくことにはなりません。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">そこで、今回の記事では加速度センサ・ジャイロセンサ（MPU-6050)の仕様書から要所を把握して、I<sup>2</sup>C通信の基本を押さえながら使いこなせるまでを解説していきます。 </p>







<h2 class="wp-block-heading">加速度・ジャイロセンサボード</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>X,Y,Z3軸傾斜角をはじめから求めようとするとかなり複雑のため、この記事では1軸分(Y軸)まわりの傾斜角を加速度センサおよびジャイロセンサから算出する方法を解説します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>MPU-6050では下図の向きにX、Y、Z軸を設定しています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/MPU6050-Axis.jpg" alt="" class="wp-image-9654" width="307" height="280" srcset="https://depfields.com/wp-content/uploads/2021/07/MPU6050-Axis.jpg 307w, https://depfields.com/wp-content/uploads/2021/07/MPU6050-Axis-300x274.jpg 300w" sizes="(max-width: 307px) 100vw, 307px" /><figcaption>MPU-6050</figcaption></figure>



<h3 class="wp-block-heading">加速度データ</h3>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>加速度センサでY軸まわりに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">θ<sub>y</sub>傾斜する場合</span></strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Z軸方向およびX軸方向の重力比率より傾斜角θ<sub>y</sub>は逆三角関数を使用すると算出</span></strong>できます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><a aria-label="加速度センサアプリ (opens in a new tab)" href="https://depfields.com/accel-apl/" target="_blank" rel="noreferrer noopener"><strong>加速度センサアプリ</strong></a>でも説明しましたが、加速度センサの重力(1G)成分による各軸の値a<sub>x</sub>,a<sub>y</sub>,a<sub>z</sub>は重力に対する抗力の向きとなりますので、下図のようにY軸中心に座標を正方向θ<sub>Y</sub>傾斜したとき、重力Z軸成分(1G<sub>Z</sub>)の抗力<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">a<sub>z</sub>は正値</span></strong>で、X軸成分(1G<sub>X</sub>)の抗力<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">a<sub>x</sub>は負値</span></strong>となります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここでは動作による加速度は考えていませんので算出データは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">地上に対して傾斜させて静止した角度(絶対角度)</span></strong>となります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/07/accel_sensor.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/accel_sensor2.png" alt="" class="wp-image-9809" width="283" height="296"/></a><figcaption> 加速度センサと動作角度 </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>算出した絶対角度に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">オフセットθ<sub>offset</sub>分</span></strong>を<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">差し引くと、任意の角度で基準0°にプリセットできる</span></strong>ので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">基準からの相対角度</span></strong>とすることができます。逆三角関数を使用した場合の角度は単位がradのため、必要に応じて°に変換します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/07/angle_accel.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/angle_accel.png" alt="" class="wp-image-9812" width="474" height="133"/></a><figcaption> 加速度センサによる角度の算出 </figcaption></figure>



<h3 class="wp-block-heading">ジャイロセンサデータ</h3>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャイロセンサ</span></strong>の場合、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">データg<sub>y</sub>はY軸まわりの回転時の角速度</span></strong>のため、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">角度を得るにはプログラム内で積分して算出する必要</span></strong>があります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>まず得られた<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">16ビットデータをスケールに応じた角速度（°/s）に変換</span></strong>します。それから<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">オフセットがある場合は予め差し引いて</span></strong>おいてから<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">積分して角度を算出</span></strong>します。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/07/angle_gyro.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/angle_gyro.png" alt="" class="wp-image-9707"/></a><figcaption>ジャイロセンサによる角度算出</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>プログラム内での積分は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">離散化した近似</span></strong>です。最もシンプルな積分は下図のアルゴリズムです。サンプリングタイムTsが十分小さい場合はこれでも問題はありません。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/07/digital-integral.png"><img decoding="async" width="467" height="258" src="https://depfields.com/wp-content/uploads/2021/07/digital-integral.png" alt="" class="wp-image-9689" srcset="https://depfields.com/wp-content/uploads/2021/07/digital-integral.png 467w, https://depfields.com/wp-content/uploads/2021/07/digital-integral-300x166.png 300w" sizes="(max-width: 467px) 100vw, 467px" /></a></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/07/angle_gyro2.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/angle_gyro2.png" alt="" class="wp-image-9793" width="488" height="197"/></a><figcaption> 角速度から角度への算出 </figcaption></figure>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>ジャイロセンサの場合、角度は角速度を積分して算出されるために、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">静止した初期状態でオフセットが存在していて０°/sでなければ誤差が大きめに累積</span></strong>してしまいます。そのため、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">オフセットを予め差し引いておくと、角度のドリフトは改善されます</span></strong>。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">MPU-6050とNucleoボードとの結線図</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>MPU-6050をNucleo-F103RBに接続して使用する場合の配線例を下図に示します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>センサボードGY-521の電源にはLDOレギュレータを内蔵していますので5Vを接続します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>データ出力インターフェースはI<sup>2</sup>C通信のため、STM32側ではI<sup>2</sup>C2に接続します。I<sup>2</sup>CのI/Oはオープンドレインに設定しますので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">通常ではプルアップ抵抗が必要</span></strong>ですが、センサボードGY-521には予め含まれています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/07/wiring.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/wiring.png" alt="" class="wp-image-9890" width="580" height="443"/></a><figcaption> 配線図 </figcaption></figure>



<h2 class="wp-block-heading">プログラミングによるデータ算出</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>まず、はじめの関門はI<sup>2</sup>C通信の設定およびデータ読み書きを正常に実現することです。データを任意に安定して読み込めることができればあとはこれまでに解説した方法でデータを演算して角度を算出するだけです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>I<sup>2</sup>C通信デバイスを使用するために、I2C2_Configuration()でまず初期設定をします。これは他のI<sup>2</sup>Cデバイスと同様です。詳細は<a href="https://depfields.com/i2c/" target="_blank" aria-label="シリアル通信I2C【STM32のI2C詳細】 (opens in a new tab)" rel="noreferrer noopener"><strong>シリアル通信I2C【STM32のI2C詳細】</strong></a>を参照してください。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>I2C2の初期設定のあとはMPU-6050の設定をします。設定はレジスタに値を書き込みます。すべてデフォルトで使用する場合は必要ありませんが、デバイスに内蔵のデジタルフィルタを使用したり、データのフルスケールを変更設定する場合には必要です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/07/main.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/main.png" alt="" class="wp-image-9726" width="591" height="324" srcset="https://depfields.com/wp-content/uploads/2021/07/main.png 663w, https://depfields.com/wp-content/uploads/2021/07/main-300x165.png 300w" sizes="(max-width: 591px) 100vw, 591px" /></a><figcaption>デバイス初期設定</figcaption></figure>



<h3 class="wp-block-heading">I<sup>2</sup>C設定とデータ書き込み・読み込み</h3>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>I<sup>2</sup>C通信では1バイト単位でデータを読み書きするのですが、データ読み込みでは個々のバイトデータを単独で読み込むのではなく、一度に複数バイトを読み込む方が効率的です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>そうなると読み込みデータアドレスは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサのX軸のデータアドレス3Bから14バイト分を読み込んでデータを配列に格納するだけでよい</span></strong>のです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>話は前後しますが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">所望のレジスタに1バイトデータを書き込むための関数は自作</span></strong>します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここでの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ポイント</span></strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">スレーブアドレス</span></strong>で、I<sup>2</sup>Cのアドレス送信関数I2C_Send7bitAddress()では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">アドレスは1バイト枠で左詰め7ビット分</span></strong>です。これに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">最下位ビットに送信か受信フラグを付加</span></strong>した１バイトデータとして扱います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ライブラリ関数の中身を確認して動作をたどると理解できると思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>例えば<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">I<sup>2</sup>Cデバイスのスレーブアドレスが0x68の場合は1ビット分左シフトした0xD0を送信関数I2C_Send7bitAddress()に与えるアドレス</span></strong>とします。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/07/i2c-write-byte.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/i2c-write-byte.png" alt="" class="wp-image-9728" width="593" height="252" srcset="https://depfields.com/wp-content/uploads/2021/07/i2c-write-byte.png 634w, https://depfields.com/wp-content/uploads/2021/07/i2c-write-byte-300x127.png 300w" sizes="(max-width: 593px) 100vw, 593px" /></a><figcaption>I2C書き込み関数</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>データ読み込みは書き込みの延長のようなものですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">複数バイトデータも連続して読み込むことができます</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これも<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">自作の複数バイト読み込み関数</span></strong>ですが、データが複数ある場合は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">最後のバイトデータ受信直前でACKを返さないNACKとすることがポイント</span></strong>です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/07/i2c-read-multibyte.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/i2c-read-multibyte.png" alt="" class="wp-image-9727" width="592" height="485" srcset="https://depfields.com/wp-content/uploads/2021/07/i2c-read-multibyte.png 631w, https://depfields.com/wp-content/uploads/2021/07/i2c-read-multibyte-300x246.png 300w" sizes="(max-width: 592px) 100vw, 592px" /></a><figcaption>I2C複数バイト読み込み関数</figcaption></figure>



<h3 class="wp-block-heading">MPU-6050の初期設定</h3>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p> MPU-6050 は初期設定としてレジスタへ<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">センサへのクロック源を設定</span></strong>したり、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサ、ジャイロセンサのフルスケール</span></strong>や出力への<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィルタを設定</span></strong>します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>加速度センサおよびジャイロセンサにより角度を取得するだけならばデフォルト設定でも使えますが取扱うレジスタはせいぜい下記の程度です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/07/program1.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/program1.png" alt="" class="wp-image-9749" width="443" height="439" srcset="https://depfields.com/wp-content/uploads/2021/07/program1.png 392w, https://depfields.com/wp-content/uploads/2021/07/program1-300x298.png 300w, https://depfields.com/wp-content/uploads/2021/07/program1-150x150.png 150w" sizes="(max-width: 443px) 100vw, 443px" /></a><figcaption>レジスタアドレス</figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">　クロック源の指定　</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>クロック源を指定することで MPU-6050は機能始めます。クロック源は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レジスタアドレス6Bの下位3ビット分に設定</span></strong>します。電源投入時のデフォルトでは内部発振8MHzとなっています。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/register_6b.png" alt="" class="wp-image-9677"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="374" height="185" src="https://depfields.com/wp-content/uploads/2021/07/clk_config.png" alt="" class="wp-image-9672" srcset="https://depfields.com/wp-content/uploads/2021/07/clk_config.png 374w, https://depfields.com/wp-content/uploads/2021/07/clk_config-300x148.png 300w" sizes="(max-width: 374px) 100vw, 374px" /></figure>



<p><span style="background-color: #003300; color: #ffffff;">　フィルタの指定　</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>MPU-6050には出力にノイズ対策の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ローパスフィルタを設定</span></strong>することができます。必要に応じて<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レジスタアドレス1Aの下位3ビットに0から6までの値を設定</span></strong>します。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/register_1a.png" alt="" class="wp-image-9674"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="515" height="222" src="https://depfields.com/wp-content/uploads/2021/07/lpf_config.png" alt="" class="wp-image-9673" srcset="https://depfields.com/wp-content/uploads/2021/07/lpf_config.png 515w, https://depfields.com/wp-content/uploads/2021/07/lpf_config-300x129.png 300w" sizes="(max-width: 515px) 100vw, 515px" /></figure>



<p><span style="background-color: #003300; color: #ffffff;">　ジャイロセンサスケールの指定　</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レジスタアドレス1B</span></strong>では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャイロセンサフルスケールを0から3までの値で設定</span></strong>します。デフォルトでは±250°/sです。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/register_1b.png" alt="" class="wp-image-9675"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="219" height="101" src="https://depfields.com/wp-content/uploads/2021/07/gyro_config.png" alt="" class="wp-image-9669"/></figure>



<p><span style="background-color: #003300; color: #ffffff;">　加速度センサスケールの指定　</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>レジスタアドレス1C</strong></span>では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサフルスケールを0から3までの値で設定</span></strong>します。デフォルトでは±2gです。 </p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/register_1c.png" alt="" class="wp-image-9676"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="222" height="115" src="https://depfields.com/wp-content/uploads/2021/07/accel_config.png" alt="" class="wp-image-9668"/></figure>



<p><span style="background-color: #003300; color: #ffffff;">　加速度センサデータの読み込み　</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>加速度センサの各軸データは16ビットですが、データ格納アドレスは8ビットですので上位8ビット、下位8ビットで構成されます。X軸、Y軸、Z軸のデータは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レジスタアドレス3BよりX軸上位、下位...と順に格納</span></strong>されます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>データについては例えばフルスケールが±2gの場合は、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">+2g時に32768</span></strong>となるので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">1g当たり16384</span></strong>となります。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="667" height="140" src="https://depfields.com/wp-content/uploads/2021/07/register_accel.png" alt="" class="wp-image-9678" srcset="https://depfields.com/wp-content/uploads/2021/07/register_accel.png 667w, https://depfields.com/wp-content/uploads/2021/07/register_accel-300x63.png 300w" sizes="(max-width: 667px) 100vw, 667px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="422" height="119" src="https://depfields.com/wp-content/uploads/2021/07/accel_scale.png" alt="" class="wp-image-9670" srcset="https://depfields.com/wp-content/uploads/2021/07/accel_scale.png 422w, https://depfields.com/wp-content/uploads/2021/07/accel_scale-300x85.png 300w" sizes="(max-width: 422px) 100vw, 422px" /></figure>



<p><span style="background-color: #003300; color: #ffffff;">ジャイロセンサデータの読み込み　</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ジャイロセンサの各軸データも加速度センサと同様にX軸、Y軸、Z軸のデータは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レジスタアドレス43よりX軸上位、下位...と順に格納</span></strong>されます。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>データについては例えばフルスケールが±250°/sの場合は、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">+250°/s 時に32768</span></strong>となるので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">1°/s当たり131</span></strong>となります。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="653" height="139" src="https://depfields.com/wp-content/uploads/2021/07/register_gyro.png" alt="" class="wp-image-9679" srcset="https://depfields.com/wp-content/uploads/2021/07/register_gyro.png 653w, https://depfields.com/wp-content/uploads/2021/07/register_gyro-300x64.png 300w" sizes="(max-width: 653px) 100vw, 653px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="339" height="106" src="https://depfields.com/wp-content/uploads/2021/07/gyro_scale.png" alt="" class="wp-image-9671" srcset="https://depfields.com/wp-content/uploads/2021/07/gyro_scale.png 339w, https://depfields.com/wp-content/uploads/2021/07/gyro_scale-300x94.png 300w" sizes="(max-width: 339px) 100vw, 339px" /></figure>



<h3 class="wp-block-heading">各センサからの角度算出と相補フィルタ</h3>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>加速度およびジャイロセンサからのデータが取得できるようになるといよいよそれぞれのデータから角度を算出できるようになります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>I2C_Read_multibyte()関数による複数バイト読み込みで格納したデータにより加速度およびジャイロセンサ各軸の16ビット値が取得できます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>取得できた値により加速度センサによる角度およびジャイロセンサによる角度が算出できます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ジャイロセンサからの角速度データを積分して角度を算出するためのサンプリングタイムを正確に5msとするために<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">RTOSの機能を利用</span></strong>しています。詳細は<a aria-label="FreeRTOSタスク管理の基本 (opens in a new tab)" href="https://depfields.com/task/" target="_blank" rel="noreferrer noopener"><strong>FreeRTOSタスク管理の基本</strong></a>を参照してください。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/07/program_angle.png"><img decoding="async" width="550" height="748" src="https://depfields.com/wp-content/uploads/2021/07/program_angle.png" alt="" class="wp-image-9878" srcset="https://depfields.com/wp-content/uploads/2021/07/program_angle.png 550w, https://depfields.com/wp-content/uploads/2021/07/program_angle-221x300.png 221w" sizes="(max-width: 550px) 100vw, 550px" /></a><figcaption> 加速度・ジャイロセンサから角度算出 </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>加速度センサおよびジャイロセンサから単独で算出された角度はそれぞれ一長一短あり安定しません。そこで、両センサの長所である部分をいいとこ取りするための手段に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">相補フィルタ</span></strong>というものを使います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサ</span></strong>では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">重力変化による傾斜角度が得られる</span></strong>ので特に静止状態の場合の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">絶対的な角度変化は信頼性</span></strong>がありますが、情報にノイズが含まれていたり、動作が伴うと重力以外の成分も加わることにもなります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>対して、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャイロセンサ</span></strong>では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">回転を検知した角速度が得られる</span></strong>ので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">動作の伴う角度の変化には信頼性</span></strong>がありますが、プログラム内で積分をしているので誤差も同時に累積し<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ドリフトを発生</span></strong>してしまうことになります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>そこで<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">相補フィルタを使用</span></strong>して、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサ出力にはローパルフィルタ(LPF)</span></strong>により低周波部分だけをとりだし、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャイロセンサ出力にはハイパスフィルタ(HPF)</span></strong>により、ドリフト分をキャンセルすることができます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/07/complementary_filter2.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/complementary_filter2.png" alt="" class="wp-image-9734" width="530" height="83" srcset="https://depfields.com/wp-content/uploads/2021/07/complementary_filter2.png 530w, https://depfields.com/wp-content/uploads/2021/07/complementary_filter2-300x47.png 300w" sizes="(max-width: 530px) 100vw, 530px" /></a><figcaption>相補フィルタによる角度算出</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>相補フィルタの式だけをみると、至ってシンプルなのですが、奥が深いので別途、<strong><a href="https://depfields.com/complementary-filter/" target="_blank" aria-label="相補フィルタのしくみを解明してみる【加速度・ジャイロセンサ】 (opens in a new tab)" rel="noreferrer noopener">相補フィルタのしくみを解明してみる【加速度・ジャイロセンサ】</a></strong>で詳細を解説しています。</p>
</div></div></div>



<h2 class="wp-block-heading">実測結果</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>下図は加速度センサ、ジャイロセンサおよび相補フィルタを通した出力による角度変化の様子をグラフ化したものです。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">横軸は経過時間(s)、縦軸は角度(°)</span></strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>加速度センサによる角度は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">細かなノイズが含まれていますが絶対的な角度を示すのでドリフトは発生していません</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ジャイロセンサによる角度は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">プログラム内で積分したものなのでノイズもなく滑らかですが、累積誤差によるドリフトが発生しています</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>相補フィルタを通した出力では加速度センサによる出力とジャイロセンサによる出力の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">長所のみを引き継いだもの</span></strong>になっていて<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">安定して信頼性があります</span></strong>。相補フィルタの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">カットオフ周波数は2Hzに設定</span></strong>したものです。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/07/angle_output.png"><img decoding="async" width="617" height="382" src="https://depfields.com/wp-content/uploads/2021/07/angle_output.png" alt="" class="wp-image-9657" srcset="https://depfields.com/wp-content/uploads/2021/07/angle_output.png 617w, https://depfields.com/wp-content/uploads/2021/07/angle_output-300x186.png 300w" sizes="(max-width: 617px) 100vw, 617px" /></a><figcaption> カットオフ周波数：2Hz </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>相補フィルタのカットオフ周波数によりどのような違いがあるのかを確認するために<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">4Hzと2Hzで比べ</span></strong>てみました。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">カットオフ周波数を4Hzに設定した場合</span></strong>はジャイロセンサによる<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ドリフトの影響はない</span></strong>のですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサの敏感なノイズ成分が多少含まれて</span></strong>います。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサ寄りの影響を受けた出力</span></strong>になっています。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/07/angle_output_4Hz.png"><img decoding="async" width="562" height="421" src="https://depfields.com/wp-content/uploads/2021/07/angle_output_4Hz.png" alt="" class="wp-image-9659" srcset="https://depfields.com/wp-content/uploads/2021/07/angle_output_4Hz.png 562w, https://depfields.com/wp-content/uploads/2021/07/angle_output_4Hz-300x225.png 300w" sizes="(max-width: 562px) 100vw, 562px" /></a><figcaption>カットオフ周波数：4Hz</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">カットオフ周波数を2Hzに設定した場合</span></strong>は加速度センサの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ノイズ成分はほぼキャンセルされ</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャイロセンサ寄りの影響を受けた出力</span></strong>になっています。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャイロセンサ出力からドリフト分だけをキャンセルした出力</span></strong>となっています。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/07/angle_output_2Hz.png"><img decoding="async" width="606" height="367" src="https://depfields.com/wp-content/uploads/2021/07/angle_output_2Hz.png" alt="" class="wp-image-9658" srcset="https://depfields.com/wp-content/uploads/2021/07/angle_output_2Hz.png 606w, https://depfields.com/wp-content/uploads/2021/07/angle_output_2Hz-300x182.png 300w" sizes="(max-width: 606px) 100vw, 606px" /></a><figcaption> カットオフ周波数：2Hz </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>下の図はカットオフ周波数を2Hzの場合で、少し速い動作をさせてみた出力結果です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサ</span></strong>では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速い動きほどノイズ成分が顕著</span></strong>に現れ、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャイロセンサ</span></strong>では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ドリフト成分によるオフセットが突然大きくなったり</span></strong>でこのままでは使用できません。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>対して、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">相補フィルタを通した出力</span></strong>ではこのような動作でも遅れは見られず<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">しっかりと追従</span></strong>し、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ドリフトの影響もなくほぼ理想の状態</span></strong>となっていて<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィルタ効果が確認</span></strong>できます。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/07/angle_output2.png"><img decoding="async" width="575" height="408" src="https://depfields.com/wp-content/uploads/2021/07/angle_output2.png" alt="" class="wp-image-9660" srcset="https://depfields.com/wp-content/uploads/2021/07/angle_output2.png 575w, https://depfields.com/wp-content/uploads/2021/07/angle_output2-300x213.png 300w" sizes="(max-width: 575px) 100vw, 575px" /></a><figcaption>カットオフ周波数2Hzにおける少し速い動作</figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer"><div class="vk_spacer-display-pc" style="height:20px"></div><div class="vk_spacer-display-tablet" style="height:10px"></div><div class="vk_spacer-display-mobile" style="height:5px"></div></div>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>廉価で人気のあるセンサボードGY-521(MPU-6050)をSTM32Nucleoボードに接続して傾斜角を算出する過程を解説しました。たかだか角度算出のためにと思われるかもしれませんが、ここまで踏み込んで動作を確認すると<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">あいまいな部分が一切なくなる</span></strong>ために、得られた知識等は<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">新しいスキルとして自信をもって他のアプリケーションにも適用できる</span></strong>ようになります。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>STM32Nucleoで角度および角速度を取得できる手段を獲得できたところで、ようやく倒立振子を実現する道具が揃いました。現代制御理論による倒立振子のコントロールに関しては<strong><a href="https://depfields.com/controltheory-modern/" target="_blank" rel="noreferrer noopener" aria-label=" (opens in a new tab)">マイコンで実現するフィードバック制御のための基礎知識【番外編】</a></strong>で解説しましたが、近日中に実機での実現に挑戦してみたいと思います。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/accel-gyro/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/8110ed110cfd7bc43cc28ed559ae0b54245c8c842dbcfdb782064992266be621.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Posture detection by accelerometer and gyro sensor [STM32Nucleo] | Most Power...</div></div><div class="lkc-url">https://en.depfields.com/accel-gyro/</div><div class="lkc-excerpt">The GY-521 Sensor Board with Accelerometer and Gyro Sensor (MPU-6050) can easily acquire 3-axis acceleration and 3-axis gyro data via I2C interface, and is recommended for its high information content and low cost.However, most of the</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/accel-gyro/">加速度センサ・ジャイロセンサによる姿勢検知【STM32Nucleo】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>相補フィルタのしくみを解明してみる【加速度・ジャイロセンサ】</title>
		<link>https://depfields.com/complementary-filter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=complementary-filter</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Mon, 12 Jul 2021 05:00:37 +0000</pubDate>
				<category><![CDATA[計測アプリ]]></category>
		<category><![CDATA[フィードバック制御]]></category>
		<category><![CDATA[計測]]></category>
		<category><![CDATA[モーションコントロール]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=9582</guid>

					<description><![CDATA[<p>加速度・ジャイロセンサを組み合わせて使うのに相補フィルタがよく用いられますがその詳細に関する解説はあまり見かけません。どのような過程で相補フィルタの式が導かれ、式が何を意味しているかは知りたいところです。比較的単純な式の [&#8230;]</p>
<p>The post <a href="https://depfields.com/complementary-filter/">相補フィルタのしくみを解明してみる【加速度・ジャイロセンサ】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img decoding="async" width="616" height="291" src="https://depfields.com/wp-content/uploads/2021/07/complementary_filter.png" class="attachment-large size-large wp-post-image" alt="" srcset="https://depfields.com/wp-content/uploads/2021/07/complementary_filter.png 616w, https://depfields.com/wp-content/uploads/2021/07/complementary_filter-300x142.png 300w" sizes="(max-width: 616px) 100vw, 616px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><a href="https://depfields.com/accel-gyro/" target="_blank" rel="noreferrer noopener" title="加速度センサ・ジャイロセンサによる姿勢検知【STM32Nucleo】">加速度・ジャイロセンサ</a>を組み合わせて使う</span></strong>のに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">相補フィルタがよく用いられます</span></strong>がその詳細に関する解説はあまり見かけません。どのような過程で相補フィルタの式が導かれ、式が何を意味しているかは知りたいところです。比較的単純な式の中には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">深い意味があるところを算出過程で解説</span></strong>していきます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサ</span></strong>と<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャイロセンサ</span></strong>は物体にかかる動きや回転の情報を検出するデバイスですが、特に姿勢位置を得るにはそれぞれ短所、長所があるため安定した情報とするのに一工夫する必要があります。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサは動きを検出するセンサ</span></strong>で姿勢位置を得るには<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">x,y,z3軸にかかる重力</span></strong>からそれぞれ<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">軸の傾斜角を算出</span></strong>できます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャイロセンサは それぞれx,y,z3軸の角速度を検出</span></strong>できますのでプログラム内で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">積分させると動作角度を算出</span></strong>できます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">これだけだと物体の姿勢位置を得るのにそれぞれ単独で使用できそうですが、加速度センサは動きがある場合には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">重力以外の成分も加わる</span></strong>のに加え、出力が敏感で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">細かなノイズが含まれ</span></strong>ています。ジャイロセンサでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">検出した角速度を積分</span></strong>するために<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">誤差成分も累積してドリフト（オフセット）</span></strong>が生じてしまいます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">加速度センサ、ジャイロセンサの短所を克服して長所のいいとこ取りだけすると安定した姿勢が得られるのですが、その方法の一つに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">相補フィルタ</span></strong>というものがあります。</p>







<h2 class="wp-block-heading">相補フィルタの構成</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">相補フィルタ</span></strong>をブロック線図で表すと下図のようになります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度センサ</span></strong>では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ノイズ成分を除去した低周波領域の情報</span></strong>がほしいために<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><a href="https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%91%E3%82%B9%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF" target="_blank" rel="noreferrer noopener">ローパスフィルタ(LPF)</a></span></strong>を通します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ジャイロセンサ</span></strong>では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">累積するドリフト成分を除去</span></strong>するために<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><a href="https://ja.wikipedia.org/wiki/%E3%83%8F%E3%82%A4%E3%83%91%E3%82%B9%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF" target="_blank" rel="noreferrer noopener">ハイパスフィルタ（HPF)</a></span></strong>を通すと<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">情報のドリフトによるオフセット分をキャンセル</span></strong>できます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/complementary-filter.png" alt="" class="wp-image-9586" width="366" height="308" srcset="https://depfields.com/wp-content/uploads/2021/07/complementary-filter.png 366w, https://depfields.com/wp-content/uploads/2021/07/complementary-filter-300x252.png 300w" sizes="(max-width: 366px) 100vw, 366px" /><figcaption class="wp-element-caption">相補フィルタ構成図</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>加速度センサあるいはジャイロセンサ単独にそれぞれフィルタを通すだけでなく、組み合わせることでいわゆる互いにいいとこ取りしあうところから<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">相補フィルタ</span></strong>と呼ばれます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>相補フィルタに使用するLPFとHPFには条件があり、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">任意の周波数でフィルタゲインの和が1</span></strong>であることです。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/07/filter-condition.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/filter-condition.png" alt="" class="wp-image-9640" width="566" height="274"/></a><figcaption class="wp-element-caption">相補フィルタ構成条件</figcaption></figure>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>わざわざ相補フィルタを使わなくても、単独の加速度センサにはローパスフィルタ(LPF)を、あるいは単独のジャイロセンサにはハイパスフィルタ(HPF)を通すだけでいいようにも思われますが、これらの場合には<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">フィルタによる位相遅れが生じたり</span></strong>、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">入出力間で信号情報ゲインが変化</span></strong>してしまいます。２つのセンサの長所を利用することで理想の出力が得られるのがこの<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">相補フィルタの利点</span></strong>です。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">相補フィルタの周波数特性</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">相補フィルタのLPFとHPF</span></strong>で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">カットオフ周波数を2Hz</span></strong>とした場合の特性を周波数領域のボード線図で表すと下図のようになります。縦軸はゲインを表していて単位はdB(デシベル）ですが、この条件では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">LPFとHPFのゲインは足すと全領域で1</span></strong>となります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">LPFはカットオフ周波数fc以上の高周波成分を除去</span></strong>しますので加速度センサからの情報は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">低周波部分のみが残ります</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">HPFはカットオフ周波数fc以下の低周波成分を除去</span></strong>しますのでジャイロセンサからの情報は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ゆっくりしたドリフトによるオフセット分が除去されます</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">カットオフ周波数fc</span></strong>が2Hzとした場合はほぼジャイロセンサによる情報が優勢になります。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">最終的には出力を見ながらfcを微調整</span></strong>をすればよいと思います。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="617" height="340" src="https://depfields.com/wp-content/uploads/2021/07/bode-plot-1.png" alt="" class="wp-image-9857" srcset="https://depfields.com/wp-content/uploads/2021/07/bode-plot-1.png 617w, https://depfields.com/wp-content/uploads/2021/07/bode-plot-1-300x165.png 300w" sizes="(max-width: 617px) 100vw, 617px" /><figcaption class="wp-element-caption"> 相補フィルタLPF/HPFボード線図 </figcaption></figure>



<h2 class="wp-block-heading">相補フィルタの算出過程</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>相補フィルタは結果の式だけ知っていれば使用はできるのですが、式の意味を知らなければなんとなくの当てずっぽうで係数等のパラメータ値を決めることになります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>相補フィルタを使用するのであればやはりある程度<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">式の内容は理解しておきたい</span></strong>ものです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>以下の算出過程には難解な理論は使用していないのですが理解するには最低限の古典制御理論の基礎知識が必要ですので、当サイトの<strong>フィードバック制御のための基礎知識<a aria-label="【準備編】 (opens in a new tab)" href="https://depfields.com/controltheory-preparation/" target="_blank" rel="noreferrer noopener">【準備編】</a><a aria-label="【解析編】 (opens in a new tab)" href="https://depfields.com/controltheory-analysis/" target="_blank" rel="noreferrer noopener">【解析編】</a></strong>を参照してください。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">1次遅れフィルタ</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ラプラス変換などの概念</span></strong>がわかっていれば理解できます。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/07/step.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/step.png" alt="" class="wp-image-9645"/></a></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ようやくよく目にする相補フィルタの式を導きました。これは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">１次フィルタの場合</span></strong>です。これで重み係数Kの意味もわかると思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">係数Kはカットオフ周波数fcとサンプリングタイムT<sub>S</sub> で決まる</span></strong>ものです。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/07/step5.png" alt="" class="wp-image-9595" width="389" height="154" srcset="https://depfields.com/wp-content/uploads/2021/07/step5.png 389w, https://depfields.com/wp-content/uploads/2021/07/step5-300x119.png 300w" sizes="(max-width: 389px) 100vw, 389px" /></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>一般的に出回っている相補フィルタ情報の中には加速度センサとジャイロセンサの出力に係数Kを重みとしてかけた解釈のものもありますが、これでは意味をなしません。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="494" height="101" src="https://depfields.com/wp-content/uploads/2021/07/step6.png" alt="" class="wp-image-9597" srcset="https://depfields.com/wp-content/uploads/2021/07/step6.png 494w, https://depfields.com/wp-content/uploads/2021/07/step6-300x61.png 300w" sizes="(max-width: 494px) 100vw, 494px" /></figure>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>結果だけをみると、相補フィルタの式は比較的シンプルな形になっているのですが、実はこれだけの意味が含まれていることが理解できると思います。<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">式の内容をブラックボックスでなく理解できていると安心して使用できる</span></strong>ようになると思います。相補フィルタの発想は天才的で感動すらあります。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/complementary-filter/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/d42fb3d61698344d4fa206b670608c618a3edea1e6e0a241780ee9e6a8543e09.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Let&#039;s clarify the mechanism of the complementary filter [acceleration/gy...</div></div><div class="lkc-url">https://en.depfields.com/complementary-filter/</div><div class="lkc-excerpt">Complementary filters are often used to combine accelerometers and gyroscopes, but there are few explanations on the details of these filters. It is interesting to know how the complementary filter equation is derived and what the equation</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/complementary-filter/">相補フィルタのしくみを解明してみる【加速度・ジャイロセンサ】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>パルスに追従する位置決めサーボ制御システムをマイコンで構築する</title>
		<link>https://depfields.com/dcmotor-positionservo2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dcmotor-positionservo2</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Sat, 08 May 2021 08:00:42 +0000</pubDate>
				<category><![CDATA[モーションコントロールアプリ]]></category>
		<category><![CDATA[モーションコントロール]]></category>
		<category><![CDATA[フィードバック制御]]></category>
		<category><![CDATA[DCモータ]]></category>
		<category><![CDATA[マイコン]]></category>
		<category><![CDATA[位置決めサーボ]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=9306</guid>

					<description><![CDATA[<p>これまではあらかじめ作成したモータ位置の軌道に追従する方式として加速度指令方式での位置決めモーションコントロールを実現し、その動作の有効性を確認しました。 実際のモータ位置決めサーボシステムではパルスを位置決め指令として [&#8230;]</p>
<p>The post <a href="https://depfields.com/dcmotor-positionservo2/">パルスに追従する位置決めサーボ制御システムをマイコンで構築する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img decoding="async" width="640" height="426" src="https://depfields.com/wp-content/uploads/2021/04/racing-car-4438174_640.jpg" class="attachment-large size-large wp-post-image" alt="" srcset="https://depfields.com/wp-content/uploads/2021/04/racing-car-4438174_640.jpg 640w, https://depfields.com/wp-content/uploads/2021/04/racing-car-4438174_640-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">これまではあらかじめ作成したモータ位置の軌道に追従する方式として<strong><a aria-label=" (opens in a new tab)" href="https://depfields.com/dcmotor-positionservo/" target="_blank" rel="noreferrer noopener">加速度指令方式での位置決めモーションコントロール</a></strong>を実現し、その動作の有効性を確認しました。 </p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">実際のモータ位置決めサーボシステムでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">パルスを位置決め指令</span></strong>として与えるものが多いです。そこで、今回は外部のエンコーダで発生させた<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">パルスを指令値としてその動作に追従させる位置決めシステム</span></strong>を<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>マイコンで実現</strong></span>してみます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">パルスに追従するところからステッピングモータのように与えたパルス分だけ動作することになります。</p>







<h2 class="wp-block-heading">一般的な位置決めサーボシステム</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>一般的なモータの位置決めサーボシステムのブロック線図です。パワーアンプが<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">電流指令タイプの場合は</span></strong>一番内側に電流フィードバックループがあり、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モータへは電流指令</span></strong>を与えます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">電圧指令タイプの場合は電圧指令値</span></strong>をオープン制御で与えることになります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>モータ位置決めサーボシステムではまず速度制御フィードバックによりモータ速度を安定させてから、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外側に位置フィードバックループを設けるものが一般的</span></strong>です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/04/位置制御システム.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/04/位置制御システム.png" alt="" class="wp-image-9310" width="590" height="231" srcset="https://depfields.com/wp-content/uploads/2021/04/位置制御システム.png 728w, https://depfields.com/wp-content/uploads/2021/04/位置制御システム-300x117.png 300w" sizes="(max-width: 590px) 100vw, 590px" /></a><figcaption>一般的なモータ位置決めサーボシステム</figcaption></figure>



<h2 class="wp-block-heading">ハイゲインフィードバック方式を適用した位置決めサーボ</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>速度制御にはマイコンプログラムで簡単に実現でき、外乱抑制にも効果のある<strong><a href="https://depfields.com/dcmotor-highgainfeedback/" target="_blank" rel="noreferrer noopener" title="DCモータの実用的な速度フィードバック制御システムをマイコンで構築する">ハイゲインフィードバック方式</a><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">を採用</span></strong>します<strong>。</strong></p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>位置制御システムに発展させるためには<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度制御系</span></strong><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">の外側に位置フィードバックループを設けます</span></strong>。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/04/パルス追従位置制御.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置制御.png" alt="" class="wp-image-9380" width="580" height="281" srcset="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置制御.png 717w, https://depfields.com/wp-content/uploads/2021/05/パルス追従位置制御-300x146.png 300w" sizes="(max-width: 580px) 100vw, 580px" /></a><figcaption> 速度制御にハイゲインフィードバック方式を適用した位置決めサーボシステム </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ハイゲインフィードバック方式では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度制御系は1次遅れ系に近似</span></strong>できます。位置制御の補償器が比例ゲインK<sub>P</sub>だけなのは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力から出力までの伝達関数を2次遅れ系</span></strong>とするためです。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/04/パルス追従位置制御簡易表記.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置制御簡易表記.png" alt="" class="wp-image-9398" width="513" height="225" srcset="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置制御簡易表記.png 513w, https://depfields.com/wp-content/uploads/2021/05/パルス追従位置制御簡易表記-300x132.png 300w" sizes="(max-width: 513px) 100vw, 513px" /></a><figcaption> 位置決めサーボ簡略化 </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>外部から任意のパルスを与える場合は多少難がありますが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">あらかじめ位置目標値の軌道がわかっている場合</span></strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度指令値が作成できる</span></strong>ので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィードフォワード項</span></strong>として付加すると遅れはほぼなくなり<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">追従性はより向上</span></strong>します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/04/フィードフォワード付き.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/05/フィードフォワード付き.png" alt="" class="wp-image-9399" width="560" height="255" srcset="https://depfields.com/wp-content/uploads/2021/05/フィードフォワード付き.png 560w, https://depfields.com/wp-content/uploads/2021/05/フィードフォワード付き-300x137.png 300w" sizes="(max-width: 560px) 100vw, 560px" /></a><figcaption> 速度フィードフォワード項を追加したシステム </figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-sm--margin-top"></div></div>



<h2 class="wp-block-heading">位置補償器ゲインの決定</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>入力から出力間の伝達関数は以下のように2次遅れ系となります。<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%, rgba(255, 253, 107, 0.7) 0px);" class="vk_highlighter"><b>時定数T</b><sub style="font-weight: bold;">m2</sub><b>は既知</b></span>のため、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">減衰比ζのみを指定</span></strong>すると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ゲインK<sub>P</sub>は一意的に決まり</span></strong>ます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/04/パルス追従位置制御2次遅れ系.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/04/パルス追従位置制御2次遅れ系.png" alt="" class="wp-image-9313" width="429" height="585" srcset="https://depfields.com/wp-content/uploads/2021/04/パルス追従位置制御2次遅れ系.png 429w, https://depfields.com/wp-content/uploads/2021/04/パルス追従位置制御2次遅れ系-220x300.png 220w" sizes="(max-width: 429px) 100vw, 429px" /></a><figcaption>位置決めサーボシステムの入出力間伝達関数</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>例えば 時定数T<sub>m2</sub>が25msの場合は減衰比ζを1に指定するとω<sub>n</sub>が20となるのでK<sub>P</sub>は10になります。</p>
</div></div></div>



<h2 class="wp-block-heading">実際の回路</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>モータの位置および 外部入力パルスによる位置指令値は<strong><a aria-label=" (opens in a new tab)" href="https://depfields.com/pulse-position/" target="_blank" rel="noreferrer noopener">タイマのエンコーダインターフェースモード</a></strong>によりアップダウンカウントすることで得られます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>User SWは位置情報をリセット/プリセットするために使用します。リセットしたときにアップダウンカウンタの中間値あたりに指定しておけば、動作中に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">カウンタのオーバーフローやアンダーフローによる動作不良を防ぐ</span></strong>ことができます。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/05/配線図_入力.png"><img decoding="async" width="508" height="559" src="https://depfields.com/wp-content/uploads/2021/05/配線図_入力.png" alt="" class="wp-image-9322" srcset="https://depfields.com/wp-content/uploads/2021/05/配線図_入力.png 508w, https://depfields.com/wp-content/uploads/2021/05/配線図_入力-273x300.png 273w" sizes="(max-width: 508px) 100vw, 508px" /></a><figcaption>信号入出力回路</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/05/配線図_出力.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/05/配線図_出力.png" alt="" class="wp-image-9324" width="574" height="346" srcset="https://depfields.com/wp-content/uploads/2021/05/配線図_出力.png 574w, https://depfields.com/wp-content/uploads/2021/05/配線図_出力-300x181.png 300w" sizes="(max-width: 574px) 100vw, 574px" /></a><figcaption>モータドライバ回路</figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">シミュレーションと実際の動作</h2>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;①　シミュレーション&nbsp;</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>まず恒例のシミュレーションをマイクロソフトExcelで実施しました。条件として<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバックゲインC1,C2をそれぞれ2,3</span></strong>とする場合で検証します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入出力間伝達関数は２次遅れ系</span></strong>となりますので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">減衰比</span></strong><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ζを1と指定</span></strong>すると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">位置ゲインK<sub>P</sub>は15</span></strong>となります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>この条件では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">２次遅れ系の特徴</span></strong>がよく現れていて、入力の指令値がランプ状で変化しているときは、出力はわずかな定常偏差をもって変化し、定値になったところで定常偏差がなくなる<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">サーボ追従</span></strong>をしています。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御理論の<a href="https://depfields.com/controltheory-analysis/" target="_blank" aria-label="最終値定理 (opens in a new tab)" rel="noreferrer noopener">最終値定理</a></span></strong>のとおりです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ハイゲインフィードバックゲインC1,Ｃ2を上げすぎると速度の追従性および外乱抑制は向上しますが、敏感になりすぎて振動的になります。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">位置サーボの場合は、小さめのゲインでも十分効果はあります</span></strong>。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置サーボシミュレーション.png"><img decoding="async" width="553" height="369" src="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置サーボシミュレーション.png" alt="" class="wp-image-9337" srcset="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置サーボシミュレーション.png 553w, https://depfields.com/wp-content/uploads/2021/05/パルス追従位置サーボシミュレーション-300x200.png 300w" sizes="(max-width: 553px) 100vw, 553px" /></a><figcaption>外部パルスに追従する位置決めサーボシステムのシミュレーション</figcaption></figure>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b"><strong>2次遅れ系の場合</strong>は、<strong>ランプ入力では定常偏差が残ります</strong></span>が、位置補償器内でさらに<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">積分補償器を追加</span></strong>して伝達関数の次数を増やすことで<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">理論上（最終値定理と内部モデル原理）</span></strong>、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">定常偏差はゼロに収束</span></strong>します。前節の「<a href="https://depfields.com/dcmotor-positionservo/" target="_blank" rel="noreferrer noopener"><strong>実践で使えるDCモータの位置決め制御サーボシステムをマイコンで構築する</strong></a>」で構成したように軌道が既知であれば<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">指令値として加速度、速度をフィードフォワード項を追加</span></strong>すれば<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">遅れなしに追従するシステムを構成</span></strong>できます。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;②　実機による実測&nbsp;</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実機による動作の実測値です。エンコーダ軸を手動で回すと軸の動きに合わせて発生するパルスに追従するいわゆる<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">パルス同期運転</span></strong>となります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>正転、逆転ともにモータの位置は<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>任意に与えたパルスの通り</strong></span>、つまり<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">エンコーダの軸の動きに追従</span></strong>しているのが確認できます。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置決めサーボ実測値.png"><img decoding="async" width="737" height="379" src="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置決めサーボ実測値.png" alt="" class="wp-image-9402" srcset="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置決めサーボ実測値.png 737w, https://depfields.com/wp-content/uploads/2021/05/パルス追従位置決めサーボ実測値-300x154.png 300w" sizes="(max-width: 737px) 100vw, 737px" /></a><figcaption> 外部パルスに追従する位置決めサーボシステムの 実測値</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>多少複雑な入力パターンの場合でもしっかり追従しています。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置決めサーボ実測値2.png"><img decoding="async" width="737" height="479" src="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置決めサーボ実測値2.png" alt="" class="wp-image-9410" srcset="https://depfields.com/wp-content/uploads/2021/05/パルス追従位置決めサーボ実測値2.png 737w, https://depfields.com/wp-content/uploads/2021/05/パルス追従位置決めサーボ実測値2-300x195.png 300w" sizes="(max-width: 737px) 100vw, 737px" /></a><figcaption> 外部パルスに追従する位置決めサーボシステムの 実測値２</figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>シリアルモニターでエンコーダからの位置指令パルス(上段)とモータ位置パルス(下段)の値を確認してみますと、モータ位置パルスは指令パルスに追従しているのがわかります。</p>
</div></div></div>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:75% auto"><figure class="wp-block-media-text__media"><video controls src="https://depfields.com/wp-content/uploads/2022/02/position-servo2.mp4"></video></figure><div class="wp-block-media-text__content">
<p class="has-large-font-size"></p>
</div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>基本的なDCモータの位置決めサーボシステムは<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">速度制御が安定に実現できていれば、その外側に位置制御用フィードバックループを加え</span></strong>、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">その位置偏差に位置補償器ゲインK<sub>P</sub>を通したものを速度指令</span></strong>とすると簡単に実現できます。<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">位置指令として与えた任意のパルス分だけ動く</span></strong>ことでまさに<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ステッピングモータと同じ動作</span></strong>をします。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>動画ではいとも簡単に外部から与えたパルスに追従している様子が確認できますが、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">試行錯誤の調整部分はなく</span></strong>、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">制御理論の上に成り立ったシステム</span></strong>です。制御の基礎をしっかり理解しておくと、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">一見難しそうな技術をかえってシンプルに実現できてしまう一例</span></strong>であるといえます。LEGOモータのような高精度でないホビー用途のものでも<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">理論とプログラム次第で高度な運転ができるようになる</span></strong>ところに<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">フィードバック制御の醍醐味</span></strong>があります。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/dcmotor-positionservo2/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/583d70d27a9a96b30656fa3ff140cf7eca470b0bcd97be1e7122f1c262526d0c.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Build a pulse-following positioning servo control system using Microcontrolle...</div></div><div class="lkc-url">https://en.depfields.com/dcmotor-positionservo2/</div><div class="lkc-excerpt">So far, I have realized positioning motion control using the acceleration command method as a method to follow a motor position trajectory created in advance, and confirmed the effectiveness of this operation.Many actual motor position</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/dcmotor-positionservo2/">パルスに追従する位置決めサーボ制御システムをマイコンで構築する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://depfields.com/wp-content/uploads/2022/02/position-servo2.mp4" length="8786607" type="video/mp4" />

			</item>
		<item>
		<title>実践で使えるDCモータの位置決め制御サーボシステムをマイコンで構築する</title>
		<link>https://depfields.com/dcmotor-positionservo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dcmotor-positionservo</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Tue, 06 Apr 2021 15:50:55 +0000</pubDate>
				<category><![CDATA[モーションコントロールアプリ]]></category>
		<category><![CDATA[マイコン]]></category>
		<category><![CDATA[位置決めサーボ]]></category>
		<category><![CDATA[フィードバック制御]]></category>
		<category><![CDATA[ロバスト制御]]></category>
		<category><![CDATA[DCモータ]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=9044</guid>

					<description><![CDATA[<p>前回ではレゴEV3モータをテーマとして実践で使える速度サーボ運転をマイコンで実現するのに、このサイトで紹介したPI制御方式、ハイゲインフィードバック方式そして２自由度ロバスト方式を適用してそれぞれの特性を実機において検証 [&#8230;]</p>
<p>The post <a href="https://depfields.com/dcmotor-positionservo/">実践で使えるDCモータの位置決め制御サーボシステムをマイコンで構築する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img decoding="async" width="593" height="405" src="https://depfields.com/wp-content/uploads/2021/04/2021-04-02_21h44_11.jpg" class="attachment-large size-large wp-post-image" alt="" srcset="https://depfields.com/wp-content/uploads/2021/04/2021-04-02_21h44_11.jpg 593w, https://depfields.com/wp-content/uploads/2021/04/2021-04-02_21h44_11-300x205.jpg 300w" sizes="(max-width: 593px) 100vw, 593px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">前回では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レゴEV3モータ</span></strong>をテーマとして実践で使える<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度サーボ運転</span></strong>をマイコンで実現するのに、このサイトで紹介した<strong><a aria-label=" (opens in a new tab)" href="https://depfields.com/dcmotor-robustcontrol/" target="_blank" rel="noreferrer noopener">PI制御方式</a></strong>、<strong><a aria-label=" (opens in a new tab)" href="https://depfields.com/dcmotor-highgainfeedback/" target="_blank" rel="noreferrer noopener">ハイゲインフィードバック方式</a></strong>そして<strong><a aria-label=" (opens in a new tab)" href="https://depfields.com/dcmotor-robustcontrol/" target="_blank" rel="noreferrer noopener">２自由度ロバスト方式</a></strong>を適用してそれぞれの特性を実機において検証しました。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"> 今回は速度サーボのさらなる発展としてモータの回転位置をコントロールする<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">位置サーボ（位置追従制御）を実機を使って検証</span></strong>していきたいと思います。</p>







<h2 class="wp-block-heading">位置決めサーボ（加速度指令方式）</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>速度制御系でハイゲインフィードバック方式や2自由度ロバスト制御が適用されて指令値通りに応答できるようになっていれば、位置決めサーボ系に発展させることは容易です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">位置決めサーボ系</span></strong>において<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">応答を決めるゲインをほぼ一意的に選定できる加速度指令方式</span></strong>を採用して実機に適用してその有効性を検証していきます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度指令方式</span></strong>については<strong><a href="https://depfields.com/controltheory-advanced/" target="_blank" rel="noreferrer noopener">マイコンで実現するフィードバック制御のための基礎知識【発展編<strong>】</strong></a></strong>で詳細を解説しています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>この方式では設定する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">目標軌道の位置のみならず、速度および加速度に分解したものを予め作成</span></strong>して<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">指令値</span></strong>として与えます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ゲインKp, Kvの決め方</span></strong>は<strong><a aria-label=" (opens in a new tab)" href="https://depfields.com/controltheory-analysis/" target="_blank" rel="noreferrer noopener">マイコンで実現するフィードバック制御のための基礎知識【解析編】</a></strong>で解説している<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">2次遅れ特性</span></strong>を参考にしてください。ゲインを適切に設定することにより<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">位置偏差がゼロに収束</span></strong>していわゆる位置決めサーボが実現できます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/加速度指令値.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/04/加速度指令値.png" alt="" class="wp-image-10043" width="500" height="246" srcset="https://depfields.com/wp-content/uploads/2021/04/加速度指令値.png 613w, https://depfields.com/wp-content/uploads/2021/04/加速度指令値-300x148.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">加速度指令値</figcaption></figure>





<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>上式が成立するのは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度系にロバスト制御</span></strong>が施されていて速度指令値θ<sup>'ref</sup> ≒ 速度θ<sup>'</sup> となることにより<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度指令値θ<sup>"ref</sup> ≒ 加速度θ<sup>"</sup></span></strong> とみなせるからです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>適切に設定したゲインKv、Kpによって<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">起動時に発生している誤差が２次遅れ系の特性で収束</span></strong>すると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">位置θは<strong>目標値 θ<sub>0</sub>に遅れなしに</strong>追従する</span></strong>ことになります。<strong>詳細は<a href="https://depfields.com/controltheory-advanced/" target="_blank" rel="noreferrer noopener" title="マイコンで実現するフィードバック制御のための基礎知識【発展編】">マイコンで実現するフィードバック制御のための基礎知識【発展編】</a></strong>の<strong>位置決め追従制御(加速度指令方式)</strong>で解説しています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今回は速度制御系の部分には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック</span></strong>方式を採用して簡易的な<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ロバスト制御を実現</span></strong>しています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/04/ロバスト制御モータ.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/04/ロバスト制御モータ.png" alt="" class="wp-image-9127" width="528" height="397" srcset="https://depfields.com/wp-content/uploads/2021/04/ロバスト制御モータ.png 528w, https://depfields.com/wp-content/uploads/2021/04/ロバスト制御モータ-300x226.png 300w" sizes="(max-width: 528px) 100vw, 528px" /></a><figcaption class="wp-element-caption">ハイゲインフィードバック方式による簡易的なロバスト制御モータ</figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">実機への適用</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">指令値</span></strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">台形速度パターン</span></strong>が最も簡単なので今回はこれを採用しています。プログラムで浮動小数点を使用すればsin関数を用いた加速度曲線などが定義でき、よりスムーズなパターンが作成できます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>指令値を作成するにあたってはマイクロソフトExcelを使用して<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">サイクルタイム毎に刻んで演算</span></strong>すれば下図のような数値が得られます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実際のプログラミングではExcelの演算と同じものをそれぞれ加速度、速度および位置指令値の配列に代入すればよいわけです。準備する配列の個数は下図の例ではサイクルタイムを5msとしているため各1000個ずつ必要です(5s/5ms個)。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/04/指令値.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/04/指令値.png" alt="" class="wp-image-9121" width="517" height="376" srcset="https://depfields.com/wp-content/uploads/2021/04/指令値.png 557w, https://depfields.com/wp-content/uploads/2021/04/指令値-300x218.png 300w" sizes="(max-width: 517px) 100vw, 517px" /></a><figcaption class="wp-element-caption">指令値</figcaption></figure>



<ul>
<li> <strong>ピーク速度が360p/s</strong> </li>



<li> <strong>加減速期間1.5s</strong> </li>



<li> <strong>定常速度期間2.0sの台形速度パターン</strong> </li>
</ul>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>指令値作成は高校数学の関数問題レベルのものです。微分・積分の基本的な考え方と1次・2次関数のおさらいです。ちょっとした頭の体操になりますのでやってみてください。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>フィードバックおよび実機計測に取り込む速度と位置のデータはエンコーダからのパルスをNucleoに取り組みますが、<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>速度と位置はそれぞれ別個のタイマ・カウンタで計測</strong></span>します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">実際の動作</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>外乱負荷を与えない状態での<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度変化の指令値と実測値</span></strong>です。起動時はどうしてもわずかに乱れていますがハイゲインフィードバックの影響かもしれません。エンコーダ分解能が極めて粗いのと、演算を整数化しているため、一工夫しているとはいえ特に低速時には理想通りには動作させるにはあと何か必要かもしれません。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>位置決めサーボでの速度実測値ですので速度定常時にわずかに脈動しているのは問題ではありません。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/04/速度外乱なし.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/04/速度外乱なし.png" alt="" class="wp-image-9049" width="486" height="310" srcset="https://depfields.com/wp-content/uploads/2021/04/速度外乱なし.png 582w, https://depfields.com/wp-content/uploads/2021/04/速度外乱なし-300x192.png 300w" sizes="(max-width: 486px) 100vw, 486px" /></a><figcaption class="wp-element-caption">モータ速度（外乱負荷なし）</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>0.5s毎に外乱負荷を与えた場合の速度です。わずかに外乱の影響はありますが、ハイゲインフィードバックが効いてほぼ安定しています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/04/速度外乱あり.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/04/速度外乱あり.png" alt="" class="wp-image-9050" width="472" height="303" srcset="https://depfields.com/wp-content/uploads/2021/04/速度外乱あり.png 598w, https://depfields.com/wp-content/uploads/2021/04/速度外乱あり-300x193.png 300w" sizes="(max-width: 472px) 100vw, 472px" /></a><figcaption class="wp-element-caption">モータ速度（外乱負荷あり）</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実際のモータの移動位置です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">位置指令値と実測値にはずれが見られず遅れなく追従してい</span>る</strong>のが確認できます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外乱負荷を与えた場合でも位置にはほぼ影響がありません</span></strong>。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/04/位置外乱あり.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/04/位置外乱あり.png" alt="" class="wp-image-9048" width="500" height="315" srcset="https://depfields.com/wp-content/uploads/2021/04/位置外乱あり.png 614w, https://depfields.com/wp-content/uploads/2021/04/位置外乱あり-300x189.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">モータ位置（外乱負荷あり）</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レゴEV3Lモータは一回転あたり180パルス</span></strong>のエンコーダを内蔵しています。この指令値はちょうど<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">7回転で最終到達パルスが1260パルス</span></strong>になるものです。</p>
</div></div></div>



<p><strong>動画1</strong>　シリアルモニター<br>上段が速度、下段が位置です。5秒で台形加減速して設定位置1260に到達しています。</p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:73% auto"><figure class="wp-block-media-text__media"><video controls src="https://depfields.com/wp-content/uploads/2022/02/speed-position.mp4"></video></figure><div class="wp-block-media-text__content">
<p class="has-large-font-size"></p>
</div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p><strong>動画2</strong>　 レゴEV3Lモータ7回転位置決め<br>起動してからちょうど7回転(1260パルス分)で停止しています。</p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:72% auto"><figure class="wp-block-media-text__media"><video controls src="https://depfields.com/wp-content/uploads/2022/02/position-servo.mp4"></video></figure><div class="wp-block-media-text__content">
<p class="has-large-font-size"></p>
</div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レゴEV3Lモータ</span></strong>のような簡易的なエンコーダがついたものでも高度なロバスト制御を施した位置決めサーボに発展させると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">高精度な位置の追従制御ができる</span></strong>ことが確認できました。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ハードウェアは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">マイコンと電圧制御タイプのドライバのごく普通の組み合わせ</span></strong>のものなのですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">本格的な理論を適用したモーションコントロールが簡単に実現</span></strong>できてしまうのです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御理論の応用</span></strong>も特殊なハードウェアを必要とするものでなく<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">だれでも身近に応用できる</span></strong>ものを紹介しました。ここではモータを使ったモーションコントロールを例にあげて解説してきましたが、それ以外の用途に活用しても面白いと思います。</p>
</div></div></div>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>モーションコントロールを始めとする制御系をプログラミングによりマイコン等で操作を行うためには<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">まずシミュレーションで動作を確認</span></strong>して理論通りに実現できるかどうかを見極めることです。<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">理論段階ではScilab等のシミュレーションソフト</span></strong>で動作確認をし、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">プログラミングのためにはExcel等などを使って離散系を意識したシミュレーション</span></strong>をすることが<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">実現化の早道</span></strong>です。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p><strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">高度な制御理論を適用</span></strong>したものでもその<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ツボとなる部分</span></strong>は実際の何百行に渡るプログラムにおいて<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ほんの数行足らずの数式</span></strong>にすぎません。ですが、このほんの数行の記述で<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">もともとの特性が全く高度なものに化ける</span></strong>のです。<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">物理的な対象が化学のように化ける</span></strong>のが<span style="color: #ff0000;"><strong>フィードバック制御の面白いところ</strong></span>です。興味深いと思いませんか。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/dcmotor-positionservo/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/42e6e9758b4afaf3166c9f4d7b975b2e566c71e5f533308a0ed68d747f52220a.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Build a positioning control servo system of DC motor using Microcontroller fo...</div></div><div class="lkc-url">https://en.depfields.com/dcmotor-positionservo/</div><div class="lkc-excerpt">In the previous issue, I applied the PI control method, High-gain feedback method, and 2-degrees of freedom robust method introduced on this site to realize practical speed servo operation with MCU using the LEGO EV3 motor as a theme, and</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/dcmotor-positionservo/">実践で使えるDCモータの位置決め制御サーボシステムをマイコンで構築する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://depfields.com/wp-content/uploads/2022/02/speed-position.mp4" length="2123360" type="video/mp4" />
<enclosure url="https://depfields.com/wp-content/uploads/2022/02/position-servo.mp4" length="13716430" type="video/mp4" />

			</item>
		<item>
		<title>実践で使えるDCモータの速度サーボ制御をマイコンで構築する</title>
		<link>https://depfields.com/dcmotor-speedservo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dcmotor-speedservo</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Mon, 22 Mar 2021 07:17:07 +0000</pubDate>
				<category><![CDATA[モーションコントロールアプリ]]></category>
		<category><![CDATA[フィードバック制御]]></category>
		<category><![CDATA[ロバスト制御]]></category>
		<category><![CDATA[DCモータ]]></category>
		<category><![CDATA[速度サーボ]]></category>
		<category><![CDATA[マイコン]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=8868</guid>

					<description><![CDATA[<p>これまではDCモータを使ったレゴEV3モータをさまざまな制御方式のステップ応答(一定値入力）でそれぞれの特性を確認しました。実際にモータを運転する場合は一定の速度だけで使うのみならず加減速も任意に与えたパターンに追従させ [&#8230;]</p>
<p>The post <a href="https://depfields.com/dcmotor-speedservo/">実践で使えるDCモータの速度サーボ制御をマイコンで構築する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img decoding="async" width="640" height="435" src="https://depfields.com/wp-content/uploads/2021/03/lego-4504048_640.jpg" class="attachment-large size-large wp-post-image" alt="" srcset="https://depfields.com/wp-content/uploads/2021/03/lego-4504048_640.jpg 640w, https://depfields.com/wp-content/uploads/2021/03/lego-4504048_640-300x204.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">これまではDCモータを使ったレゴEV3モータをさまざまな制御方式の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ステップ応答</span></strong>(一定値入力）でそれぞれの特性を確認しました。実際にモータを運転する場合は一定の速度だけで使うのみならず加減速も<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">任意に与えたパターンに追従させるいわゆるサーボ運転</span></strong>をさせる用途も多いです。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">そこで、今回はそれぞれの制御方式において、あらかじめ作成した台形の速度パターンを指令値入力としたときに、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">手動で負荷を加えたときの追従性と外乱による変動の影響を確認</span></strong>してみます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">まずそれぞれの制御方式を<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">シミュレーションで確認</span></strong>してから、プログラムを<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実機に適用して制御方式による特性の違いを確認</span></strong>して、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">より実用的な方式を探求</span></strong>していきたいと思います。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">シミュレーションおよび実機での動作確認ともにこれまでに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ステップ応答で解説してきたものと同じ装置に台形速度入力指令</span></strong>を与えたもので検討します。</p>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>厳密には<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">サーボ</span></strong>とは<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">目標値に対する出力との偏差がゼロになる設計</span></strong>としたものですが<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ここでは任意の入力値に追従することを広い意味でサーボ</span></strong>といっています。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>







<h2 class="wp-block-heading">オープン制御での速度サーボ制御</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>オープン制御の場合は、速度指令値を台形パターンにするにはその<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">指令値に比例した電圧となるようなPWMデューティ比率</span></strong>に指定します。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/03/オープン速度.png"><img decoding="async" width="567" height="181" src="https://depfields.com/wp-content/uploads/2021/03/オープン速度.png" alt="" class="wp-image-8898" srcset="https://depfields.com/wp-content/uploads/2021/03/オープン速度.png 567w, https://depfields.com/wp-content/uploads/2021/03/オープン速度-300x96.png 300w" sizes="(max-width: 567px) 100vw, 567px" /></a><figcaption> オープン速度制御のブロック線図 </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>モータ速度は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">無負荷の状態</span></strong>では与えた電圧に比例して動作するはずです。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/03/モータオープン特性.png"><img decoding="async" width="431" height="197" src="https://depfields.com/wp-content/uploads/2021/03/モータオープン特性.png" alt="" class="wp-image-8929" srcset="https://depfields.com/wp-content/uploads/2021/03/モータオープン特性.png 431w, https://depfields.com/wp-content/uploads/2021/03/モータオープン特性-300x137.png 300w" sizes="(max-width: 431px) 100vw, 431px" /></a></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実際の運転で起こり得る負荷を想定してモータ軸にブレーキがかかる向きに約0.5s間隔で一定の負荷トルクを与えて出力のモータ速度にどのような影響がでるかを調べてみます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><a href="https://depfields.com/controltheory-application/" target="_blank" aria-label="マイコンで実現するフィードバック制御のための基礎知識【応用編】 (opens in a new tab)" rel="noreferrer noopener">マイコンで実現するフィードバック制御のための基礎知識【応用編】</a></strong>で解説しましたが、DCモータはオープン制御の場合は負荷がかかると、大きく影響を受けてしまいます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>まずシミュレーションで確認してみると、やはり理論で証明されているように出力の速度はかなり変動してしまうことがわかります。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/03/オープン速度サーボ_simulation.png"><img decoding="async" width="511" height="319" src="https://depfields.com/wp-content/uploads/2021/03/オープン速度サーボ_simulation.png" alt="" class="wp-image-8904" srcset="https://depfields.com/wp-content/uploads/2021/03/オープン速度サーボ_simulation.png 511w, https://depfields.com/wp-content/uploads/2021/03/オープン速度サーボ_simulation-300x187.png 300w" sizes="(max-width: 511px) 100vw, 511px" /></a><figcaption>オープン速度制御の の外乱影響（シミュレーション） </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今度は、シミュレーションと同じ条件になるプログラムを作成して、速度指令値が台形パターンとなる電圧をモータに与えたときの速度を実測してみます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>シミュレーションと同じ結果で、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ちょっとした負荷ですぐに速度は変動してしまう</span></strong>ことが確認できます。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/03/オープン速度サーボ.png"><img decoding="async" width="790" height="288" src="https://depfields.com/wp-content/uploads/2021/03/オープン速度サーボ.png" alt="" class="wp-image-8907" srcset="https://depfields.com/wp-content/uploads/2021/03/オープン速度サーボ.png 790w, https://depfields.com/wp-content/uploads/2021/03/オープン速度サーボ-300x109.png 300w, https://depfields.com/wp-content/uploads/2021/03/オープン速度サーボ-768x280.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></a><figcaption>オープン速度制御の外乱影響（実測値）</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>この<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>無防備な状態</strong></span>で、例えばマイクロマウスなどの駆動に適用すると勾配やちょっとした段差などの障害でも望むような動作ができない場合が起こりえます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>そこで、より性能を向上すべく<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モータ速度をフィードバック</span></strong>した種々の方式で速度指令値（目標値）に対する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">追従性と外乱の影響を確認</span></strong>していきます。</p>
</div></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>速度指令パターンは制御のサイクルタイム（今回は5ms)ごとの算出データを配列に入れ、加減速時間1.5s,　定常速度時間2sの台形パターンとしています。使用モータの定格速度(7.2V印加時)は410p/sであるため、ゆとりをもたせて指令値の速度ピークは少し低い350p/sとしています。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">PI制御での速度サーボ</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>PID制御のうち、比例と積分要素を補償器としたフィードバック速度制御を構成して性能を確認します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ステップ応答時と同じ条件で速度指令値を台形パターンにしたものです。補償器の条件は<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>比例ゲインを0.5</strong></span>, <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">積分ゲインを15</span></strong>にしたものです。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/03/PI制御実システム.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/03/PI制御実システム.png" alt="" class="wp-image-8886" width="476" height="212"/></a><figcaption>PI速度制御のブロック線図</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>まずシミュレーションで確認してみると、この条件においては外乱の影響に関しては<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ぼぼオープン制御と同じ</span></strong>で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ほとんど改善効果は見られません</span></strong>。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/03/PI速度サーボ_simulation.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/03/PI速度サーボ_simulation.png" alt="" class="wp-image-8892" width="501" height="305"/></a><figcaption>PI速度制御の の外乱影響（シミュレーション） </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>シミュレーションと全く同じ条件で実測した結果をみても同様ですが、オープン制御と異なる点は速度指令値と実際の速度には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">定常偏差がなくなっている</span></strong>点です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/03/PI速度サーボ.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/03/PI速度サーボ.png" alt="" class="wp-image-8936" width="580" height="210"/></a><figcaption>  PI速度制御の外乱影響（実測値）  </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今回の条件ではゲインを比較的小さめに設定したこともあり、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外乱の影響を抑制する効果はほとんどない</span></strong>といえます。もっとも、ゲインをより大きく設定すると外乱の影響を抑えることはできますが、ループ内全体のゲインをあまり大きくすると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ノイズ等の影響も受けやすくなり</span></strong>あまり好ましくはありません。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PI制御は定常状態の偏差をなくす</span></strong>には有効な方式ですが、外乱負荷の影響をなくすにはあまり効果が期待できないことがわかります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">ハイゲインフィードバック制御での速度サーボ</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今度は最もシンプルなフィードバック方式で、効果もあげやすい<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック方式</span></strong>で検討してみます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここではこの方式を"<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック</span></strong>"と名づけてはいるのですが、実際にはそんなに大きなゲインは使用しない<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">いたって実用的な方式</span></strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>検証する条件は下記ブロック線図のとおりです。</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/03/ハイゲインフィードバック速度サーボ.png"><img decoding="async" width="545" height="277" src="https://depfields.com/wp-content/uploads/2021/03/ハイゲインフィードバック速度サーボ.png" alt="" class="wp-image-8887" srcset="https://depfields.com/wp-content/uploads/2021/03/ハイゲインフィードバック速度サーボ.png 545w, https://depfields.com/wp-content/uploads/2021/03/ハイゲインフィードバック速度サーボ-300x152.png 300w" sizes="(max-width: 545px) 100vw, 545px" /></a><figcaption>ハイゲインフィードバック速度制御のブロック線図</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>上記の条件では入力から出力間の特性は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実質10msの時定数をもった１次遅れ系</span></strong>となります。詳細は<strong><a aria-label="DCモータの簡単で実用的な速度フィードバック制御 (opens in a new tab)" href="https://depfields.com/dcmotor-highgainfeedback" target="_blank" rel="noreferrer noopener">DCモータの簡単で実用的な速度フィードバック制御</a></strong>で解説しています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>まずシミュレーションで確認しますが、オープン速度制御やPI速度制御ではあれだけ負荷外乱の影響をうけていたのですが、この方式では同じ条件であるのにかかわらずほぼ打ち消されていて、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度指令値どおりに追従するサーボ運転となっています</span></strong>。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/03/ハイゲイン速度サーボ_simulation.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/03/ハイゲイン速度サーボ_simulation.png" alt="" class="wp-image-8893" width="496" height="299"/></a><figcaption>ハイゲインフィードバック速度制御の外乱影響（シミュレーション） </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>シミュレーションでは良い結果であったのですが、実測値ではどうでしょうか。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">シミュレーションと同じ条件</span></strong>でプログラムを構成して実測してみました。制御アルゴリズムのプログラミングでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">積分器を使用するPI制御よりも単純</span></strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここでも結果はシミュレーションと同じく外乱の影響をキャンセルして安定して指令値に追従していることが確認できます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/03/ハイゲイン速度サーボ.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/03/ハイゲイン速度サーボ.png" alt="" class="wp-image-8909" width="580" height="217"/></a><figcaption>ハイゲインフィードバック速度制御の外乱影響（実測値） </figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">２自由度ロバスト制御での速度サーボ</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ハイゲインフィードバック方式はシンプルな構造なのにも関わらず効果も抜群の方式でしたが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外乱抑制を高めるためにゲインを大きくすると同時に応答性も向上してしまうことが短所</span></strong>でした。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これで問題がなければよいのですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外乱抑制と応答性を独立して設定したい場合に有効な方式が2自由度ロバスト制御方式</span></strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今回の場合もステップ応答で構成したものに速度指令値（目標値）を台形パターンにしたところだけが異なります。シミュレーションやプログラムを構成するのに容易な近似タイプを採用します。【<strong><a aria-label="実践で使えるDCモータのロバスト速度制御 (opens in a new tab)" href="https://depfields.com/dcmotor-robustcontrol/" target="_blank" rel="noreferrer noopener">実践で使えるDCモータのロバスト速度制御</a></strong>】参照</p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/03/2自由度実システム.png"><img decoding="async" width="676" height="328" src="https://depfields.com/wp-content/uploads/2021/03/2自由度実システム.png" alt="" class="wp-image-8888" srcset="https://depfields.com/wp-content/uploads/2021/03/2自由度実システム.png 676w, https://depfields.com/wp-content/uploads/2021/03/2自由度実システム-300x146.png 300w" sizes="(max-width: 676px) 100vw, 676px" /></a><figcaption>２自由度ロバスト速度制御のブロック線図</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>まずシミュレーションで確認しますが、ハイゲインフィードバック方式と比較すると、速度が指令値に対してわずかに遅れているのは、近似タイプのため、ロバスト補償器の時定数T<sub>m2</sub>をモータ制御対象の時定数T<sub>m</sub>と同じ50msにしているからです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>外乱抑制についてはハイゲインフィードバック方式と同じく<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">十分な効果があることが確認</span></strong>できます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/03/ロバスト速度サーボ_simulation.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/03/ロバスト速度サーボ_simulation.png" alt="" class="wp-image-8894" width="505" height="320"/></a><figcaption>２自由度ロバスト速度制御の の外乱影響（シミュレーション） </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p> 制御アルゴリズムのプログラミングでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">１次遅れのフィルターを構成する必要はあります</span></strong>が、そう複雑なものでもありません。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>シミュレーションと同じ条件で実測したものでも外乱の影響がなく安定して指令値に追従していることが確認できます。近似タイプでも十分効果があることが確認できました。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/03/ロバスト速度サーボ.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/03/ロバスト速度サーボ.png" alt="" class="wp-image-8910" width="580" height="243"/></a><figcaption>２自由度ロバスト速度制御の外乱影響（実測値）</figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">まとめ</h2>



<ol class="is-style-vk-numbered-square-mark"><li>オープン制御では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">簡単な速度調整程度</span></strong>はできますが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外乱の影響を簡単にうけてしまう</span></strong>ので速度サーボ的な任意な速度で運転させることには向いていません。</li><li>DCモータをPI速度制御で運転しても、外乱の影響は受けてしまいます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PI速度制御は一定負荷をかけた状態で一定速度の指令値（目標値）通りに運転させる用途</span></strong>には向いていますが目標値が変化する速度サーボ運転への適用は厳しいです。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">高いゲインを使用することが条件</span></strong>です。</li><li><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック方式は比較的簡単に外乱の影響をキャンセルできる方式でおすすめ</span></strong>。ゲイン値により応答性が高くなりすぎないように注意する必要があります。</li><li><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>外乱抑制を向上させながら、応答性も任意に調整したい場合には２自由度ロバスト制御が有効</strong></span>です。近似タイプで用が足りるならばよいですが、より本格的な設定をしたい場合は本来のタイプが効果的です。ただし制御補償器の次数が増えるためにプログラム内の制御アルゴリズムは複雑になります。</li></ol>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<p>結論的には外乱抑制をもたせたちょっとした用途には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック方式</span></strong>が実用的でおすすめです。<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>２自由度ロバスト制御</strong></span>を含め、このままでは<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>定常偏差は残る</strong></span>のですが、完全なサーボ化にすることは一工夫すれば簡単です。近日、紹介したいと思います。</p>



<p> ハイゲインフィードバック制御方式および２自由度ロバスト制御方式(近似タイプ)は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">数行の記述のみでプログラミングできるいたって実用的な方式</span></strong>です。 ちょっとした趣味用途でも簡単に採用できるのではないでしょうか。</p>



<p></p>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/dcmotor-speedservo/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/5c6048a07f448bf4cb94c5044d44cd576ab3dda6e1e95e7c1c86697a77a4f619.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Build a speed servo control system for DC motor using Microcontroller for pra...</div></div><div class="lkc-url">https://en.depfields.com/dcmotor-speedservo/</div><div class="lkc-excerpt">So far, I have checked the characteristics of each of the LEGO EV3 motor using DC motor with step response (constant value input) of various control methods. In actual operation, the motor is not only used at a constant speed, but is also</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/dcmotor-speedservo/">実践で使えるDCモータの速度サーボ制御をマイコンで構築する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>実践で使えるDCモータのロバスト速度制御をマイコンで構築する</title>
		<link>https://depfields.com/dcmotor-robustcontrol/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dcmotor-robustcontrol</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Thu, 04 Feb 2021 03:32:56 +0000</pubDate>
				<category><![CDATA[モーションコントロールアプリ]]></category>
		<category><![CDATA[PI制御]]></category>
		<category><![CDATA[フィードバック制御]]></category>
		<category><![CDATA[ロバスト制御]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=8540</guid>

					<description><![CDATA[<p>ギアを介した負荷側にエンコーダが装着しているレゴEV3LモータにPI速度制御と2自由度ロバスト制御を適用してみてそれらの運転特性と効果を調べてみます。簡易モータでも実装が簡単で効果があれば積極的に採用したいものです。 P [&#8230;]</p>
<p>The post <a href="https://depfields.com/dcmotor-robustcontrol/">実践で使えるDCモータのロバスト速度制御をマイコンで構築する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img decoding="async" width="640" height="370" src="https://depfields.com/wp-content/uploads/2021/02/excavator-51665_640.jpg" class="attachment-large size-large wp-post-image" alt="" srcset="https://depfields.com/wp-content/uploads/2021/02/excavator-51665_640.jpg 640w, https://depfields.com/wp-content/uploads/2021/02/excavator-51665_640-300x173.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">ギアを介した負荷側にエンコーダが装着しているレゴEV3LモータにPI速度制御と2自由度ロバスト制御を適用してみてそれらの運転特性と効果を調べてみます。簡易モータでも実装が簡単で効果があれば積極的に採用したいものです。 </p>







<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">PI速度フィードバックコントロール</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>一般的なフィードバック制御といえばPID制御がまず挙げられます。難しい理論抜きでも感覚的にゲインを設定して出力を調整することも多いです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>もともと安定しているEV3モータに多少の条件が変わっても一定の目標値を維持するための制御です。偏差eをゼロに近づけるためにPIDゲインのなかでP(比例)とI(積分)要素を使い、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">特に積分を重視</span></strong>します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/02/PI制御ブロック線図.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/02/PI制御ブロック線図.png" alt="" class="wp-image-8549" width="427" height="271" srcset="https://depfields.com/wp-content/uploads/2021/02/PI制御ブロック線図.png 427w, https://depfields.com/wp-content/uploads/2021/02/PI制御ブロック線図-300x190.png 300w" sizes="(max-width: 427px) 100vw, 427px" /></a><figcaption>PI制御システム</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これまで制御システムを評価するシミュレーションはScilabなどのツールを使用してきました。設計評価のときには、制御対象の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">伝達関数もPI補償器も連続系のs関数</span></strong>でよいのですが、実機で実現する場合、PI補償器はプログラム内で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">離散系として記述</span></strong>する必要があります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>そのため、実機に近い最終的な動作確認には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Excelによるシミュレーションで評価するのが効果的</span></strong>です。モータなど<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実モデルは連続系の時間関数</span></strong>、例えばステップ応答時の１次遅れは1-ext(-t/T<sub>m</sub>)で記述できます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">補償器は離散系</span></strong>で実際のプログラムでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">サイクル周期を考慮して積分器等を記述</span></strong>します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>Excelにおいて１次遅れのモータ制御対象を連続系として、PI補償器を離散系とした場合の応答です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実際のプログラムではサイクル周期を5msとするために、シミュレーションで5ms刻みの離散系としています</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ステップ入力200時のシミュレーションです。入出力特性は積分ゲインを入れているため、２次遅れ系となっています。比例ゲインKpは0.5、積分ゲインを15とすると振動はおさまっていますが、積分ゲインが大きいため立ち上がりはややゆるやかです。比例ゲインがゼロの場合は積分ゲイン値によりすこしオーバーシュート気味になるかもしれません。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/02/PI制御パラメータ.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/02/PI制御パラメータ.png" alt="" class="wp-image-8555" width="249" height="187"/></a><figcaption>制御パラメータ</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>定常時には出力のモータ回転速度は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御器の積分要素のおかげで定常偏差はゼロに近づき安定</span></strong>していますが、立ち上がりの応答は任意に改善することができないことがPI制御の限界です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">定値制御であればPI制御でも十分</span></strong>ですが、入力が変化する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">追従サーボ制御には適用は厳しい</span></strong>かもしれません。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/02/PI制御シミュレーション.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/02/PI制御シミュレーション.png" alt="" class="wp-image-9492" width="580" height="339"/></a><figcaption> Microsoft ExcelによるPI制御シミュレーション </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>Excelで動作に問題がないことが確認できれば、あとは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">同じ記述をプログラム内に移植</span></strong>するだけです。離散系のPI補償器の部分はすでにExcel内で記述しているので移植は簡単です。実機のプログラムでの注意点はシミュレーションでは現れない変数の初期値の処理などです。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">最終的なモータへの出力はPWMのデューティ比</span></strong>で設定します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/02/PI制御実システム.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/02/PI制御実システム.png" alt="" class="wp-image-8568" width="472" height="210" srcset="https://depfields.com/wp-content/uploads/2021/02/PI制御実システム.png 472w, https://depfields.com/wp-content/uploads/2021/02/PI制御実システム-300x133.png 300w" sizes="(max-width: 472px) 100vw, 472px" /></a><figcaption>PI制御実システム</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>シミュレーションと同じ条件の実機の動作です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">シミュレーションと同じ応答特性</span></strong>が実機でもみられ、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">出力速度は</span></strong><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">オープンPWM制御に比べて定常偏差がなくなり安定しています</span></strong>。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/02/PI制御方式.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/02/PI制御方式.png" alt="" class="wp-image-8544" width="683" height="352" srcset="https://depfields.com/wp-content/uploads/2021/02/PI制御方式.png 683w, https://depfields.com/wp-content/uploads/2021/02/PI制御方式-300x155.png 300w" sizes="(max-width: 683px) 100vw, 683px" /></a><figcaption>PI制御実測値</figcaption></figure>



<h2 class="wp-block-heading">2自由度ロバスト速度コントロール</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これまで、DCモータの速度をコントロールするのにPWMオープン制御方式、ハイゲインフィードバック制御方式、PI制御方式を行ってきましたがここで集大成の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ロバスト制御に挑戦</span></strong>したいと思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今回実機で実現する２自由度ロバスト制御の詳細は<strong><a aria-label="マイコンで実現するフィードバック制御のための基礎知識【発展編】 (opens in a new tab)" href="https://depfields.com/controltheory-advanced/" target="_blank" rel="noreferrer noopener">マイコンで実現するフィードバック制御のための基礎知識【発展編】</a></strong>で解説しています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御ブロック線図.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御ブロック線図.png" alt="" class="wp-image-8550" width="535" height="289" srcset="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御ブロック線図.png 535w, https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御ブロック線図-300x162.png 300w" sizes="(max-width: 535px) 100vw, 535px" /></a><figcaption>２自由度ロバスト制御システム</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>まずEV3Lモータに２自由度ロバスト制御を適用する場合のパラメータをシミュレーションツールScilabで評価しながら決定します。２自由度制御システムを実機で実現するには<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御対象P(s)の規定モデルP<sub>n</sub>(s)を逆システムとして離散化</span></strong>しなければならなく結構複雑になってしまいます。そこで、ここでは思い切って補償器で設定する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">時定数T<sub>m2</sub>を規定モデルの時定数T<sub>n</sub>と同じにして近似化</span></strong>します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御パラメータ.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御パラメータ.png" alt="" class="wp-image-8551" width="357" height="213" srcset="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御パラメータ.png 357w, https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御パラメータ-300x179.png 300w" sizes="(max-width: 357px) 100vw, 357px" /></a><figcaption> 制御パラメータ </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>近似化すると２自由度ロバスト制御のブロック線図は以下のようにすっきりした形になります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>よくみるとハイゲインフィードバック方式のものに似ていて違いは入力に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">１次遅れフィルタG<sub>ry</sub>(s)</span></strong>があることです。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィードバック部で外乱抑制を向上</span></strong>させてこの部分で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">応答特性を調整</span></strong>していると考えられます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここでもPI制御と時と同じようにまずExcelでシミュレーションして評価します。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">青色点線で囲まれた制御対象は連続系</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">緑色点線で囲まれたロバスト補償器は離散系</span></strong>で記述します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/02/2自由度実システム.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/02/2自由度実システム.png" alt="" class="wp-image-8561" width="626" height="301"/></a><figcaption>２自由度ロバスト制御実システム</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>外乱抑制に関してはフィードバックゲインCを大きくすればより効果があります。シミュレーションでは立ち上がりは設定した１次遅れ系時定数50ｍsで起動しています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御シミュレーション.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御シミュレーション.png" alt="" class="wp-image-8556" width="659" height="449" srcset="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御シミュレーション.png 659w, https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御シミュレーション-300x204.png 300w" sizes="(max-width: 659px) 100vw, 659px" /></a><figcaption>Microsoft Excelによる2自由度ロバスト制御シミュレーション</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実機での２自由度ロバスト制御の応答です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">時定数T<sub>m2</sub>は50msが今回の近似システムの条件</span></strong>ですが、試しに、時定数T<sub>m2</sub>を違う値に設定してみたところ、近似モデルにおいても時定数により立ち上がりに違いは多少現れていました。ここでは現れていませんが、外乱負荷を与えても出力の回転数はとても安定しています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御方式.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御方式.png" alt="" class="wp-image-8545" width="661" height="447" srcset="https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御方式.png 661w, https://depfields.com/wp-content/uploads/2021/02/2自由度ロバスト制御方式-300x203.png 300w" sizes="(max-width: 661px) 100vw, 661px" /></a><figcaption>２自由度制御ロバスト制御実測値</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>いわゆるロバスト制御の特長がよく現れていて比較的に簡単に実現できますので、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ちょっとしたアプリケーションに積極的に採用できる</span></strong>のではないかと思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これまでは速度フィードバック制御について、定値制御のステップ応答で検証してきました。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実践的な速度入力</span></strong>としては<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">台形波パターン</span></strong>などを与えることが多いので次回は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力に追従する速度サーボ制御</span></strong>について、各制御方式で比較検証していきたいと思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>2自由度ロバスト制御を簡易に実現するために目標値応答特性を決める１次遅れフィルタG<sub>ry</sub>(s)の時定数を規範モデルと同じものとし近似化しています。<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">定値制御でのステップ応答であれば</span></strong>この近似化した条件でも応答は<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ある程度改善</span></strong>できますが、ランプ応答などの<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">サーボ追従制御では近似した簡易タイプ</span></strong>では性能に限度があるため簡易でない<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">本来の制御補償器</span></strong>をプログラム内で構成するほうが確実です。ただし、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">実現には浮動小数点演算が必要</span></strong>となってきますので、比較的動作の緩やかな用途では簡易な近似タイプで十分ではないでしょうか。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/dcmotor-robustcontrol/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/004a2073fc200f500a3227f7ef3d89f5a5e18b5773f5c99543cfdd0560539ec6.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Build a robust speed control system for DC motor using Microcontroller for pr...</div></div><div class="lkc-url">https://en.depfields.com/dcmotor-robustcontrol/</div><div class="lkc-excerpt">I will try to apply PI speed control and 2-degree of freedom robust control to a LEGO EV3L motor with an encoder attached to the load side through gears to verify their operating characteristics and effects. I would like to actively adopt</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/dcmotor-robustcontrol/">実践で使えるDCモータのロバスト速度制御をマイコンで構築する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>DCモータの実用的な速度フィードバック制御システムをマイコンで構築する</title>
		<link>https://depfields.com/dcmotor-highgainfeedback/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dcmotor-highgainfeedback</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Mon, 01 Feb 2021 01:27:09 +0000</pubDate>
				<category><![CDATA[モーションコントロールアプリ]]></category>
		<category><![CDATA[フィードバック制御]]></category>
		<category><![CDATA[ハイゲインフィードバック]]></category>
		<category><![CDATA[速度制御]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=8464</guid>

					<description><![CDATA[<p>DCモータは市販のドライバを用いると電圧制御タイプではマイコンからのPWMパルス出力を与えるとデューティ比に応じてオープンループで簡単に速度をコントロールすることができます。 速度はデューティ比にほぼ比例しているのですが [&#8230;]</p>
<p>The post <a href="https://depfields.com/dcmotor-highgainfeedback/">DCモータの実用的な速度フィードバック制御システムをマイコンで構築する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img decoding="async" width="640" height="480" src="https://depfields.com/wp-content/uploads/2021/01/DCmotor.png" class="attachment-large size-large wp-post-image" alt="" srcset="https://depfields.com/wp-content/uploads/2021/01/DCmotor.png 640w, https://depfields.com/wp-content/uploads/2021/01/DCmotor-300x225.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">DCモータは市販のドライバを用いると電圧制御タイプではマイコンからのPWMパルス出力を与えるとデューティ比に応じて<strong><a href="https://depfields.com/dcmotor-pwmcontrol/" target="_blank" rel="noreferrer noopener" title="DCモータのマイコンPWM出力による回転速度制御（オープンループ制御）">オープンループで簡単に速度をコントロール</a></strong>することができます。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度はデューティ比にほぼ比例</span></strong>しているのですが、これは運転条件が無負荷での場合です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">突発的な負荷や定常負荷がかかると速度は安定しない</span></strong>のがオープンループでの限界です。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">そこでエンコーダなどのセンサによる<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度のフィードバックを施すことにより特性を改善</span></strong>して、多少の負荷があっても安定させ、また、定常状態でも速度を安定させることを図ります。</p>







<h2 class="wp-block-heading">DCモータ開ループ特性のモデル化</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>DCモータにギアを介したレゴ®マインドストームEV3Lモータの数式モデルは電気回路、機械の運動方程式から求められ、厳密には入力電圧から出力速度間の伝達関数は2次遅れ系となります。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>本来の数式モデルは機械的伝達機構のモデル化も含むので結構複雑ですが、このモータのフィードバック制御を実践で取り扱うためにはできるだけ現実に即したモデルである必要があります。つまり、いくら高精度で高度に数式モデルを作成しても実際のパラメータ変動などで意味のないものになってしまうからです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>そこで、現物の特性を押さえたできるだけ簡素化したモデル化をするのが現実的です。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/アクチュエータ近似伝達関数.png" alt="" class="wp-image-8475" width="468" height="191" srcset="https://depfields.com/wp-content/uploads/2021/01/アクチュエータ近似伝達関数.png 470w, https://depfields.com/wp-content/uploads/2021/01/アクチュエータ近似伝達関数-300x123.png 300w" sizes="(max-width: 468px) 100vw, 468px" /><figcaption> 簡易化した DCモータの伝達関数モデル</figcaption></figure>



<h2 class="wp-block-heading"> EV3Lモータの近似伝達関数</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モータ端子電圧を入力</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">EV3Lモータの回転速度を出力</span></strong>としたときの伝達関数は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">1次遅れ系で近似</span></strong>できますので、入力の端子電圧をステップ状に与えたときの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">回転速度の変化から時定数T<sub>m</sub>を調べます</span></strong>。最大電圧時（7.2V）のときの速度は410p/sであるため、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">伝達関数ゲインK<sub>m</sub></span></strong>もわかります。 </p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="757" height="417" src="https://depfields.com/wp-content/uploads/2021/01/EV3速度特性.png" alt="" class="wp-image-8477" srcset="https://depfields.com/wp-content/uploads/2021/01/EV3速度特性.png 757w, https://depfields.com/wp-content/uploads/2021/01/EV3速度特性-300x165.png 300w" sizes="(max-width: 757px) 100vw, 757px" /></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これで伝達関数の近似モデルが求まりました。実際の波形をみても、1次遅れですので近似モデルで設計するのが実践的であることがわかります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>EV3Lモータの入力に端子電圧7.2[V]を与えるとギアを介した負荷側の回転速度は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">時定数T<sub>m</sub>で起動</span></strong>して、定常で410[p/s]になるということです。実際のプログラムにおいては7.2Vの指令をあたえるのにPWMのデューティ比（この場合は100）を指定することになります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/EV3近似伝達関数.png" alt="" class="wp-image-8476" width="388" height="132" srcset="https://depfields.com/wp-content/uploads/2021/01/EV3近似伝達関数.png 388w, https://depfields.com/wp-content/uploads/2021/01/EV3近似伝達関数-300x102.png 300w" sizes="(max-width: 388px) 100vw, 388px" /><figcaption>EV3Lモータ伝達関数モデル</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>エンコーダからのパルスを単なるモニターでなく速度フィードバック用のセンサとして使用する場合はセンサによる速度の細かな変化データが必要なため、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">本来は分解能の高い高性能のエンコーダを使用する必要</span></strong>があります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今回のEV3Lモータのようにエンコーダが負荷側に装着していて分解能が比較的粗い（180p/r）場合は、測定精度を上げるために一工夫必要です。測定には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">簡易的なエンコーダでも高精度エンコーダに劣らない工夫</span></strong>を施しています。</p>
</div></div></div>



<h2 class="wp-block-heading">ハイゲインフィードバック方式</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>速度フィードバックの中でも<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>最も簡単で効果の見られる<a href="https://depfields.com/controltheory-advanced/" target="_blank" rel="noreferrer noopener" title="マイコンで実現するフィードバック制御のための基礎知識【発展編】">ハイゲインフィードバック方式</a>で特性改善</strong></span>を試みます。ハイゲインフィードバック方式は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィードバックゲインC<sub>1</sub></span></strong>と<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">出力調整用ゲインC<sub>2</sub></span></strong>で構成します。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ハイゲインフィードバック方式のブロック線図です。 フィードバックゲインC<sub>1</sub>を上げるほど特性が改善されるので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック</span></strong>と呼ばれます。ただし、現実的にはノイズなども増幅してしまうことになるため、実現できる範囲は限られます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><a href="https://depfields.com/controltheory-analysis/" target="_blank" rel="noreferrer noopener" title="マイコンで実現するフィードバック制御のための基礎知識【解析編】">マイコンで実現するフィードバック制御のための基礎知識【解析編】</a></strong>の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">内部安定性</span></strong>で解説していますが、フィードバックゲインC<sub>1</sub>が<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">比較的小さい場合</span></strong>はノイズから出力までの時定数が大きく<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ローパスフィルタ特性が効果的</span></strong>なのですが、大きくなるに連れて時定数は小さくなり（カットオフ周波数は高くなる）、ノイズの影響は受けやすい傾向になります。</p>
</div></div></div>



<figure class="wp-block-image size-full"><a href="https://depfields.com/wp-content/uploads/2021/02/ハイゲインフィードバック.jpg"><img decoding="async" width="472" height="231" src="https://depfields.com/wp-content/uploads/2021/02/ハイゲインフィードバック.jpg" alt="" class="wp-image-12988" srcset="https://depfields.com/wp-content/uploads/2021/02/ハイゲインフィードバック.jpg 472w, https://depfields.com/wp-content/uploads/2021/02/ハイゲインフィードバック-300x147.jpg 300w" sizes="(max-width: 472px) 100vw, 472px" /></a><figcaption>ハイゲインフィードバック</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今回のEV3Lモータをハイゲインフィードバック方式に適用するとこのようになります。オープンループ制御との大きな違いは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度目標値がシステムの入力</span></strong>となっていてモータ回転速度をフィードバックさせている点です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">青点線で囲まれた部分</span></strong>はEV3Lモータそのものの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御対象</span></strong>で、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">緑点線部がハイゲインフィードバックを施したコントローラ部</span></strong>です。ここの部分は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">プログラミングで実現</span></strong>します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実機に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">制御理論を適用する場合に大切なポイント</span></strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">扱う信号の次元（単位）を常に意識すること</span></strong>です。ここではあえて次元を揃えるために変換係数K<sub>n</sub>を設けていますが、これはあってもなくても結果は同じものになります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/ev3ハイゲイン速度フィードバック.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ev3ハイゲイン速度フィードバック.png" alt="" class="wp-image-8479" width="496" height="244" srcset="https://depfields.com/wp-content/uploads/2021/01/ev3ハイゲイン速度フィードバック.png 496w, https://depfields.com/wp-content/uploads/2021/01/ev3ハイゲイン速度フィードバック-300x148.png 300w" sizes="(max-width: 496px) 100vw, 496px" /></a><figcaption>EV3Lモータハイゲイン速度フィードバック</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>プログラムの記述をできるだけ簡素化するためにさらにモデルを近似化します。実際のプログラムにおいては電圧指令にアナログ電圧値そのものを指定するのではなくPWMのデューティ比（0-100）を指定します。つまり最大入力時のデューティ比100%に対する最大速度パルスを400p/sに近似すると以下のようにとてもシンプルなブロック図となります。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/ev3ハイゲイン速度フィードバック近似.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ev3ハイゲイン速度フィードバック近似.png" alt="" class="wp-image-8480" width="509" height="217" srcset="https://depfields.com/wp-content/uploads/2021/01/ev3ハイゲイン速度フィードバック近似.png 509w, https://depfields.com/wp-content/uploads/2021/01/ev3ハイゲイン速度フィードバック近似-300x128.png 300w" sizes="(max-width: 509px) 100vw, 509px" /></a><figcaption>ハイゲインフィードバック方式近似</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここで改善後の最終的な入出力間の特性を決めるためのゲインC<sub>1</sub>とC<sub>2</sub>を決定します。もともとの制御対象の1次遅れ特性T<sub>m</sub>=50ms をフィードバックを施すことでT<sub>m2</sub>=10msへ改善するものとします。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック特性改善伝達関数.png" alt="" class="wp-image-8481"/></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>この場合、ゲインC<sub>1</sub>は一意的に決定されてC<sub>1</sub>=4となります。その結果、ゲインC<sub>2</sub>=5となりますが、これは必要に応じて最終的に出力をみながら微調整します。 </p>
</div></div></div>



<figure class="wp-block-image size-large"><a href="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック特性改善2.png"><img decoding="async" width="523" height="422" src="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック特性改善2.png" alt="" class="wp-image-8491" srcset="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック特性改善2.png 523w, https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック特性改善2-300x242.png 300w" sizes="(max-width: 523px) 100vw, 523px" /></a></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これで入力を速度目標値にしたときの出力速度までの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">伝達関数G<sub>ry</sub>(s)の特性は時定数T<sub>m2</sub>の1次遅れ</span></strong>となります。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">時定数も外乱の影響も1/5倍</span></strong>となっています。C<sub>1</sub>のゲインにより特性改善はできますが、実現できる範囲で設定します。応答と外乱抑制は独立して設定できないところがこの方式の限界です。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>詳細は<strong><a href="https://depfields.com/controltheory-advanced/" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener">マイコンで実現するフィードバック制御のための基礎知識【発展編】</a></strong>の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック方式との比較</span></strong>を参照してください。 </p>
</div></div></div>



<h2 class="wp-block-heading">実際のうごき</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>EV3 Lモータが<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">時定数50msの1次遅れ近似モデル</span></strong>であることが算定できましたのでいよいよこのモデルをベースとしたさまざまな制御システムで動作を確認していくことにします。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実機での制御システムを実現するとシミュレーションでは現れなかった現象がでるものです。これはドライバからモータへの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力制限</span></strong>であったり、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">センサや処理内容の分解能</span></strong>などにより想定外の結果になる場合もあるので、可能な限り条件は織り込んでおく必要はあります。<br></p>
</div></div></div>



<h3 class="wp-block-heading">オープン制御PWM方式</h3>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>EV3 LモータはDCモータベースモデルのため、オープン制御でもPWMパルス出力のデューティ比を変えるだけで速度を調整できます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>下図ではPWM比を48[%]に設定したときのエンコーダからのパルス[p/s]を示しています。ドライバに与えた電圧V<sub>m</sub>(7.2V)の約半分であることで速度も半分となっています。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="627" height="449" src="https://depfields.com/wp-content/uploads/2021/01/PWM-duty比と速度.png" alt="" class="wp-image-8501" srcset="https://depfields.com/wp-content/uploads/2021/01/PWM-duty比と速度.png 627w, https://depfields.com/wp-content/uploads/2021/01/PWM-duty比と速度-300x215.png 300w" sizes="(max-width: 627px) 100vw, 627px" /></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>95%PWMduty比のステップ入力を与えた場合の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">オープンループのPWM制御の応答</span></strong>です。縦軸はエンコーダから得られる速度信号で単位は[p/s]です。横軸は経過時間で単位は[ms]です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>起動後、時定数T<sub>m</sub> (50ms)で目標値に到達しています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/PWMオープン制御.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/PWMオープン制御.png" alt="" class="wp-image-8498" width="658" height="389" srcset="https://depfields.com/wp-content/uploads/2021/01/PWMオープン制御.png 658w, https://depfields.com/wp-content/uploads/2021/01/PWMオープン制御-300x177.png 300w" sizes="(max-width: 658px) 100vw, 658px" /></a><figcaption>EV3Lモータオープン制御</figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h3 class="wp-block-heading">ハイゲインフィードバック方式</h3>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>次に、速度目標入力を200[p/s]に設定した<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック方式のステップ応答</span></strong>を示します。 <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィードバックゲインC<sub>1</sub>を１から4に設定</span></strong>した場合です。応答波形をみるとオープンループPWMの場合に比べて、ハイゲインフィードバック方式はゲインC<sub>1</sub>を大きくするにつれ時定数が小さくなり応答が改善されています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ハイゲインC<sub>1</sub>を3より大きくしても応答が変わらないのは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モータ電圧出力制限による</span></strong>からです。そういう意味で、最大入力400[p/s]のステップ信号を与えた場合は100%で起動しますのでゲイン C<sub>1</sub> を変えても応答の改善はありません。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック方式-1.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック方式-1.png" alt="" class="wp-image-8515" width="672" height="343" srcset="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック方式-1.png 799w, https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック方式-1-300x153.png 300w, https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック方式-1-768x392.png 768w" sizes="(max-width: 672px) 100vw, 672px" /></a><figcaption>EV3Lモータハイゲインフィードバック方式</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これまで、速度フィードバック制御として最も簡易的で効果の高い<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック方式</span></strong>で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">オープンループPWM制御方式</span></strong>に対して改善できるかを検討してきました。 EV3Lモータはエンコーダを持っているのですが、分解能はあまり高くなく入力は電圧制御型ドライバPWMデューティ比を変えているだけなので高度なフィードバック制御を施すには制限はあります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>次回はこのような条件下で<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%, rgba(255, 253, 107, 0.7) 0px);" class="vk_highlighter"><b>速度PI制御や</b></span><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">２自由度ロバスト制御</span></strong>を適用するとどんな結果になるか検証してみたいと思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/dcmotor-highgainfeedback/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/313c16c362b7a2f97350d62415e462feaf7e25c74d3573f8ee3edc4bea9afd19.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Build a practical speed feedback control system for DC motor using Microcontr...</div></div><div class="lkc-url">https://en.depfields.com/dcmotor-highgainfeedback/</div><div class="lkc-excerpt">With a commercially available driver, the speed of a voltage-controlled DC motor can be easily controlled in an open loop according to the duty ratio when a PWM pulse output from MCU is given.The speed is almost proportional to the dut</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/dcmotor-highgainfeedback/">DCモータの実用的な速度フィードバック制御システムをマイコンで構築する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>DCモータのマイコンPWM出力による回転速度制御（オープンループ制御）</title>
		<link>https://depfields.com/dcmotor-pwmcontrol/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dcmotor-pwmcontrol</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Sun, 24 Jan 2021 15:08:43 +0000</pubDate>
				<category><![CDATA[モーションコントロールアプリ]]></category>
		<category><![CDATA[DCモータ]]></category>
		<category><![CDATA[オープンループ制御]]></category>
		<category><![CDATA[マイコンモータ制御]]></category>
		<category><![CDATA[フィードバック制御]]></category>
		<category><![CDATA[速度制御]]></category>
		<category><![CDATA[PWM制御]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=8274</guid>

					<description><![CDATA[<p>レゴ®マインドストーム®EV3のLモータを使って、STM32Nucleoボードにより実際にモータを動作させてみます。EV3のモータにはエンコーダが内蔵していますので速度のモニターをするのみならず、フィードバックさせること [&#8230;]</p>
<p>The post <a href="https://depfields.com/dcmotor-pwmcontrol/">DCモータのマイコンPWM出力による回転速度制御（オープンループ制御）</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img decoding="async" width="449" height="364" src="https://depfields.com/wp-content/uploads/2021/01/ev3-Lmotor.png" class="attachment-large size-large wp-post-image" alt="" srcset="https://depfields.com/wp-content/uploads/2021/01/ev3-Lmotor.png 449w, https://depfields.com/wp-content/uploads/2021/01/ev3-Lmotor-300x243.png 300w" sizes="(max-width: 449px) 100vw, 449px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom"><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">レゴ®マインドストーム<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">®</span></strong>EV3のLモータ</span></strong>を使って、STM32Nucleoボードにより実際にモータを動作させてみます。EV3のモータにはエンコーダが内蔵していますので速度のモニターをするのみならず、フィードバックさせることでより高度な運転ができるようになります。</p>



<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">まず、マイコンを使ったモーションコントロールの手始めとしてエンコーダからのフィードバックを使わない<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PWM信号によるオープン制御</span></strong>をしてみたいと思います。</p>







<h2 class="wp-block-heading">実機で使うモータモジュール</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><a aria-label="マイコンで実現するフィードバック制御のための基礎知識【応用編】 (opens in a new tab)" href="https://depfields.com/controltheory-application/" target="_blank" rel="noreferrer noopener">マイコンで実現するフィードバック制御のための基礎知識【応用編】</a></strong>でDCモータの開ループ特性について解説しました。ここではマイコンのPWM出力を利用した電圧制御による速度制御について実機を使って確認します。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>DCモータは無負荷という条件付きではありますが端子電圧を調整することで回転速度もそれに比例して調整できます。そこで、端子電圧にPWMで設定したパルス状電圧を与えて回転させてみることにします。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実機にはレゴ<strong>®</strong>マインドストームEV3のLモータを使用します。このモータには多段のギアが組み込まれていて<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ギア比は48:1</span></strong>、エンコーダは負荷側に装着されていて互いに1/4周期ずれたA相、B相のパルスを出力します。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">各相パルスの実測値分解能は180P/R</span></strong>です。つまり1回転あたり180パルスが出力されます。負荷側の定格回転数は160-170r/minとなっています。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>このモータモジュールを使うにあたって、モータ単体のものでなくギアも含めた一体のものとして特性を調べることにします。つまり、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力はモータの端子電圧</span></strong>で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">出力は負荷側の回転速度</span></strong>となります。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ev3-Lmotor.png" alt="" class="wp-image-8334" style="width:421px;height:341px"/><figcaption class="wp-element-caption"> レゴ®マインドストーム®EV3 Lモータ</figcaption></figure>



<h2 class="wp-block-heading">マイコンによるモータドライブ</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"> モータは誘導性負荷の典型的なもの</span></strong>で、電力も大きく、マイコン出力を直接つないで運転させることはできません。そこで、マイコン用の電源とは別途のモータドライブ用電源V<sub>M</sub>を用意し、トランジスタなどの増幅素子を介してマイコンからの運転信号でドライブします。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>一から始めてトランジスタ等を組み合わせてドライブ回路を構成することもありますが、ちょっとした用途ではモータを運転するための<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">専用のICを使用することをおすすめ</span></strong>します。必要な機能が内蔵されていてサイズは小さい割にドライブの容量が大きく価格も低いためです。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>これは<strong><a href="https://depfields.com/controltheory-application/" target="_blank" rel="noreferrer noopener" title="マイコンで実現するフィードバック制御のための基礎知識【応用編】">モータドライバ</a></strong>と呼ばれる一種のパワーアンプです。 詳細は割愛しますが、ドライバにはトランジスタ、FET等のパワーエレクトロニクス回路が内蔵されていてマイコンからの信号によりモータへの任意の電圧や電流を調整できるものです。ドライバの種類により<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">電圧制御タイプ</span></strong>や<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">電流制御タイプ</span></strong>があります。 今回使用するTB6612FNGは電圧制御タイプです。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="451" height="375" src="https://depfields.com/wp-content/uploads/2020/12/tb6612fngdriver-module.jpg" alt="" class="wp-image-7491" style="width:317px;height:263px" srcset="https://depfields.com/wp-content/uploads/2020/12/tb6612fngdriver-module.jpg 451w, https://depfields.com/wp-content/uploads/2020/12/tb6612fngdriver-module-300x249.jpg 300w" sizes="(max-width: 451px) 100vw, 451px" /><figcaption class="wp-element-caption">電圧制御型ドライバTB6612FNG</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>モータドライバTB6612FNGはドライバに接続したモータ用電源V<sub>M</sub>をマイコンから与えたPWMパルスのデューティ比率に応じてモータ端子電圧とするICです。モータの回転方向はIN1とIN2を組み合わせて切り替えます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>DCモータはブラシを内蔵しているために整流子との間でノイズが発生し、マイコンに影響を及ぼします。 そこで、通常はモータ端子にセラミックコンデンサ（100nF）をノイズ対策用としてつないでおきます。小型モータであればこれでよいと思います。今回使用するTB6612FNGのドライバモジュールはコンデンサを内蔵しています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="447" height="211" src="https://depfields.com/wp-content/uploads/2021/01/接続ブロック図.png" alt="" class="wp-image-8345" style="width:432px;height:214px" srcset="https://depfields.com/wp-content/uploads/2021/01/接続ブロック図.png 447w, https://depfields.com/wp-content/uploads/2021/01/接続ブロック図-300x142.png 300w" sizes="(max-width: 447px) 100vw, 447px" /><figcaption class="wp-element-caption">マイコンによるモータドライブ全体図</figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">モータドライバのPWMスイッチング周波数</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><a href="https://depfields.com/timer/" target="_blank" rel="noreferrer noopener" title="タイマ・カウンタ【STM32の高機能・汎用タイマ詳細】">マイコンからのPWM出力</a></strong>によりモータ端子電圧はパルス状になり<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ON期間に駆動トルクによるドライブ運転</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">OFF期間に逆起電力によるブレーキがかかる運転</span></strong>となります。端子電圧がパルス状でもモータにはインダクタンス成分がありますので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">電流は電圧の1次遅れ</span></strong>となり連続になります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">電流の変化率</span></strong>はモータのインダクタンスおよび抵抗値成分で決まる<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">電気的時定数L/R</span></strong>によりますが、PWMのスイッチング周波数が低いと電圧オフ期間（ブレーキ運転時）に電流は低下しすぎてしまい、モータ軸慣性があるとはいえ発生トルクに脈動が生じることになり、逆に周波数が高いと電流はなめらかになりますがノイズやスイッチング損失が大きくなるのでやみくもに高くもできません。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p> 一般に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モータ電気的時定数に対して10倍程度のスイッチング周波数にすればよい</span></strong>といわれています。 とはいえ、電気的時定数が不明であるため、まずは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">10kHzあたりのPWMスイッチング周波数で試して</span></strong>みようとおもいます。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/モータ波形.png"><img decoding="async" width="477" height="320" src="https://depfields.com/wp-content/uploads/2021/01/モータ波形.png" alt="" class="wp-image-8336" style="width:477px;height:320px" srcset="https://depfields.com/wp-content/uploads/2021/01/モータ波形.png 477w, https://depfields.com/wp-content/uploads/2021/01/モータ波形-300x201.png 300w" sizes="(max-width: 477px) 100vw, 477px" /></a><figcaption class="wp-element-caption">PWMによるモータ端子電圧とモータ電流</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>下表はドライバ仕様書に記載の運転モードについてです。入力IN1とIN2の組み合わせで<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モータ回転方向を指定</span></strong>したり、俗に言う<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">RUN信号の機能</span></strong>として使用します。PWMは信号のパターンがモータ端子電圧になるものです。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ON時に駆動</span></strong>して、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">OFF時にモータからの逆起電力が発生してブレーキ</span></strong>がかかることになります。PWM入力はマイコンのPWMタイマ出力に接続します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/ドライバ運転モード.png"><img decoding="async" width="395" height="249" src="https://depfields.com/wp-content/uploads/2021/01/ドライバ運転モード.png" alt="" class="wp-image-8605" style="width:383px;height:243px" srcset="https://depfields.com/wp-content/uploads/2021/01/ドライバ運転モード.png 395w, https://depfields.com/wp-content/uploads/2021/01/ドライバ運転モード-300x189.png 300w" sizes="(max-width: 395px) 100vw, 395px" /></a><figcaption class="wp-element-caption"> ドライバ TB6612FNG 運転モード </figcaption></figure>





<h3 class="wp-block-heading">４象限チョッパ</h3>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>電動モータのドライブ機器で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">インバータ</span></strong>はよく耳にすることがあると思います。これもパワーエレクトロニクス搭載のモータドライブ機器ですが、インバータは<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>3相誘導モータ用</strong></span>で<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">交流出力の周波数を変更することでモータ速度を任意に変更</span></strong>する機器です。</p>
</div></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p><strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">インバータ回路</span></strong>は電源回路のダイオードブリッジや平滑コンデンサなどで直流化した電源を再び交流に変換する回路（逆変換回路）のことで、この逆の交流から直流への変換回路は<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">コンバータ回路</span></strong>と呼ばれています。もっと広い変換器としての意味で直流間電圧変換のDC-DCコンバータや交流間変換のAC-ACコンバータなどと呼ばれる製品もあります。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">DCモータのドライブ回路</span></strong>はこのインバータ出力3相のうち<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">単相部分を使ったものに相当</span></strong>し、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">4象限チョッパ回路</span></strong>とも呼ばれるものです。 モータ回転の正転逆転、発生トルクの正と負を<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">4通り組み合わせた運転</span></strong>ができるのことから4象限回路といいます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ドライブ運転</span></strong>とは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">回転方向にトルクを発生</span></strong>して駆動させる通常運転のことで、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ブレーキ運転</span></strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">回転方向とは逆のトルク</span></strong>、つまり<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">逆起電力を発生させながらブレーキをかける運転</span></strong>のことです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p> モータドライバTB6612FNG ではドライバへの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力IN1とIN2の組み合わせで第1象限から第4象限の運転を切り替え</span></strong>ます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/4象限.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/4象限.png" alt=" 4象限運転 " class="wp-image-8599" style="width:358px;height:359px"/></a><figcaption class="wp-element-caption">  4象限運転  </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">チョッパ回路</span></strong>は下図の4つのトランジスタなどの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">パワースイッチング素子(Tr1,Tr2,Tr3,Tr4)で構成</span></strong>されています。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PWMのパターンに応じてこれらのスイッチング素子のON・OFFで組み合わせます</span></strong>が、スイッチ切り替えの過渡期に組み合わせが重なって同時にONとなり<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">短絡になってしまうのを防止</span></strong>するために<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">デッドタイム</span></strong>というものを設けています。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/4象限チョッパ回路.png"><img decoding="async" width="315" height="314" src="https://depfields.com/wp-content/uploads/2021/01/4象限チョッパ回路.png" alt="" class="wp-image-8424" style="width:315px;height:314px" srcset="https://depfields.com/wp-content/uploads/2021/01/4象限チョッパ回路.png 315w, https://depfields.com/wp-content/uploads/2021/01/4象限チョッパ回路-300x300.png 300w, https://depfields.com/wp-content/uploads/2021/01/4象限チョッパ回路-150x150.png 150w" sizes="(max-width: 315px) 100vw, 315px" /></a><figcaption class="wp-element-caption">4象限チョッパ回路</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ドライバTB6612FNGはブレーキ運転時に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">コイルで発生した電力を回路内で吸収する回生</span></strong>方式ですが、電流制御タイプTB67H450FNGでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">電源に返す回生</span></strong>をおこなっています。ドライバによりスイッチング素子の組み合わせは違うようです。</p>
</div></div></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img decoding="async" width="309" height="320" src="https://depfields.com/wp-content/uploads/2021/03/正転ドライブ.png" alt="" class="wp-image-8924" srcset="https://depfields.com/wp-content/uploads/2021/03/正転ドライブ.png 309w, https://depfields.com/wp-content/uploads/2021/03/正転ドライブ-290x300.png 290w" sizes="(max-width: 309px) 100vw, 309px" /><figcaption class="wp-element-caption">正転ドライブ</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img decoding="async" width="313" height="319" src="https://depfields.com/wp-content/uploads/2021/03/正転ブレーキ.png" alt="" class="wp-image-8925" srcset="https://depfields.com/wp-content/uploads/2021/03/正転ブレーキ.png 313w, https://depfields.com/wp-content/uploads/2021/03/正転ブレーキ-294x300.png 294w" sizes="(max-width: 313px) 100vw, 313px" /><figcaption class="wp-element-caption">正転ブレーキ</figcaption></figure>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-layout-2 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img decoding="async" width="316" height="323" src="https://depfields.com/wp-content/uploads/2021/03/逆転ドライブ.png" alt="" class="wp-image-8926" srcset="https://depfields.com/wp-content/uploads/2021/03/逆転ドライブ.png 316w, https://depfields.com/wp-content/uploads/2021/03/逆転ドライブ-293x300.png 293w" sizes="(max-width: 316px) 100vw, 316px" /><figcaption class="wp-element-caption">逆転ドライブ</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img decoding="async" width="316" height="326" src="https://depfields.com/wp-content/uploads/2021/03/逆転ブレーキ.png" alt="" class="wp-image-8927" srcset="https://depfields.com/wp-content/uploads/2021/03/逆転ブレーキ.png 316w, https://depfields.com/wp-content/uploads/2021/03/逆転ブレーキ-291x300.png 291w" sizes="(max-width: 316px) 100vw, 316px" /><figcaption class="wp-element-caption">逆転ブレーキ</figcaption></figure>
</div>
</div>



<p class="has-text-align-center"> ドライバTB6612FNGの４象限スイッチングパターン</p>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>ドライバを自作する場合はデッドタイムも考慮してハードウェアで回路を組む場合もありますが、<strong><a title="タイマ・カウンタ【STM32の高機能・汎用タイマ詳細】" href="https://depfields.com/timer/" target="_blank" rel="noreferrer noopener">STM32マイコンの高機能タイマ</a></strong><a title="タイマ・カウンタ【STM32の高機能・汎用タイマ詳細】" href="https://depfields.com/timer/" target="_blank" rel="noopener"><strong>(Advanced-control timer TIM1やTIM8）</strong></a>にはこの<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">デッドタイム付きPWMを発生する機能が含まれています</span></strong>。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">マイコンを使用したモータドライブ回路</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">VR(可変抵抗)からのアナログ入力信号を速度指令信号</span></strong>として与えます。モータドライバへの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PWMパルスデューティ比率はアナログ入力値と連動</span></strong>させて速度を変化させるプログラムです。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今回はDCモータのオープンループ制御ですので速度指令値に相当するPWMデューティ比率を変化させてモータ回転速度が変化する様子を確認してみます。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>エンコーダ、シリアル通信はモニタ用です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="477" height="498" src="https://depfields.com/wp-content/uploads/2021/01/input.png" alt="" class="wp-image-8338" style="width:477px;height:498px" srcset="https://depfields.com/wp-content/uploads/2021/01/input.png 477w, https://depfields.com/wp-content/uploads/2021/01/input-287x300.png 287w" sizes="(max-width: 477px) 100vw, 477px" /><figcaption class="wp-element-caption">入力側配線図</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>出力側にはドライバへモータ電圧指令としてのPWMタイマ出力を与えます。ドライバのIN1/IN2には運転モードにあったロジックの組み合わせをプログラムで指定します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>USER SWを押すたびに正転(CW)、ブレーキ停止、逆転(CCW)、 ブレーキ停止のサイクルを繰り返すプログラムとしています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ドライバ入力は内部でプルダウンとなっていて6Vまでのロジック電圧入力仕様なのでマイコンは<strong><a href="https://depfields.com/mc-circuit/" target="_blank" rel="noreferrer noopener" title="マイコン周辺のハードウェア基本回路【初心者・未経験者必見】">プッシュプル出力</a></strong>とします。</p>
</div></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="574" height="346" src="https://depfields.com/wp-content/uploads/2021/05/配線図_出力.png" alt="" class="wp-image-9324" srcset="https://depfields.com/wp-content/uploads/2021/05/配線図_出力.png 574w, https://depfields.com/wp-content/uploads/2021/05/配線図_出力-300x181.png 300w" sizes="(max-width: 574px) 100vw, 574px" /><figcaption class="wp-element-caption"> 出力側配線図   </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>EV3Lモータのコネクタ仕様です。エンコーダからは電圧パルスが出力されます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="412" height="258" src="https://depfields.com/wp-content/uploads/2021/01/コネクタ仕様.png" alt="" class="wp-image-8340" style="width:342px;height:214px" srcset="https://depfields.com/wp-content/uploads/2021/01/コネクタ仕様.png 412w, https://depfields.com/wp-content/uploads/2021/01/コネクタ仕様-300x188.png 300w" sizes="(max-width: 412px) 100vw, 412px" /><figcaption class="wp-element-caption">コネクタ仕様</figcaption></figure>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>いわゆる<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">PWM制御によるモータ駆動</span></strong>は<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">電圧制御型ドライバ</span></strong>を使用するのですが、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">PWMスイッチング周波数の決め方もポイント</span></strong>の一つです。これは<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">モータの電気的時定数</span></strong>にも関わっていて今回は10kHzとしましたが、タイマのCLKを1MHzに設定しているのでPWMの分解能は10kHz/1MHz=1/100です。<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">電流制御型ドライバ</span></strong>の場合はモータの電気時定数は考慮せずとも直接トルクに比例した電流を<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">高い分解能で指令値</span></strong>にできるので<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">制御理論の適用には有利</span></strong>です。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-height"><div class="vk_block-margin-md--height"></div></div>



<h2 class="wp-block-heading">実際のうごき</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>マイコンボードNucleo-F103RBでEV3Lモータを動かす全容です。 レゴ<strong><em>®</em></strong>モータのソケット部は特殊なので汎用の電話用モジュラーコードに変換しました。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="640" height="463" src="https://depfields.com/wp-content/uploads/2021/01/試験用実機.jpg" alt="" class="wp-image-8385" style="width:640px;height:463px" srcset="https://depfields.com/wp-content/uploads/2021/01/試験用実機.jpg 640w, https://depfields.com/wp-content/uploads/2021/01/試験用実機-300x217.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /><figcaption class="wp-element-caption">試験用実機</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>PWM出力のduty比とエンコーダによるモータ速度をシリアル通信モニターにてPCに表示します。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モータ電源V<sub>M</sub>が7.2Vの場合</span></strong>、ボリュームを調整して<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PWMデューティ比を0から100まで変化させると 速度は比率にほぼ比例して0から約40まで変化</span></strong>します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>速度40とは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">100msサイクル内で計測したエンコーダパルス数</span></strong>なので1秒当たり400パルス、つまり400/180回転に相当します。1分当たりだと約133回転です。規定の回転数(最大）が160-170rpmだそうですので <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モータ電源V<sub>M</sub> を最大の9V</span></strong>にするとほぼ一致します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="657" height="483" src="https://depfields.com/wp-content/uploads/2021/01/PWMduty-速度シリアルモニター.png" alt="" class="wp-image-8387" style="width:657px;height:483px" srcset="https://depfields.com/wp-content/uploads/2021/01/PWMduty-速度シリアルモニター.png 657w, https://depfields.com/wp-content/uploads/2021/01/PWMduty-速度シリアルモニター-300x221.png 300w" sizes="(max-width: 657px) 100vw, 657px" /><figcaption class="wp-element-caption">シリアルモニター　デューティ比50%時の速度</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>無負荷運転時の入力指令値に対する速度です。端子電圧が極めて小さい領域(duty比0-5％)ではモータ軸、ギアの摩擦などの影響で起動しませんが、一度回転始めると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">出力速度はデューティ比つまり端子電圧にほぼ比例</span></strong>しています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/PWMduty比と速度.png"><img decoding="async" width="519" height="314" src="https://depfields.com/wp-content/uploads/2021/01/PWMduty比と速度.png" alt="" class="wp-image-8391" style="width:519px;height:314px" srcset="https://depfields.com/wp-content/uploads/2021/01/PWMduty比と速度.png 519w, https://depfields.com/wp-content/uploads/2021/01/PWMduty比と速度-300x182.png 300w" sizes="(max-width: 519px) 100vw, 519px" /></a><figcaption class="wp-element-caption">PWMduty-速度特性</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>PWMスイッチング周波数を5kHz, 20kHzおよび40kHzに変更してドライブさせてみたのですが、気になるトルクの脈動はなく状態の違いはみられませんでしたので、10kHzのままでいいかと思います。機会があれば電流波形で確認してみたいと思います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>DCモータのオープンループ制御なので、無負荷であれば<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">回転速度は端子電圧に比例</span></strong>しているのですが少しでも<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">負荷をかけると速度は簡単に変動</span></strong>します。負荷によらず安定した速度を保つためには<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">センサーによる速度フィードバック制御が必要</span></strong>です。次回はフィードバックループで構成した速度制御システムを実機にて検証したいと思います。</p>
</div></div></div>



<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン"   src="https://depfields.com/wp-content/plugins/download-manager/assets/file-type-icons/box_download.png" /></div>
            <div class="media-body">
                <h3 class="package-title"><a href='https://depfields.com/download/dc-motor-pwm-speed-control/'>DCモータPWM速度制御</a></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 9.00 KB</div>
            </div>
            <div class="ml-3">
                <a href='#unlock' class='wpdm-download-link wpdm-download-locked btn btn-primary ' data-package='8389'>ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div>



<p></p>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/dcmotor-pwmcontrol/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/7edafe39a4525a5ead69a81ba8eb66636dd576d928d76cc8a84b06b90269482f.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Speed control of DC motors using Microcontroller PWM output [Open-loop contro...</div></div><div class="lkc-url">https://en.depfields.com/dcmotor-pwmcontrol/</div><div class="lkc-excerpt">Using the L-motor of the LEGO® MINDSTORMS EV3, the STM32Nucleo board will actually operate the motor. The EV3 motor has a built-in encoder, so you can not only monitor the speed, but also get feedback for more advanced operation.First,</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/dcmotor-pwmcontrol/">DCモータのマイコンPWM出力による回転速度制御（オープンループ制御）</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>マイコンで実現するフィードバック制御のための基礎知識【発展編】</title>
		<link>https://depfields.com/controltheory-advanced/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=controltheory-advanced</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Mon, 11 Jan 2021 02:29:57 +0000</pubDate>
				<category><![CDATA[実践で使う制御理論]]></category>
		<category><![CDATA[制御理論]]></category>
		<category><![CDATA[モーションコントロール]]></category>
		<category><![CDATA[フィードバック制御]]></category>
		<category><![CDATA[ロバスト制御]]></category>
		<category><![CDATA[２自由度制御]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=7772</guid>

					<description><![CDATA[<p>マイコンで実現するフィードバック制御のための基礎知識【応用編 】では古典制御理論をベースに実践で使われるPID制御を解説しました。PID制御は感覚的にゲインを設定できるので、制御をするモデルが比較的単純なものである場合は [&#8230;]</p>
<p>The post <a href="https://depfields.com/controltheory-advanced/">マイコンで実現するフィードバック制御のための基礎知識【発展編】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img decoding="async" width="640" height="426" src="https://depfields.com/wp-content/uploads/2021/01/harddisk-4002369_640.jpg" class="attachment-large size-large wp-post-image" alt="Actuator" srcset="https://depfields.com/wp-content/uploads/2021/01/harddisk-4002369_640.jpg 640w, https://depfields.com/wp-content/uploads/2021/01/harddisk-4002369_640-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>
<p class="vk_block-margin-sm--margin-top"><a aria-label=" (opens in a new tab)" href="https://depfields.com/controltheory-application/" target="_blank" rel="noreferrer noopener"><strong>マイコンで実現するフィードバック制御のための基礎知識【応用編 】</strong></a>では古典制御理論をベースに実践で使われる<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">PID制御を解説</span></strong>しました。PID制御は感覚的にゲインを設定できるので、制御をするモデルが比較的単純なものである場合は現場でも使いやすいのですが、外乱や制御対象のパラメータ変動などによりモデル化できなかった部分の影響が大きい場合は望んだとおりの性能は期待できないことになります。</p>



<p class="vk_block-margin-sm--margin-top">そこで、本編では従来の古典制御理論を発展させたDCモータを制御モデルとした<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">アドバンスト制御</span></strong>とよばれるものを紹介します。目的は実践で使うには避けられないモデル化の誤差や負荷の変動といった外乱がある場合にも本来想定したとおりの性能をだすことです。</p>



<p class="vk_block-margin-sm--margin-top">アドバンスト制御といえば、代表的なものに<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ロバスト制御</span></strong>や<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">適応制御</span></strong>などがありますが本来理論中心の難解な解説が多くて敷居が高く学術的で、一般用途には無縁のものに思われますが、ここでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実践ですぐにも使えそうなもの</span></strong>を紹介し、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">誰でも利用できそうな実用的なものを解説</span></strong>していきます。</p>







<h2 class="wp-block-heading">モデル誤差や外乱に強いロバスト制御</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>アドバンスト制御のなかでも、本編では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ロバスト制御</span></strong>を解説していきます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ロバスト制御</span></strong>というものはDCモータなどの物理的な制御モデルを数式化した際の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モデル化誤差</span></strong>や<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">負荷変動などの制御対象P(s)の入力側に加わる外乱</span></strong>、および<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">センサノイズなど制御対象の出力側に加わる外乱</span></strong>に対して制御出力が影響を受けにくい制御システムのことをいいます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ロバスト制御イメージ.png" alt="" class="wp-image-7858" width="411" height="268"/><figcaption class="wp-element-caption">ロバスト制御のイメージ</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ロバスト制御では、端的にいうと外乱d、観測ノイズn、および多少のモデル誤差化⊿があっても入力rから出力ｙまでの伝達関数 G<sub>ry</sub>(s) が設定した特性（例えば時定数T<sub>r</sub>の１次遅れ）になるように補償器C(s)を設計します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/ロバスト制御.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ロバスト制御.png" alt="" class="wp-image-7945" width="541" height="435"/></a><figcaption class="wp-element-caption"> ロバスト制御 </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ロバスト制御のうちでも、PID制御なみに簡易に実現できるものであれば、ちょっとしたアプリケーションにも積極的に適用したいものです。本編ではそんな比較的気楽に扱えるような実用的なものの検証をしていきたいと思います。</p>
</div></div></div>



<h2 class="wp-block-heading">２自由度制御システム</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>従来のPID制御はフィードバックループ内にあるPID補償器の比例・積分・微分ゲインをそれぞれ設定して出力を調整するものです。各ゲインの決め方は経験に基づいた値を試行錯誤的に決めることも多いようです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>PID制御の利点は理論的なものを理解していなくても手軽に感覚的に設定できることですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ゲインにより調整できるのは応答性</span></strong>であって、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外乱などに対しては特性の根本的な改善はできません</span></strong>。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>また、PID制御を始めとする<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">従来のフィードバック制御では</span></strong>ループ内のゲインを上げる（増幅）ことによって、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">安定性や応答性を改善する</span></strong>ことはできますが、同時に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">モデル化誤差やノイズなど望まないものも増幅してしまう</span></strong>ことにより想定したとおりの性能がだせない場合も起こりえます。単なるフィードバック制御では精度や応答性の向上を望むには限界があるといえます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>そこで、ロバスト制御を実現するのにあたって<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">応答特性と外乱抑制を独立して設定できる２自由度制御システム</span></strong>と呼ばれる<strong>制御方法</strong>があります。ロバスト制御には他に外乱やモデル化誤差を推定して変化分をキャンセルする<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外乱オブザーバー</span></strong>的な方法もありますが、本編では２自由度制御を取り扱います。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>2自由度制御にもいろいろありますが、今回取り扱うものは、最もシンプルで誰でも検証しやすく、プログラミングなどでも実現しやすいものです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>入力rから出力ｙまでのブロック線図は下図の形になります。通常のフィードバック制御用ループに加えて<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力から分岐した情報を加えた形</span></strong>になっています<strong>。</strong></p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/2自由度制御.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/2自由度制御.png" alt="" class="wp-image-7864" width="500" height="369"/></a><figcaption class="wp-element-caption">2自由度制御システム</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>上のブロック線図の配置を並べ替えると下図のような等価ブロック線図となります。これが意味しているところは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィードバック部</span>と<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィードフォワード部で構成</span></strong>されていて、外乱抑制はフィードバック補償器C(s)、応答特性はフィードフォワード部のG<sub>ry</sub>(s)およびP<sub>n</sub>(s)で改善します。これらが干渉することなく<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>独立して設定</strong></span>できることから２自由度と呼ばれています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/2自由度制御等価ブロック線図.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/2自由度制御等価ブロック線図.png" alt="" class="wp-image-7809" width="562" height="246"/></a><figcaption class="wp-element-caption"> ２自由度制御等価ブロック線図 </figcaption></figure>



<h2 class="wp-block-heading">ロバスト制御で扱う近似モデル</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><a href="https://depfields.com/controltheory-application/" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener"><strong>マイコンで実現するフィードバック制御のための基礎知識【応用編 】</strong></a>ではDCモータの特性についてモータ回転速度は入力電圧を変化させれば調整できることを説明しました。無負荷であれば回転速度は入力電圧にほぼ比例していますので入力をu、出力をｙとすると下図のような<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">１次遅れで近似モデル化</span></strong>できます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性.png" alt="" class="wp-image-7811" width="380" height="186" srcset="https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性.png 380w, https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性-300x147.png 300w" sizes="(max-width: 380px) 100vw, 380px" /></a><figcaption class="wp-element-caption">DCモータ近似モデル</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>近似モデルゲインK<sub>m</sub>、時定数T<sub>m</sub>は実際の入力を与えたときの回転速度yを実測して得られるものに相当します。これは一種の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">パラメータ同定</span></strong>と呼ばれますが、DCモータの実際の慣性モーメントJや粘性摩擦Dといった物理的なパラメータでなく近似モデルのパラメータです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>入力uから出力ｙまでの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">物理的パラメータが K<sub>m</sub>とT<sub>m</sub>に集約</span></strong>されていてより実用的なモデルです。 <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力は電圧でも電流でもよく</span></strong>、パラメータ  K<sub>m</sub>とT<sub>m</sub> はそれに応じた値になります。 K<sub>m</sub> は伝達関数のゲインなのですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力から出力までの変換係数</span></strong>といった捉え方がわかりやすいのではないでしょうか。</p>
</div></div></div>



<div style="display: inline-block; background: #191970; padding: 5px 10px; color: #ffffff; border-radius: 5px 5px 0px 0px;"><strong>ポイント</strong></div>
<div style="background: #ffffea; border-radius: 0px 10px 10px 10px; padding: 10px; border: 3px solid #191970;">
<p>制御の用途にもよりますが、物理的モデルを数式化するときに正確を求めて<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">詳細にすぎてもあまり意味がなく実用的でありません</span></strong>。パラメータは変動するものですし、外乱は常に存在するものです。数式モデルがあっての制御ですので<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">最低限の特性を抑えたモデルは必要</span></strong>ですが、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ロバスト制御の場合</span></strong>は特に<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">制御対象のモデルは簡素化したものでよい</span></strong>のではないでしょうか。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">モデル化誤差や外乱があっても安定した速度制御</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>DCモータを制御対象にした2自由度制御システムによる速度制御を解説します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>制御対象P(s)には<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力uを電圧または電流</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">出力yをモータ回転速度</span></strong>とした1次遅れモデルとします。この実モデルは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">変動の可能性があるパラメータ</span></strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>K<sub>m</sub>, T<sub>m</sub></strong></span> を持ちますが、この<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">規範モデルをP<sub>n</sub>(s)</span></strong>とします。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">規範モデルP<sub>n</sub>(s)</span></strong> <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">のパラメータ</span></strong>は実モデルP(s)のパラメータ同定により得られたパラメータK<sub>m</sub>,T<sub>m</sub>をそれぞれ規範モデルパラメータ K<sub>n</sub>,T<sub>n</sub> とし、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィードフォワード補償器内で使用するもの</span></strong>です。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>フィードフォワード補償部は特性改善後の入出力間<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">目標応答特性G<sub>ry</sub>(s)</span></strong>および<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">規範モデルの逆システムPn</span></strong> <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">(s)</span></strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"> <strong><sup>-1</sup></strong></span>  で構成され、フィードバック補償部には、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ロバスト特性を決定するゲインC</span></strong>（制御対象により今回は定数）が入ります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>特性改善後の入出力間<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">目標応答特性G<sub>ry</sub>(s)</span></strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">時定数T<sub>m2</sub>の1次遅れ</span></strong>としますが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">時定数T<sub>m2</sub></span></strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実現できるレベルで設定</span></strong>する必要はあります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/DCモータ速度制御向け2自由度制御.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/DCモータ速度制御向け2自由度制御.png" alt="" class="wp-image-7955" width="505" height="464"/></a><figcaption class="wp-element-caption"> DCモータの2自由度速度制御システム </figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;制御対象P(s)にモデル化誤差がない場合の応答特性</span><span style="background-color: #003300; color: #ffffff;">：</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>制御対象の実モデルP(s)と規範モデルP<sub>n</sub>(s)に誤差変動がなく P(s) ＝ P<sub>n</sub>(s) である場合、入力ｒから出力ｙまでの伝達関数は設定した<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">目標応答特性G<sub>ry</sub>(s)</span></strong> となります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/DCモータ2自由度without-モデル化誤差.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/DCモータ2自由度without-モデル化誤差.png" alt="" class="wp-image-7790" width="453" height="163" srcset="https://depfields.com/wp-content/uploads/2021/01/DCモータ2自由度without-モデル化誤差.png 453w, https://depfields.com/wp-content/uploads/2021/01/DCモータ2自由度without-モデル化誤差-300x108.png 300w" sizes="(max-width: 453px) 100vw, 453px" /></a><figcaption class="wp-element-caption">制御対象P(s)にモデル化誤差がない場合</figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;制御対象P(s)にモデル化誤差がある場合の応答特性</span><span style="background-color: #003300; color: #ffffff;">：</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p> 制御対象の実モデルP(s)と規範モデルP<sub>n</sub>(s)に誤差変動がある場合、下図の⊿(s)が変動分です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フィードバックゲインCが大きいほど変動誤差の影響は小さくなる</span></strong>ので 設定した<strong>目標応答特性G<sub>ry</sub>(s)</strong> に近づきます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今回設定したフィードフォワード補償のタイプでは変動があっても、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実モデルパラメータと規範モデルパラメータが互いに相殺しあう</span></strong>かたちになっているのも特徴です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/DCモータ2自由度with-モデル化誤差.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/DCモータ2自由度with-モデル化誤差.png" alt="" class="wp-image-7956" width="519" height="285"/></a><figcaption class="wp-element-caption"> 制御対象P(s)にモデル化誤差がある場合  </figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;外乱に対する出力への影響</span><span style="background-color: #003300; color: #ffffff;">：</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ここが、2自由度ロバスト制御の本質的な部分です。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外乱特性はフィードバックゲインCにのみ関連</span></strong>していて応答特性を決定する<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"> 目標応答特性G<sub>ry</sub>(s) とは無関係</span></strong>です。<br><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ゲインCが大きくなるほど出力への影響は小さくなる</span></strong>ことがわかります。この値も<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実現可能な範囲で設定</span></strong>します。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/外乱特性.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/外乱特性.png" alt="" class="wp-image-9265" width="399" height="214"/></a><figcaption class="wp-element-caption"> 外乱特性  </figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;定常偏差をなくす場合</span><span style="background-color: #003300; color: #ffffff;">：</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今回の2自由度制御では <span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>目標応答特性G<sub>ry</sub>(s)</strong> </span>を<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">1次遅れ</span></strong>としているため、負荷トルクが定常負荷のように一定で大きい場合は、定常誤差が発生してしまいます。この誤差を小さくするためにはフィードバックゲインCを大きくすると零に近づきますが収束するわけではありません。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>どうしても、出力を目標値に一致させるためには外側に定常偏差をなくすためのPIフィードバック補償ループを追加して適当な比例、積分ゲインを調整します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>実装のポイントは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ロバスト制御部をできるだけ高速で処理</span></strong>し、PIフィードバックによる<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">サーボ補償のループをそれよりも遅い処理</span></strong>にして相互干渉による影響をなくすことです。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/目標値追従補償器ー速度サーボ.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/目標値追従補償器ー速度サーボ.png" alt="" class="wp-image-7877" width="441" height="236" srcset="https://depfields.com/wp-content/uploads/2021/01/目標値追従補償器ー速度サーボ.png 441w, https://depfields.com/wp-content/uploads/2021/01/目標値追従補償器ー速度サーボ-300x161.png 300w" sizes="(max-width: 441px) 100vw, 441px" /></a><figcaption class="wp-element-caption">  目標値追従補償器　速度サーボ </figcaption></figure>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>速度制御であればロバスト補償ゲインCで外乱の影響はほぼ受けなくなるので、負荷にかかわらず一定速度を精度よく保つ用途でもなければあえて定常偏差をなくすためにPI制御ループを付加する意味はあまりないかもしれません。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>





<h3 class="wp-block-heading">シミュレーションによる検証（2自由度ロバスト制御）</h3>



<p><span style="background-color: #003300; color: #ffffff;">&nbsp;DCモータ開ループ状態で出力応答</span><span style="background-color: #003300; color: #ffffff;">：</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>検証した結果の時間応答をシミュレーション（ <strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><a href="https://www.scilab.org/" target="_blank" rel="noreferrer noopener" title="Scilab">Scilab</a>を使用</span></strong> ）して確認します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>DCモータに開ループ状態でステップ入力時にパルス状の負荷外乱を与えたときの応答です。ちょっとしたパルス状の負荷でも出力に大きな影響を与えることがわかります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性パルス負荷.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性パルス負荷.png" alt="" class="wp-image-7845" width="552" height="456" srcset="https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性パルス負荷.png 552w, https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性パルス負荷-300x248.png 300w" sizes="(max-width: 552px) 100vw, 552px" /></a><figcaption class="wp-element-caption"> DCモータ開ループ速度特性（パルス外乱負荷） </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>今度はステップ状の負荷外乱を与えたときの応答です。 指令値から大きく下がったところで負荷に応じて発生トルクと釣り合ってしまっています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性ステップ負荷.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性ステップ負荷.png" alt="" class="wp-image-7844" width="542" height="471" srcset="https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性ステップ負荷.png 542w, https://depfields.com/wp-content/uploads/2021/01/DCモータ開ループ特性ステップ負荷-300x261.png 300w" sizes="(max-width: 542px) 100vw, 542px" /></a><figcaption class="wp-element-caption"> DCモータ開ループ速度特性（ステップ外乱負荷） </figcaption></figure>



<p><span style="background-color: #003300; color: #ffffff;">2自由度ロバスト制御　出力応答　</span><span style="background-color: #003300; color: #ffffff;">：</span></p>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p> 目標応答特性G<sub>ry</sub>(s) の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">時定数T<sub>m2</sub>を50ms</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ロバスト補償器ゲインCを0.5</span></strong>とした条件でパルス状外乱を与えたときの出力応答です。制御対象には、規範モデルに対して<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Kmは+30%</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">Tmは-20％</span></strong>の モデル誤差に加えて、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">時定数10msの1次遅れ寄生要素を追加</span></strong>しているので2次遅れ系となっていますが、多少のモデル化誤差では出力は 目標応答特性G<sub>ry</sub>(s)の特性を維持したまま、外乱を短期間で抑制しているのがわかります。<br></p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p> ロバスト補償器ゲインCを更に大きくすると外乱やモデル化誤差の変動の抑制効果は向上します。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/DCモータロバスト_t50_C0.5-with-プラント変動.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/DCモータロバスト_t50_C0.5-with-プラント変動.png" alt="" class="wp-image-7842" width="556" height="451" srcset="https://depfields.com/wp-content/uploads/2021/01/DCモータロバスト_t50_C0.5-with-プラント変動.png 556w, https://depfields.com/wp-content/uploads/2021/01/DCモータロバスト_t50_C0.5-with-プラント変動-300x243.png 300w" sizes="(max-width: 556px) 100vw, 556px" /></a><figcaption class="wp-element-caption">2自由度ロバスト制御ステップ応答（パルス外乱あり）</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p> ロバスト補償器ゲインC だけを3に増加してから外乱をステップ負荷としたときの応答です。ここでも 出力は 目標応答特性G<sub>ry</sub>(s)の特性を維持したまま、外乱の影響が出力にほぼ現れず、ロバスト制御の効果が見られます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">応答特性と外乱抑制特性を独立して設定できる2自由度制御の効果</span></strong>をよく表しています。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/DCモータロバスト_t50_C3_stepload-with-プラント変動.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/DCモータロバスト_t50_C3_stepload-with-プラント変動.png" alt="" class="wp-image-7841" width="552" height="454" srcset="https://depfields.com/wp-content/uploads/2021/01/DCモータロバスト_t50_C3_stepload-with-プラント変動.png 552w, https://depfields.com/wp-content/uploads/2021/01/DCモータロバスト_t50_C3_stepload-with-プラント変動-300x247.png 300w" sizes="(max-width: 552px) 100vw, 552px" /></a><figcaption class="wp-element-caption"> 2自由度ロバスト制御ステップ応答（ステップ外乱あり） </figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">ハイゲインフィードバック方式との比較</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>簡易的な速度制御特性を改善する方式に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック方式</span></strong>があります。出力側をゲインC<sub>1</sub>を介してフィードバックし、 ゲインC<sub>1</sub>とC<sub>2</sub>の値を組み合わせて<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">外乱を抑制しながら入出力間のゲインを1に近づけことができる</span></strong>とても簡単な方式です。 </p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック方式.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック方式.png" alt="" class="wp-image-7909" width="493" height="238" srcset="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック方式.png 493w, https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック方式-300x145.png 300w" sizes="(max-width: 493px) 100vw, 493px" /></a><figcaption class="wp-element-caption">ハイゲインフィードバック方式</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>外乱特性を向上するためには 外乱抑制用フィードバックゲインC<sub>1</sub>を上げれば改善できます。C<sub>1</sub>の大きさに頼るところからハイゲインフィードバックと呼ばれます。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック外乱特性.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック外乱特性.png" alt="" class="wp-image-8469" width="477" height="151"/></a><figcaption class="wp-element-caption"> ハイゲインフィードバック外乱特性 </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>応答特性は全体のゲインが1になるようにC<sub>2</sub>により調整することで求められますが、外乱抑制用ゲインC<sub>1</sub>の大きさに依存するうえに、任意の応答特性を得ることはできません。また、外乱を抑えるためのハイゲインに頼ることになるため、出力側センサーからのノイズの影響を受けないように注意する必要があります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック応答特性-1.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバック応答特性-1.png" alt="" class="wp-image-8470" width="409" height="230"/></a><figcaption class="wp-element-caption"> ハイゲインフィードバック応答特性 </figcaption></figure>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p> ロバスト制御まで必要としない比較的外乱の影響が小さい用途では<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">気軽に実現できるハイゲインフィードバックは有</span>用</strong>です。アプリケーションに応じて使い分けるとよいでしょう。 </p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>





<h3 class="wp-block-heading">シミュレーションによる検証（ハイゲインフィードバック）</h3>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>パルス状の 外乱負荷として加えたときの応答をシミュレーション結果です。外乱パルスはフィードバックゲインC<sub>１</sub>により抑制されていますが同時に応答も影響をうけてゲインやモデル化パラメータによっては過応答になってしまいます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p> 外乱抑制と応答特性はフィードバックゲインC<sub>１</sub>により決定づけられてしまいますが、実現できる範囲で設定できるようであれば<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ハイゲインフィードバック方式</span></strong>は<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">最も簡単で実用的</span></strong>です。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバックシミュレーション.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバックシミュレーション.jpg" alt="" class="wp-image-7916" width="543" height="451" srcset="https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバックシミュレーション.jpg 543w, https://depfields.com/wp-content/uploads/2021/01/ハイゲインフィードバックシミュレーション-300x249.jpg 300w" sizes="(max-width: 543px) 100vw, 543px" /></a><figcaption class="wp-element-caption"> ハイゲインフィードバック方式 </figcaption></figure>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h2 class="wp-block-heading">位置決め追従制御（加速度指令方式）</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度制御モデル</span></strong>が外乱やモデル化誤差の影響を受けない<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">目標応答特性G<sub>ry</sub>(s)でモデル化</span></strong>されていると<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">簡単に位置決め追従制御に発展</span></strong>できます。ここでは、産業用途ではよく目にする速度制御用フィードバックループの外側に位置制御用フィードバックループで構成されているタイプとは異なる、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度指令方式位置決め追従制御</span></strong>を解説します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>速度応答が外乱やモデル化誤差の影響をうけない<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">目標応答特性G<sub>ry</sub>(s)</span></strong> である場合、速度の微分である<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度を指令とした場合</span></strong>、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">入力から出力までの伝達関数は目標応答特性G<sub>ry</sub>(s)を積分したもの</span></strong>になります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/加速度応答.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/01/加速度-速度応答.png" alt="" class="wp-image-9146" width="450" height="293" srcset="https://depfields.com/wp-content/uploads/2021/01/加速度-速度応答.png 450w, https://depfields.com/wp-content/uploads/2021/01/加速度-速度応答-300x195.png 300w" sizes="(max-width: 450px) 100vw, 450px" /></a><figcaption class="wp-element-caption">加速度ー速度応答</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>応答 <strong>G<sub>ry</sub>(s)</strong>の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">時定数T<sub>m2</sub>は実現できる範囲で十分小さく設定</span></strong>することが好ましいです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>加速度指令値を生成するために予め位置θ<sub>0</sub>、速度θ<sup>'</sup><sub>0</sub>、加速度 θ<sup>"</sup><sub>0</sub> の追従軌道の目標値を作成しておきます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度参照値θ<sup>"</sup><sub>0</sub>をフィードフォワード項</span></strong>として、速度θ<sup>'</sup><sub>0</sub>、位置θ<sub>0</sub>参照値と実際値 θ, θ<sup>'</sup> との誤差にそれぞれ<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ゲインK<sub>v</sub>, K<sub>p</sub>をかけたものをフィードバック項</span></strong>として<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度指令値 θ<sup>"</sup><sup>ref</sup></span></strong>とします。 </p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>ゲインK<sub>v</sub>とK<sub>p</sub>は 2次遅れ系の応答を参考にして目標の速応性および減衰性を考慮して簡単に決定できます。<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">設定した2次遅れ系の応答</span></strong>で起動時の誤差が収束すると⊿θ(=θ<sub>0</sub>-θ)は0、つまり実際位置θは遅れなく参照値θ<sub>0</sub>に追従することになります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2021/01/加速度指令値.png"><img decoding="async" src="https://depfields.com/wp-content/uploads/2021/04/加速度指令値.png" alt="" class="wp-image-10043" width="507" height="249" srcset="https://depfields.com/wp-content/uploads/2021/04/加速度指令値.png 613w, https://depfields.com/wp-content/uploads/2021/04/加速度指令値-300x148.png 300w" sizes="(max-width: 507px) 100vw, 507px" /></a><figcaption class="wp-element-caption">加速度指令値</figcaption></figure>



<figure class="wp-block-image size-full"><a href="https://depfields.com/wp-content/uploads/2021/01/位置決めロバスト制御2.png"><img decoding="async" width="610" height="404" src="https://depfields.com/wp-content/uploads/2021/01/位置決めロバスト制御2.png" alt="" class="wp-image-13562" srcset="https://depfields.com/wp-content/uploads/2021/01/位置決めロバスト制御2.png 610w, https://depfields.com/wp-content/uploads/2021/01/位置決めロバスト制御2-300x199.png 300w" sizes="(max-width: 610px) 100vw, 610px" /></a><figcaption class="wp-element-caption"> 目標値追従補償器（位置サーボ）  </figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>上式が成立するのは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度系にロバスト制御</span></strong>が施されていて速度指令値θ<sup>'ref</sup> ≒ 速度θ<sup>'</sup> となることにより<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度指令値θ<sup>"ref</sup> ≒ 加速度θ<sup>"</sup></span></strong> とみなせるからです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>上式だけ見ているとゲインK<sub>V</sub>、K<sub>P</sub>は任意に決めても問題なさそうですが ゲイン選定を適当にすると応答は乱れる可能性があります。 これらのゲインで<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">2次遅れ系規範モデルを構成</span></strong>することになるからです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span style="color:#cf2e2e" class="tadv-color"><mark>位置決めサーボ系として見た場合</mark></span></strong>、指令値に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>目標位置θo</strong>のみ与えた場合</span></strong>は<strong>目標値θoから出力θまでの伝達関数は<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>2次遅れ系</strong>の規範モデルK<sub>P</sub>/(s<sup>2</sup>+K<sub>V</sub>s+K<sub>P</sub>)</span></strong>となり、出力θは遅れて追従します。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">規範モデル</span></strong>に対して指令値に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">加速度θ<sup>"</sup><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>o</strong></span></strong></span></strong>および<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">速度θ<sup>'</sup></span>o</strong>を含めることにより、それらが<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">位置決めサーボ系では</span></strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>フィードフォワード的な役割</strong>を</span>果たし、<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>出力θ</strong>は</span><strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">定常偏差がなくなり<strong>目標値θo</strong></span></strong>に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">遅れなしに追従</span></strong>するようになるのです。見方を変えると<strong>規範モデルの<span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">逆システム</span></strong>を構成するのと等価になります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>つまり、システムとしては<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">規範モデルが安定であることが必要</span></strong>で、仮に不安定な極をもつ規範モデルに対して、不安定な零点をもつ規範モデルの逆システムを構成すると、数式上では相殺されるので問題がなさそうですが、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">実際は必ず遅れ要素やモデル化誤差および外乱等が存在する</span></strong>ため、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">相殺されることはなく不安定なまま</span></strong>であるということです。</p>
</div></div></div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>





<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<h3 class="wp-block-heading">シミュレーションによる検証（位置決め追従制御）</h3>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>速度系<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">目標応答特性G<sub>ry</sub>(s)</span></strong> の時定数T<sub>m2</sub>を10ms、ゲインK<sub>v</sub>とK<sub>p</sub>は 速応性ω<sub>n</sub>=10,減衰 0.8としてK<sub>v</sub>＝16, K<sub>p</sub>=100 としたときの追従性をシミュレーションしてみました。比較的緩やかな目標値の場合ですので時定数が大きめでも<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">位置は遅れなく追従</span></strong>できていることが確認できます。</p>
</div></div></div>



<figure class="wp-block-image size-full"><a href="https://depfields.com/wp-content/uploads/2021/01/シミュレーション位置追従制御.png"><img decoding="async" width="542" height="565" src="https://depfields.com/wp-content/uploads/2021/01/シミュレーション位置追従制御.png" alt="" class="wp-image-13541" srcset="https://depfields.com/wp-content/uploads/2021/01/シミュレーション位置追従制御.png 542w, https://depfields.com/wp-content/uploads/2021/01/シミュレーション位置追従制御-288x300.png 288w" sizes="(max-width: 542px) 100vw, 542px" /></a><figcaption class="wp-element-caption"> 位置決め追従制御のシミュレーション </figcaption></figure>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>制御のなかでも、ロバスト制御は高度な分類のもので一般・趣味用途では無縁であったものかもしれませんが、今回紹介したものではちょっとしたマイコンを使ったプログラムによるモータコントロールなどには簡単に応用できるのではないでしょうか。<br>通常、電圧入力のDCモータコントロールはエンコーダなどからフィードバック制御を行っても、PID制御であれば特性改善はそんなに望めませんが、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">本編の2自由度ロバスト制御やハイゲインフィードバックを施せば外乱の影響を抑制できる</span></strong>ために、<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">ステッピングモータのような感覚でモータを扱える</span></strong>ようになるので用途が広がります。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>シミュレーションによる検証は入力に制限のない条件で行っています。実装の際にはモータ端子電圧や最大電流などで制約されますので実現できるかどうかは物理モデルの条件を入れて確認する必要があります。次回は実機で検証を行っていきたいと思います。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/controltheory-advanced/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img decoding="async" class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img decoding="async" class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/0fdf5cd5585c35ac790d0f4a6b62731cf32851d3e1c0e445e30b12172fca8057.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Fundamentals of Feedback Control using Microcontroller [Advanced] | Most Powe...</div></div><div class="lkc-url">https://en.depfields.com/controltheory-advanced/</div><div class="lkc-excerpt">In &quot;Fundamentals of Feedback Control using Microcontroller &quot; I explained PID control, which is used in practice based on classical control theory. PID control is easy to use in the field when the model to be controlled is rela</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/controltheory-advanced/">マイコンで実現するフィードバック制御のための基礎知識【発展編】</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
