教団「二次元愛」

リアルワールドに見切りをつけ、二次元に生きる男の生き様 (ニコニコでは「てとろでP」)

最近のアナログ屋さんのお仕事

2014-03-21 22:02:39 | 科学
最近やっちまったお仕事上のトラブルのことを書きたい。
読めばアナログ電子回路のエンジニアのお仕事がどんなもんかが少しおわかりいただけるかもしれない。






とある機能をもったボードを作ることになった。

こいつはアナログのパワーアンプとADCとDACとマイコンを使ってその機能を実現することにした。
ところがどっこいデジタル屋さんやソフト屋さんは引っぱってこれそうになかったし、たいした規模でもないので、アナログ屋さんの我輩がそれ全部を担当することになった。

まずパワーアンプ。
こいつは精度は悪くていいから高速に動作して、定電流出力で、なおかつ大電流を出力できる必要がある。
だがそんなものが世の中にない。
だからディスクリート部品を使って自分で作ることになった。

こういうのはアナログ屋さんの腕のふるいどころである。
しょうがねえなぁ…とでも言いながら設計に取り掛かるわけだ。

たまたまアナログICの世界で大手の某社がエンジニア連れてやって来ており、
「なんか困ってることないですか?」
と言うものだからさっきのパワーアンプの仕様を説明したところ
「うーん…、そういうのは当社に限らず世の中にないですねぇ…」
と、想定どおりの返事となり、
「やっぱりそうですよね~」
「で、どうされるんです?」
「しょうがないからディスクリート部品つかって自分で作りますよ」
「ご自身でですか?」
「そりゃー世の中にないんだから自分で作るしかないでしょw」
という話をしていた。

このパワーアンプだが、実験してみると、とある条件で途中の段の回路の電圧が振り切れてしまい、それはそれでかまわんのだが、そこからリカバリするのに時間がかかりすぎるという問題があるのがわかった。
この問題は手持ちで持っていたダイオードを追加することで片づけた。
(これがあとで痛い目に合う原因となるのだった…)

ADCとDACとマイコンをつなげてそれっぽく動作していることを確認し、バラックは完了。

ボードを設計する段階になって、実はさきほどつけたダイオードが既に製造中止になっていて社内で使用規制がかかっていることが判明。
それをゴリ押しするのは社内事情的にとてもめんどいので、ダイオードなんてどれも大して変りはしねえだろうという適当すぎる理由で社内に在庫があるやつの中でいちばん安いのに交換してボード設計した。

ボードが上がってきて見てみると、だいたい動いてはいるものの、どうも挙動がおかしい。
調べてみると、どうもダイオードの逆バイアスでのリーク電流が流れ、パワーアンプが発熱することでそれがどんどん大きくなっていって挙動不審になっていることがわかった。
系の中にデジタル系が入ってるので、パワーアンプの特性がそのまま1対1で出てくるわけでもなかったのでよけいわかりにくかった。

「バラックではちゃんと動いてたはずだよな…?」
と思いつつデータシートを調べてみると、実験で使ったダイオードより2桁以上デカかった。
「なんてこったいwww これぞ安物買いの銭失いというところかwww」
などと言いつつ、データシートを見ながらマジメにダイオードを選定して交換した。
リーク電流はバラック実験で使ったヤツより1桁以上良いものにしておいた。

これでちゃんと動くはず…なのだったが。
どうもまだ別方向に挙動がおかしい。
全体で見ればだいたい動いているのだが、デジタルの設定値に大きなオーバーシュートが起きている。

「バラックではちゃんと動いてたはずだよな…?」
と思いつつ、マイコンの演算途中の値を吐き出すようにプログラムを改造し、演算結果を見てみたが、いちおう想定どおりには動いているように見える。
パワーアンプだけ見てもマトモに動いているように見える。
ナゾだ…。

値がおかしくなっているところから逆算的に原因を追っかけていると、どうやらデジタルとアナログのループ内で位相余裕が減りすぎているのではないかという推論に至った。
これだとパワーアンプ単体やプログラム単体を見ても原因はわからない。

さらに調べてみる。
パワーアンプがバラックのときより性能が良くなっている。
目標性能以上に良くなっているのなら問題ないと見過ごしてしまっていた点だ。
だが、パワーアンプがより高速に応答することで位相余裕が減る方向にいってしまい、結果としてオーバーシュート発生につながってしまったようだ。

なんでパワーアンプがより高速に応答したのかというと、交換したダイオードの性能がすばらしすぎて寄生容量が減ったためだった。
バラックで何もしなくてもちゃんと動いたのは、絶妙なバランスによるたまたま起きた結果だったようだ。

で、対策方法。
やりかたとしては、ダイオードの両端にコンデンサをくっつけて、バラックで使ったダイオードくらい悪くするという手もあるのだが、わざわざ悪化させるというのも方法論としてはスマートではない。
なのでアナログの側はいじらずに、プログラムの側で3次のFIRフィルタを追加して位相補償して解決した。

…とまあ、アナログ屋さんはこんなことをよくやっている。






でだ。
こういうことを繰り返しているうちに薄々気がついたことがある。

それは…
アナログ屋さんがアナログ電子回路の設計ができるというのは当然だが、そうじゃなくてアナログ回路を制御するほうの仕事のほうがどんどん増えているということだ。



これは機械屋さんに例えればわかりやすいことに気がついた。
機械屋さんが応力計算できるのは当然だが、それができたからといって競争力がつくわけでもない。
機械を制御するほうのウェイトのほうが重要になってきている。

たとえば車でいうと、設計荷重に耐えられる厚みを計算したとしても車としては競争力がつくわけでもない。
そうじゃなくて、コーナリング時のブレーキ配分や衝突防止の制御アルゴリズムのほうが車としての競争力になるだ。

仕様ができているアルゴリズムをマイコンに実装する腕前でいえば、機械屋さんよりソフト屋さんのほうが向いているのは間違いない。
だが運動方程式から理論を構築できるヤツでないとそのアルゴリズムは仕様化できない。



今回の我輩の件でいうとだな。
もしアナログ屋さんの我輩がパワーアンプの設計だけやってデジタル部は丸投げだったとしよう。
そうすると、

「パワーアンプ単体ではちゃんと動いているっぽいんだけど、全体で動かすとなんか挙動がおかしいんだけど…」
「プログラムは仕様どおりには作りましたし、そのとおりに動いていることも確認しましたよ」
「じゃあなんで挙動がおかしいんだろうね…」
「いやそれを私に言われても困るんですが…」
「困ったな…」
「マイコンのオペレータとして実機デバッグには付き合いますけど、トラブルシュートの方法はあなたに一任します」

…なんてことにしかならん気がする。
これだといつまでたってもトラブルは解決できない。

これはソフト屋さんが悪いわけではない。
多少なりともアナログ電子回路と自動制御理論の知識があるソフト屋さんをアサインしてくれなんて要求するのは無茶ぶりだからだ。
アナログ電子回路と自動制御理論の知識がある人がマイコンのプログラムを多少書けるようになるほうが解決策に近い。

そういう意味で、アナログ屋さんは純粋にアナログ電子回路だけやっているわけにもいかなくなっていて、むしろアナログの回路ができるのは所与のものであって、それを制御するところまでのほうがアナログ屋さんのメインの要求スキルになりつつあるということだ。