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できるようにする、 などのより実用的な仕様を考えて改造してみるとよい。