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)入力回路 (応用) ブザー駆動回路 (以上の実験が早くおわった場合の発展)

電子部品の基礎知識

「抵抗器」「可変抵抗(ボリューム、ポテンショメータ)」「発光ダイオード」「トランジスタ」「カドミウムセル」について調べてみよう。


ブレッドボードの使い方

ここでは、 部品を挿すだけで回路を作ることができる「ブレッドボード」という 簡易基板を用いて回路を構成する。


回路を作ってみよう

ブレッドボード上に 発光ダイオード駆動回路、 スライドスイッチ入力回路、 プッシュスイッチ入力回路、 可変抵抗入力回路を作ってみよう。 下の写真を参考に、部品を挿入して回路を作る。 (上から、発光ダイオード、スライドスイッチ、プッシュスイッチ、可変抵抗)




目次へ


制御プログラムの作成

ここでは教育用や入門用でよく使われる Arduino というマイコン・ボードを使用して、 発光ダイオード、スイッチ、光センサを制御する。


マイコン入門〜Lチカ

まずはともかく マイコン超入門 の「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できるようにする、 蛍のように徐々に明るくなる/徐々に暗くなるを繰り返すようなプログラムを作る、 などに挑戦するとよい。


光センサ(CdS)を搭載する

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

目次へ


泉 知論立命館大学 理工学部 電子情報工学科
いずみの演習・資料集に戻る