Category : ハードウェア
こんにちは!
今日は有給休暇でお休みを頂いているゆってぃです!
やったーーー!!!うほほほーーー!!!!


えへん、おほん・・・


さて、組み込みエンジニアたるもの、多少は樹脂の知識を持たなければなりません。
・・・なんて偉そうに書いていますが、ゆってぃの樹脂に関する知識はう○こレベルですが。。。

備忘録もかねて、記事にしたいと思います。

まずプラスチックは、熱可塑性樹脂熱硬化性樹脂に分類できます。

熱可塑性樹脂とは、加熱することで軟化または溶解して流動性が現れ、賦形(形を作る)した後で冷却・固化させて成形品を得ることが出来ます。
再度加熱することで再び軟化し、成形加工することが出来ます。

熱硬化性樹脂とは、賦形した後に加熱を行い硬化反応(化学反応)をさせると、再度加熱を行っても溶解しない(しにくい)特徴を持ちます。

一般的な成形品では、熱可塑性樹脂を使用することが多いですね。

この熱可塑性樹脂ですが、価格や特性(力学的性質、熱的性質、化学的性質など)で、さらに汎用プラスチックエンジニアプラスチック(略してエンプラに分類できます。(エンプラの方が高価で、特性も優れています)
このエンプラも、さらに汎用エンプラスーパーエンプラに分類することが出来ます。

一般的な電化製品の成形品では、ABSという樹脂が多く使用されています。
ABSとは、アクリロニトリル、ブタジエン、スチレンの3成分からなる共重合合成樹脂です。
汎用プラとエンプラの中間に位置する材料で、多くの家電製品に採用されています。
僕の手元にあるエアコンのリモコンも、加湿空気清浄機も、目覚まし時計も、ケースはABSで作られていました。

え?なぜABSとわかるのか、ですって?
それは、ゆってぃが樹脂に対して非常に造詣が深いから
ではなく
樹脂に書いて(刻印して)あるからです(笑)

ABS.jpg
(三洋電気の空気清浄機)

もし、これから樹脂について学ぶのであれば、身の回りの家電製品を触りながら勉強すれば、より一層楽しく学習することが出来ると思いますよ。

ではなぜ、こんなにもABSが多用されているのでしょうか?
それは、ABSが(対コストで見ても)高い水準でバランスの取れた、優れた樹脂であるからです。

一般的に、樹脂の特性には
耐衝撃性・剛性・引っ張り強さといった機械的特性
耐熱性・電気的性質・耐油性・対薬品性といった熱・電気・化学的特性
加熱時の流動性・冷却時の収縮性といった成形性
そのほか、塗装やメッキ、セルフタッピングなど二次加工の容易性
などがあります。

ただ、例えば機械的特性のみを見てみても、耐衝撃性に優れた樹脂は剛性が弱かったりと、トレードオフになっている性質もあります。
ですので、バランスを取るというのは、樹脂にとって極めて重要なことであります。

また、一口にABSと言っても、原料比率や重合度、添加物などにより特性が異なります。
耐熱性や難燃性を強化したものや、ガラス繊維を添加して剛性を強化したものなど、多くのグレードが存在するのも、ABSの特徴と言えるでしょう。

ABSをはじめ、組み込みの仕事をしていると、多くの樹脂に触れる機会があります。
ABSの他、PS(ポリスチレン)、PP(ポリプロピレン)、PC(ポリカーボネート)、PBT(ポリブチレンテレフタレート)、POM(ポリアセタール)などは、電化製品の外装や部品などで、よく使われるイメージがあります。
具体的な特性まで覚える必要はないと思いますが、ある程度の知識があると、きっと役に立つときが来ると思います。

外装設計者は、熱くなることが明確なヒーターなどの近くには耐熱素材を使ってくれますが、例えばGPUや無線モジュールなど高温になりやすい部品の周辺などは、場合によっては見落とされてしまう可能性があります。
ABSであれば、荷重たわみ温度は一般銘柄で80度前後です。
耐熱銘柄であれば、100℃前後まで耐えるようです。
ですので、極端な例ではありますが、応力がかかり続けるような箇所の近くに高温のデバイスが設置されていて、にも関わらず、非強化グレードのABSで成形すると、樹脂が曲がってしまう可能性が出てきます。

まぁ、通常はそのまま出荷されるなんてことは有り得ませんが、「このモジュールは最大で40度くらい温度上昇しますよ~」ということを外装設計者に伝えておくと、それを考えた設計をしてくれるはずです。
初期試作の段階で伝えて置けば、後々もめることがありません(笑)

化学的な知識も必要になり、若干ややこしい分野ではありますが、一緒に頑張っていきましょう!
(3Dプリンタを使う上でも、きっと役にたつ(?)はず・・・)

最後までお読みいただいてありがとうございました!
スポンサーサイト
こんにちは!
喉の痛みも引いてきて、一安心のゆってぃです。

さて、以前のブログでお話したとおり、ついに念願のオシロを手に入れました!!

これで電気工作の効率が飛躍的に向上することは間違いありません(笑)
ですので、早く自慢したいですし今回はオシロの波形を交えてPICマイコンの記事を書きたいと思います。

以前にPICマイコンのソフトウェアのお話はいくつか乗せたのですが、全く回路図を載せていないことに気がついてしまいました(汗)
PIC入門を謳っているにも関わらずこれは良くないですね(すみませんでした…)

今回は(まだ特に書くこともないので)周辺回路図と、クロックの波形をお見せしたいと思います。

簡単な回路図を載せておきます。
基本的に、過去のLEDを点滅させるソフトは、この回路で動いています。

sample001.png

この時、OSC2/CO端子からは、以下の波形が出力されます。

Fosc.png

約420kHzです。
この端子は、RC発振のときはFosc/4が出力されるので、Foscは約1.68MHzということになります。
仕様書のP65に、外付けのRCと、Foscの対応表がありますので、狙った周波数を出したい場合にはこの表を参考にして下さい。(ただし、温度特性は大きいと思うのでご注意を!)

という訳で、今回はここまで!(短い!!><)
次回以降は、もう少し凝った回路でソフトを動かしてみましょう。

なお、この回路で動かせる最も簡単なソースコードは、以下の記事をお読みください。

【PICマイコンで遊ぶ 超入門編(C言語)】
http://technologicaladvance.blog.fc2.com/blog-entry-18.html

最後までお読みいただいて、ありがとうございました!
3日坊主からの復帰です!
ゆってぃです。

先日、ついにNHK集金の魔の手がうちのオンボロアパートにも届いてしまいました。。。

ゆ「NHK見てないんですよ(ニュースと英語とスポーツと大河ドラマ以外は…(汗))」
N「いや、そういう問題ではなく、テレビ所有者の方は全員払わなくちゃならないんですよ」
ゆ「でも、これって強制じゃないですよね?」
N「いえ、放送法第○○条で(忘れた…)決められておりましてうんたらかんたら」
ゆ「わかりました…(しゅん…)」
N「ありがとうございます。でもお客様はラッキーですよ。この地域にお住まいの方は、通常の半額でいいんですから」
ゆ「え!そうなんですか??(ぱぁ!)」
N「はい。○○基地(ある有名な軍事施設。調べれば一瞬でヒットしますが、一応伏字に(笑))の近隣住民の方は、防衛省が半額負担する仕組みになっているんです。というのもうんたらかんたら」
ゆ「あ、じゃあ払います!!」

なんでも、ある軍事施設の近くに住んでいる場合は半額免除になるらしいです。
一応もういい大人ですし、半額に惹かれて(?)きちんと払うことにしました(笑)


さて、今日は信号の反射のお話です。

以前にもチャタノイズに関して書かせていただきましたが、書いた矢先、自らが反射ノイズの罠にはまってしまいました…。

具体的には、ある外部割込み端子に以下のような記述をしていました。
IntIrq()関数は、その割り込みハンドラです。(IrqはInterrupt ReQuestの略です)

void IntIrq(){

 static unsigned char sucCount = 0;

 (前略)

 if(sucCount >= 10){
  func1();
  sucCount = 0;
 }
 else sucCount++;

 (後略)

}

要するに、その割り込みが10回入ってきたら、func1()を呼ぶというものです。
しかし、試作ボードでいろいろ動かしてみると、どうも様子がおかしい。変な場所でfunc1()が呼ばれているのです。

どうやらIntIrq()が意図していないところで呼ばれてsucCountがインクリメントされてしまい、func1()の呼び出しタイミングがズレてしまうようでした。
ですので
「ああ、きっと割り込み信号にノイズが乗ってるんだな」
と考え、オシロで確認したところ(パッと見は)とてもキレイな波形でしたorz

仕方がないので、割り込みハンドラ内で空いている出力ポートから信号を出す、いわゆる出力ポートデバッグを行いました。ここでは、以下のように出力ポートAの1ビット目をパタパタさせて確認しました。

void IntIrq(){

 static unsigned char sucCount = 0;

 (前略)

 PORT_A |= 0x01;
 PORT_A &= 0xFE;

 if(sucCount >= 10){
  func1();
  sucCount = 0;
 }
 else sucCount++;

 (後略)

}

そして、得られた波形はこれ…
(言い忘れていましたが、割り込み信号の立下りエッジでIntIrq()を呼んでいます)

割込信号
んん!?
なんかへんなのがいねぇか??

そう、なぜかたま~に立ち上がりエッジでもIntIrq()が呼ばれていたのです。
結論から言えば、やはりノイズが原因だったのですが、その発生場所が最悪でした。
上の図で問題のあった位置を拡大してみると…

割込信号拡大

このマイコンの割り込み端子はシュミット入力になっていたので余裕かましてましたが
それでも吸収しきれないくらいのノイズが乗っていました。。。
このノイズのせいで、マイコンは「立下りエッジがきた!」と勘違いしていたのですね。
(マイコン自身は正しく動いているので、勘違いというのは語弊がありますが)

実は、この割り込み信号の発生元からマイコンまでが、きちんとフィルタ回路を入れていなかった上に、中継ボードを介しているためコネクタ二段構えという、反射おこりまくりんぐな経路になっていたため、こんなことが生じていたのです。

組み込み経験が浅い新入社員の方などは、先輩方から信号品質に関していろいろ口うるさく言われてしまい、
「反射やらなまりなら、信号品質ってそんなに重要なの?」
とふてくされている方もいるかと思います。
自分も数年前はそうでした。

この際、はっきり言いましょう。

超重要です!

この手のノイズのタチが悪いのは、周波数成分が高いため、通常のパッシブプローブじゃ拾いきれないケースが多いのです。上に書いた信号の拡大図は、パッシブプローブでは拾えませんでした(FETプローブでようやく見つけることが出来ました)

組み込み・制御エンジニアにとって、回路設計は他人事ではありません。
電源などの難しい部分は回路屋さんに譲るとして、デジタル信号部分は自分たちで開発・設計・評価が出来るくらいのスキルを身に付けたいものです。(もちろん、僕自身にも言えることです)

という訳で、今回の記事はここまでです。
今日も最後まで読んでくださって、ありがとうございました(感謝)

重要:筆者はあくまでも「ど素人」エンジニアなので、話半分でお読みくださいね(笑)
こんにちは!

仕事が始まってげんなりのゆってぃです。
更新が遅くなってしまいごめんなさい。

さて、今回のお題はAD値取得のための抵抗分割の知識でしたね。
組み込み・制御系エンジニアにとって欠かせないアイテムに、センサーがあります。
一口にセンサーといっても、温度センサー・加速度センサー・照度センサー・タッチセンサー・エンコーダーなどなど…ここでは書きつくせないほどのセンサーが世の中には存在しています。
これらのセンサーは、アナログセンサーデジタルセンサーに分けることが出来ます。

アナログセンサーとは、センシングした結果を文字通りアナログの電気信号にて出力するセンサーです。その出力は、マイコンのA/D入力ポートにつなげる必要があります。
アナログセンサーは安価で種類も豊富ですが、ノイズに弱かったり、出力の増幅出荷時にキャリブレーションが必要などの手間がかかります。
しかし、今年は国内マイコン最大手のルネサスエレクトロニクスさんから、Smart Analog ICという果てしなく便利そうなアイテムも登場予定ですので、今まで手間だった部分は今後どんどんラクになっていきそうですね!
もっとも、古今東西、製品の機能性とコストは反比例の関係にありますから、便利でも製品に搭載可能かは不明ですが…。
ルネサス様!ひとつお手ごろな価格でお願いします!

話がそれてしまいましたね(汗)
もうひとつのデジタルセンサーとは、センシングした結果をセンサー内でデジタル化し、デジタルデータとして出力してくれるセンサーのことをいいます。ですので、マイコンとセンサーがI2CやSPIなどのインターフェイスで通信を行い、マイコン内に出力を取り込みます。
デジタルセンサーは高価ですが、出力にノイズが乗らない・キャリブレーションが必要ないなどのメリットがあります。
ただ、僕はデジタルセンサーを使ったことがありませんので、全部聞いた話ですが(ぉぃ)

ここでは、アナログセンサーの代表格であるサーミスタと、そこから出力されたアナログデータの取得方法についてお話したいと思います。

サーミスタとは、温度によって抵抗値の変化する特殊な抵抗です。
温度が高くなると抵抗も大きくなるものをPTCサーミスタ、抵抗値の小さくなるものをNTCサーミスタと呼びます。

通常、サーミスタは別の抵抗と直列につなげて使用します。
そして、その抵抗の上に一定電圧を加えます。
(通常はマイコンの電源電圧を回します。そうしないと、AD入力端子に電源以上の電圧が入力される恐れが出てきますので)
そのようにして抵抗分割した中間の電圧を測定し、その電圧値からサーミスタの温度を取得するのです。
ただ、ここでテーミスタと直列につなげる抵抗値を最適なものにしないと、サーミスタの出力電圧の美味しい範囲が取れなかったりします。
サーミスタ制御の詳細は、別サイトや工学書をお読みいただきたいのですが、サーミスタの特性と、基準電圧から、最適な抵抗値を求められるようにしておきましょう。
おそらくハード屋さんが最適な抵抗をぶら下げてくれるはずですが、組み込みプログラマ側でもしっかりと理解しておくべきでしょう。

あけましておめでとうございます!

実家の近所にある神社で、数え切れないほどのお願いをしてきたゆってぃです。
いいですか皆さん、初詣でお願い事をする時は、以下の手順でお祈りするんですよ!

1.まず、昨年のお礼をする。
2.次に、「今年もよろしくお願いいたします」と挨拶をする。
3.続いて、今年の「お願い」を伝える。
4.そして、その「お願い」を達成するために、「自分自身が努力する内容」を伝える。
5.最後に、もう一度「よろしくお願いいたします」と挨拶をする。

言うまでもなく、4が最も重要です。
ちなみに、ソースはたまたま聞いていたラジオに出てきた神主さんです(^^)
神主さんいわく、ただお願いをするだけでは、神様はその人の背中を押してはくれないそうです。
ただ、「自分はここまで頑張りますので、どうかお力をお貸しください」というお願いをし、
神様と約束をしたところまで頑張ることが出来れば、そのとき初めて、神様はその力を貸してくれるそうです。

もちろん、お願いが成就された時は、すぐにお礼を言いにいかなければなりませんよ。



さて、今日のテーマは、組み込み・制御系エンジニアとハードウェアの関係です。

組み込みエンジニアにとって、回路などのハードウェアはどうしても無視することは出来ません。
制御系のエンジニアでは、それに加えてメカに対しても考慮が必要になる場合があります。
(筆者は幸いにして、優秀なメカトロ屋さんとしか組んだ事がないので、あまり気にしたことはありませんが)

では、組み込みエンジニアが知らなければならない回路の知識とはどの程度なのか。
筆者はど素人なので、ぶっちゃけどの程度の知識があればよいのかよくわからないのですが
今までで必要だったレベルでは以下の項目があげられます。

1.チャタ(ノイズ含む)取りにおけるRC回路の知識
2.AD値取得のための抵抗分割の知識
3.デジトラの知識

などです。
つまり、制御に関わる部分の波形品質に関する知識ですね。
(今回は内容が長くなるので、複数回に分けてお伝えしたいと思います)

まず1ですが、これは開発する製品・装置によって大きく異なります。
絶対に誤動作してはいけない装置を開発する場合、ソフトのチャタ取りのみでは
不安で夜も眠れません。
そういう場合は、シュミットトリガなどを用いてH/Wで確実にチャタ除去をするようにしましょう。
というか、何も言わなくてもハード屋さんがそうしてくれる筈です。

しかし、H/Wでの対応は、コスト的にも実装面積的にも不利になります。
そのため、基本的には、複数回入力端子を見に行くポーリングにて対応します。
この場合は、チャタの発生する周期とポーリング周期をマッチングさせないといけません。
(たとえば、チャタ周期が10m秒だった場合、1m秒毎に3回見に行っても意味はありません)
たまに、タイマーを使用せずにfor文などの繰り返しでポーリングをする記述を見ることがあります。
しかしながら、これでは動作周波数の高いマイコンにソースを移植された場合、ポーリング周期が早すぎる可能性があります。
チャタ除去なんぞにわざわざタイマーを使用するのは手間に感じるかもしれませんが、空いているタイマーがあれば、最適なポーリング周期できちんとチャタ取りを行うようにしましょう。

ただし、あくまでこれは対処療法ですので、理想的にはチャタを回路で除去してしまうのが一番なのです。

そこで活躍するのが、大学1年で習うRC回路(積分回路)です。(筆者は理論物理出身なので習いませんでしたが…)
RC回路を用いることで、任意の周波数以上の信号を除去することが出来ます。
一言で言えば、「チャタみたいな高周波(※)成分はを取り除いちゃおう!」ということですね。
(※高周波と言うと数GHzとかイメージしちゃいますが、ここでは違いますよ(汗))
ただし、時定数を大きくすると信号の波形がなまってしまって、入力がHレベル(あるいはLレベル)になるのが遅れてしまうので、そこはオシロでよく確認をしましょう。
せっかくチャタを除去しても、反応が遅くて誤動作…なんて本末転倒ですからね。
なお、RC回路の詳細は、先人達が残してくださった資料をご参考下さい。
(例のごとく、またまた逃げます。。。本当にごめんなさい…)

特に制御系の場合、制御対象となるメカ部品(あるいは駆動用ICなど)の電気特性は、制御プログラマが確認しなければならないケースも少なくありません。(特に、ハード屋さんが不足しているプロジェクトでは)
ですので、その場合はしっかりと制御対象のスペックシートを確認したうえで、RCが最適な定数になるよう、ハード屋さんにフィードバックをしましょう。
納期直前で、信号の立ち上がり時間がスペック外だった事が発覚!!
・・・なんて事がないように(汗)

今回はここまでにして、次回は2以降に関してお話したいと思います。
最後までお読み下さって、ありがとうございましたm(_ _)m

重要:筆者はあくまでも「ど素人」エンジニアなので、話半分でお読みくださいね(笑)

ご訪問者様
プロフィール

ゆってぃ

Author:ゆってぃ
経歴7年の組み込み系・制御系エンジニアです。
("ど素人"という文言は取りました…笑)
ソフトウェア開発経験ゼロの状態から、なんとか実務がこなせるようになってきた現在に至るまでの経験を、備忘録代わりに綴っていきたいと思います。
入門者の方、大歓迎!
(上級者の方、ごめんなさい…)

あと、ブログには全然関係ないですが、Bumpy Headというバンドのギターをやっています。
ライブ情報なんかも書いたりすることがあるので、その時に「行ってもいいよ~」といった感じのコメントを戴けると、泣いて喜びます(泣)
ブログ読んでくださってる方なら、チケット代サービスしちゃいます!

最後に…滅多に流用することは無いでしょうが、このブログに書かれているソースは、特に指定の無い限りMITライセンスとします。ただし、一部それ以外のものもございますのでご注意下さい。
※ブログのリンク先にあるコードに関しては、リンク先のポリシーに従ってください。

最新記事
最新コメント
カテゴリ
RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

twitter
リンク
ブロとも申請フォーム
スポンサードリンク