2019/09/27a いずみ♡
![]() |
![]() |
中高生・学部低回生向けの電子情報分野の体験演習として、調光ランプを製作する。 ランプカバーを設計して3Dプリンタで製作し、 LEDやセンサをマイコンと接続する電子回路を組み上げ、 マイコンのプログラムを作成して調光制御する。
演習内容は立命館大学 電子情報工学科の演習室の開発環境を想定しており、 Autodesk Inventor Professional, Arduino IDE を使用する。 同様のCADをインストールすれば同様の演習は実施できる。 三次元CADや3Dプリンタがなければカバーなしで実施可。
LEDに被せるロゴ入りのランプカバーを製作する。 まず三次元CADで目的の形状つくる練習をして、 ランプカバーのサンプルを確認して改造し、 3Dプリンタで出力する。 カバーを製作しない場合は、 ここは飛ばして入出力回路の製作にすすむ。
まず、 電子情報的 演習課題 〜 三次元CAD超入門 の 概要 から 練習(2) までを 学習する。 その後、この続きを行う。
ここで、先ほどの 電子情報的 演習課題 〜 三次元CAD超入門 の続き、 データ出力 から プリンタ出力 までを 学習する。 そして、自作のデータを出力する。
USBメモリに igs を入れて AIOL に Go! |
![]() |
LEDやスイッチなどをマイコンボードにつないで使うには 入出力のための電子回路を作らなければならない。 ここでは、以下のような電子回路をつくる。
![]() |
![]() |
![]() |
発光ダイオード駆動回路 | プッシュスイッチ入力回路 (タクトスイッチともいう) | スライドスイッチ入力回路 |
![]() |
![]() |
![]() |
可変抵抗入力回路 (ボリューム、半固定抵抗、ポテンショメータ、ロータリー、トリム抵抗、ロータリー抵抗などともいう) | 光抵抗(カドミウムセル,CdS)入力回路 (応用) | ブザー駆動回路 (以上の実験が早くおわった場合の発展) |
「抵抗器」「可変抵抗(ボリューム、ポテンショメータ)」「発光ダイオード」「トランジスタ」「カドミウムセル」について調べてみよう。
色 | 黒 | 茶 | 赤 | 橙 | 黄 | 緑 | 青 | 紫 | 灰 | 白 |
---|---|---|---|---|---|---|---|---|---|---|
数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
ここでは、 部品を挿すだけで回路を作ることができる「ブレッドボード」という 簡易基板を用いて回路を構成する。
ブレッドボード上に 発光ダイオード駆動回路、 スライドスイッチ入力回路、 プッシュスイッチ入力回路、 可変抵抗入力回路を作ってみよう。 下の写真を参考に、部品を挿入して回路を作る。 (上から、発光ダイオード、スライドスイッチ、プッシュスイッチ、可変抵抗)
![]() ![]() ![]() ![]() |
![]() |
ここでは教育用や入門用でよく使われる Arduino というマイコン・ボードを使用して、 発光ダイオード、スイッチ、光センサを制御する。
まずはともかく マイコン超入門 の「Lチカ」をやってみよう。
先にブレッドボード上に製作した入出力回路を シンプルなプログラムでテストしてみる。
次のとおりに Arduino とブレッドボードを接続する。
ブレッドボード | Arduino |
---|---|
電源+(赤いライン) | 左列 5V |
電源−(黒いライン) | 左列 GND |
LED駆動回路の出力端子 | 右列 9番 |
スライドスイッチの入力端子 | 右列 4番 |
プッシュスイッチの入力端子 | 右列 2番 |
可変抵抗器の入力端子 | 左列 A0番 |
実際に電子回路を扱うので、次の点に注意すること。
下のプログラム led1.ino は、次のように動作するプログラムである。 プッシュスイッチは押すとLOW、はなすとHIGHとなることに注意せよ。 Lチカの演習と同様に、新規プログラムを作成し動作確認せよ。 (電情の演習室ではGドライブのArduinoフォルダの下に保存すること。)
プログラム例 led1.ino | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#define LED0 13 #define LED1 9 #define SSW 4 #define PSW 2 int s,p,d0,d1; void setup() { pinMode(LED0,OUTPUT); pinMode(LED1,OUTPUT); pinMode(SSW ,INPUT ); pinMode(PSW ,INPUT ); } void loop() { s=digitalRead(SSW); p=digitalRead(PSW); if (s==HIGH) { d0=HIGH; } else { d0=LOW; } if (p==HIGH) { d1=LOW; } else { d1=HIGH; } digitalWrite(LED0,d0); digitalWrite(LED1,d1); delay(100); } |
余力があるなら、次のような改造をしてみよう。
下のプログラム led2.ino は、 手でボリューム(可変抵抗器)を回すことで明るさを変えられる調光ランプのプログラムである。 プログラムを作成し動作確認せよ。 (電情の演習室ではGドライブのArduinoフォルダの下に保存すること。)
プログラム例 led2.ino | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#define LED1 9 #define VOL A0 int v,d1; void setup() { pinMode(LED1,OUTPUT); pinMode(VOL ,INPUT ); } void loop() { v=analogRead(VOL); d1=(v-0.0)/1023.0*255.0; if (d1< 0) d1= 0; if (d1>255) d1=255; analogWrite(LED1,d1); delay(100); } |
余力があるなら、 スライドスイッチでON/OFFできるようにする、 蛍のように徐々に明るくなる/徐々に暗くなるを繰り返すようなプログラムを作る、 などに挑戦するとよい。
まず、ArduinoのUSBケーブルを抜いて電源を切り、 ブレッドボード上の可変抵抗の回路をCdSの回路に置き換える。
![]() |
→そのまま→ →そのまま→ →そのまま→ ⇒置き換え⇒ |
![]() |
手動ではなく明るさに自動で反応する調光ランプを製作する。
先の led2 を改造して、led3 として保存する。
この d1=v/1023.0*255.0;
の部分を修正して
プログラムを完成し、動作確認せよ。
(電情の演習室ではGドライブのArduinoフォルダの下に保存すること。)
単純には CdS明るさセンサ回路からの analogRead() の入力値の最小値〜最大値 と LED調光のための analogWrite() の出力値の0〜255 が対応するように 比例式を作るとよい。 なお、実験セット内のCdSセルの抵抗値を実測してみたところ、 下表のとおりの測定値であった。
![]() | 黒布を被せた状態 1.5MΩ程度 |
![]() | 室内で手で覆った状態 50kΩ程度 |
![]() | 明るい室内 3kΩ程度 |
![]() | 直射日光下 150Ω程度 |
余力があるなら、 スライドスイッチでON/OFFできるようにする、 などのより実用的な仕様を考えて改造してみるとよい。