コンパレータを使ってみよう

308 Views

May 02, 19

スライド概要

2019/05/02(土) mintech revival #4 で発表した資料

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Try t o u se a comparator コンパレータを使ってみよう Speaker :: @ tomio2480

2.

北見市の イメージ はこう?

5.

北見市は急な ドカ雪が降る

6.

2020/5/2

8.

山の 水族館

9.

メッカ 龍巳

10.

$ w h o a m i ジ コ シ ョ ウ カ イ

11.

$ whoami • Shota Nishihara ( @ tomio2480 ) • 高校教諭(電気) → セキュリティ人材育成 → 地方 IT コミュニティ • 北海道(旭川→北見→富良野)→東京都(小平市) • ゆるい勉強会@旭川,FuraIT (富良野),mintech (北見) • Co-KoNPILe (小平市) • 全国の IT コミュニティ行脚と応援を生きがいにしている • 誰でも見られるものは Blog か SlideShare へ

12.

$ whoami • Shota Nishihara ( @ tomio2480 ) • 高校教諭(電気) → セキュリティ人材育成 → 地方 IT コミュニティ • 北海道(旭川→北見→富良野)→東京都(小平市) • ゆるい勉強会@旭川,FuraIT (富良野),mintech (北見) • Co-KoNPILe (小平市) • 全国の IT コミュニティ行脚と応援を生きがいにしている • 誰でも見られるものは Blog か SlideShare へ

13.

$ whoami • Shota Nishihara ( @ tomio2480 ) • 高校教諭(電気) → セキュリティ人材育成 → 地方 IT コミュニティ • 北海道(旭川→北見→富良野)→東京都(小平市) • ゆるい勉強会@旭川,FuraIT (富良野),mintech (北見) • Co-KoNPILe (小平市) • 全国の IT コミュニティ行脚と応援を生きがいにしている • 誰でも見られるものは Blog か SlideShare へ

14.

$ whoami • Shota Nishihara ( @ tomio2480 ) • 高校教諭(電気) → セキュリティ人材育成 → 地方 IT コミュニティ • 北海道(旭川→北見→富良野)→東京都(小平市) • ゆるい勉強会@旭川,FuraIT (富良野),mintech (北見) http://tomio2480.hatenablog.com/ https://www.slideshare.net/tomio2480/presentations • Co-KoNPILe (小平市) • 全国の IT コミュニティ行脚と応援を生きがいにしている • 誰でも見られるものは Blog か SlideShare へ

15.

$ whoami • Shota Nishihara ( @ tomio2480 ) • 高校教諭(電気) → セキュリティ人材育成 → 地方 IT コミュニティ どんな地域でも • 北海道(旭川→北見→富良野)→東京都(小平市) ITとか電子工作とか勉強会が当たり前にある世界 • ゆるい勉強会@旭川,FuraIT (富良野),mintech (北見) http://tomio2480.hatenablog.com/ に近づけばいいなと願うばかり🙏 https://www.slideshare.net/tomio2480/presentations • Co-KoNPILe (小平市) • 全国の IT コミュニティ行脚と応援を生きがいにしている • 誰でも見られるものは Blog か SlideShare へ

16.

Background 電圧の値で処理を分けたい

17.

電圧値による条件分岐 • Raspberry Pi 等のように A/D 変換器を持たない場合 • 外部に A/D 変換できる回路を組む必要がある • 概ね I2C や SPI と言ったシリアル通信を用いて値をもらう • Arduino や PIC 等のように A/D 変換器を持つ場合 • センサ等をつないで後はソフトウェアで対応可能

18.

電圧値による条件分岐 • Raspberry Pi 等のように A/D 変換器を持たない場合 • 外部に A/D 変換できる回路を組む必要がある • 概ね I2C や SPI と言ったシリアル通信を用いて値をもらう • Arduino や PIC 等のように A/D 変換器を持つ場合 • センサ等をつないで後はソフトウェアで対応可能 • 両方に共通して気にしておかなきゃいけないこと • ハードウェア対応 :: 発振,補償 etc...... • ソフトウェア対応 :: サンプリング速度 etc......

19.

電圧値による条件分岐 • Raspberry Pi 等のように A/D 変換器を持たない場合 • 外部に A/D 変換できる回路を組む必要がある そもそも実装したいモノに本当に必要なのは • 概ね I2C や SPI と言ったシリアル通信を用いて値をもらう アナログの電圧値それ自体なのか • Arduino や PIC 等のように A/D 変換器を持つ場合 電圧値によって分岐する処理なのか • センサ等をつないで後はソフトウェアで対応可能 • 両方に共通して気にしておかなきゃいけないこと • ハードウェア対応 :: 発振,補償 etc...... • ソフトウェア対応 :: サンプリング速度 etc......

20.

必要に応じて使い分ける • アナログ電圧値を取り込む必要がある • LED やモーター等の出力を無段階に近い形で制御する場合 • 受けた入力そのものを記録・解析する必要がある場合 • 分岐する枝が多く回路を小さく仕上げたい場合 • 必ずしもアナログ電圧値を取り込む必要がない • LED やモーター等の出力を ON/OFF するだけ • 入力された値を一時的な処理に使用する場合

21.

必要に応じて使い分ける • アナログ電圧値を取り込む必要がある • LED やモーター等の出力を無段階に近い形で制御する場合 • 受けた入力そのものを記録・解析する必要がある場合 • 分岐する枝が多く回路を小さく仕上げたい場合 • 必ずしもアナログ電圧値を取り込む必要がない • LED やモーター等の出力を ON/OFF するだけ • 入力された値を一時的な処理に使用する場合 • 自分が作るモノに応じて構成を考えると実装しやすい

22.

Im p lemen t a t io n とりあえず作ってみよう

23.

今回考えるパターン • 暗いとき,明るいときで処理を分けたい • つまり二値判定で済むため,アナログ値は必要ない • マイコン側で処理を書くので,明暗の二値をマイコンに入力 • CdS と抵抗の分圧で明るさを検知する • 感度の調整はできるようにしたい • もしソフトウェアで感度調整したい場合はアナログ入力を受ける必要がある • ノイズの除去等の補償や保護は考えずに組む

24.

今回考えるパターン • 暗いとき,明るいときで処理を分けたい • つまり二値判定で済むため,アナログ値は必要ない • マイコン側で処理を書くので,明暗の二値をマイコンに入力 • CdS と抵抗の分圧で明るさを検知する • 感度の調整はできるようにしたい • もしソフトウェアで感度調整したい場合はアナログ入力を受ける必要がある • ノイズの除去等の補償や保護は考えずに組む • つまり 1 bit の A/D 変換器を回路で組もうということ

25.

今回考えるパターン

26.

今回考えるパターン 👇コンパレータ👇 【出力のルール】 + IN > - IN → Vcc + IN < - IN → Vee 【今回は以下のとおりにした】 Vcc = 5 V, Vee = GND

27.

今回考えるパターン 代わりにオペアンプでも 動作しないこともない → データシートを読んで判断

28.

今回考えるパターン 👈👈 可変抵抗で基準電圧を作る 👇 ここの電圧を決める 👇

29.

今回考えるパターン 👈👈 明るさを電圧に変換 👆 👆 ここの電圧が 明るさにより変動 👈👈👈👈 CdS とか環境光に あわせて調節する

30.

今回考えるパターン あとは入力 👉 するだけ 👉 動作させる 👉 デバイスに 👉 交換するもアリ 👉

31.

今回考えるパターン あとは入力 👉 するだけ 👉 動作させる 👉 デバイスに 👉 交換するもアリ 👉 出力をそのままマイコン等に入力するの もアリだとは思う(そこは状況に応じて コンパレータの出力インピーダンスの 影響で電圧が低くなってしまうこと等を 考えるとちょっと増幅したほうが確実?

32.

部品 7 つでアナログ入力を 1 つ節約できた! 今回考えるパターン

33.

部品 7 つでアナログ入力を 1 つ節約できた! 今回考えるパターン 妥協してる部分があるのでガチで考えるともうちょっと部品が必要になるけど動くことは動く

34.

雑なシミュレーションを LTSpice でやってみた 今回考えるパターン

35.

雑なシミュレーションを LTSpice でやってみた 今回考えるパターン 緑 = CdS での電圧変化,赤 = Arduino 入力,水色 = ベースにかかる電圧

36.

IN closing 最後にざっとまとめると

37.

実装方法を多く持つこと • ハードウェアで実装するか,ソフトウェアで実装するか選べる • A/D 変換器を持っているマイコン等でもどう実装するか選べる • コードの簡略化,回路の簡略化,処理速度,製作予算…… • もしかしたらハードウェアだけで完結するかもしれない • いちいちマイコンその他を持ち出してコードを書く必要がないかも • 無駄な処理が動かないので消費電力の面で見ても有利 • ただし回路自体が無駄に電流を流すようになってるとこれは無効化される • デバイスの ON/OFF だけならコンパレータでOK(マイコン不要

38.

実装方法を多く持つこと • A/D 変換の時間待ちを短縮する効果は得られそう • LM 393 のデータシートによると反応速度は 0.8 μs 以下 • http://akizukidenshi.com/download/ds/fairchild/LM393.pdf • マイコンで読む場合これにマイコンの読み取り時間が加わる • Arduino の digitalRead だと 3.5 μs から 5 μs ほどかかる • https://garretlab.web.fc2.com/arduino/lab/performance_io/ • Arduino の analogRead はデフォルトで 100 μs +α • マイコンの分周値を調整すると 7 μs 程度まで高速化可能らしい • これはソフトウェア側での読み取り処理も含んだ速度 • https://garchiving.com/speeding-up-analogread/

39.

Try t o u se a comparator コンパレータを使ってみよう Speaker :: @ tomio2480