{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "オリジナルの作成: 2014/12/20" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 08-オシロスコープを使ってみる\n", "Arduinoのもう一つの用途は、測定機器としての活用です。\n", "\n", "これまでできなかったことがArduinoによって簡単にできることをオシロスコープの例で 実感してみてください。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 九州工業大学の簡易オシロスコープを使ってみる\n", "オシロスコープは、信号を波形として表示する測定器です。 安い物でも10万円以上もすることから、電子工作に使うことが難しかった測定機器の一つです。\n", "\n", "九州工業大学の簡易オシロスコープの \n", "[公開ページ ](http://www.iizuka.kyutech.ac.jp/faculty/physicalcomputing/pc_kitscope/)\n", "にある以下のダウンロードサイトからkit_scope_20130222.zipをダウンロードします。\n", "\n", "- [kit_scopeダウンロードサイト](http://webdisk-i.isc.kyutech.ac.jp/public/EZPcwAvIoY7AXW0BTdxTZ7Cgb0yRl3HpF4WIR_4s_BEd)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Arduinoスケッチの書き込み\n", "zipファイルを展開するとArduinoとProcessingの2つのフォルダにkit_scopeというフォルダが ありますから、Arduinoの中のkit_scopeを~/Documents/Arduinoのフォルダに入れます。\n", "\n", "Arduinoを起動して、ファイル→スケッチブック→kit_scopeを選択して、スケッチをArduinoに 書き込みます。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Arduinoとの接続\n", "公開ページの接続図を以下に引用します。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## CR_積分回路を試す\n", "AnalogDiscoveryを試す/01-CR積分回路の回路にkit_scopeの1KHzのクロックを入れて、 どの程度の解像度が得られるのか試してみます。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Processingのkit_scopeの起動\n", "zipファイルを展開したProcessingの中のkit_scopeを~/Documents/Processingのフォルダに入れます。\n", "\n", "Processingを起動して、File→ScketchBook→kit_scopeを選択します。\n", "\n", "- MODE signalをクリックして、DUALにセット\n", "\n", "以下の様な波形が表示されます。これはまさに AnalogDiscoveryを試す/01-CR積分回路 でAnalogDiscoveryを使って測定した波形と同じで、ArduinoとProcessingを使ったオシロスコープ でもこんなにきれいな波形が表示できることに驚きました。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### CR積分回路の測定\n", "50Hz, 500Hz, 5kHzの波形は、特別なツールを用いるのではなく、もう一つのArduinoを使ったとても簡単なスケッチを使用しました。\n", "\n", "以下の様な回路を組みました。CR積分回路は、セラミックコンデンサーと抵抗でつくる簡単な物ですが、 理論やLTSpiceのシミュレーションと同じような波形が観測されました。\n", "\n", "\n", "\n", "信号を生成するArduino Mini Proのスケッチは、以下の様にしました。 delayMicrosecondsの値を10000, 1000, 100に変えることで、50Hz, 500Hz, 5kHzになります。 \n", "1\n", "\n", "```C++\n", "int out = 13;\n", "\n", "void setup() {\n", " pinMode(out, OUTPUT);\n", "}\n", "\n", "void loop() {\n", " digitalWrite(out, HIGH);\n", " delayMicroseconds(10000);\n", " digitalWrite(out, LOW);\n", " delayMicroseconds(10000);\n", "}\n", "```\n", "\n", "50Hz, 500Hzの波形は、以下の様になります。 非常に安価に、CR積分回路の挙動を視覚的に確認できることに驚きます。\n", "\n", "5KHzでは、ほとんど変化がありません。\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "\n", "ブレッドボードを使った実験の様子を以下に示します。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## トランジスタで作るNAND回路\n", "トラ技2004/09は、 \n", "[NANDゲートの手作りから始めるロジック設計の超入門!トランジスタで学ぶディジタル回路](http://toragi.cqpub.co.jp/tabid/231/Default.aspx)\n", "の特集でした。\n", "\n", "トランジスタを使ってNAND回路を組み立て、それを複数使った様々な回路を作っていくとても興味深い内容でした。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 信号生成ツールの波形\n", "最初にNANDの実験に使用する2種類の方形波を生成するGENSIGをオシロスコープで測定してみます。\n", "\n", "GENSIGの回路をトラ技2004/09の図2−13から引用します。この回路は74HC74のDフリップフロップ と74HC04のインバータを使った発振回路で周期が1:2の2つの方形波を生成しています。 RとCを調整することで、様々な周波数の波形を作れるのでとても便利です。\n", "\n", "\n", "\n", "この回路を以下の様なプリント基板に実装しました。\n", "2\n", "\n", "\n", "\n", "測定された波形は、以下の通りです。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### NAND回路\n", "NANDとは、AND回路の出力を反転(INV)した回路です。 NANDの真理表は、以下の様になります。\n", "\n", "| 入力1 | 入力2 | 出力 |\n", "|:-------:|:-------:|:-----:|\n", "| L | \tL | \tH |\n", "| L | \tH | \tH |\n", "| H | \tL | \tH |\n", "| H | \tH | \tL |\n", "\n", "LTSpiceを使ってNAND回路に周期2msの方形波(V1)と周期4msの方形波(V2)を入力したときの シミュレーションをしてみます。\n", "\n", "\n", "\n", "ちょっと見づらいですが、シミュレーションの結果は、真理表の通りなっており、V1とV2がHの場合に Lとなり、2msのところ\n", "3\n", "に、瞬間的にLになる「ひげ」が現れます。\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## トランジスタでNAND回路を作る\n", "トラ技2004/09で紹介されている1ゲート分のNANDをTTL(Transistor-Transistor Logic)で作った回路を図2-14から引用します。\n", "\n", "\n", "\n", "これを以下の様にブレッドボードに実装しました。\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ArduinoオシロスコープでNAND波形を測定\n", "以下の様に接続して、Arduinoオシロスコープを使って信号生成ツールから2つの方形波の NAND信号を表示してみました。\n", "\n", "\n", "\n", "Arduinoオシロスコープの波形です。2チャンネルしか表示できないので、2msのVin1とVoutを表示しています。 ひげもはっきり測定できます。\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 脚注\n", "\n", "- [1] スケッチを直接変更して周波数を変える方が、手早く実験できます\n", "- [2] 初めてEagleで作ったプリント基板です\n", "- [3] V1がL→H, V2がH→Lに変わる時" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }