第七項 通信とケーブル・はんだづけ
電子工作創作表現(2019/6/7)
スライドPDF
今日使うもの
- ジャンパワイヤ4本
- MPU6050モジュール
- はんだごて
- はんだマット
今日の予定
- 6軸センサを使ったセンシング&はんだづけ体験
- 通信とケーブルについて
はんだづけ
- 基板の銅等を使った接点(ランド)に電子部品を固定する
- はんだを溶かしてくっつける。溶接ではなく「溶着」
今日はMPU6050という、傾きを検知するセンサーを使ってデモしようと思うのですが、せっかくなので部品のはんだ付けを皆さんに体験してもらおうと思います。
はんだづけとは、基板に電子部品を固定する方法の一つで、部品の金属接点と基板の接点の間にはんだという合金を溶かし入れて接着する方法です。溶接の一種とよく言われますが、溶接ではなく溶着ですので、溶接ほどの強度はありません。
はんだごてについて
- 安くて温度が低いものは難しい
- 自分用を買う時は「温度調節機能付き」がおススメ
はんだ付けは、熱したはんだごてではんだを溶かしながらつけていきます。溶かすはんだは種類によって融点が色々あり、あまり温度が低いとはんだ不良を起こすので自分用にこてが欲しくなった場合は温度調節機能付きのはんだごてがおススメです。白光やgootというメーカーのはんだごてがメジャーなので良いでしょう。
はんだの付け方
- 部品二つを温める(3~4秒)
- はんだを押し当てて溶かし、流し込む
- はんだごては1秒ほど、一息おいてからはなす
はんだの主な手順は上記のようなイメージです。部品の大きさや材質によって当然条件も変わってきますので、上手くなるためには数をこなしてみるのが一番だと思います。
良いはんだ、悪いはんだ
- つやつやした富士山型が良いはんだ
- はんだを盛りすぎる、ランドに熱が伝わってないと「いもはんだ」になる
はんだ付けがきれいにできると、三角錐の形になります。接点側に伝える熱が不十分だと表面張力で丸っこい形になり、取れやすかったり電気が通じなかったりするので、そうなってしまった所は数秒はんだを当てるなどして直してあげましょう。
ただし、あまり長く基板や部品にこてを当てていると熱が伝わりすぎてランドが剥がれたり部品が熱で壊れたりしてしまうので、いい感じと思ったらすぐ離すようにしてください。念入りに当てすぎるのはNGです。
センサモジュールGY-521(MPU6050)を使う
センサモジュールにピンソケットをはんだ付けする
今回は傾きと、回転速度をとることができるセンサーGY-521(MPU6050)にピンソケットをはんだ付けしてみます。
傾きを取得する加速度センサと、回転角速度を取得するジャイロセンサが載ったセンサで、真ん中の黒くて四角いIC部分がTDK社製のMPU6050で、それをすぐ使えるようにしたモジュール基板の名前がGY-521となっています。
配線
はんだ付けができたら、以下の通りに配線していきます。アナログの4番5番ピンは、実はI2Cという通信方式のためのピンにもなる特殊なピンになっています。
スケッチの書き込み
-
という最初から入っているライブラリを使用
- I2C(I Squared C)通信という通信方式を使って、センサーの情報を取得してくる
#include <Wire.h>
#define MPU6050_ADDR 0x68
#define MPU6050_AX 0x3B
#define MPU6050_AY 0x3D
#define MPU6050_AZ 0x3F
#define MPU6050_GX 0x43
#define MPU6050_GY 0x45
#define MPU6050_GZ 0x47
#define MPU6050_POWER 0x6B
short int acc[3];
short int gyro[3];
short int temp;
void setup()
{
Serial.begin(115200);
Serial.println("I2C Initialize.");
//I2Cの初期化
Wire.begin();
Wire.beginTransmission(MPU6050_ADDR);
//MPU6050の動作をスタート
Wire.write(MPU6050_POWER);
Wire.write(0);
Wire.endTransmission();
}
void loop()
{
//約60fpsに抑える
delay(12);
//AXから連続する14バイトのデータをリクエスト
Wire.beginTransmission(MPU6050_ADDR);
Wire.write(MPU6050_AX);
Wire.endTransmission();
Wire.requestFrom(MPU6050_ADDR, 14);
//データの取得開始、加速度センサの値を受信(2バイトで来るため、先頭8ビットを上位にシフトして合計)
for (int i = 0;i < 3;i++) acc[i] = (Wire.read() << 8) | Wire.read();
//温度センサを受信(今回は使わないが、順番に流れてくるので受信する)
temp = (Wire.read() << 8) | Wire.read();
//ジャイロセンサの値を受信
for (int i = 0;i < 3;i++) gyro[i] = (Wire.read() << 8) | Wire.read();
//受信結果をシリアルで表示。TAB('\t')で区切ると、色分けされたグラフとして表示される
for (int i = 0;i < 3;i++) Serial.print(String(acc[i]) + '\t');
for (int i = 0;i < 3;i++) Serial.print(String(gyro[i]) + '\t');
Serial.println("");
}
モニタ/プロッタで確認
- シリアルモニタでは、タブ区切りの数字として表示される
- シリアルプロッタに展開すると、色分けされたグラフとして見える
プログラムが無事アップロードされたら、シリアルモニタでデータを確認します。
USBからそれぞれの値がタブ区切りで送信されるのが確認できると思います。
タブ区切りで見ることで簡単な時系列の値の変化を読み取りやすいというのもありますが、こうして書いておくとシリアルプロッタの画面で見た時に色別で表示されるのでとても分かりやすくなります。
通信とケーブル
- データをやり取りする方法
このようにハードウェアを扱っていくと、Arduino<->PC間やArduino<->モジュール基板間のように、2つの機器の間で情報をやり取りするということがよくあります。今回はUSBケーブルとジャンパーピンを使って通信しましたが、これもやりとりする情報の内容や、やりとりする2つの機器の距離など条件によって使うべき通信方式・ケーブルやコネクタの選択肢がいろいろと変わってきます。
このあたりは展示や実験装置を作る上でかなり重要なトピックなのですが、電子工作関連の情報の中では少ない印象があったので、このあたりまとめつつ解説していこうと思います。
通信する時に決めること
- どんな伝え方をするか (プロトコル/Protocol)
-
どんな端子を使うか (コネクタ/Connector)
- どんな線材を使うか (ケーブル/cable)
まず何らかの機器同士でやりとりする時に何を決める必要があるかという点ですが、大きく3つ「プロトコル」「コネクタ」「ケーブル」に分類することができます。
伝え方「プロトコル」
- Arduinoとパソコン:RS-232C・USBシリアル・TCP・UDP…
- Arduinoとモジュール基板(基板同士):SPI・I2C・UART
一つ目の伝え方「プロトコル」は、誰と誰が通信するか、どんな内容をどんな速度でやりとりするかによって選択肢が決まってきます。お互いがソフトウェアで対応するプロトコルを使う必要があり、今日Arduinoとモジュール間でやりとりしたのはI2Cという規格です。モジュール基板はI2CかSPIに対応していることが多いです。
つなぎ方「コネクタ」
- 必要なピンの数
- 誤挿入の防止
- 抜き差し頻度・環境に求められる耐久性
まず一つ目のコネクタは、デバイスの出入口にあたる部分です。PCだとUSB端子や有線LANポートがあったり、オーディオだとXLR端子やフォン端子、フォンにも3.5Φや6.3Φといった大きさ違いの物もあると思います。
先ほどジャンパーピンでセンサーとArduinoを接続したように、極端な話電気的に繋がってさえいれば通信はできます。しかし、頻繁に抜いたり差したりする必要が出てくると、3本も4本も毎回場所を確認しながら抜き差しするのは面倒です。そこでこういったコネクタを使うと、抜き差しの作業を効率化できる上、間違ったピンにつないでデバイスを壊したりするという事故も防止することができます。
伸ばし方「ケーブル」
-
伝送距離が延びる程、ノイズの影響を受けやすい
- ツイストペアやシールドはノイズ対策になる
- 数が増えてくると、美観的なところも気になってくる
ある程度伸ばす距離が伸びてくると、ケーブルにも気を使ったほうがよくなってきます。
これはノイズの影響を受けやすくなってくるからで、センチメートル単位であれば電子工作用の導線で事足りますが、長くなってくると信号の種類に応じて、シールドされているケーブルを選ぶ必要が出てきたりします。
簡単なケーブル作りの例
- JST XHコネクタ
- 入手性が良く、メス端子は基板に直接取り付けられる
最後に、よく使うケーブル作りの例を紹介します。
以前モーターを制御する仕事でユニットを作った際に作ったケーブルの例です。
コネクタは基板用のコネクタというのが色々ありますが、JSTというメーカーのXHコネクタを使いました。アマゾンや秋月で購入できるので入手性がよく、ユニバーサル基板にも直接はんだで取り付けられるのでよく使っています。お気に入りのコネクタをストックしておくと便利です。
ケーブル
- ミスミで購入(個人で買うならモノタロウやオヤイデ)
- AWG22の2芯・3芯を使用
ケーブルは柔らかくて取り回しの良い、PVCで被覆されたロボットケーブルを使っています。銅線の太さでよく使われるのがAWGという規格ですが、XHコネクタであればAWG22がちょうどよい太さなので、AWG22の2芯・3芯ケーブルを使っています。
私の場合事業者が使えるミスミという販売サイトを使っているのですが、学生の皆さんはモノタロウや実店舗のあるオヤイデ電気を使うのが良いでしょう。
圧着して、ケーブルを作る
- 圧着工具で、端子とケーブルをつなぐ
- ケーブルははんだ付けでは作らない
コネクタとケーブルをバラバラで買ったら、この二つを必要な長さでつないでコネクタ付きのケーブルにします。
端子の金具で、中の銅線と被覆をしっかり掴むように変形させて合体させます。引っ張ったら抜けてしまいそうにも感じますが、この手のコネクタは接続部分に力がかかるので、はんだ付け等でつけてしまうと金属疲労を起こしてすぐ切れてしまうので、しっかり力を入れて圧着した方が丈夫になります。
メス端子(レセプタクル)は、基板にはんだ付け
XHコネクタはピンの間隔が2.54mm(0.1インチ)ピッチになっているので、ユニバーサル基板にもそのままはんだ付けしてしまうことができます。はんだ付けすればあとは差し込めばカチッとしっかりロックされるので、ジャンパーピンなどを使うよりも安心感のある結線が可能になりました。
課題と今後の講義のためのアンケート
基礎的な知識の紹介をしてきたので、徐々に具体的な実例などをやっていこうと思っていますが、シラバスの内容をどのくらいの割合でやるか、課題どうするかなどをちょっとアンケートを元に計画を練っていきたいのでGoogleフォームのアンケートにお答えいただけると助かります。聴講の人も是非!