組み込みエンジニアはソフトウェアだけでなく、ハードウェアの知識も必要ということで、
どういう風に、何を考えればよいか説明します。
マイコン周りの初期設定について
組み込みエンジニアは、マイコンにプログラムを書くのが仕事です。
開発環境の上でプログラムを書いて動かします。
マイコンにはたくさんのピンがあります。それぞれのピンに機能を割り当てます。
設定できる機能はピンによってある程度制限されています。
マイコン制御でLEDの点滅を試みる
マイコンからLEDを動かすプログラムを作ってみます。
LEDの足の一方はマイコンのピンに、もう一方はグラウンドに落とします。
マイコンの電圧出力でLEDが点灯することが期待されます。
しかし、この配線だとLEDを光らせるどころか破壊します。
電子部品にはかけられる電圧や電流に限界があります。
使用前にデータシートを見て確認しなければいけません。LEDだと約10mAです。
マイコンに直接接続すると、定格以上の電流が流れて破壊に至ります。
電流調整には抵抗を用います。オームの法則に従って抵抗値を計算します。
マイコンの出力は3Vで10mAを流したいとすると、300Ωと計算できますね。
配線上に抵抗をかますことで、電流調整ができました。
この構成でもマイコンはソフトウェア、回路はハードウェアとわかります。
スイッチを押したことを検知してLEDの点灯制御する
次に、スイッチを押したことを検知してLEDの点灯制御を考えます。
先ほどのLEDの回路に、スイッチ検出を追加します。
スイッチを押すことで生じる電圧の変化をピンで検出しています。
LEDにつながるこのピンは電圧を出力しないようにしようとか、できるわけです。
なので、ユーザーがスイッチをON/OFFするのに伴って、LEDの点灯を制御できます。
タイマでLEDの点灯制御する
次に、時間変化に伴うLED制御を考えます。
タイマでLEDの点灯制御をする。
要は、クロック数がある一定の数を超えたらタイマーの割り込みをかけて
ON→OFFに切り替え、OFF→ONに切り替え、
みたいな形のプログラムを作る。
こうすることで、ソフトの知識が身につきます。
モーターを駆動させるには
マイコンからモータ制御を考えます。
モーターを駆動させるには、配線を直接モーターにつなげて動かそうとしても動かないです。
モータは電流消費が大きく、マイコンから流せる電流では足りないためです。
なので、直接配線してモーターを動かすのは無理な話になるわけです。
そこで、どうすればいいかと言うと、モーターの駆動には、
リレーで別電源がモーターにつながるとか、あとはトランジスターで制御するとか、
FETで制御するとか、色々なやり方があります。
どういう部品でどういう設計にするか、突き詰めていくと部品や電気の知識が身についてくる、
これがハードウェアの部分です。
たくさん作っていくと、いろんな部品が必要だと分かってきて、
キャリアの長い組み込みエンジニアが重宝されるのは、
こうした経験をたくさん積んでるから、ってのがあるかなと思います。
組み込みエンジニアは、ここまで聞いてお分かりの通り、
ソフトが書けるだけでなく、マイコンに繋がるハードウェア側も多少は理解しないと、
マイコン側だけ分かれば最近のやつだとできると言えばできるんですけど、
ハードも分かってたほうが圧倒的に仕事がしやすいです。
電圧を落としてマイコンに入力する
次に演算を考えます。
さきほどの話でLEDを光らせる際に電圧を落としてマイコンに入力するスイッチやタイマで制御を考えましたが、
電池電圧を監視して、しきい値を下回ったらLED点灯させたい場合は演算ピンに電池電圧を入力します。
6V電池が5Vまで落ちたら点灯させたいとします。
電池電圧をマイコンに直接入力するとこれまた壊れる マイコンに入力できる電圧まで落とさねばならない。
電池両端に100Ω抵抗2つを直列につないた配線があったとし、抵抗と抵抗の間の電圧をマイコンの演算ピンに入力する
本来6V流れてるんですけど 100Ωと100Ωを繋いでやれば分圧されて抵抗間の電圧は3Vになる。
このようにマイコンに入力できる電圧まで 落として入力する必要があります。
演算ピンは3Vと求められたから、この電池は3Vだ、と判断するのはおかしいと分かるでしょうか。
6V電池を抵抗分圧した3Vが入っているのでマイコンが計算して3Vを出したということは、
実際にはその倍の6Vが 本当は入ってきてるはずだということを
マイコン側で計算しなきゃいけない。 これが演算。
演算ピンに入力電圧がそのまま入ってくることはあまりなく、
大きい値を小さくするとか、交流波形を直列にするとか(整流)、いろいろあります。
大事なのは、ハードの設計を見て、計算した値から補正しないと元の値にならないと考えて
ソフト側の設計に反映させないといけません。
こんな感じで組み込みエンジニアは プログラム書いてるだけじゃなくてハードも分からないと厳しい場面があります。
まとめ
なかなか難しいですが、周囲の人に教えてもらったり、自分で勉強して理解してさらに作る感じです。
簡単ですが、 以上で終わります、ありがとうございました!
コメント