以下では、それぞれの要素について簡単にまとめていきます。
出力を得る方向の分類:
エネルギー源の分類:
動作のリニアさ:
電磁石系のアクチュエータ全般に言えますが、その出力トルク(力)は電流に比例します。
直流サーボモータの基本となる式は、
磁界の中でコイルを動かすと、コイルには電圧が発生(誘導)します。
モータに電源をつなぐかわりに、モータを外部から回転させると電気が発生する=発電機になるということはこれによります。
これはモータに電流を流して回転させているときにも同じことが起きていて、逆起電力と呼ばれています。逆起電力は
モータを電子回路的に見ると、コイルなどの電気抵抗、コイルのインダクタンス成分、それに逆起電力を発生する電池が直列につながったように表すことができます。
その端子電圧は
以上の3つの式を組み合わせるとモータの特性を説明できます。
モータというと、なんとなく電圧を入力する部品に思えますが、このように電流を入力する部品です。
そのため、モータを本格的に駆動する場合には、電流でモータを駆動できるような回路をつくります(電流を検出して、目的値になるように電圧をフィードバック制御)。
と表されます。ここで、比例定数 KTはトルク定数などと呼ばれます。
と表され、回転角速度(一般には、1分あたりの回転数RPMでスペック表記)に比例した電圧が発生します。
となります。ここで、R,Lはモータの等価的な抵抗、インダクタンス成分です。
たとえば、止まっているモータにある電源をつないだとき、キュィィィンと加速して、ある回転数に落ち着きます(こういう基本的なところはサーボモータもマブチモータも違いなし)。
これは、電源をつないだ直後は角速度が低いため、モータのコイルにはほぼ V/Rの電流が流れ(コイル分の影響は一般に瞬間的に大きいのみ)、KT倍のトルクが発生します。
このトルクで、モータ自身、その先のメカを加速します。
その結果、徐々に逆起電力が増加してきます。
最終的には、「摩擦力とトルクが釣り合う電流」にRを乗じて電源電圧からひいた電圧=逆起電力となるところで、加速が止まります。
このモータの特徴は、狙った角度の回転が簡単なことです。
コイルを一回切り替えるごとに1ステップずつ回転するため、目的の角度をステップ角度で割った回数だけ通電切り替えをすればいいわけです(切り替え速度を決めれば、速度を決められる)。
それに対して、電流を流すと回る普通のモータは、別途回転角度センサをつけて、それをフィードバックしなければ目的の角度を出すことはできません。
このフィードバックが要らない(オープンループ)、狙った角度、速度が出しやすいという特性を活かして、駆動系の簡略化を測る目的でステッピングモータが使われることがよくあります。
身近な例ではプリンタのへッドを左右に動かしたり、紙送りをするところにはステッピングモータがよく使われます。
そのほか、一つのコイルに電流を流しっぱなしにすれば、一定の角度でホールドできるという特徴もあります。また、回転速度は遅いかわりにトルクが案外大きいため、減速系を省略できることもあります。
ただし、欠点もあります。
リニアモータにもいくつかの方式がありますが、
リニアモータの特徴は、「最初からリニア」ということです。工作機械など、直線運動が要求される機械は案外あります。
従来は、回転式のモータとボールネジ、台形ネジなどの回転−直動変換機構で構成していましたが、こういうメカが介在するとどうしてもガタがでます(ガタは必須)。
そうすると動作にずれがでたり、力のかかり方の変化のたびにガタの分だけ動いたりと不都合がでます。
最初からリニアならこういう問題はおきません。
そのため、工作機械などで使われ始めています。
欠点は、現在のところ出力のわりに重く、制御装置も専用のものが必要であるため、ロボットにつむにはまだ不適であること(たとえば、パトレイバーのAV98式は超伝導リニアモータ(SCLM)駆動なんですけど)があげられます。また、回転式のモータはしっかり入れ物にいれられますが、リニアモータは一般に剥き出しなので、たとえば工作機械の場合は切屑がひっつかないようにとか気を使うことです。
ちなみに、鉄道にリニアモータが使われる理由はちょっと違います。 現行の鉄道では、駆動も制動もレールと車輪の摩擦力に頼っています。 両方とも鉄であるため、耐久性も走行抵抗も低く押さえられますが、鉄同士の摩擦はそれほど大きくなく、すべらないようにするには駆動力、制動力に制限がでます。そのため、あまり急勾配(人間や自動車にはあまり急ではない)にもできません。また、高速運転する場合も空気抵抗に打ち勝つだけの駆動力を出すのがたいへんになります。 これがリニアモータになると、車輪は支えるだけでよくなり、駆動力はダイレクトに発生させるので、こういう制約がなくなります(いわゆる磁気浮上のリニアモーターカーは加えて、浮かせることで地上との摩擦を低減)。 そのため、町中からいきなり青葉山を上ることで急勾配になる仙台市の地下鉄東西線では、従来のものより有利と考えられています。 ついでに、車輪もある程度小さくできるし、床下の機器も小さくできるしで、トンネル断面が小さくなって安上がりという効果もあるようです。
油圧の特徴は、油圧の発生源と、実際に動作をするアクチュエータの部分を分離できることです。 この油圧の発生源であるポンプが大きく、重くなり易いためにロボットに積むことは容易ではありませんが、「積まない」ことにしてしまえば、アクチュエータの単位重量辺りの出力が大きなものと見なすことができます。 もちろん、油圧のホースをロボットまで引っ張る必要があるので、自立ロボットにはなりません。 この単位重量辺りの出力の大きさのため、以前は人型の歩行ロボット(早稲田大学)につかわれたこともありますし、本体を軽くする必要のある跳躍ロボットKenken(東北大学)にも採用されています。
同じように圧力を使うものに水圧、空気圧があります。 水圧は本質的には油圧と同じです(吹き出しても汚れないけど、ものが錆びる)が、空気圧は異なります。
単純に回転運動のまま減速するには
運動を変換しつつ減速する場合には
アクチュエータについては、目的の出力に応じて選定します。 サーボモータを採用する場合は一般にトルクが足りなくて回転数が高いということになりますので、減速系をつけることが前提です。 選定の目安ですが、駆動対象の必要とする動力、つまり最大速度×最大力or最大角速度×最大トルクをだせるモータを選定します。定常的に必要な場合は定格値を基準に、最大出力がときどき必要になるような条件の場合は定格値の2〜3倍程度(瞬間出力)を基準に選定します。 なお、このとき、減速機の伝達効率を加味する必要があります。 また、モータの専用駆動回路をいっしょに買ってきて使う場合はいいのですが、自作する場合は回路が供給できる電圧、電流によっても制約を受け、モータの性能が十分発揮できないことがあるため、注意が必要です(逆に、制約にならない回路を作るときは保護機能に注意)。
機構については、速度が問題になることはあまりなく、減速比、力、トルクに耐えられるかが主な条件になります。 まず、モータの回転、トルクと駆動対象での条件を合わせるために減速比を設定します。 加えて、減速機にはかならず許容トルクなどがあるため、ロボット全体の仕様から概算される最大出力トルクに余裕を見て選定します。 もっとも、許容トルクの大きな減速機は一般に重く、その分ロボット全体が重くなって必要な出力が大きくなってと悪循環に陥ることはよくあります。
こういったことを考慮して、ロボットのメカを設計する必要があります。
センサは大きく内界センサと外界センサにわかれます。
内界センサはロボット自身の状態を知るためのセンサで、外界センサはロボット外の情報を知るためのものです。
ちなみに、玉の入っているマウスには、このエンコーダの小さいのが入っています。
ポテンショメータには回転式と直動式があります。
いずれの場合も、一般的なものは、抵抗板とそこをこするブラシ(擦動子)です。
抵抗板の両端には固定の電極(図A,B)がついていて、ブラシ(C)と両端の電極の間の抵抗値(A-C or B-C)が、ブラシの位置によって変化します。
この抵抗変化を一般には電圧変化として取り出します。
回転式はこの板が円状(角度の大きな扇形)に取りつけられ、直動式は単に長方形の抵抗板です。
この方式の問題点は「こする」という動作のため、なんども動かしているうちに接触が悪くなったり、雑音が出たりします。
オーディオのボリュームは基本的には同じ作りの部品で、これもまた古くなってくるとつまみをまわすとガリガリいったりしますが、それと同じことがおこるわけです。
この問題を解決するために非接触のポテンショメータもあります。
軸には磁石を取り付け、そばに磁気で抵抗が変化する素子(MR素子,Magneto-resistive)を取りつけます。
この場合、寿命が非常に長くなり、また擦る摩擦力がなくなるため回転が軽くなります。
いずれにしても、その構造から、ポテンショメータは回転式であっても無制限には回転できません。
一般には角度と抵抗変化が直線的になる部分が±45度などと、制約があります。
また、機械的には可能でも、一回転させると値に継ぎ目ができたりします。
そのため、ポテンショメータを関節角度の測定に使用することはできても、多回転のモータの測定には使えないことになります。
その他、昔ながらのコマが回るジャイロスコープのタイプのものもあります。
また、リングレーザジャイロ、光ファイバジャイロという、レーザ光線で右回りと左回りの輪をつくって、回転させたことで生じる速度差を利用して測定します。非常に高精度ですが、非常に高価です。
レートジャイロはその出力を積分しなければなりません。
しかし、センサ素子は一般にゼロ点はずれるものと思う必要があります。
製造上避けられないずれは、静止状態で測定すれば得られますが、温度変化することで発生するずれ(温度ドリフト)などもあり、使いはじめてしばらくするとずれています。
積分して使うということは、この誤差も積分してしまうことを意味します。
たとえば、0.1度/s というずれができたとき、10秒たったら1度ずれます。
だいたい角度を測りたい用途では1度の角度誤差でも困ることが一般的です。
そのため、平均的に角度がゼロであることがわかっているような用途では、ハイパスフィルタを用いて直流に近い成分を捨ててしまいます。これによってずれの影響を低減できます。
そうでない場合は、傾斜計、加速度計などの重力方向がわかるセンサや、地磁気センサによって補正を行う必要があります。
この場合、あくまで「補正」でジャイロが主役です。
傾斜計、加速度計も応答性がいいものはありますが、どちらも「加速度」を計測するセンサであるため、重力の他に、ロボットが移動する加速度もひろってしまいます。
そのため、そのまま傾斜角度としてつかうとトラブルの元です。
歩行ロボットの場合は、小刻に加速度がゆれますが、全体的には加速し続けることもないため、うまく補正ができます。
参考:圧電ジャイロの技術@村田製作所
加速度センサはその検出レンジで大きく2系統にわかれます。
一つは加速度センサとしてつかうもので、検出の上限は重力加速度の数倍、分解能は1/100程度などです。これはロボットの姿勢センサとしてもつかえます。
もう一つはどちらかというと衝撃(衝撃は瞬間的な大加速度)の大きさを検出するセンサで、重力加速度の数十〜数千まで測定できますが、もちろん細かくは測れません。
用途に応じてどちらかを選択する必要があります。
原理は、ごく短時間(1msとか)の超音波(一般には40kHz)を送信機からとばし、対象に当って跳ね返ってきた音を受信機で受けて、送信からの経過時間を測定します。
時間差をΔt、音速をVとすると、
この方式の利点はその単純さから、コスト的にも利用しやすいという点です。
ただし、いくつか欠点があります。
まず、音を使うのでうるさいところではつかえません。
最悪の場合、ロボット自身が出す音で誤動作することがあります。
また、屋外でつかうと風の影響を受けることもあります。
出力の面でも、音速の面でも、簡単に実用になる距離はせいぜい5メートルくらいです。
出力をあげれば、それ以上の測定もできますが、今度は時間がかかるようになります。
たとえば、東北大学江村研で開発した装置は大出力の超音波を出して、最大で50メートル先の障害物を発見できます。
しかし、それには0.3秒ほどかかります。
つまり、余裕を見ると秒2回くらいしか測定できないことになります。
超音波の距離測定の発展版としては、送信音波をパルスから符号化した信号に変更して、雑音の影響を受けにくくする方法が提案されています。
また、複数の受信機をつかって、その時間差から反射してきた位置=障害物の位置を検出する方法も提案されています。
参考:超音波距離測定の原理@キーエンス
まず測定対象に光を発射します(パルスの必然性はなし)。
次に、対象から返ってきた光が、PSD(Position Sensitive Detector)などの「光が当った位置がわかるセンサ」をつかって、どの方向から返ってきたかを調べます。
遠くからの反射光であれば、発射した光とほぼ平行に返ってきます。近くで反射すれば、角度を持って返ってきます。その角度と距離は一対一に対応するため、距離がわかるという仕掛けです。
この手のセンサは以前は高価だったり扱いにくかったりしたのですが、3年ほど前に距離測定モジュールとして、電源をつなげばすぐに距離が電圧で得られる小型のセンサ部品が開発されました。
数百円という値段の手頃さと扱いやすさから、移動ロボットのセンサとして急速に勢力を拡大しています。
参考:三角測距式の原理@キーエンス
画像の処理によって得られる情報は膨大です。しかし、その情報の信頼性という観点では、単純なセンサに及ばないことはよくあります。
そもそも、画像は非常に多くの情報を含んでいます。
含まれる情報が多く、複雑に混ざってしまっているために、単一の情報を確実に分離することが困難なわけです。
人間の得る外界情報の9割以上は視覚に頼っているともいわれ、人間並みの視覚を実現できたら、ロボットにとってはバラ色です。
画像の利用の一つは、1枚の画像による形状や表面、模様などの認識/確認です。
たとえば、道路の風景から交通標識を見つけ出して、制限速度を読み取るといった用途、
工場の製造ラインで製品が正しく組上がっているかをチェックするシステム、
また、農作物の品質分類などにもつかわれています。
このなかで、道路はやっかいな例です。周りになにがいっしょに映るか、明るさやコントラストはどう映るかが全く未知です。
そのため、いまもって、これだという方法は提案されていません。
さまざまな状況に対応はできますが、どんどん手法がややこしくなってしまいます。
それに対して、工場や屋内では、明るさを適切な固定値に設定でき、また周りに映るものも固定であるため、かなり実用的に使うことができます。
ロボットの関節そのもの、もしくは駆動用のモータに角度or位置センサをとりつけ、関節角度からロボットの姿勢(リンクの状態)を求めると同時に、各関節が目標角度になるようにフィードバック制御を行う。
屈曲関節に取りつける場合はポテンショメータが使われることもあるが、回転数が多い場合やモータに取りつける場合にはロータリーエンコーダが常用される。
一般的なロータリーエンコーダ(インクリメンタル型)は電源投入時からの相対的な回転角度しか測定できない。また、ステッピングモータを用いる場合も初期角度は不明である。
そのため、これらを使う場合は一般に基準点を示すスイッチ(原点スイッチ)を取りつける。
ロボットの傾斜姿勢を求める。
歩行ロボットで姿勢制御を行う場合や、自律移動ロボットが進行方向を検出するために必要。
一般にジャイロと言った場合はレートジャイロ(角速度計)を示すことが多く、積分して角度とする。ただし、センサ出力にずれがあると積分結果がどんどんずれていくため、以下のセンサで補正を行う。
傾斜計は振り子の傾きをポテンショメータなどで測定し、鉛直方向を検出するセンサである。
加速度計も「重力加速度」を検出することで鉛直方向を検出できる。
地磁気センサは使える条件が限られるが、鉛直軸回りの旋回角度を補正するために使用できる。
加速度センサが加速度センサとして使われることはすくなく、上記姿勢のセンサとして使われることが多い。
加速度センサを用いてロボットの位置を得るには、一度積分して速度に、もう一度積分して位置にする必要があるが、上述のようにセンサ出力にずれがあると誤差が積算してしまう。
それを二重に行うことの危険性は容易に想定される。
ただし、ロボットの各部に加わった衝撃のセンシングには使えるため、危険状態の判定に使用できる。
ひずみゲージとは、フィルム上に形成した金属膜を、フィルムごと測定対象に張り付け、対象の伸び縮みに応じて抵抗値が変化する素子である。
ロボットの構造材に取りつけることで異常加重が検出できる他、ロボットの部材の振動が検出できるため、振動制御(制振)に用いることがある。
モータや駆動回路は、無理な使い方や長時間の運用で発熱する。
ある程度の発熱は設計の範囲であっても、関節に無理な力がかかり続けたりすると定常的に過電流になり、発熱することがある(制御側でもある程度判断可能)。
部品には温度の上限があり、デバイスの損傷や焼損、寿命短縮の原因にもなるため、過熱状態は危険である。
そのため、温度センサによる保護回路を搭載することがある。
ただ、それだけでは回転角度が変わったこともわかりませんし、スリットのそばで小刻に動いても回転したことになってしまいます。
これを区別するため、普通は位置をずらして2個のセンサを取りつけます。
その位置関係を工夫すると、cosとsinのように、位相のずれた信号を得ることができ、その位相もチェックすることで、回転方向がわかります。
これを2相のエンコーダといい、一般にA相、B相といいます。
それに加えて、C相とか、Z相と呼ばれる、軸一回転につき1パルス出る出力があるものもあります。
この信号をつかうと正確に原点を出すことができるなど、便利です。
ちなみに(2)、サーボモータ用のエンコーダは案外電気を食うものがあります。電源容量に気をつける必要が場合によってはあります。
単なるスイッチに適当な機構を付加したもの。
本来は「触る前」に対処すべきであるが、外界に当ってしまった場合にも最悪の事態を避けるためのセンサが必要である。
そのため、考えようによってはもっとも信頼性の要求されるセンサであり、simple is best。
普通は単なるスイッチを用いるが、広くカバーすることは容易ではない。
その解決策の一つとして提案されているのが圧力センサとチューブの使用である。
一端を閉じたチューブをロボットに取り付け、もう一端に圧力センサを取りつける。
なにか障害物がチューブに当ると突発的な圧力変化が発生するため、衝突がわかる。
また、チューブの材質を選べば、それ自体が緩衝剤にもなる。
音は比較的低速であるため扱いやすく、超音波による距離測定は非常にポピュラーである。
また、距離の分解能は比較的高く、mm単位の測定も可能である。
ただし、時として 340m/sという速度は遅く、測定の制約になることがある。
また、音は広がりやすいため、横方向に細かな測定には向かない。
一方、光は非常に速く、直進性もいいため、ポイントの距離を瞬間的に測定することができる。
しかし、その速さゆえに、距離方向の分解能を高めることは困難である。
例えば、15cm(往復30cm)の分解能を得るには、10億分の1秒単位(1GHz)での測定が必要であり、これは自作するには非常にやっかいな領域である。
光の場合には、その直進性を利用して、三角測量を行うこともできる。
ロボット側の2点から同一対象を観測し、その角度を得る。
すると、三角形を規定する条件の一つ、一辺とその両頂点の角度が得られ、2点と観測対象を結ぶ三角形が規定され、頂点位置が得られる。
歩行ロボットが脚の接地状況を判断する際に良く用いるものが力センサである。
足裏に接触圧を測定するセンサを複数取りつけ、その出力をもとに接地の重心位置を検出する。
たとえば、足裏の中央付近に重心があれば倒れるまでに余裕があるが、縁にある場合はその方向に倒れつつあるか、倒れるギリギリである。
また、なにかを手先で扱うようなロボットの手首に働いている力を3方向の力と3軸方向のモーメントで測定する6軸力センサもある。
特に、人間と強調するような目的の場合、ものを通して人間の意図を読み取るためにこのようなセンサが使われることが多い。
また、歩行ロボットでも足首にこの種のセンサを入れることがある。
画像(カメラ、映像)は2種類の意味合いを持つ。
一つは「絵」として周囲の様子を取得し、それを解釈することによって様々な情報を引き出す。
もう一つの面は、多数の光センサの集合体である点に着目し、各点ごとの計測を同時に行うという使い方で、画像を2枚利用して全画面の距離情報をえるステレオビジョンや、特殊な光源を併用して距離を求める手法などがある。
使われるのには理由があります。
で求まります。ここで、最後の/2は往復なので、片道に直しています。
音速は厳密には温度の関数(331.5+0.6*温度)なので、厳密さが必要ならば補正する必要があります。
それに対して、光の直進性だけを利用する三角測量のセンサがあります。
たとえば、右図のように2個のカメラで対象物(○)を観測した場合、撮像面にはそれぞれ違う位置に映ります。
このずれ(視差)や、映った位置をもとに距離と方向を得ることができます。
ただ、その両カメラに映る同一物の判定がやはりたいへんです。
特徴のないノッペリした面は対応が取れません。
逆に物体の境界は特徴豊富なものの、奥にあるものが異なって脇に見えてしまうため、やはり対応がとりにくくなります。
また、画像の処理は根本的に繰り返し量が多いため、時間がかかります。
人間がみればいっぱつなのに...と、こういう処理をやるとつくづく人間に感心してしまいます。
パソコン系は文字通り、ロボットの中にパソコンを積んでしまいます。
といっても、箱形のパソコンをつむわけではなく、パソコンと同等の機能を持ったコンピュータ基板を積みます(一般のマザーボードをつんでしまうこともよくありますが)。
この場合、演算処理能力はかなり高く、また画面などをつけやすいため、対人情報の入出力は非常にやりやすくなります。
ネットワークなどにも容易に対応できます。
そのかわり、どうしても大きめであること(小型にしたものもありますが)、大きな電源を要求することが面倒な点です(普通のパソコンは+5,+3.3,+12,-12で20Aとか要求することがある)。
そのため、パソコン系は大きめのロボットで重さや電源に余裕がある場合で、複雑な処理が必要な場合に採用されることが多いようです。
マイコン系は四則演算のみの電卓並から、パソコンに匹敵するようなものまで非常に幅広い品種がありますが、多くの場合はLSI一個でほとんどの処理ができるようにコンパクトにまとめられています。 特徴は
そのほか、ロボット本体は最低限の機能だけ(場合によってはメカとセンサだけ)にて、電線をひっぱったり、無線で指示を飛ばしたりして、高度な処理はすべて外部でおこなってしまうという構成もあります。
量産したり手軽な本格運用するためには、システムが二つあることは不利ですが、ロボットの開発段階ではいろいろと便利です。
ロボット本体を単純化できるため、メンテナンスが簡単なほか、重量制限を気にせずにいろいろな機能を盛り込むことができます(もちろん、単体にするにはその小型化が別途必要)。
また、一般にマイコンを搭載した場合はソフトウエアの修正作業が、パソコンの上でプログラムをつくってそのまま実行するのに比べて手間がかかり、実行中のソフトウエアの状態を監視することも困難です(最近はかなり楽になりましたが)。
ロボット外においたパソコンでプログラム作成&制御をすると、このような開発作業が簡単になります。
最近では大きめのロボットはパソコンそのものを積んでしまうことが多く、このような場合はネットワーク経由でログインして、その上で開発や監視作業をできるようになっていて便利です。
ロボットの制御は、モータなどのフィードバック制御と、より上位の判断を下す部分からなります。
モータのフィードバック制御は制御工学で習うような手法、PD制御、PID制御、状態フィードバックなどをプログラムで行います。
ところが、これらの理論は基本的に時間が連続であることを前提にし、微分や積分を使います。
それに対して、コンピュータで制御演算を行う場合はどうしても時間は有限です。
「センサで状態の取り込み」→「制御演算」→「出力」で処理には時間がかかります。
そのため、一般にはこれらの処理を一定の時間間隔(Δt、サンプリング周期、制御周期)で行うことにします。
そのため、時間の関数 x(t) は時間とびとびのデータになって「i番目のデータ」x[i]になります。さらに、
一定間隔で処理を行うためには、いくつか手法があります。
やるべき処理がこの一定時間間隔の処理のみならば、一回処理してから次の処理までひたすら時計を見ながら待つ、という方法があります。
たとえると、10分おきにデータを取るために、時計をにらみ続けるようなものです。
実際にはさらに、処理の優先度という問題(大事な仕事の途中には割り込ませないなど)もあります。
ある程度以上システムの規模が大きくなったら、リアルタイムOS(Real-Time Operating System)と呼ばれる基本ソフトなどの助けを借りることができるようになり、これらが楽になります。
マイコン系でも大規模なものは TRONやLinux系などのOSが動作しますが、小型の場合は自分で考える必要があります。
さて、ロボットを制御する場合、ソフトウエアからインタフェイスと情報のやり取りをしなくてはなりません。
パソコンの場合は、コンピュータという点ではマイコンといっしょですが、その上に乗っているOSのため、もう少し事情が複雑です。
マイコンの場合は、プログラムを作った人が責任をもってすべてを管理することが前提ですが、パソコンはより大規模で、複数のプログラムが同時に走っています。
たとえば、音楽を聞きながらWEBブラウザを使いながらワープロで文章を書きつつデータ計算、など。
この場合、それぞれのプログラムが勝手にコンピュータの機能(資源ということがあります)をいじったら、それぞれが干渉して正しく動作できなくなります。
その調停をすることもOSの役割ですが、逆に簡単にはインタフェイスにも簡単には触れなくしてあります。
で代用します。
このため、処理間隔が一定であることが重要になります。
ところが、実際にはそれだけで済むことはすくなく、他の仕事もしたいことがあります。
この場合は「タイマ割り込み」という手法も導入します。
タイマというのは目覚まし時計のようなもの、割り込みというのは外部からの刺激によって、いまのしている処理をいったん中断して、予め指定しておいた処理を開始させる仕掛けです。
いわば、10分おきになる目覚ましをおいておいて、普段は別の仕事をしておいて、目覚ましがなったらデータを取りに行って、終わったら元の仕事を再開するようなものです。
どちらが効率がいいかというと、後者の方が他の仕事もできて便利です。
しかしこの割り込みという手法は多少複雑で制約も多く、動作検証も楽ではないため、注意して使う必要があります。
もし本当にやる仕事が一つだけなら前者の方法が安全です。
また、二つの仕事があるとき、割り込みにする要求がでるのは一方だけです。
より簡単な処理を割り込みにしてしまって、制御本体は時計を見ながらという手があります。
マイコン系でポピュラーな形態は、メモリの一部にこれらが見える、という形式です。
メモリは本来はデータを保管しておき必要なときに読み出してくるものですが、電気的に見れば「コンピュータから書き込みの信号を送る→その信号を保存する」「読み出しの指令を送る→前回書き込まれた値を返す」となっていて、コンピュータ側は「書く信号を送る」こと、「読む信号を送って結果をもらう」ことだけです。
それを流用して、「書き込み信号を送る→ディジタル出力 or アナログ出力(DA)」や、「読み込み指令→ディジタル入力 or アナログ入力」でもいいわけです。
もちろん、この場合はメモリとして使えませんが、読み書きの時はアドレス(番地)という操作対象を示す数値を添えて処理するため、ある番地の範囲はメモリ、ある特定の番地はアナログ入出力と分けて使えばいいわけです。
あとは、どこがメモリでどこが入出力かはプログラムをつくる側が常に意識すればいいわけです。
マイコンのデータシート(取り扱い説明書)や解説書をみると、各機能を使うための番地やなにを書けばいいか、読んだ値の意味などがずら〜っと記載されています。
なお、コンピュータの種類によっては、メモリとは別に同じような構造の入出力専用の系統(IOポート)を持っていることもあります(Intel系全般、パソコン用CPUも含む)。
そのため、パソコンでこういったOSを使っている場合は直接インタフェイスに触ることはほとんどなく、インタフェイスボードについてきたデバイスドライバ、ライブラリといったソフトウエア経由で使うことになります。
それらがないときは直接操作することになりますが、その場合もOSから特別の許可を得る必要があります。