...

AD/DAボードを用いた自動追尾システム開発

by user

on
Category: Documents
14

views

Report

Comments

Transcript

AD/DAボードを用いた自動追尾システム開発
卒
業
研
題
究
報
告
目
AD/DA ボードを用いた自動追尾システムの開発
指導教員
河津哲教授
報告者
1020181
大西浩二
平成 16 年 2 月 22 日
高知工科大学電子・光システム工学科
目次
1
まえがき
2
研究理論
3
4
2.1
フィードバック制御の構成
2.2
フィードバック制御の利点と欠点
2.3
フィードバック伝達関数
測定システム
3.1
概要
3.2
装置解説
構築回路
4.1
5
6
製作回路
プログラム
5.1
制御プログラム
5.2
プログラム説明
実験結果と考察
6.1
考察
6.2 まとめ
7
謝辞
2
8
参考文献
9
付録
3
1.
まえがき
近年における技術革新により、あらゆるものが自動化されていっている。身
の回りにおける制御技術は躍進の道を辿り、小は LSI から大は人工衛星に至る
まで関与しており、多種多様に革新し、いまや無くてはならない技術とまで変
貌を遂げている。
その中で自動化されつつある自動車制御技術に注目し、フィードバック制御
を用いたモーター制御を行いたいと思い「移動物体追尾システムの開発」を卒
業研究のテーマとしてシステム開発を目標とした。
4
2
.研究理論
2.1
フィードバック制御の構成
制御対象の出力である制御量がフィードバック要素によって観測され、目標
値との比較によりその差が計算される。この情報に基づき制御機が操作部での
操作量を決定し、制御対象に反映させる事をフィードバックと言い、このよう
なシステムをフィードバック制御と呼んでいる。
ここに標準的なフィードバック制御系のブロック線図と用語の説明を図 2.1、
表 2.1 に示す。
図 2.1
フィードバック制御の標準構成
5
目標値
制御系の外部から与えられる目標信号
基準入力要素
目標値を基準入力に変換する要素
制御対象
制御の対象となる機械、システムなど
出力、制御量
目標値に従うべき信号
フィードバック要素
出力を主フィードバック信号に変換す
る要素、検出部またはセンサ
主フィードバック量
基準入力と比較するためにフィードバ
ックされる出力の測定値
動作信号
基準入力信号と主フィードバック量信
号の差で制御器を駆動する制御偏差
制御器
動作信号に基づいてアクチュエータへ
送る制御信号を生成する要素
アクチュエータ
制御器からの信号をパワー増幅して、
操作量に変換する要素
外部エネルギーを必要とする
操作量
出力を制御する為に制御対象に加えら
れる信号
外乱
制御系の状態を乱す望ましくない外部
からの信号
表 2.1
図の用語説明
6
2.2
フィードバック制御の利点と欠点
現在の制御系では、殆どの制御にフィードバック制御が用いられている。そ
れは制御対象の特性を把握する事が難しく、外乱が避けられない為にフィード
バック制御で抑制するからである。しかし図 2.1 で示すように、フィードバック
信号と目標値を比較して入力値を決めているので、応答に対する適応性に欠点
が見られる。
またフィードバックを過剰に適用すると速度が周期的に大きく変動するハン
チングが起きるので、制御系を安定に保つ事がフィードバック制御の今後の課
題である。
昨今ではサンプル値制御の理論に基づいたデジタル制御が広く用いられるよ
うになった。デジタル制御系がフィードバック制御系と大きく異なる点は、制
御装置が A/D、D/A コンバーター及びマイクロプロセッサで置き換えられてい
る点である。
7
2.3
フィードバック伝達関数
図 2.2
r
目標値
v
フィードバック量
u
操作量
d
外乱
y
出力と信号
n
センサノイズ
伝達関数図
三つの構成要素である y・v・u 出力が入力の和(あるいは差)の線形関数で
あるとする。その時の方程式は
(式 2.1)
で表すことが出来る。
8
次に式 2.1 に x1・x2・x3 を図 2.2 のように加える。そのときの信号との関係
式は式 2.2 に示す。
(式 2.2)
また、式 2.2 を行列式に変換すると式 3.3 となる。
(式 2.3)
と示すことが出来る。
よってシステムが適切であるための必要十分条件は、式 2.3 で示す通り 3×3
行列が正則、行列式 1+PCF が恒等的には 0 でないと言うになる。
9
3.測定システム
3.1
概要
図 3.1 に測定システムの簡単なブロック図を示した。矢印は信号および電圧・電
流の流れを示す。また図 3.2 にシステム全体の外観を示す。
図 3.1 測定システムのブロック図
図 3.2
システム外観
10
3.2
装置解説
(1)D/A・A/D コンバーター(変換機)
D/A コンバーターは、パソコンからプログラムによって出力されるデジタル
信号をアナログ信号に変換して外部に出力する。
A/D コンバーターは、発電機から出力された電圧を取り込みデジタル信号に
変換してからパソコンに取り込む。
今回使用した D/A・A/D コンバーターは、Interface 社の PCI-3523A と言う
パソコンの PCI スロットに搭載して使用するボードタイプのものである。図 3.3
にその概要の写真を示す。また、表 3.1 に基本的な仕様を示す。
図 3.3
A/D・D/A コンバータボード図
11
分解能
入出力仕様
D/A:PCI‐3523A
A/D:PCI‐3523A
12bit
12bit
インピーダンス:1Ω
インピーダンス:10MΩ
出力電流:5mA 以下
負荷容量:450pF 以下
負荷抵抗:2kΩ以上
入出力レンジ
ユニポーラ 0V∼10V
ユニポーラ 0V∼10V
相対精度
最大±1LSB
最大±1SLB
誤差
最大±0.4%
最大 0.2%
表 3.1
基本仕様
A/D 変換・D/A 変換共に 10μs と高速であり、モーター制御に必要な 1ms 毎の
フィードバック制御に対応する事が出来る。
分解能に関しては測定誤差を検討する必要がある。量子化誤差とは、連続し
たアナログ信号をデジタル信号に変換する際、時間間隔ΔT 毎の瞬時値に標本化
(サンプリング)を行い保持し、同時に信号が離散値に割り当てられる。この
量子化設定したビット数の2値信号に変換される時に生じる誤差が量子化誤差
である。量子化誤差が大きければ大きいほど、元信号のアナログ信号との精度
が低くなる。逆に量子化誤差が小さければ小さいほど、元信号のアナログ信号
との精度が高くなる。よって A/D・D/A ボードを使用して測定を行う場合には
量子化雑音は重要な事項である。
測定機器として今回使用している PCI-3523A の量子化誤差を求め、使用する
A/D・D/A ボードが今回の実験に適しているかどうかを検討した。
12
量子化誤差を求めるためには、まず分解能を求めなければならない。分解能
とは最小単位の 1 ビットに対するアナログ量であり LSB(Least Significant
Bit)として表現される。
1LSB を出力電圧 0∼xV、分解能を Y ビットとすると
(式 3.1)
で求める事ができる。
A/D ・D/A ボードの使用を表 3.1 から読み取り、出力電圧は 0∼10V であり、
分解能が 12 ビットであるので
(式 3.2)
精度が表 3.1 により±1LSB なので、データに 10V レンジで使用した場合
+2.44mV∼-2.44mVの誤差が生じる。
入力が 1V の時でも誤差が±2.44mVとなり 0.244%の誤差なので、十分な精
度を有している。また、これにより今回の実験では表 3.1 の使用の A/D・D/A 変
換複合ボードは十分な精度を有している。
13
(2)電流増幅
D/A コンバーターの出力インピーダンスが高いため、直接モーターと接続す
ると目的の電圧を出力出来なくなる。そのため、パワーアンプを用い、電圧は
そのままにして電流のみを増幅している。使用機は HEWLEFT PACKARD 社
の BIPOLAR POWER SUPPLY/AMPLIFER である。図 3.4 にその概要写真を
示す。
図 3.4
電流増幅
(3)モーター
移動物体および追捕物体を動かす為のモーターは、TAMIYA 社の DC モータ
ーFA−130 を使用した。
14
(4)超音波センサ
移動物体が発生させる送信信号はシリコンハウス社の MA40S4S の超小型空
中音波送信センサを使用。
また追尾物体が受信する媒体はシリコンハウス社の MA40S4R を使用した。
この特性を表 3.2 に示す。
MA40S4S
MA40S4R
公称周波数
40kHz
40kHz
感度
-63±3
-63±3
静電容量
2550pF±20%
2550pF±20%
80deg
80deg
0.2∼4m
0.2∼4m
9
9
0.7g
0.7g
20Vp-p
20Vp-p
短形波 40kHz
短形波 40kHz
品名
指向性
検知距離
分解能
重量
最大許容入力電圧
表 3.2
超音波センサの特性
15
(5)パソコン
制御する為に必要なプログラム実行などはパソコンが行う。IBM 社の Aptiva
を使用した。
(6)測定機器
モーターを動かす電源として Agilent 社の E3631A
Triple Output DC
Power Supply を使用した。
またプログラム実行時に出力結果が正しく出力されているか測定する為、
Agilent 社の 546622A Oscilloscope を使用した。図 3.5 にこの外観図を示す。
図 3.5
546622A Oscilloscope
16
4. 構築回路
4.1
製作回路
今回構築したシステムでは、信号増幅として TEXAS
INSTRUMENTS 社の
TL081 を使用した。
製作した移動物体の送信回路を図 4.1 に示す。また、外観写真を図 4.2 に示す。
図 4.1
移動物体の送信回路
17
図 4.2
製作回路写真
製作した追尾物体の受信回路を図 4.3 に示す。また外観写真を図 4.4 に示す。
図 4.3
追尾物体の受信回路
18
図 4.4
製作回路写真
追尾物体の回路である図 4.3 には多段増幅回路が二つ設置されている。これは
移動物体から発信される信号が微弱なため、A/D・D/A ボードに認識させるため
に増幅させている。この回路の増幅率の周波数特性を表 4.1 に示す。
1000
900
800
700
増幅率
600
500
400
300
200
100
0
1.00E+02
1.00E+03
表 4.1
1.00E+04
周波数(Hz)
1.00E+05
受信回路の増幅率周波数特性
19
1.00E+06
5. プログラム
5.1
制御プログラム
構築したシステムを制御する為に Visual Basic6.0 でプログラムを作成し、
A/D・D/A ボードに命令を与えて動作させた。
Visual Basic は直接 I/O やメモリにアクセス出来ない為、A/D・D/A ボードを
直接制御する事が出来ない。そこでボードに対しての制御を行うプログラム
(Dynamic Link Library:DLL)から必要な関数を呼び出し、これを介してボ
ードの制御を行うことになる。DLL は Interface 社の A/D・D/A ボードの付属
CD からインストールして使用した。
また A/D・D/A ボードを使用するためには、標準モジュールを追加する必要
があるので、必要となるモジュールを作成した。
5.2
プログラム説明
制御プログラムを作成するため、フローチャートを用い原案を作成した。構
築したプログラムのフローチャートを図 5.1 に示す。
20
図 5.1
制御プログラムのフローチャート
D/A 出力で制御された移動物体から発せられる信号を A/D 入力し、それをプ
ログラム内で処理を行う。この時、両受信素子には情報量に差異が発生してお
り、その信号情報量によってモーターへ送られる電圧信号の正負が決定する。
この正負の電圧信号により追尾物体のモーターが回転を始め、追尾するという
制御プログラムになっている。
これらを構築したプログラム表示画面を図 5.2 に示す。また付録にソースファ
21
イルを添付する。
図 5.2
構築したプログラム
22
6. 実験結果と考察
6.1 考察
・追尾物体がハウチングする。
追尾物体の移動速度が移動物体より速いためにこの現象が起こる。これを解
決する方法として現在移動物体:追尾物体=11.6:196.7 のギア比を同じにする
ことが挙げられる。
他にも A/D 出力部分に図 4.3 の出力部と同じ回路を組み込む。これにより周
波数周期が長くなり移動物体への出力を抑えることが出来、ハウチングをなく
す事ができる。
またプログラミング上で出力信号自体に命令文ウェイトをかけて修正する事
も可能である。
・ 受信回路に外乱が多く見られた。
追尾するために長く取った接続コードが、追尾する度に動くのが原因。いく
つかのコードをまとめて編み込み、なるべく動かないようにする事でこの外乱
を抑えた。
23
6.2 まとめ
システムを構築し、移動物体を自動的に追尾させる事に成功した。
オペアンプを用いた多段反転増幅回路を設計し、アナログ回路の設計技術を取
得した。
Visual Basic のプログラムを学習し、ソフトウェア開発の基礎を取得した。
A/D・D/A ボードでの制御方法、および制御の基本概念を習得する事ができた。
またシステム開発と言う全体を構築する事で、自分の中での視野を広げるこ
とが出来た。
今後更にプログラムは発展していく事が予想される。アナログ回路で補っ
ている分を更に文章化し、システムをよりスマート化していく技術を今後習得
していきたい。
24
7.
謝辞
今回の研究において、そしてまた長い学校生活にたくさんの御指導と御教
示を頂きました電子・光システム工学科
河津
哲教授に心から厚くお礼申し
上げます。アナログ回路の面白さに気付かせていただき、また新しい視野、充
実感を得る事が出来ました。この研究で教わった知識や技術を卒業後も大切に、
また精進していきたいと思っております。貴重な体験をさせていただきまこと
にありがとうございました。
同研究室の
三宮
大輔さん、津野田
雄三さん、川越
伸一さん、長尾聖
子さん、急に増えた先輩は目の上の瘤だったでしょう。半年間と言う短い間で
したが一緒に過ごした時間は本当に楽しいものでした。ありがとう。
また長い大学生活で色々とご迷惑やご心配をおかけしました教授・助教授、
そして職員の皆様本当にありがとうございました。
25
8.
参考文献
インターフェイス社
チュートリアル Visual Basic による DA 入門書
チュートリアル Visual Basic による AD 入門書
USER’
S MANUAL PCI-3523A
CQ 出版社
OP アンプ活用 100 の実践ノウハウ
松井
メディアテック出版
邦彦
著
Visual Basic を始める前に知っておきたいプログラミン
グの仕組み Ver.6.0 対応
伊藤
技術評論社
著
自動計測システムのための VB6
金藤
日経 BP 社
華子
仁
著
3 週間完全マスターVisual Basic6.0
グレッグ・ペリー
翔泳社
著
10 日で覚える Visual Basic6.0 実践教室
瀬戸
遥
著
26
9.
付録
移動物体追尾システムプログラム
Dim wData1 As Integer
Dim wData2 As Integer
Dim wData3 As Integer
Dim wData4 As Integer
Dim wData5 As Integer
Dim wData6 As Integer
Dim wData7 As Integer
Dim wData8 As Integer
Dim P As Integer
Dim I As Integer
Dim M As Double
Dim wMax As Long
'ボード関数(最大値)
Dim wMid As Double
'ボード関数(中間値)
Dim wMin As Long
'ボード関数(最小値)
Dim nRet As Long
'関数戻り値(DA)
Dim gnRet As Long
'関数戻り値(AD)
Dim hDeviceHandle As Long
'デバイスハンドル(DA)
Dim ghDeviceHandle As Long
'デバイスハンドル(AD)
Dim lpszName As String
'デバイス名(DA)
Dim glpszName As String
'デバイス名(AD)
Dim hCannel As Long
'チャンネル番号(DA)
Dim ghCannel As Long
'チャンネル番号(AD)
Dim nResolution As Long
Dim pszFname As String
Dim gConfig As ADSMPLREQ
'回転数感知用デバイス名
'ADSMPLREQ 構造体
27
Dim gInfo As ADBOARDSPEC
'ADBOARDSPEC 構造体
Dim Config As DASMPLREQ
'DASMPLREQ 構造体
Dim SmplChReq(2) As ADSMPLCHREQ 'AD チャンネル指定用
Dim SmplChInf(2) As DASMPLCHREQ 'DA チャンネル指定用
Private Sub Start_Click()
'DA チャンネル指定
SmplChInf(0).ulChNo = 1
SmplChInf(0).ulRange = DA_10V
SmplChInf(1).ulChNo = 2
SmplChInf(1).ulRange = DA_10V
'AD チャンネル指定
SmplChReq(0).ulChNo = 1
SmplChReq(0).ulRange = AD_10V
SmplChReq(1).ulChNo = 2
SmplChReq(1).ulRange = AD_10V
Dim X(0) As Integer
X(0) = wMid
P=0
I=1
wMax = &HFFF
wMin = &H0
wMid = (wMax + wMin) / 2
wData1 = wMax * 1060 / 2000
wData2 = wMax * 940 / 2000
wData7 = wMax * 900 / 2000
wData8 = wMax * 1100 / 2000
Do
If I < 91 Then
nRet = DaOutputDA(hDeviceHandle, 1, SmplChInf(1), wData7)
End If
28
If I > 90 Then
nRet = DaOutputDA(hDeviceHandle, 1, SmplChInf(1), wData8)
End If
For M = 0 To 10000
gnRet
=
gnRet
=
AdInputAD(ghDeviceHandle,
SmplChReq(0), wData3)
AdInputAD(ghDeviceHandle,
SmplChReq(1), wData4)
1,
AD_INPUT_SINGLE,
1,
AD_INPUT_SINGLE,
wData5 = Format(20 / (2 ^ gInfo.ulResolution - 1) * wData3 - 10,
"#0.000")
wData6 = Format(20 / (2 ^ gInfo.ulResolution - 1) * wData4 - 10,
"#0.000")
If wData5 < wData6 Then
nRet = DaOutputDA(hDeviceHandle, 1, SmplChInf(0), wData2)
End If
If wData6 < wData5 Then
nRet = DaOutputDA(hDeviceHandle, 1, SmplChInf(0), wData1)
End If
WaitTime (1)
If P = 1 Then
Exit For
End If
Next M
If P = 1 Then
nRet = DaOutputDA(hDeviceHandle, 1, SmplChInf(0), X(0))
Exit Do
End If
N=I
I=N+1
If I = 181 Then
I=1
N=0
End If
WaitTime (25)
Loop
29
End Sub
Private Sub Stop_Click()
P=1
End Sub
Private Sub Form_Load()
'ボードの初期化処理
lpszName = "FBIDA1"
hDeviceHandle = DaOpen(lpszName)
If hDeviceHandle = -1 Then
MsgBox "デバイスの初期化失敗"
End
End If
'アナログ出力設定読み出し
nRet = DaGetSamplingConfig(hDeviceHandle, Config)
If nRet <> DA_ERROR_SUCCESS Then
MsgBox "アナログ出力設定情報取得に失敗しました"
Exit Sub
End If
glpszName = "FBIAD1"
ghDeviceHandle = AdOpen(glpszName)
If hDeviceHandle = -1 Then
MsgBox "ボードの初期化に失敗しました"
End
Else
'
サンプリング設定情報読み出し
gnRet = AdGetSamplingConfig(ghDeviceHandle, gConfig)
If gnRet <> AD_ERROR_SUCCESS Then
MsgBox "サンプリング設定情報取得に失敗しました"
End If
30
gnRet = AdGetDeviceInfo(ghDeviceHandle, gInfo)
If gnRet <> AD_ERROR_SUCCESS Then
MsgBox "デバイスの情報取得に失敗しました"
End If
End If
End Sub
Private Sub form_unload(Cancel As Integer)
'終了処理
nRet = DaClose(hDeviceHandle)
MsgBox "DA 正常終了しました"
'終了処理
gnRet = AdClose(ghDeviceHandle)
MsgBox "AD 初期化終了しました"
End Sub
31
Fly UP