Try to use a
c o m p a r a t o r
コンパレータを使ってみよう
Speaker :: @ tomio2480
北見市の
イメージ
はこう?
北見市は急な
ドカ雪が降る
2020/5/2
山の
水族館
メッカ
龍巳
$ w h o a m i
ジ コ シ ョ ウ カ イ
$ whoami
• Shota Nishihara ( @ tomio2480 )
• 高校教諭(電気) → セキュリティ人材育成 → 地方 IT コミュニティ
• 北海道(旭川→北見→富良野)→東京都(小平市)
• ゆるい勉強会@旭川,FuraIT (富良野),mintech (北見)
• Co-KoNPILe (小平市)
• 全国の IT コミュニティ行脚と応援を生きがいにしている
• 誰でも見られるものは Blog か SlideShare へ
$ whoami
• Shota Nishihara ( @ tomio2480 )
• 高校教諭(電気) → セキュリティ人材育成 → 地方 IT コミュニティ
• 北海道(旭川→北見→富良野)→東京都(小平市)
• ゆるい勉強会@旭川,FuraIT (富良野),mintech (北見)
• Co-KoNPILe (小平市)
• 全国の IT コミュニティ行脚と応援を生きがいにしている
• 誰でも見られるものは Blog か SlideShare へ
$ whoami
• Shota Nishihara ( @ tomio2480 )
• 高校教諭(電気) → セキュリティ人材育成 → 地方 IT コミュニティ
• 北海道(旭川→北見→富良野)→東京都(小平市)
• ゆるい勉強会@旭川,FuraIT (富良野),mintech (北見)
• Co-KoNPILe (小平市)
• 全国の IT コミュニティ行脚と応援を生きがいにしている
• 誰でも見られるものは Blog か SlideShare へ
$ whoami
• Shota Nishihara ( @ tomio2480 )
• 高校教諭(電気) → セキュリティ人材育成 → 地方 IT コミュニティ
• 北海道(旭川→北見→富良野)→東京都(小平市)
• ゆるい勉強会@旭川,FuraIT (富良野),mintech (北見)
• Co-KoNPILe (小平市)
• 全国の IT コミュニティ行脚と応援を生きがいにしている
• 誰でも見られるものは Blog か SlideShare へ
http://tomio2480.hatenablog.com/
https://www.slideshare.net/tomio2480/presentations
$ whoami
• Shota Nishihara ( @ tomio2480 )
• 高校教諭(電気) → セキュリティ人材育成 → 地方 IT コミュニティ
• 北海道(旭川→北見→富良野)→東京都(小平市)
• ゆるい勉強会@旭川,FuraIT (富良野),mintech (北見)
• Co-KoNPILe (小平市)
• 全国の IT コミュニティ行脚と応援を生きがいにしている
• 誰でも見られるものは Blog か SlideShare へ
http://tomio2480.hatenablog.com/
https://www.slideshare.net/tomio2480/presentations
どんな地域でも
ITとか電子工作とか勉強会が当たり前にある世界
に近づけばいいなと願うばかり🙏
B a c k g r o u n d
電 圧 の 値 で 処 理 を 分 け た い
電圧値による条件分岐
• Raspberry Pi 等のように A/D 変換器を持たない場合
• 外部に A/D 変換できる回路を組む必要がある
• 概ね I2C や SPI と言ったシリアル通信を用いて値をもらう
• Arduino や PIC 等のように A/D 変換器を持つ場合
• センサ等をつないで後はソフトウェアで対応可能
電圧値による条件分岐
• Raspberry Pi 等のように A/D 変換器を持たない場合
• 外部に A/D 変換できる回路を組む必要がある
• 概ね I2C や SPI と言ったシリアル通信を用いて値をもらう
• Arduino や PIC 等のように A/D 変換器を持つ場合
• センサ等をつないで後はソフトウェアで対応可能
• 両方に共通して気にしておかなきゃいけないこと
• ハードウェア対応 :: 発振,補償 etc......
• ソフトウェア対応 :: サンプリング速度 etc......
電圧値による条件分岐
• Raspberry Pi 等のように A/D 変換器を持たない場合
• 外部に A/D 変換できる回路を組む必要がある
• 概ね I2C や SPI と言ったシリアル通信を用いて値をもらう
• Arduino や PIC 等のように A/D 変換器を持つ場合
• センサ等をつないで後はソフトウェアで対応可能
• 両方に共通して気にしておかなきゃいけないこと
• ハードウェア対応 :: 発振,補償 etc......
• ソフトウェア対応 :: サンプリング速度 etc......
そもそも実装したいモノに本当に必要なのは
アナログの電圧値それ自体なのか
電圧値によって分岐する処理なのか
必要に応じて使い分ける
• アナログ電圧値を取り込む必要がある
• LED やモーター等の出力を無段階に近い形で制御する場合
• 受けた入力そのものを記録・解析する必要がある場合
• 分岐する枝が多く回路を小さく仕上げたい場合
• 必ずしもアナログ電圧値を取り込む必要がない
• LED やモーター等の出力を ON/OFF するだけ
• 入力された値を一時的な処理に使用する場合
必要に応じて使い分ける
• アナログ電圧値を取り込む必要がある
• LED やモーター等の出力を無段階に近い形で制御する場合
• 受けた入力そのものを記録・解析する必要がある場合
• 分岐する枝が多く回路を小さく仕上げたい場合
• 必ずしもアナログ電圧値を取り込む必要がない
• LED やモーター等の出力を ON/OFF するだけ
• 入力された値を一時的な処理に使用する場合
• 自分が作るモノに応じて構成を考えると実装しやすい
Implementation
と り あ え ず 作 っ て み よ う
今回考えるパターン
• 暗いとき,明るいときで処理を分けたい
• つまり二値判定で済むため,アナログ値は必要ない
• マイコン側で処理を書くので,明暗の二値をマイコンに入力
• CdS と抵抗の分圧で明るさを検知する
• 感度の調整はできるようにしたい
• もしソフトウェアで感度調整したい場合はアナログ入力を受ける必要がある
• ノイズの除去等の補償や保護は考えずに組む
今回考えるパターン
• 暗いとき,明るいときで処理を分けたい
• つまり二値判定で済むため,アナログ値は必要ない
• マイコン側で処理を書くので,明暗の二値をマイコンに入力
• CdS と抵抗の分圧で明るさを検知する
• 感度の調整はできるようにしたい
• もしソフトウェアで感度調整したい場合はアナログ入力を受ける必要がある
• ノイズの除去等の補償や保護は考えずに組む
• つまり 1 bit の A/D 変換器を回路で組もうということ
今回考えるパターン
今回考えるパターン
👇コンパレータ👇
【出力のルール】
+ IN > - IN → Vcc
+ IN < - IN → Vee
【今回は以下のとおりにした】
Vcc = 5 V, Vee = GND
今回考えるパターン
代わりにオペアンプでも
動作しないこともない
→ データシートを読んで判断
今回考えるパターン
👈👈 可変抵抗で基準電圧を作る
👇 ここの電圧を決める
👇
今回考えるパターン
👈👈👈👈 CdS とか環境光に
あわせて調節する
👆
👆 ここの電圧が
明るさにより変動
👈👈 明るさを電圧に変換
今回考えるパターン
あとは入力 👉
するだけ 👉
動作させる 👉
デバイスに 👉
交換するもアリ 👉
今回考えるパターン
出力をそのままマイコン等に入力するの
もアリだとは思う(そこは状況に応じて
コンパレータの出力インピーダンスの
影響で電圧が低くなってしまうこと等を
考えるとちょっと増幅したほうが確実?
あとは入力 👉
するだけ 👉
動作させる 👉
デバイスに 👉
交換するもアリ 👉
今回考えるパターン部品 7 つでアナログ入力を 1 つ節約できた!
今回考えるパターン部品 7 つでアナログ入力を 1 つ節約できた!
妥協してる部分があるのでガチで考えるともうちょっと部品が必要になるけど動くことは動く
今回考えるパターン
雑なシミュレーションを LTSpice でやってみた
今回考えるパターン
雑なシミュレーションを LTSpice でやってみた
緑 = CdS での電圧変化,赤 = Arduino 入力,水色 = ベースにかかる電圧
I N c l o s i n g
最 後 に ざ っ と ま と め る と
実装方法を多く持つこと
• ハードウェアで実装するか,ソフトウェアで実装するか選べる
• A/D 変換器を持っているマイコン等でもどう実装するか選べる
• コードの簡略化,回路の簡略化,処理速度,製作予算……
• もしかしたらハードウェアだけで完結するかもしれない
• いちいちマイコンその他を持ち出してコードを書く必要がないかも
• 無駄な処理が動かないので消費電力の面で見ても有利
• ただし回路自体が無駄に電流を流すようになってるとこれは無効化される
• デバイスの ON/OFF だけならコンパレータでOK(マイコン不要
実装方法を多く持つこと
• 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/
Try to use a
c o m p a r a t o r
コンパレータを使ってみよう
Speaker :: @ tomio2480

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