投稿者「takami」のアーカイブ

マイクロコンピューター

 マイクロコンピューターは超小型のコンピューターの総称で、「マイコン」とも呼ばれます。また、英語では”microcontroller”または”microchip”と呼ばれることが多いです。

マイクロコンピューターの写真
マイクロコンピューター

 マイクロプロセッサーとの違いは、マイクロプロセッサーがマイクロコンピューターの核になる中央演算装置(CPU)を指すのに対して、マイクロコンピューターはコンピューターを構成するメモリーや入出力までを含めたものを指すのですが、近年はCore iプロセッサーなども入出力を内部に持つものも多くなってきたため、明確な違いはありませんが、強いて言うなら性能が低いものがマイクロコンピューターで、高性能なものがマイクロプロセッサーと呼ばれる感じです。

 また、スマートフォンや通信機器などに良く使われる”ARM”と呼ばれるマイクロプロセッサーも性能がどんどん上がり、小型のノートパソコンなどにも採用されています。

マイクロコンピューターモジュール

 マイクロコンピューターは単体では使いにくいので、プリント基板に組み込んだ状態でも売られています。

昔のマイコンの写真があります
マイクロコンピューター(マイコン)の改良

 近年は数百円で買えるArduinoと呼ばれるマイクロコンピューターモジュールが電子工作などで良く使われますが、家電製品やプログラム・ロジック・コントローラーなどでは単体のマイクロコンピューターが使われます。

マイコンの写真があります
Arduino nanoマイクロコンピューター(マイコン)

Arduinoマイコンの使い方

Arduinoマイコンのお勧め購入先:スイッチサイエンス

ヒューズと電流制限

 電子回路において、適切な電流制限をすることは非常に重要です。適切な電流制限は、故障時や劣化時の発火や発煙を防止したり、回路やモーターなどの焼損を防止したりします。

 ヒューズなどを利用して電流制限することにより、高価な回路や部品を回路の故障や劣化から保護できます。

ヒューズの写真があります
各種ヒューズ

上の写真は、左から、

  • ガラス管ヒューズ
  • 中継ヒューズ・ホルダー
  • ミゼット・ヒューズ(小型ヒューズ)
  • ミゼット・ヒューズ・ホルダー(小型ヒューズ・ホルダー)
  • サーマル・ブレーカー(熱遮断器)
  • ポリスイッチ(自己復帰型ヒューズ)
  • 温度ヒューズ

ガラス管ヒューズ

 比較的小さな電流を遮断し、交換が容易にできるヒューズです。以前は家電製品に多用されていて、外側からも確認できましたが、近年は電子回路による保護が可能になり、寿命を過ぎた劣化の際の火災防止のために使われるので、機器の内部に隠れて見えないことが多いです。

 また、ガラス管ヒューズを小型にした「ミゼット・ヒューズ」も使われていて、小さめの電子機器やテスターなどの内部にあります。

サーマル・ブレーカー(熱遮断器)

 ヒューズが切れる(溶断)すると、原因を取り除いた後に交換しなければならないのですが、モーターなどの電気部品などは、過負荷で簡単にヒューズが切れてしまい、交換するまで使えなくなってしまいます。

 サーマル・ブレーカーは、温度膨張鵜率の違う金属を重ね合わせて、温度が上がると曲がる「バイメタル」を使って、過電流が発熱を増やし、結果バイメタルが曲がって遮断するという原理なので、モーター起動時に起こるラッシュ電流で遮断されることが少なく、また、遮断時も飛び出したボタンを押すだけで復帰するため、掃除機などの負荷の変わるモーターを使った電気製品に組み込まれていますが、近年は電子回路やマイコンで高負荷時は自動的に電流を減らすなどで必要なくなりつつあります。

ポリスイッチ

 導電性プラスチックの発明で、温度で遮断できる「ポリスイッチ」が普及してきました。温度が下がれば自動的に復帰するため、「自己復帰型ヒューズ」とも呼ばれ、小型軽量低価格なため、パソコンなどのUSBポートの内部に使われています。

温度ヒューズ

 一般的なヒューズは過電流により溶断しますが、温度ヒューズは過熱と過電流の両方で溶断します。

 ヒーターを使った電気ストーブ、こたつ、電気ポット、電気炊飯器、電熱器などの家電製品は、昔はバイメタルを使って設定温度になると自動的に加熱を中止する「サーモスタット」が、近年は温度センサーと電子回路やマイクロコンピューターを使った回路などにより温度制御されていますが、これらの部品や回路が故障したり劣化したりするど正常に遮断できなくなり、過熱して火災の原因になったりします。

 そこて、サーモスタットや電子回路が故障した際に火災を防ぐ最終手段として現在でも温度ヒューズが併用されます。温度ヒューズは過電流でも溶断するため、回路の保護も同時に可能です。

過電流により焼損しやすい部品

  • モーター
  • 抵抗器
  • トランジスター
  • ダイオード(発光ダイオードを含む)
  • 集積回路(IC)

ヒューズのお勧め購入先:マルツパーツ館

アルディーノでつくった時計の写真があります

Arduinoマイコンで時計を作る

Arduinoマイコンで試作した温湿度時計

 Arduinoマイコンでを使って温湿度計測機能付きの時計の実験をしてみました。これだけあれば、普通の月差数分の時計と、データロガーなどの自動計測装置や各種タイマー、チャイム時計、からくり時計などに使えそうです。

使用部品

  • Arduino nano互換ボード
  • DS3231リアルタイムクロックモジュール
  • LIR2032リチウムイオン電池(充電式)
  • MAX7219表示モジュール
  • DHT11/DHT22温湿度センサー

プログラム

// 以下は必要なライブラリーを取り込む
#include <Arduino.h> // Arduinoライブラリーを取り込む
#include <Wire.h> // 2線通信ライブラリーを取り込む
#include "DHT.h" // DHT温湿度センサー・ライブラリーを取り込む
#include "LedControl.h" // 7セグメントLEDライブラリーを取り込む
#include <DS3231.h> // 温湿度センサーICライブラリーを取り込む

// 温湿度センサーのピンを定義する
#define DHTPIN 2     // 温湿度センサーが接続されるピン

// 温湿度センサーの機種の前の//を1つだけ消す
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// 温湿度センサーDHTのピン1 (左端) を+5Vに接続
// ※Arduino Dueなどの3.3V動作の場合はピン1を3.3Vに接続
// 温湿度センサーのピン2をDHTPINで設定したデジタル入出力に接続
// 温湿度センサーのピン4 (右端) をGNDに接続
// 10kΩの抵抗をセンサーのピン2(データ)とピン1(電源)に接続

// DHT温湿度センサーの初期化
DHT dht(DHTPIN, DHTTYPE);
DS3231  rtc(SDA, SCL);

// 7セグメントLEDモジュールの初期化
LedControl lc=LedControl(12,11,10,1); // 12 DataIn, 11 CLK, 10 CS(LOAD)

// 変数の定義
Time t; // 日時構造体tを定義

unsigned char p_sec=99; // 8ビット符号なし変数p_secを定義して99に設定

// 初回のみ実行されるプログラム
void setup() {
  dht.begin(); // DHT温湿度センサーを開始
  Serial.begin(115200); // シリアルを115,200ビット毎秒で開始
  lc.shutdown(0,false); // 7セグメントLEDのシャットダウン設定
  lc.setIntensity(0,6); // 7セグメントLEDの輝度を6に設定
  lc.clearDisplay(0); // 7セグメントLEDの表示を消す
  rtc.begin(); // リアルタイム時計を開始
}

// 繰り返し実行されるプログラム 
void loop() {
  
  float Temp = dht.readTemperature(); // 温度を読む
  float Hum = dht.readHumidity(); // 湿度を読む
  t=rtc.getTime(); // 日時を取得
  if(p_sec != t.sec) { // 時刻が変わった時だけ処理する
  p_sec = t.sec;
  if(t.date>9) { // 日が9より大きい場合は2桁表示
    lc.setChar(0,7,(String(t.date).charAt(0)),false);
    lc.setChar(0,6,(String(t.date).charAt(1)),true);
  } else {
    lc.setChar(0,7,'0',false);
    lc.setChar(0,6,(String(t.date).charAt(0)),true);
  }
  
  if(t.hour>9) { // 時が9より大きい場合は2桁表示
    lc.setChar(0,5,(String(t.hour).charAt(0)),false);
    lc.setChar(0,4,(String(t.hour).charAt(1)),true);
  } else {
    lc.setChar(0,5,'0',false);
    lc.setChar(0,4,(String(t.hour).charAt(0)),true);
  }
  
  if(t.min>9) { // 分が9より大きい場合は2桁表示
    lc.setChar(0,3,(String(t.min).charAt(0)),false);
    lc.setChar(0,2,(String(t.min).charAt(1)),true);
  } else {
    lc.setChar(0,3,'0',false);
    lc.setChar(0,2,(String(t.min).charAt(0)),true);
  }
  
  if(t.sec>9) { // 秒が9より大きい場合は2桁表示
    lc.setChar(0,1,(String(t.sec).charAt(0)),false);
    lc.setChar(0,0,(String(t.sec).charAt(1)),true);
  } else {
    lc.setChar(0,1,'0',false);
    lc.setChar(0,0,(String(t.sec).charAt(0)),true);
  }
  
  // 曜日をシリアル(パソコンに)送信
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");
  
  // 年月日をシリアル(パソコンに)送信
  Serial.print(rtc.getDateStr());
  Serial.print(" ");

  // 時刻をシリアル(パソコンに)送信
  Serial.print(rtc.getTimeStr());
  
  Serial.print(" Temp = "); Serial.print(Temp);
  Serial.print(" Hum = "); Serial.println(Hum);
  }
}

 といっても、2wireライブラリ、displayライブラリ、DHTライブラリを組み合わせただけですけど。世界中の先人たちに感謝します。

フローチャートの書き方

 フローチャートは「流れ図」とも呼ばれ、プログラム(ソフトウェア)の処理手順を図で表したり、作業の流れを「マニュアル」に図で示したりするチャート(図)のことです。

 そこで使う図記号は、JISまたはISOで決められており、各国もISOにならって決めていますので、書き方自体は世界共通です。

 ただ、使われる図記号は、大昔のコンピューターを元に決められていますので、ブラウン管ディスプレイの形の「表示」とか、「磁気テープ」、「紙テープ」、「紙カードの束をイメージしたデータ」、「磁気ドラム」など、今では使われない装置の図記号が多いです。

 そこで、これから描くなら、「処理」、「判断」、「定義済み処理」、「端子」と、別のページにまたがる接続に使う「結合子」程度で十分です。

 もっと簡単には、「処理」、「判断」、「端子」だけでも意味は通じますので、3種類だけ覚えれば書けなくありません。

フローチャートに使われる図記号

 図記号と図記号は線で結びます。上の2つの図記号は線で結ばれていないので間違いです。また、わかりやすくするために矢印を使います。上から下に流れる場合は矢印を省略できる決まりですが、全部の線に矢印を付けたほうが理解されやすいでしょう。

単純なフローチャートの例

端子に電線をはんだ付けする方法

 端子に電線をはんだ付けするには、まず電線の準備をする必要があります。下の図に、その手順を示します。

端子に電線をはんだ付けする準備
  • 電線を「ワイヤーストリッパー」を使って被覆を8ミリほどむく
  • むいた電線の芯線部分を右回りにねじる(忘れるとヒゲが出る)
  • その芯線部分(の先端)をはんだ付けしてメッキする(予備はんだ)

 続いて、予備はんだした芯線の部分を曲げて引っ掛け、そこをはんだ付けします。この時、ショートや感電を予防したり、見た目を良くするために「熱収縮チューブ」を通すことがありますが、先にチューブを通しておかないと、後からは付けられませんので、いちど付けた電線を取ることになり、汚くなります。

端子に電線をはんだ付けする方法
  • (熱収縮チューブを被せる場合は先に電線に通しておく)
  • 予備はんだした芯線を曲げて引っかける
  • そこをはんだ付けする

はんだ付けの極意とは?

はんだ付け練習中の教え子

 はんだ付けによる配線組立は、安価で信頼性が高く、非常に多く使われていますが、「熟練を必要とする」という大きな欠点があります。

はんだ付けとは「合金」を作る作業

 はんだ付けとは、「はんだ」を付けるのではなく、「はんだ」と「付ける金属」の「合金」を作る作業だと思ったほうが正しいです。

 つまり、簡単にいえば「現在の錬金術師」になる修行であり、その修行は、道具、温度、タイミング、はんだの状態、付ける材料の熱伝導率や熱容量、はんだを離すタイミング、はんだごてを離すタイミング、はんだが完全に固まるまで動きを止めるテクニックと、書くと大変な鍛錬が必要です。

実際は数をこなせば上達する!

 少し脅しましたが、実際は回数をこなせば必ず上達します。よっぽど不器用だと向いていないかも知れませんが、その場合は、はんだ付けしなくても済むブレッドボードによる実験や、プリント基板を作成するなどの方法もありますので何とかなります。

 簡単な手順を下の図に示しますが、いちばん大切なのは、はんだ付けする材料の両方を同じ温度に加熱することと、はんだを付けるのではなく、流し込むことです。

  • 付ける材料の両方(全部)を同じ温度になるように加熱する(数秒間)
  • その接点に「糸はんだ」を素早く当てて溶かして流し込む
  • 糸はんだを先に離す
  • 次の瞬間はんだごてを離す
  • はんだが完全に固まるまで動かさない
はんだごての先を銅箔と部品の足の両方に当てて数秒間加熱する
はんだごての先と銅箔と部品の足の交点に糸ハンダを溶かし込む
糸ハンダを先に離す
はんだごての先を離してハンダが固まるまで動かさない

はんだ付けの良い例と悪い例

はんだ付けの悪い例

プリント基板やユニバーサル基板にはんだ付けする際のリード線の長さ

私がはんだ付けして製作した基板
教え子が生まれて初めてはんだ付けして製作した基板
(いくらか私が修正しています)

ユニバーサル基板を使った電子回路組立はこちら

デジタル回路とは?

 デジタル回路とは、デジタル信号やデータを電子回路で処理して、計算、圧縮、伸張、記録するもので、コンピューターやスマートフォンなどに広く使われている技術です。

 デジタル回路は、信号やデータを0と1の2進数で扱うため、性能のバラつきの大きい半導体でも高い精度を保て、安く作ることができます。

 デジタル回路は、基本的にAND回路、OR回路、NOT回路の3つの回路だけで理論的にはどのような回路でも実現できます。

 みなさんが使っているパソコンやスマートフォンなどに使われているCPUなども、AND,OR,NOTの組み合わせて実現されています。

AND回路

 AND回路は、すべての入力が1のときだけ出力が1になる回路で、非常停止ボタンが押されていなくて、防護ドアが閉まっていて、運転開始ボタンが押された時などというように、すべての条件が整ったのを計算するために使われます。

 電車なども、すべてのドアが閉まっていないと発車できないような回路に使われます。

 コンピューターの演算回路などでは、入力が1と1のときだけ出力が1になる、つまり1+1=10となるような桁上がり(キャリー)(ぱみゅぱみゅ)な回路などに使われます。

AND回路の真理値表(全部の入力が1のときだけ出力が1になる)
AND回路の論理記号(MIL記号)

OR回路

 入力のうち、どれか一つでも1になると出力が1になる回路です。たとえば、複数ある非常停止ボタンのうち、どれか一つでも押されれば、運転を非常停止するような場合に使われます。

 実際には、非常停止の回路は、断線するなど故障したときでも機能するように、NOTのANDで組まれます。その場合、非常停止ボタンがどれか一つでも押されるか、配線がどこか一か所でも断線するか、非常停止ボタンが一つでも接触不良を起こせば非常停止が働きます。

OR回路の真理値表(どれか1つでも入力が1になると出力が1になる)
OR回路の図記号(MIL記号)

NOT回路

 入力が1だと出力は0に、入力が0だと出力は1になる回路です。つねに入力とは反対になるのでNOT回路と呼ばれますが、入力と出力が逆になることから「インバーター回路」(反転の意味)とも呼ばれます。

 電子キーでは、このボタンとこのボタンが押されていて、このボタンとこのボタンが押されていないなどの(ちょっとわかりにくいですが)、オンをオフに、オフをオンにする回路です。

 上を下に、下を上に、パイレーツ・オブ・カリビ○○の世界ですね。

NOT回路の真理値表(入力が1になると出力が0になる)
NOT回路の図記号(MIL記号)

電子技術百科

 電子回路、電子工学、電子工作、ソフトウェア、データ通信、マイクロコンピューター、Arduinoマイコンなどの情報を充実してゆきます。

メカトロニクスはmechatro.net

軽トラ模型を自動運転に改造

軽トラ模型を自動運転できるように改造

 私の教え子が軽トラ模型にArduinoマイコンボードと測距センサを前後左右に取り付けて自動運転できるように改造しました。

 もちろん、自動運転といっても障害物を避けながら切り返したりしてモーターを制御するだけのプログラムですが、ウインカーランプやブレーキランプ、バックランプなども取り付け、それらしく動きます。

 もちろん、測距センサに反応しにくい黒い壁に衝突してしまったり、測距センサに反応しない机の脚などにぶつかってしまったりしますので、まったく実用性はありませんが、見ているとそれなりに楽しめます。

 スピーカーはバックするときに警告音を鳴らすためのもので、走り出す直前に音楽を演奏するのにも使っています。

アナログとデジタル

 アナログは連続的と言われますが、たとえばスーパーの肉などで考えると、100gで298円とかは、重さを測って値段が決まるようなものです。それに対してデジタルは1パック298円のように、数量(数値)で決まるのがデジタルです。

アナログとデジタル

 もし、お金がアナログだとしたら、たとえば298円を払うのに百円硬貨を3個渡して、100円硬貨の2%だけを切り取ったお釣りをもらうことになります。これは犯罪ですし、いちいち重さを測って取引するのは面倒なので、硬貨はデジタル方式で、たとえば100円硬貨を3枚渡して1円硬貨2枚をお釣りとして受け取ります。

 金などの貴金属の取引では、まず金の含有率を調べ、重さを測って、

買取価格 = 金の含有率 × 重量 × 買取単価

 というふうに計算しなくてはなりません。実際には秤(はかり)に計算機能があるものが多く、たとえば「18金」などの金の含有率のボタンを押し、買取単価をあらかじめ設定しておけば、重さと買取単価が表示されるようになっているので、ここまで手間はかからないのですが、アナログは面倒です。

 それに対して、金のインゴット(金塊)では、金の含有率と、重さが刻印されています。これだけでは、その刻印が本当かどうかはわからないので、「信用のおける社名」が刻印されていれば、そのまま本物とされることも多いです。残念ながら「金のインゴット」の写真はありませんが、これがデジタルです。

2進数のお金と10進数のお金

2進数のお金と10進数のお金

 上の図は、2進数のお金と10進数のお金の例です。実際には2進数のお金はありませんが、2進数のお金があるとすれば、額面ごとに重さが違います。2進数のお金では、1円の上は2円、2円の上は4円と、2倍ずつ大きい硬貨があります。

 たとえば、2進数のお金で2万3千4百5十6円を払ってくださいと言われたら、とっても計算が面倒ですよね?

 それに対して、普段使っている10進数のお金なら、上の図の下半分のように簡単に払うことができます(簡単に出せる金額ではありませんが)。

 このように、10進数は人間にとってわかりやすいのですが、コンピューターなどのデジタルでは処理が大変です。

 2進数の良いところは、1円、2円、4円、8円…が各1枚ずつあれば、理論的にはどのような金額でも払えることです。

 つまり、1円、2円、4円、8円という「お金の重み」ごとの硬貨が「ある」か「ない」かで、金額を表すになります。

 この「ある」が1で、「ない」が0です。つまり10進数の15を2進数に直すと、

1111

 になります。

 10進数の10を2進数に直すと、

1010

 になります。

 このように、2進数では数値を0と1で表します。いいかたを変えれば、0、1、の次は2ではなく、10になります。

 このように「2になるとケタが進むので2進数」というのです。

 10進数では、10になるとケタが進みます。

1,2,3,4,5,6,7,8,9,10

 のようになるので10進数なのです。

2進数の利点

 では、わかりにくい2進数の利点とはなんでしょう? それば、数値を0と1だけで表すので、0を「オフ」、1を「オン」といいかえれば、トランジスターなどの半導体(はんどうたい)で、表して計算することができるのです。

 難しいはなしになりますが、このトランジスターの性能(せいのう)が2進数のばあいは、とっても悪いものを使えます。

 つまり、計算を2進数ですれば、安く作れるのです。

2進数の欠点

 二進数の一番の欠点は、人間にわかりにくいことです。なので、じっさいには人間と接するところだけ10進数にして、わかりにくさを防ぎます。

電卓(でんたく)

 たとえば、電卓(でんたく)では、0から9までの「10キー」があり、10進数で数値を入力し、計算結果は「液晶ディスプレイ」で10進数で表示されます。

 パソコンでも、キーボードには0から9までのキーやAからZまでのキー、記号のキーなどがあり、結果はディスプレイに基本的に10進数で表示されます。

人間の感覚はアナログなのでデジタルとの変換(へんかん)が必要

人間の感覚はアナログ

 人間の感覚は基本的にアナログです。たとえば「明るさ」を表現するのに「数値」で表現する人はいませんよね? 同じように、音の大きさや高さなども数値で表現する人はいません。匂い(におい)も数値で表現する人はいません。味も同じ、痛覚も同じです。

 そこで、人間が使うものは、基本的にアナログとデジタルの変換が必要になります。たとえばスマートフォンなどでは、人間の声を「マイク」で電気信号に変換(へんかん)して、音の大きさのアナログ信号をデジタルに変換し、デジタルで圧縮(あっしゅく)し、デジタルで電波に乗せて送ります。

 相手からの声は、デジタルで電波を受信し、デジタルで圧縮された音声や映像を元にもどして、アナログに変換し、スピーカーで空気の振動に変えて耳に届いたり、色と明るさに変換して画面に表示したりします。