<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
>
<channel rdf:about="http://blog.livedoor.jp/hardyboy/">
<title>まごころせいじつ堂 - センサ</title>
<link>http://blog.livedoor.jp/hardyboy/</link>
<description>浜町庄金　研究開発
　マイコンで遊んでばっかりで

</description>
<dc:language>ja</dc:language>
<admin:generatorAgent rdf:resource="http://blog.livedoor.com/?v=2.0" />
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/8518954.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/7809465.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/7808056.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/7767936.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/7406009.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/7043767.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/6120926.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/6111809.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/6043471.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/5936655.html" />
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/5919043.html" />
 </rdf:Seq>
</items>
</channel>

<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/8518954.html">
<title>GY-302モジュールを使った簡単な照度計</title>
<link>http://blog.livedoor.jp/hardyboy/archives/8518954.html</link>
<description>　GY-302というモジュールを入手した。これにはロームのAmbient Light Sensor BH1750FVIで照度を測定しI2Cで読み出せる。　照度計に関しては秋月電子から入手できる浜松ホトニクスのS9705を使ってなんとかしようと思っていたが、タイマ関連の設定をもっと厳密にする必要があ...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2016-07-16T01:43:36+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[　GY-302というモジュールを入手した。これにはロームの<span  class="pl-c">Ambient Light Sensor BH1750FVIで照度を測定しI2Cで読み出せる。<br /><br />　照度計に関しては秋月電子から入手できる浜松ホトニクスのS9705を使ってなんとかしようと思っていたが、タイマ関連の設定をもっと厳密にする必要があって手を出せないでいた。<br /><a  href="http://blog.livedoor.jp/hardyboy/archives/8227534.html" target="_blank">S9705照度計をスケッチのみで/Arduino 1.6.6のシリアルプロッタ</a><br /><br />Arduino用のライブラリFlexTimer2では不正確な場合があり、以下の記事が参考になる。<br /><a  href="http://radiopench.blog96.fc2.com/blog-entry-652.html" target="_blank">FlexiTimer2の挙動の調査（Arduino)</a>(ラジオペンチ)<br /><br />　さて、GY-302モジュールならI2Cで読み取るだけということなので、簡単にできそうである。精度もセンサのばらつきにのみ左右される。ということでAmazon経由で購入。<br /><br /></span>
<table  border="0" cellpadding="5"><tbody><tr><td  valign="top"><a  href="http://www.amazon.co.jp/exec/obidos/ASIN/B011IGZD7E/keisanki-22/" target="_top"><img  src="http://ecx.images-amazon.com/images/I/41iPc7q7UhL._SL160_.jpg" alt="GY-302 BH1750 光照度照明モジュール [並行輸入品]" border="0"></a></td><td  valign="top"><span><a  href="http://www.amazon.co.jp/exec/obidos/ASIN/B011IGZD7E/keisanki-22/" target="_top">GY-302 BH1750 光照度照明モジュール [並行輸入品]</a><br /><br />Phishine  <br />売り上げランキング : 27339<br /><br /><a  href="http://www.amazon.co.jp/exec/obidos/ASIN/B011IGZD7E/keisanki-22/" target="_top">Amazonで詳しく見る</a></span><span> by <a  href="http://www.goodpic.com/mt/aws/index.html">G-Tools</a></span></td></tr></tbody></table><br />　BH1740FVI資料。Typ 3.0V動作、I2C。<br /><a  href="http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/light/bh1750fvi-e.pdf" target="_blank">http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/light/bh1750fvi-e.pdf</a><br /><br />　GY-302モジュール資料。Vcc 5V入力をLDOで3.3Vに変換しBH1740FVIの電源にしている。SCL/SDAはプルアップ付き。I2Cのアドレスを設定するADDRはプルダウンされている。<br /><a  href="http://www.nyplatform.com/index.php?route=product/product&amp;product_id=674" target="_blank">BH1750 BH1750FVI Digital Light intensity Sensor Module For AVR Arduino 3V 5V</a><br /><br />　ライブラリと作例も見つかった。ほぼそのまま使用する。<br /><a  href="https://cmosgr.wordpress.com/2013/09/02/bh1750fvi-gy-302-light-sensor-module/" target="_blank">bh1750fvi (GY-302) Light Sensor Module</a>(Simple Arduino Skeches)<br /><br />　GY-302モジュールをそのままArduinoの端子に差し込んでみた。SCLをA5、SDAをA4になるようにさしてVccとGNDは無理やりワイヤで接続、ADDRはA3にささるのでピンの設定でGNDに落とした。<br /><br />　スケッチはこちら。<br /><a  href="https://gist.github.com/houmei/60255efe8029ca7a79e51a9c698a34ab" target="_blank">https://gist.github.com/houmei/60255efe8029ca7a79e51a9c698a34ab</a><br /><br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/c/e/ce06c83e.jpg" title="2016-GY302" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/c/e/ce06c83e-s.jpg" alt="2016-GY302" class="pict" height="360" hspace="5" border="0" width="480"></a><br /><br />　MacOSX10.10.5 / Arduino IDE 1.0.6にBH1750ライブラリを置く。ターゲットはDuemilanove w/ATmega328互換の<a  href="http://www.elecrow.com/wiki/index.php?title=Crowduino_v1.1" target="_blank">Crowduino</a>。秋月電子で扱っている<a  href="http://akizukidenshi.com/catalog/g/gM-05906/" target="_blank">デジタル照度計　ＬＸ－１０１０Ｂ</a>とだいたい同じ照度を表示することを確認。<br />　BH1750ライブラリ自体はArduino固有の操作をやっているわけではなく単にI2Cの送受信なので他のマイコンに持っていくのも簡単そう。<br /><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/7809465.html">
<title>赤外線受信モジュールのばらつきと対策</title>
<link>http://blog.livedoor.jp/hardyboy/archives/7809465.html</link>
<description>　前回の実験の続き。今度はデータシートにあるノイズ対策をやってみた。ちょっと見てみよう。

　Vcc-GND間に電源安定用のコンデンサ、R2はダンピング抵抗と思われる。ダンピング抵抗について：第6回 ダンピング抵抗の値ってどのように決めるの (elspear)R1はプルアップ抵抗...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2015-02-20T01:32:53+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[　<a  href="http://blog.livedoor.jp/hardyboy/archives/7808056.html" target="_blank">前回の実験</a>の続き。今度はデータシートにあるノイズ対策をやってみた。ちょっと見てみよう。<br /><br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/0/8/08d20a4c.jpg" title="2015IRtest1" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/0/8/08d20a4c-s.jpg" alt="2015IRtest1" class="pict" align="left" height="360" hspace="5" border="0" width="480"></a><br />
<br  clear="all">
<br />　Vcc-GND間に電源安定用のコンデンサ、R2はダンピング抵抗と思われる。<br /><br />ダンピング抵抗について：<a  href="http://www.elsena.co.jp/elspear/specialist_column/technology_column6.html" target="_blank">第6回 ダンピング抵抗の値ってどのように決めるの </a>(elspear)<br /><br />R1はプルアップ抵抗の様に見えるが<br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/c/b/cb693e3f.jpg" title="2015IRtest2" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/c/b/cb693e3f-s.jpg" alt="2015IRtest2" class="pict" align="left" height="360" hspace="5" border="0" width="480"></a><br />
<br  clear="all">
　赤外線受信モジュールの出力はこのようになっているので、内部のプルアップ抵抗にパラに22KΩをつないだようになる。赤外線受信モジュールのVcc-Vout間を測定すると25KΩ〜30KΩ台だったので、約10KΩくらいになる。V=IRなのでこの部分にノイズ源となる電流が流れるとRが大きいほどノイズとなるVも大きくなる。<br />デメリット：5V電源で内部30KΩとすると待機時に約0.17mA、10KΩになると0.5mA流れることになる。<br /><br /><a  href="http://www.tritech.tv/column/600ld.html" target="_blank"> コラム： インピーダンスの話</a>(TRITECH)<br /><br />こんな感じで対策回路を組み込んだ基板を作り、前回と同じ条件で実験した。<br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/4/7/476cfed8.jpg" title="2015IRtest0" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/4/7/476cfed8-s.jpg" alt="2015IRtest0" class="pict" align="left" height="360" hspace="5" border="0" width="480"></a><br />
<br  clear="all">
<br /><br />で、結果は以下のとおり。(クリックで拡大)<br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/5/7/570d3338.png" title="2015IR-receive" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/5/7/570d3338-s.png" alt="2015IR-receive" class="pict" align="left" height="340" hspace="5" border="0" width="480"></a><br />
<br  clear="all">
<br />　対策後は認識率が上がっている。同じ種類のモジュール(秋月モールド、秋月シールド有り、ノーブランドシールド有り)それぞれ2個ずつ試したがモジュール間の差というよりは個別のばらつきが大きいように思える。そう言い切るためにはもっとたくさんの個数で調査しないといけないが手持ちはこれだけなので。<br />　ノイズ対策回路の効果は確認できたので、今回の用途ではその回路を組み込み、赤外線受信モジュールは選別品を使うことにする。<br /><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/7808056.html">
<title>赤外線受信モジュールのばらつき</title>
<link>http://blog.livedoor.jp/hardyboy/archives/7808056.html</link>
<description>　赤外線リモコンの信号を受け取ることができる赤外線モジュール、試してみたら受信がうまくできるものとできないもの、ばらつきがあるように感じたので実験してみた。　ソフトウェアはArduino用のライブラリを使用した。以下の記事を参照。ATmega32U4のArduino Leonardo系で...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2015-02-19T02:38:42+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[　赤外線リモコンの信号を受け取ることができる赤外線モジュール、試してみたら受信がうまくできるものとできないもの、ばらつきがあるように感じたので実験してみた。<br /><br />　ソフトウェアはArduino用のライブラリを使用した。以下の記事を参照。ATmega32U4のArduino Leonardo系でも動く。<br /><a  href="http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html" target="_blank">A Multi-Protocol Infrared Remote Library for the Arduino</a>(Ken Shirriff's blog)<br /><br />受信側環境：<br /><br />MacOSX 10.10 Yosemite + Arduino IDE 1.0.6<br />IRrecvDemoのサンプルスケッチを使用。赤外線モジュールの信号はPin11に接続。<br />USB電源を本体から供給<br />Arduino Leonardo互換機 <a  href="https://www.switch-science.com/catalog/1561/" target="_blank">Seeeduino Lite</a><br /><br />赤外線受信モジュール：<br />(1)<a  href="http://akizukidenshi.com/catalog/g/gI-06491/" target="_blank">赤外線リモコン受信モジュール　ＰＬ－ＩＲＭ２１６１－ＸＤ１（２個入）</a>(秋月電子)<br />(2)<a  href="http://akizukidenshi.com/catalog/g/gI-04659/" target="_blank">赤外線リモコン受信モジュールＯＳＲＢ３８Ｃ９ＡＡ（２個入）</a>(秋月電子)<br />(3)ノーブランド品<br />(4)<a  href="https://www.switch-science.com/catalog/910/" target="_blank">GROVE - 赤外線受信器</a><br /><br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/b/c/bc273019.jpg" title="2015IRmodule" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/b/c/bc273019-s.jpg" alt="2015IRmodule" class="pict" height="360" hspace="5" align="left" border="0" width="480"></a><br  clear="all">
<br />送信側環境：<br />テレビ用リモコン ELPA RC-TV005ST サンヨー1241モード設定<br />約2m離れた距離から左手で[1]〜[12]キーを順に押す、これを10セット<br /><br />室内蛍光灯を点灯した状態と消灯した状態で実験する。<br /><br />リモコンのボタンを押すと対応したコードが4バイトの16進数で表示される。これを採取し、[1]〜[12]に対応するコードを正常、その他をエラーとして受信が成功する割合をだした。awkのスクリプトは以下。<br /><a  href="https://gist.github.com/houmei/54843bfed64079e1aa92" target="_blank">https://gist.github.com/houmei/54843bfed64079e1aa92</a><br /><br />さて、結果。-a,-bは二個同じ種類があったのでそれぞれ実験した。数値は蛍光灯下と蛍光灯を消した状態。<br /><br />(1-a) 0.825175 0.726115<br />(1-b) 0.8125 0.77027<br />(2-a) 0.746575 0.538462<br />(2-b) 0.886364 0.789474<br />(3-a) 0.709924 0.754098<br />(3-b) 0.952381 0.902256<br />(4) 0.659574 0.588608<br /><br />　6割を切っているものがある。"FFFFFFFF"のコードはキーが連続で押された状態。[1]〜[12]のキーを押した時には実際は連続しないのだが、これを弾くと：<br /><br />(1-a) 0.991597 0.904762<br />(1-b) 0.983193 0.844444<br />(2-a) 0.908333 0.636364<br />(2-b) 0.991525 0.913043<br />(3-a) 0.781513 0.760331<br />(3-b) 0.991736 0.991736<br />(4) 0.853211 0.699248<span  style="font-style: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; font-feature-settings: normal; font-language-override: normal; font-kerning: auto; font-synthesis: weight style; font-variant: no-common-ligatures; font-family: Menlo;"></span><span  style="font-style: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; font-feature-settings: normal; font-language-override: normal; font-kerning: auto; font-synthesis: weight style; font-variant: no-common-ligatures; font-family: Menlo;"></span><br /><br />なぜか蛍光灯を消した状態で成功率が下がっている。ひょっとしたらパソコンの液晶画面、つけっぱなしだったのでその影響か？<br />同じ種類でもばらつきがある。特に(2)と(3)はシールドされているタイプ。(4)は回路込みなのだが成功率が低い。<br /><br />さてどうしようか。調べてみたら<a  href="http://cba.sakura.ne.jp/sub04/jisaku37.htm" target="_blank">4.3 赤外線リモコン改善(その２)</a>(電気電子工作の部屋)で、電源ラインにフィルタを入れたとある。今回の実験ではデータシートの推奨回路は使わず直結でやったので、次回やってみる。<br /><br />

<table  border="0" cellpadding="5"><tbody><tr><td  valign="top"><a  href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CJ4XFT8/keisanki-22/" target="_top"><img  src="http://ecx.images-amazon.com/images/I/41ZMlWx-c6L._SL160_.jpg" alt="GROVE - 赤外線受信器" border="0"></a></td><td  valign="top"><span  style=""><a  href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CJ4XFT8/keisanki-22/" target="_top">GROVE - 赤外線受信器</a><br /><br />スイッチサイエンス  <br />売り上げランキング : 138208<br /><br /><a  href="http://www.amazon.co.jp/exec/obidos/ASIN/B00CJ4XFT8/keisanki-22/" target="_top">Amazonで詳しく見る</a></span><span  style=""> by <a  href="http://www.goodpic.com/mt/aws/index.html">G-Tools</a></span></td></tr></tbody></table>]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/7767936.html">
<title>メモ　赤外線受信</title>
<link>http://blog.livedoor.jp/hardyboy/archives/7767936.html</link>
<description>　Seeed StudioのGrove - Infrared Receiverの動作確認をした。動かしただけなのでメモ。Grove - Infrared Receiver (Seeed Wiki)ライブラリのソースはこちら。https://github.com/Seeed-Studio/IRSendRevサンプルのrevTestで動作確認。受光器に向けてリモコンのボタンを押す...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2015-01-22T01:48:35+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[　Seeed Studioの<a  href="http://www.seeedstudio.com/depot/grove-infrared-receiver-p-994.html?cPath=139_204" target="_blank">Grove - Infrared Receiver</a>の動作確認をした。動かしただけなのでメモ。<br /><br /><a  href="http://www.seeedstudio.com/wiki/Grove_-_Infrared_Receiver" target="_blank">Grove - Infrared Receiver</a> (Seeed Wiki)<br />ライブラリのソースはこちら。<br /><a  href="https://github.com/Seeed-Studio/IRSendRev" target="_blank">https://github.com/Seeed-Studio/IRSendRev</a><br /><br />サンプルのrevTestで動作確認。受光器に向けてリモコンのボタンを押すと数値がでる。<br /><br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/3/1/316508cd.jpg" title="2015Ir" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/3/1/316508cd-s.jpg" alt="2015Ir" class="pict" align="left" height="360" hspace="5" border="0" width="480"></a><br />
<br  clear="all">
<br />　以上はArduino Unoで確認したが、Arduino Leonardoではライブラリをコンパイルする時にエラーとなった。<br /><br />　別のソースを試してみる。<br /><br /><a  href="http://www.geocities.jp/zattouka/GarageHouse/micon/InfraredCOM/InfraredCOM2.htm" target="_blank">赤外線通信の実験パート２（赤外線リモコンを送信機にして何か動かす）</a>(きむ茶工房ガレージハウス)<br /><br />こちらはスケッチのみなのでArduino Uno/Arduino Leonardoともに動いた。ただしたまに数値の受信が抜けることがあった。<br /><br /><br /><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/7406009.html">
<title>センサ類のメモ　これまでやったものとこれからやりたいもの</title>
<link>http://blog.livedoor.jp/hardyboy/archives/7406009.html</link>
<description>　センサ類を色々使ってきたのでちょっと整理。最近はSeeed StudioのGROVE Systemがいいかなと思っている。GROVEは4PのコネクタにVcc,GND,信号2本をつなぐ約束で色々なデバイスの実験が簡単に出来るもの。センサは基本的に端子が少なく、毎回Arduino用のシールドで作らなくて...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2014-07-18T05:00:47+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[　センサ類を色々使ってきたのでちょっと整理。最近は<a  target="_blank" href="http://www.seeedstudio.com/wiki/GROVE_System">Seeed StudioのGROVE System</a>がいいかなと思っている。GROVEは4PのコネクタにVcc,GND,信号2本をつなぐ約束で色々なデバイスの実験が簡単に出来るもの。センサは基本的に端子が少なく、毎回Arduino用のシールドで作らなくてもGROVE用のelementとして工作したら組み合わせて使用できる。<br /><br />センサ一覧(部品屋の扱いから)<br /><br /><a  target="_blank" href="http://akizukidenshi.com/catalog/c/csensor/">秋月電子＞センサ一般</a><br /><a  target="_blank" href="http://eleshop.jp/shop/c/c1107/">共立エレショップ＞センサ</a><br /><a  target="_blank" href="http://eleshop.jp/shop/c/c1108/">共立エレショップ＞センサボード</a><br /><a  target="_blank" href="http://www.sengoku.co.jp/mod/sgk_cart/search.php?cid=3503">千石電商＞センサー</a><br /><a  target="_blank" href="http://strawberry-linux.com/?q=%A5%BB%A5%F3%A5%B5">ストロベリー・リナックス＞センサ</a><br /><br /><br /><span  style="font-size: 13px;">・ロケーション</span><br />
<span  style="font-size: 13px;">GPS GM318B</span><br />
<span  style="font-size: 13px; color: rgb(4, 46, 238);"><u><a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/7345515.html">http://blog.livedoor.jp/hardyboy/archives/7345515.html</a></u></span><br />
<span  style="font-size: 13px;"></span><br />
<span  style="font-size: 13px;">・超音波距離センサ HC-SR04</span><br />
<span  style="font-size: 13px; color: rgb(4, 46, 238);"><u><a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/7043767.html">http://blog.livedoor.jp/hardyboy/archives/7043767.html</a></u></span><br />
<span  style="font-size: 13px;"></span><br />
<span  style="font-size: 13px;">・温度センサ LM35DZ</span><br />
<span  style="font-size: 13px; color: rgb(4, 46, 238);"><u><a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/6111809.html">http://blog.livedoor.jp/hardyboy/archives/6111809.html</a></u></span><br />
<span  style="font-size: 13px;"></span><br />
<span  style="font-size: 13px;">・照度センサ S9705</span><br />
<span  style="font-size: 13px; color: rgb(4, 46, 238);"><u><a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/6543874.html">http://blog.livedoor.jp/hardyboy/archives/6543874.html</a></u></span><br />
<span  style="font-size: 13px;"></span><br />
<span  style="font-size: 13px;">・キーマトリックス</span><br />
<span  style="font-size: 13px; color: rgb(4, 46, 238);"><u><a  target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/6288074.html">http://blog.livedoor.jp/hardyboy/archives/6288074.html</a></u></span><br />
<span  style="font-size: 13px;"></span><br />
<span  style="font-size: 13px;">・CdS</span><br /><span  style="font-size: 13px;">・曲げ</span><br />
<span  style="font-size: 13px;">・傾き</span><br />
<span  style="font-size: 13px;">・加速度</span><br />
<span  style="font-size: 13px;">・気圧</span><br />
<span  style="font-size: 13px;">・湿度</span><br />
<span  style="font-size: 13px;">・湿気(端子を植木鉢に差す)</span><br />
<span  style="font-size: 13px;">・におい</span><br />
<span  style="font-size: 13px;">・地磁気</span><br />
<span  style="font-size: 13px;">・カラー</span><br />
<span  style="font-size: 13px;">・赤外線</span><br />
<span  style="font-size: 13px;">・紫外線</span><br />
<span  style="font-size: 13px;">・視覚(カメラ)</span><br />
<span  style="font-size: 13px;">・音声(マイク)</span><br /><span  style="font-size: 13px;">・プッシュスイッチ</span><br /><span  style="font-size: 13px;">・ロータリーエンコーダ</span><br /><span  style="font-size: 13px;">・PS/2キーボード</span><br /><br />※スイッチ類も含めてみた<br /><br /><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/7043767.html">
<title>超音波距離センサ HC-SR04を1ピンで使う</title>
<link>http://blog.livedoor.jp/hardyboy/archives/7043767.html</link>
<description>　超音波距離センサモジュール HC-SR04というのがある。なぜかAmazonで安かった。HC-SR04 Demo For Arduino HC-SR04 User Guide[PDF] 　TRIG端子にパルスを与えると距離に応じた時間の後ECHO端子に信号がでる。電源を除くと2端子必要。が、Groveの超音波距離センサモジュー...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2014-01-13T22:23:24+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[　超音波距離センサモジュール HC-SR04というのがある。なぜかAmazonで安かった。<br /><a  href="http://www.elecfreaks.com/244.html" target="_blank">HC-SR04 Demo For Arduino</a>&nbsp;<br /><a  href="http://www.elecfreaks.com/store/download/product/Sensor/HC-SR04/HC-SR04_Ultrasonic_Module_User_Guide.pdf" target="_blank">HC-SR04 User Guide</a>[PDF]&nbsp;<br /><br />　TRIG端子にパルスを与えると距離に応じた時間の後ECHO端子に信号がでる。電源を除くと2端子必要。が、Groveの超音波距離センサモジュールのライブラリが使えないかと眺めていたら1端子しか使っていない。同じものに見えるのに？<br /><a  href="http://www.switch-science.com/catalog/1383/" target="_blank">GROVE - 超音波距離センサモジュール</a>&nbsp;<br /><br />　TRIG端子とECHO端子をショートさせたらどうだろうかと考えたが発振してしまうように思える。調べてみたら抵抗で繋げてしまえばいいらしい。<br /><a  href="http://letsmakerobots.com/node/36885" target="_blank">Hack your HC-SR04 into one pin mode</a>&nbsp;<br /><a  href="http://www.picaxeforum.co.uk/showthread.php?22639-HC-SR04&amp;p=223675&amp;viewfull=1#post223675" target="_blank">ForumMain PICAXE ForumActive PICAXE Forum HC-SR04</a>&nbsp;<br />これらによると 1.8KΩの抵抗で TRIGと ECHOを接続し、TRIG端子を使えば良いとのこと。手持ちの2.2KΩで試してみた。<br /><br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/8/a/8a60dcba.jpg" title="2014grove1" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/8/a/8a60dcba-s.jpg" width="480" height="360" border="0" alt="2014grove1" hspace="5" class="pict" align="left"></a><br  clear="all">
<br /><br /><a  target="_blank" title="2014grove2" href="http://livedoor.blogimg.jp/hardyboy/imgs/4/e/4e18f3df.jpg"><img  align="left" class="pict" hspace="5" alt="2014grove2" border="0" height="360" width="480" src="http://livedoor.blogimg.jp/hardyboy/imgs/4/e/4e18f3df-s.jpg"></a><br  clear="all">

<br />これをGroveのケーブルで接続する。<br /><br /><a  href="http://livedoor.blogimg.jp/hardyboy/imgs/f/0/f06f7414.jpg" title="2014grove3" target="_blank"><img  src="http://livedoor.blogimg.jp/hardyboy/imgs/f/0/f06f7414-s.jpg" width="480" height="360" border="0" alt="2014grove3" hspace="5" class="pict" align="left"></a><br  clear="all">&nbsp;<br /><br />　ライブラリは Grove用のものをそのまま使った。<br /><a  target="_blank" href="https://github.com/Seeed-Studio/Grove_Ultrasonic_Ranger">Seeed-Studio / Grove_Ultrasonic_Ranger</a>&nbsp;[Github]<br /><br />注意：Githubからzipでまとめてダウンロードすると後ろに-masterが付くがArduino IDEのライブラリ名はハイフンを許さないので削除<br /><br />　ライブラリインストール後、UltraSonicDisplayOnTermスケッチを使って確認。<br />ソース中、距離をインチで取得する部分とセンチメートルで取得する部分があるが、この間にディレイを適当に入れてやらないと後に書いたほうが0を返す。ひょっとしたらGroveのセンサと非互換の箇所かもしれない。<br /><br /><div><span  style="white-space:pre">	</span>RangeInInches = ultrasonic.MeasureInInches();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; delay(100);　←これ</div><div><span  style="white-space:pre">	</span>RangeInCentimeters = ultrasonic.MeasureInCentimeters();</div><div><br />ということで2ピン必要なところを1ピンにケチることができた。</div><br /><br /><br />
<table  border="0" cellpadding="5"><tbody><tr><td  valign="top"><a  href="http://www.amazon.co.jp/exec/obidos/ASIN/B004U8TOE6/keisanki-22/" target="_top"><img  src="http://ecx.images-amazon.com/images/I/51tbSvuOcAL._SL160_.jpg" border="0" alt="HC-SR04 超音波距離センサーモジュール For Arduino"></a></td><td  valign="top"><span><a  href="http://www.amazon.co.jp/exec/obidos/ASIN/B004U8TOE6/keisanki-22/" target="_top">HC-SR04 超音波距離センサーモジュール For Arduino</a><br /><br />サインスマート（SainSmart）  <br />売り上げランキング : 4897<br /><br /><a  href="http://www.amazon.co.jp/exec/obidos/ASIN/B004U8TOE6/keisanki-22/" target="_top">Amazonで詳しく見る</a></span><span> by <a  href="http://www.goodpic.com/mt/aws/index.html">G-Tools</a></span></td></tr></tbody></table>

<br />&nbsp;]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/6120926.html">
<title>A/Dコンバータの勘違い(植木算)とLM35DZを使った場合の誤差</title>
<link>http://blog.livedoor.jp/hardyboy/archives/6120926.html</link>
<description>植木算 -Wikipedia　Arduino(ATmega328や32U4)のADCはAREFで与えられた基準電圧を0〜1023の値で取得できる。何も考えずに分解能10bit、1024で割っていたが本当は1024-1だった。※追記：なんか考えてたら分解能による限界のような気もしてきましたがいちおうこのままで出して...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-12-04T00:55:01+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[<div><a  target="_blank" href="http://ja.wikipedia.org/wiki/%E6%A4%8D%E6%9C%A8%E7%AE%97">植木算 -Wikipedia</a><br /><br />　Arduino(ATmega328や32U4)のADCはAREFで与えられた基準電圧を0〜1023の値で取得できる。何も考えずに分解能10bit、1024で割っていたが本当は1024-1だった。<br />※追記：なんか考えてたら分解能による限界のような気もしてきましたがいちおうこのままで出しておきます<br />&nbsp;</div><div>やばい。とある装置は今日持っていったばっかりで手元にないので検算してみる。ツッコミ大歓迎。</div><br /><div>※追記 2021.9.5</div><div><a  target="_blank" href="https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf">ATMega328Pのデータシート</a>を参照</div><blockquote><div><span  class="css-901oao css-16my406 r-1tl8opc r-bcqeeo r-qvutc0">23.7 ADC Conversion</span></div><div><span  class="css-901oao css-16my406 r-1tl8opc r-bcqeeo r-qvutc0">Result
"0x000 represents analog ground, and 0x3FF represents the selected reference voltage minus one"</span></div></blockquote><div>10年誤解してた。÷1024でいいんだ。ォァー<br /></div><br /><br /><div>AREFが1.1V(INTERNAL)、3.3V(EXTERNAL)、5V(EXTERNAL)の場合の1ステップあたりの電圧を計算した。有効数字は6桁で計算。</div><br /><div>1.1V ÷ 1024 ＝ 1.07422mV (誤り) ×1000すると1.07422V</div><div>1.1V ÷ 1023 ＝ 1.07527mV (正しい) ×1000すると1.07527V</div><div>※1023が示す電圧の範囲は、1.07527V〜1.10000V</div><br /><div>1.1Vで 1.05mVの差</div><br /><div>3.3V ÷ 1024 ＝ 3.22266mV (誤り) ×1000すると3.22266V</div><div>3.3V ÷ 1023 ＝ 3.22581mV (正しい) ×1000すると3.22581V</div><div>※1023が示す電圧の範囲は、3.22581V〜3.30000V</div><br /><div>3.3Vで 3.15mVの差</div><br /><div>5.0V ÷ 1024 ＝ 4.88281mV (誤り) ×1000すると4.88281V</div><div>5.0V ÷ 1023 ＝ 5.00489mV (正しい) ×1000すると4.88759V</div><div>※1023が示す電圧の範囲は、4.88759V〜5.00000V</div><br /><div>5.0Vで 4.78mVの差</div><br /><div>今回はAREFで3.3Vを使用、LM35DZは1℃あたり10mV。</div><div>10〜50℃あたりで使用することを考えると、100mVから500mVを観測することになる。</div><div>値が大きいほど誤差は大きくなるので、500mVで考える。</div><br /><div>誤ったプログラム 500mV ÷ 3.22266mV ＝ 155.15.. 表示値は156 (切り上げだから)</div><div>正しいプログラム 500mV ÷ 3.22851mV ＝ 154.87.. 表示値は155になるはず</div><br /><div>&nbsp;156(誤った値) × 3.22581mV(正しい1ステップあたりの電圧) ＝ 503.226mV</div><div>その差 3.226mV → 間違ったプログラムでは50℃付近で約0.3℃高く表示される。</div><br /><div>で、いま使ってるセンサLM35DZの誤差は25℃付近で±1.5℃、Typ±0.6℃。グレードが低いのは承知の上で使っているので±2℃程度は気にしない。</div><br /><div>ということで室温の範囲内なら問題ないでしょう。</div><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/6111809.html">
<title>LM35DZを複数繋いだ温度ロガーと誤差</title>
<link>http://blog.livedoor.jp/hardyboy/archives/6111809.html</link>
<description>温度センサLM35DZを複数個繋いだロガーやっとできた。これまでの記事：LM35DZを複数つないだ時の問題　お詫びとハードでの解決
温度センサLM35DZを複数Arduinoに繋いだ時のトラブル
LM35DZによる温度測定とanalogReference()マイコン風雲録さんのanalogReadEx()関数で解決し...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-12-01T00:16:18+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[温度センサLM35DZを複数個繋いだロガーやっとできた。<br /><br />これまでの記事：<br /><a href="http://blog.livedoor.jp/hardyboy/archives/6043471.html" target="_blank">LM35DZを複数つないだ時の問題　お詫びとハードでの解決<br />
</a><a href="http://blog.livedoor.jp/hardyboy/archives/5936655.html" target="_blank">温度センサLM35DZを複数Arduinoに繋いだ時のトラブル<br />
</a><a target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/5919043.html">LM35DZによる温度測定とanalogReference()<br /></a><br />マイコン風雲録さんのanalogReadEx()関数で解決しました。ありがとうございました。<br /><a href="http://avr.paslog.jp/article/2553893.html" target="_blank">Arduino:温度センサー Processing + Firmata LM61BIZとLM35DZとDS18B20のメモ</a>[マイコン風雲録]<br /><br />Arduino UNOのA0〜A5ポートにLM35DZを接続。信号線は10KΩでGNDに。<br /><br />　ログ時刻はRTCをつないで頑張るつもりだったが、Arduino UNOではI2Cの端子がアナログポートとかぶるのであきらめた。Arduino Microだとアナログポートはたくさんあるし次はこれ使おう。<br />で、肝心のタイムスタンプはTeraTermに任せた。ログを取るときに□タイムスタンプのチェックボックス入れるか、teraterm.ini内のLogTimestamp=onにする。<br />参考：<br /><a target="_blank" href="http://yoshi7.blogspot.jp/2011/06/teraterm.html">TeraTermログの行毎に自動的にタイムスタンプを付与する</a><br /><br />※追記：@maris_HYさんにSPI接続のRTC教えてもらいました。<br /><a href="http://www.switch-science.com/products/detail.php?product_id=539" target="_blank">DS3234搭載のリアルタイムクロック・モジュール</a><br /><br />以下を追加・修正した。<br />・Setup()内で5秒の待ち。シリアルモニタ(TeraTerm等)を立ち上げる時間を待つため<br />・別のセンサを付けることを考慮して、A0〜A5ポートの入れ替えを最初のほうで定義した。<br />・温度測定の結果は先頭に連番を付けるようにした<br />・Arduinoが生きているかどうか分かるようLEDを点滅させる処理を追加<br />・LM35DZセンサの誤差を補正できるようにした(Adj[]で定義)<br /><br />さて、これで安定して測定できるようになったが、温度センサを一箇所にまとめても数℃の誤差が出る。これはセンサについてまわるので素子のばらつきと思われる(安いグレードだし)が、ADCの基準電圧が内部リファレンス1.1Vと外部リファレンス3.3Vではどう違うだろうか。<br /><br />ADCの基準電圧1.1Vと3.3Vについて200回測定し、平均を求めた。<br /><div>$ gawk -f 20121130.awk lm35dz1v1.txt</div><div>AVG1= 188.02</div><div>AVG2= 190.65</div><div>AVG3= 193.33</div><div>AVG4= 191.77</div><div>AVG5= 192.27</div><div>AVG6= 194.555</div><br /><div>1.1V÷1024で分解能は1.07mV</div><div>6.54ステップのゆらぎ 約7.00mV</div><br /><div>$ gawk -f 20121130.awk lm35dz3v3.txt</div><div>AVG1= 60.2977</div><div>AVG2= 61.1395</div><div>AVG3= 61.4512</div><div>AVG4= 61.214</div><div>AVG5= 60.9488</div><div>AVG6= 61.8791</div><br /><div>3.3V÷1024で分解能は3.22mV</div><div>1.58ステップのゆらぎ 約5.10mV</div><br />　ということで、ATmega328の内部1.1Vよりも外部の定電圧レギュレータによる3.3Vの方がより正確。外部5Vも使えるが、USBから給電して使う場合はそちらに影響されるので3.3V参照のほうがよさそう。<br />　または、基準1.1Vの方がセンサの誤差に対してより敏感なのかも。ちょっとこの辺はLM35DZの良いグレードの品で比較しないといけないんだろうけど資本切れです。<br /><br /><br />プログラムはこちら。<br />※analogReference()の箇所がINTERNALになってますが3.3V参照ではEXTERNALでした。ただしINTERNAL設定でもAREFにかかっている電圧が優先になるようです。<br /><br /><a href="https://gist.github.com/4176111" target="_blank">https://gist.github.com/4176111</a><br />

<script src="https://gist.github.com/4176111.js"> </script><br />

<br /><a target="_blank" title="20121201terrmal" href="http://livedoor.blogimg.jp/hardyboy/imgs/6/e/6e63a903.png"><img class="pict" hspace="5" alt="20121201terrmal" border="0" height="172" width="480" src="http://livedoor.blogimg.jp/hardyboy/imgs/6/e/6e63a903-s.png"></a><br /><br />一晩測ってExcelに持っていった。おおよそ期待通り。上がったりしている箇所はストーブを使った時間。]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/6043471.html">
<title>LM35DZを複数つないだ時の問題　お詫びとハードでの解決</title>
<link>http://blog.livedoor.jp/hardyboy/archives/6043471.html</link>
<description>前回の続き。温度センサLM35DZを複数Arduinoに繋いだ時のトラブル
こちらの方がADCの動作を考慮した読み捨ての回数を記事にされていた。Arduino:温度センサー Processing + Firmata LM61BIZとLM35DZとDS18B20のメモ[マイコン風雲録]ログを分析しようとしててあっと気付いた。...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-11-02T11:37:48+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[前回の続き。<br /><a target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/5936655.html">温度センサLM35DZを複数Arduinoに繋いだ時のトラブル</a>
<br /><br />こちらの方がADCの動作を考慮した読み捨ての回数を記事にされていた。<br /><a href="http://avr.paslog.jp/article/2553893.html" target="_blank">Arduino:温度センサー Processing + Firmata LM61BIZとLM35DZとDS18B20のメモ[マイコン風雲録]<br /></a><br />ログを分析しようとしててあっと気付いた。<br />&nbsp;for(int i=0;i&lt;=NUM_LM35;i++) {<br />&nbsp;だめだ……チャネルは6個しかないのに7個目読んでる……<br /><br />　というわけでADC読み取りの最後が順番によらず跳ね上がるのは私のプログラムが原因でした。未定義のチャネル読んでる。申し訳ありません。<br /><br />　ところで、チャネル読み込みの初回が順序に関わらず少し上がる現象は間違いなく起こっている。これを改善できるかどうか、以前も参考にした<br /><a href="http://homepage3.nifty.com/sudamiyako/zk/AVR_ADC/AVR_ADC.html" target="_blank">■AVR(Arduino)にLM35温度センサをつなげた場合に正しくA/D変換出来ないトラブル（２０１２年２月１５日</a>）[SIESTA HOMEPAGE]<br />を参考に、LM35DZの出力に10KΩをぶら下げた。テスタでちゃんと信号-GND間が10KΩ程度か確認。<br /><img src="http://livedoor.blogimg.jp/hardyboy/imgs/c/3/c3eceb1f.jpg" width="400" height="300" border="0" alt="2012_10Kohm" hspace="5" class="pict"><br /><br />　これで一晩ランニング。<br />比較のため前回とまったく同じヘボいコード(ADC0〜<b>6</b>まで読んでしまうもの)で実施。<br />この結果、最初に読んだチャネルが跳ね上がるという現象はなくなった。<br /><br />□前回の生ログ(Arduino Leonardo、3V3リファレンス版) ※間違ったADCの7番目は除去<br /><div>60702 72 73 74 74 73 74</div><div>121405 72 73 74 73 73 74</div><div>182107 72 73 73 73 73 73</div><div>242809 72 73 74 73 73 73</div><div>303512 72 73 73 73 73 73</div><div>364215 72 73 73 73 73 73</div><div>424918 72 73 73 72 73 73</div><div>485620 105 73 73 73 72 73</div><div>546323 71 73 73 73 72 73</div><div>607026 128 73 73 73 73 73</div><div>667727 72 73 73 73 73 74</div><div>728430 72 73 73 73 72 73</div><div>789133 72 73 73 73 72 73</div><div>849836 71 72 73 72 73 73</div><div><br />□今回の生ログ(Arduino Uno R3、1V1リファレンス版)<br /><div>1759184 135 127 136 122 124 125&nbsp;</div><div>1760387 135 128 136 122 124 124&nbsp;</div><div>1761589 134 128 136 121 125 124&nbsp;</div><div>1762791 135 127 136 122 125 124&nbsp;</div><div>1763994 135 127 136 121 124 124&nbsp;</div><div>1765196 134 127 135 122 125 123&nbsp;</div><div>1766398 134 128 136 121 124 124&nbsp;</div><div>1767602 135 127 136 122 125 124&nbsp;</div><div>1768804 135 128 136 122 124 124&nbsp;</div><div>1770006 134 127 135 122 124 124&nbsp;</div><div>1771209 135 128 136 122 124 124&nbsp;</div><div>1772411 135 128 136 122 125 124&nbsp;</div><div>1773614 134 127 136 122 125 124&nbsp;</div><div>1774816 135 128 136 122 125 124&nbsp;</div><br />　LM35DZ直結の時は最初のADC読み取りで跳ね上がる現象が見られたが、10KΩをぶら下げることによりなくなった。しかし、各センサの値にむらがあるように見える。ADC0とADC2が値が大きい。<br /><br />・今後の調査方針<br />(1)温度センサを束ねて同じ条件に<br />(2)ログをしっかり取ってawkで分析<br />(3) マイコン風雲録さんのanalogReadEx()で確認</div>&nbsp;<br />　うう、デジタル温度センサに逃げたくなった……<br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/5936655.html">
<title>温度センサLM35DZを複数Arduinoに繋いだ時のトラブル</title>
<link>http://blog.livedoor.jp/hardyboy/archives/5936655.html</link>
<description>※プログラムに誤りがありました。ADC0〜ADC5までなのにADC6相当を読んでいた。続き↓LM35DZを複数つないだ時の問題　お詫びとハードでの解決環境：Arduino UNO R3,Leonardo / IDE 1.0.1　前回、LM35DZの動作確認をしたのでArduinoのアナログポートに複数個接続してみた所、...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-09-23T03:01:57+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[<div>※プログラムに誤りがありました。ADC0〜ADC5までなのにADC6相当を読んでいた。<br />続き↓<br /><a href="http://blog.livedoor.jp/hardyboy/archives/6043471.html" target="_blank">LM35DZを複数つないだ時の問題　お詫びとハードでの解決</a><br /><br /><br />環境：</div><div>Arduino UNO R3,Leonardo / IDE 1.0.1</div><br /><div>　前回、LM35DZの動作確認をしたのでArduinoのアナログポートに複数個接続してみた所、測定値が時々跳ね上がる現象が発生。</div><div>LM35DZはA0〜A5に約50cmのケーブルで接続。パソコン筐体内の複数箇所の温度を測定するつもりで作った。</div><br /><div>温度センサを同じ所にまとめて動作確認をした時に以下の現象が発生。</div><br /><div>現象：時々、A0ポートに接続したLM35DZが6℃、A5ポートに接続したのが330℃を表示。測定間隔は約1分。</div><div>最初、Arduino Leonardo(ATmega 32U4)で確認したがArduino UNO R3(ATmega328)でも再現。こちらで調査開始。</div><div>アナログポートに接続したLM35DZを入れ替えても現象同じ。センサ個別についてまわる問題ではない。</div><br /><div>　以前見かけたこの記事が詳しい。これに当たったようだ。これがなければわからなかっただろう。</div><div><a target="_blank" href="http://homepage3.nifty.com/sudamiyako/zk/AVR_ADC/AVR_ADC.html">■AVR(Arduino)にLM35温度センサをつなげた場合に正しくA/D変換出来ないトラブル（２０１２年２月１５日）<br /></a><br /><div>　色々いじって再現性を高めてみた。</div></div><br />
<tt>
</tt><pre><tt>// LM35DN x6 Thermal Logger

// http://arduino.cc/en/Reference/AnalogReference

unsigned int t,c;
float sc;
unsigned long time;
#define NUM_LM35 6
int LM35[NUM_LM35];
int Shuffle[NUM_LM35] ; // shuffle LM35 port 0-5 

// initialize the library with the numbers of the interface pins
///LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

float temp5v(int ain) {  // analog 0-1023 10mV/Celsius ,5V*100/1024
  return ain*5.0*100/1024;
}

float temp3v3(int ain) {  // analog 0-1023 10mV/Celsius,3.3V*100/1024
  return ain*3.3*100/1024;
}

float temp2v56(int ain) {  // analog 0-1023 10mV/Celsius,2.56V*100/1024
  return ain*2.56*100/1024;
}

float temp1v1(int ain) {  // analog 0-1023 10mV/Celsius,1.1V*100/1024
  return ain*1.1*100/1024;
}

void setup() {
  // set up the LCD's number of columns and rows: 
  // lcd.begin(16, 2);
  Serial.begin(9600);
  // External Aref(3.3V)
  // analogReference(EXTERNAL);//3.3V
  // Internal Aref(1.1V) ATmega328 ???
  analogReference(INTERNAL);
/*
  Shuffle[0]=A0;
  Shuffle[1]=A1;
  Shuffle[2]=A2;
  Shuffle[3]=A3;
  Shuffle[4]=A4;
  Shuffle[5]=A5;
*/
/*
  Shuffle[0]=A4;
  Shuffle[1]=A2;
  Shuffle[2]=A5;
  Shuffle[3]=A0;
  Shuffle[4]=A3;
  Shuffle[5]=A1;
*/
//  for (int i=0; i&lt;=NUM_LM35;i++) LM35[i]=Shuffle[i] ;
/*
  LM35[0]=A0;
  LM35[1]=A1;
  LM35[2]=A2;
  LM35[3]=A3;
  LM35[4]=A4;
  LM35[5]=A5;
*/
  LM35[0]=A4;
  LM35[1]=A2;
  LM35[2]=A5;
  LM35[3]=A0;
  LM35[4]=A3;
  LM35[5]=A1;
}

void loop() {
    time=millis();Serial.print(time);Serial.print(" ");

    for(int i=0;i&lt;=NUM_LM35;i++) {
      t=analogRead(LM35[i]); // (0...1023)
      sc=temp3v3(t); // Selcius
      // Serial.print(sc);
      // Serial.print(":");
      Serial.print(t);
      if (i&lt;NUM_LM35) Serial.print(" ");
      delay(100);
    }
    Serial.println("");
    delay(60000); // 1000
} <span style="font-family: Arial; "><span style="white-space: normal; ">
</span></span></tt></pre><span style="font-family: Arial; "><tt>
</tt>
</span><div>(1)A/Dコンバータ(ADC)のリファレンス電圧による違い→ 3.3Vより1.1Vの方が発生頻度が上がる</div><div>analogReference(EXTERNAL); // 3.3VをAREF端子に接続</div><div>analogReference(INTERNAL); // 1.1V内部リファレンス</div><br /><div>(2)測定間隔による違い→1分間隔よりも1秒間隔の方が頻度が下がる(が発生)</div><br /><div>(3)チャネルによる違い</div><div>A0,A1,A2,A3,A4,A5の順にリード→ A0で少し下がり、A5で大きく跳ね上がる</div><div>A4,A2,A5,A0,A3,A1の順にリード→ A4で少し下がり、A1で大きく跳ね上がる</div><div>つまり、ポートに関係なく読み出し順の最初と最後で異常。</div><br /><div>(4)チャネルによる違いその２</div><div>&nbsp; Shuffle[0]=A4;</div><div>&nbsp; Shuffle[1]=A2;</div><div>&nbsp; Shuffle[2]=A5;</div><div>&nbsp; Shuffle[3]=A0;</div><div>&nbsp; Shuffle[4]=A3;</div><div>&nbsp; Shuffle[5]=A1;</div><div>&nbsp; for (int i=0; i&lt;=NUM_LM35;i++) LM35[i]=Shuffle[i] ;</div><br /><div>として analogRead(LM35[i]);とやってみたら再現しなくなった。Shuffle[i]に代入するポート番号をA0〜A5に整列させても発生しない。</div><br /><div>ATmega32U4のデータシートを見てみると、ADCの実体は１つで入力ポートを切り替えている。</div><br /><div>きょうはここまで。</div><br />]]>
</content:encoded>
</item>
<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/5919043.html">
<title>LM35DZによる温度測定とanalogReference()</title>
<link>http://blog.livedoor.jp/hardyboy/archives/5919043.html</link>
<description>LM35DZという三端子の温度センサを使ってみた。高精度ＩＣ温度センサ　ＬＭ３５ＤＺ　０～１００℃ [秋月電子]【LM35DZ-N】高精度・摂氏直読温度センサーIC [マルツ]　1℃あたり10mVの出力で、外付け部品なしの測定範囲は+2℃〜。Arduinoだとアナログ入力が使える。作例は...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2012-09-15T04:39:08+09:00</dc:date>
<dc:subject>センサ</dc:subject>
<content:encoded><![CDATA[LM35DZという三端子の温度センサを使ってみた。<br /><a target="_blank" href="http://akizukidenshi.com/catalog/g/gI-00116/">高精度ＩＣ温度センサ　ＬＭ３５ＤＺ　０～１００℃</a>&nbsp;[秋月電子]<br /><a target="_blank" href="http://www.marutsu.co.jp/shohin_40872/">【LM35DZ-N】高精度・摂氏直読温度センサーIC</a>&nbsp;[マルツ]<br />　1℃あたり10mVの出力で、外付け部品なしの測定範囲は+2℃〜。Arduinoだとアナログ入力が使える。<br />作例はたくさんあるのでLCDに表示してみた。つかったのは<a target="_blank" href="http://blog.livedoor.jp/hardyboy/archives/5427493.html">LCDシールド</a>。<br /><img class="pict" hspace="5" alt="2012LM35DZ" border="0" height="300" width="400" src="http://livedoor.blogimg.jp/hardyboy/imgs/a/7/a7d5d2c2.jpg"><br /><br />ソースはこちら。<strike><a target="_blank" href="https://gist.github.com/3724141">https://gist.github.com/3724141</a>&nbsp;<br /></strike>→&nbsp;<a href="https://gist.github.com/3725477" target="_blank">https://gist.github.com/3725477<br /></a><br />※A/D入力を℃に変換する箇所：ain*330/1024を修正。（ドライヤーで温めたらマイナス表示になってしまった）<br /><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; font-size: 12px; line-height: 1.4em; font-family: 'Bitstream Vera Sans Mono', Courier, monospace; "><div style="margin: 0px; padding: 0px 0px 0px 1em; line-height: 1.4em; " id="LC17" class="line"><span style="margin: 0px; padding: 0px; line-height: 1.4em; color: rgb(68, 85, 136); font-weight: bold; " class="kt">float</span> <span style="margin: 0px; padding: 0px; line-height: 1.4em; " class="n">temp3v3</span><span style="margin: 0px; padding: 0px; line-height: 1.4em; " class="p">(</span><span style="margin: 0px; padding: 0px; line-height: 1.4em; color: rgb(68, 85, 136); font-weight: bold; " class="kt">int</span> <span style="margin: 0px; padding: 0px; line-height: 1.4em; " class="n">ain</span><span style="margin: 0px; padding: 0px; line-height: 1.4em; " class="p">)</span> <span style="margin: 0px; padding: 0px; line-height: 1.4em; " class="p">{</span>  <span style="margin: 0px; padding: 0px; line-height: 1.4em; color: rgb(153, 153, 136); font-style: italic; " class="c1">// analog 0-1023 10mV/Celsius,3.3V*100/1024</span></div><div style="margin: 0px; padding: 0px 0px 0px 1em; line-height: 1.4em; " id="LC18" class="line">&nbsp;&nbsp;<span style="margin: 0px; padding: 0px; line-height: 1.4em; font-weight: bold; " class="k">return</span> <span style="margin: 0px; padding: 0px; line-height: 1.4em; " class="n">ain</span><span style="margin: 0px; padding: 0px; line-height: 1.4em; font-weight: bold; " class="o">*</span><span style="margin: 0px; padding: 0px; line-height: 1.4em; color: rgb(0, 153, 153); " class="mf">3.3</span><span style="margin: 0px; padding: 0px; line-height: 1.4em; font-weight: bold; " class="o">*</span><span style="margin: 0px; padding: 0px; line-height: 1.4em; color: rgb(0, 153, 153); " class="mi">100</span><span style="margin: 0px; padding: 0px; line-height: 1.4em; font-weight: bold; " class="o">/</span><span style="margin: 0px; padding: 0px; line-height: 1.4em; color: rgb(0, 153, 153); " class="mi">1024</span><span style="margin: 0px; padding: 0px; line-height: 1.4em; " class="p">;</span></div><div style="margin: 0px; padding: 0px 0px 0px 1em; line-height: 1.4em; " id="LC19" class="line"><span style="margin: 0px; padding: 0px; line-height: 1.4em; " class="p">}</span></div><div><span style="margin: 0px; padding: 0px; line-height: 1.4em; " class="p"><br /></span></div></pre><br /><br />　今回使用したのはArduino UNO R3とArduino IDE1.0.1。A/Dコンバータの基準電圧に外部3.3Vを使用している。AREFピンと3V3ピンを接続し、スケッチ内でanalogReference(EXTERNAL); と指定した。<br /><br />　ここでちょっと引っかかったのがanalogReference(INTERNAL)の指定。<br /><a target="_blank" href="http://arduino.cc/en/Reference/AnalogReference">http://arduino.cc/en/Reference/AnalogReference<br /></a>これによるとATmega328でINTERNAL指定すると基準電圧は<strike>2.56V</strike>1.1Vになるらしいのだが、指定してみたらどうも3.3Vみたい。AREFピンに3V3を接続していたが、これを外すと値がおかしくなる。INTERNAL指定のままでAREFを5Vに接続したらそれが基準電圧みたいな動作をする。<br />Arduino UNO R3/Arduino IDE1.0.1ではINTERNAL指定もEXTERNAL指定も同じみたいだ。&nbsp;<br /><br />追記：MacOSXのArduino IDE1.0 と 0023でも同じだった。<br />解決：<b>INTERNAL指定の時はAREFをつないじゃいけない。</b><br /><br /><a href="http://www.atmel.com/Images/doc8161.pdf" target="_blank" style="font-weight: bold; ">ATmega328P</a>のデータシート、p.251&nbsp;Figure 23-1. Analog to Digital Converter Block Schematic OperationをみるとA/Dコンバータの基準電圧はAREF端子に直に出ているので、INTERNALで1.1V指定していてもここに3.3Vをつなぐとそっちが勝つ。<br /><b>&nbsp;</b>]]>
</content:encoded>
</item>

</rdf:RDF>
