<?xml version="1.0" encoding="UTF-8" ?>
<feed xml:lang="ja" xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0">
  <title type="text">趣味の電子工作</title>
  <subtitle type="html">マイコンを用いた電子工作、マラソンなど趣味のページです。
</subtitle>
  <link rel="self" type="application/atom+xml" href="https://aout.blog.shinobi.jp/atom"/>
  <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/"/>
  <updated>2006-09-03T23:43:20+09:00</updated>
  <author><name>nya</name></author>
  <generator uri="//www.ninja.co.jp/blog/" version="0.9">忍者ブログ</generator>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
  <entry>
    <id>aout.blog.shinobi.jp://entry/53</id>
    <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/gps%E3%83%AD%E3%82%AC%E3%83%BC/gps%E3%83%AD%E3%82%AC%E3%83%BC%E8%A3%BD%E4%BD%9C%E6%97%A5%E8%A8%987" />
    <published>2009-03-15T01:09:22+09:00</published> 
    <updated>2009-03-15T01:09:22+09:00</updated> 
    <category term="GPSロガー" label="GPSロガー" />
    <title>GPSロガー製作日記7</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[前回<a href="aout.blog.shinobi.jp/Entry/50/">GPSロガー製作日記6</a>で紹介したGPSレシーバ（まだロガーじゃないですよ！）の失敗談などを書きます。<br />
<br />
今回のテーマは<br />
<br />
1.tiny2313の<font color="#ff0000">SRAMの少なさ</font>はマジヤバイ<br />
2.低ドロップレギュレータの出力は発振に注意<br />
<br />
です。<br />
<br />
<hr />
<font size="4">1.ATtiny2313のSRAMの少なさ</font><br />
<br />
ATtiny2313のプログラムメモリたるFLASH領域はデータシートのとおり<font color="#ff0000">2KB</font>です。これはかなりの小ささで、プログラムのコンパイル時にはこれを超えないかどうか常にハラハラです。しかし、それを上回ってスタック･ヒープたるSRAMの大きさはさらにひどいです。いわゆるPCで言う「主記憶」の一部なわけですが、これが<br />
<font size="5"><font color="#ff0000">128B</font></font><font color="#ff0000"><br />
</font><font color="#000000">です</font>。冗談じゃありません。KももちろんMも抜けてませんよ。正真正銘1byteのchar型なら128個のみのSRAMです。<br />
<br />
実はこれに気づかないまま、位置情報の表示と、速度情報の表示を行おうとしていたのですが、どうにも意味のわからないバグが起きる。プログラムの下流のほうで式をいじると、明らかにそことは関係のない上流の処理がスキップされたりする。<br />
<br />
かなり激しく悩んで、K氏に打ち明けたのですが、tiny2313について説明している間に、データシートのSRAMの小ささに気づき、<font size="5"><font color="#ff0000">「メモリオーバー」</font></font>なる現象に見舞われていることがわかりました。<br />
<br />
主記憶なんて、やれ「2GB」だ、やれ「4GB積んだけど、どうせ3GBしか認識しないぜ」だ、みたいな話しかしません。PC上でプログラムを長いこと組んでいますが、メモリがわずかに32MBしかなかった時代ですら、Linuxではスタック用のメモリが不足するなんて経験したことなかったのです。<br />
<br />
char buf[ 64];<br />
<br />
などと書こうものなら、メモリの半分を消費してしまうことについては認識不足でした。<br />
ということで<font color="#0000ff">tinyなどの小規模マイコンを使うときは変数の使いすぎによるメモリオーバーに特に注意が必要</font>です。<br />
<br />
<br />
<hr />
<font size="4">マイコンのメモリ構造について<br />
</font><br />
勉強不足から間違ったことを書いている可能性がありますが<br />
<br />
<a target="_blank" href="//aout.blog.shinobi.jp/File/73f08705.png"><img border="0" align="right" alt="73f08705.png" src="//aout.blog.shinobi.jp/Img/1237186201/" /></a><br />
AVRでは低位のメモリ(メモリ番地の若い場所)から高位メモリ方向の順に<br />
汎用レジスタ<br />
IOレジスタ<br />
内臓SRAM<br />
の順で並んだメモリ空間を持っています。<br />
<br />
そして、スタックポインタ(SP/SPL)は<br />
<blockquote> </blockquote>
<div style="margin-left: 40px;"><br />
「ｽ ﾀ ｯ ｸ が高位ﾒ ﾓ ﾘ から低位ﾒ ﾓ ﾘ へ伸長するよう に実行される」<br />
Hiroさんの翻訳版tiny2313データシートより</div>
<blockquote> </blockquote>
<div>&nbsp;</div>
とありますので、デフォルトではSPは0xDFから、スタックに積みあがるごとに低位メモリに伸びていくはずです。<br />
つまりSRAM上でメモリオーバーを起こすと、IOレジスタや汎用レジスタが破壊されかねないということのようです。<br />
<br />
<hr />
<font size="4">2.低ドロップレギュレータは発振に注意<br />
</font><br />
症状:
<ul>
    <li>電流を多く使う機器を入れるとマイコンが誤作動する。</li>
</ul>
<br />
判定法:
<ul>
    <li>レギュレータの出力が規定値より低い</li>
    <li>レギュレータの出力をオシロスコープで見ると線がぼやける</li>
</ul>
<br />
解決法:
<ol>
    <li>レギュレータの出力側にコンデンサC2を入れる。C2はできるだけ大きくESRの少ない（つまりは新しい）電解コンデンサを用い、レギュレータに物理的に近い場所に入れるのが良い。</li>
    <li>解決しない場合、レギュレータを交換する。</li>
</ol>
<br />
原因:
<div style="margin-left: 40px;">3端子レギュレータがレギュレーションに必要なキャパシタンスが得られず、電力供給が追いつかないため。特に入力電圧が低く、出力電流が多いときに容易に起こる。</div>
<br />
3端子レギュレータは不安定な高電圧電源から安定した低電圧電源を作り出す部品です。<br />
ですが、正しい使い方をしないと、安定な電源を供給できるどころか、もとの電源にはない発振をおこしてしまいます。<br />
<a target="_blank" href="//aout.blog.shinobi.jp/File/a8bd7f0c.png"><img height="98" border="0" align="right" width="150" alt="4805レギュレータ接続図" src="//aout.blog.shinobi.jp/Img/1237189511/" /></a><br />
電源側のC1は0.1uFと小さくてよいのですが、<br />
出力側のC2は100uFの電解コンデンサが必要のようです。<br />
出力側の負荷が大きく大電流を流す場合は、C2はさらに低ESRでないと低ドロップタイプのレギュレータである48xxは発振してしまうようです。<br />
<br />
部室のオシロスコープで発振していることが判明しましたが、手持ちにはアナログの電圧計しかありません。ですが、アナログ電圧計でもC2が不足しているときは平均電圧が下がる傾向にあるらしいので検知することができると思います。<br />
<br />
ちなみに<br />
「4805や48033など低ドロップレギュレータを使っているときにマイコンが誤作動をした」&rarr;<br />
「レギュレータの出力が発振していないか、まず疑ってかかる」<br />
という思考回路は、マイコン野郎の中ではかなり常識のようです。]]> 
    </content>
    <author>
            <name>nya</name>
        </author>
  </entry>
  <entry>
    <id>aout.blog.shinobi.jp://entry/52</id>
    <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/gps%E3%83%AD%E3%82%AC%E3%83%BC/gps%E3%83%AD%E3%82%AC%E3%83%BC%E8%A3%BD%E4%BD%9C%E6%97%A5%E8%A8%986" />
    <published>2009-03-14T23:07:38+09:00</published> 
    <updated>2009-03-14T23:07:38+09:00</updated> 
    <category term="GPSロガー" label="GPSロガー" />
    <title>GPSロガー製作日記6</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[GPSレシーバとして実用的に使えるものが<font color="#ff0000">できました！</font><br />
<br />
スペックなどを書いてみます<a target="_blank" href="//aout.blog.shinobi.jp/File/HNI_0055.JPG"><img border="0" align="right" alt="HNI_0055.JPG" src="//aout.blog.shinobi.jp/Img/1237036080/" /></a><br />
<table cellspacing="1" cellpadding="1" border="1" style="width: 222px; height: 143px;">
    <tbody>
        <tr>
            <td>重量</td>
            <td>195g</td>
        </tr>
        <tr>
            <td>電源</td>
            <td>単三アルカリ電池&times;2　or<br />
            単三ニッケル水素電池&times;2</td>
        </tr>
        <tr>
            <td>消費電力</td>
            <td>0.89~1.1W※1</td>
        </tr>
        <tr>
            <td>電池持続時間</td>
            <td>3.6~4.6h※2</td>
        </tr>
        <tr>
            <td>GPSアンテナ</td>
            <td>GT-720F</td>
        </tr>
        <tr>
            <td>精度</td>
            <td>位置　CEP5ｍ<br />
            速度　0.1m/s</td>
        </tr>
        <tr>
            <td>表示</td>
            <td>0.5Hzで以下を表示<br />
            緯度(0.0001分)<br />
            経度(0.0001分)<br />
            速度(0.1km/h)<br />
            移動方向</td>
        </tr>
        <tr>
            <td>コスト</td>
            <td>GT-720F　　3500<br />
            SC1602BS　550<br />
            TINY2313　　370<br />
            その他<br />
            計　　　　　　　5500円程度</td>
        </tr>
    </tbody>
</table>
※1<br />
アンテナの消費電流は一度衛星をロックすると衛星補足時の65%ほどに落ちる。<br />
※2<br />
ENELOOP使用時<br />
http://www.eneloop.info/home/performance-details/capacity.html<br />
よりENELOOPの容量が1700mAhと試算<br />
<br />
<hr />
<br />
<br />
ウリは<br />
・表示部とアンテナ部をすこーし離して、受信状態を改善&larr;まあそれなりに重要<br />
・4.2V駆動のLCDパネルを搭載しているにもかかわらずENELOOP2本(2.4V)で駆動&larr;50円ケースに入れるという点では重要<br />
<br />
前回動かなかった理由など、いろいろと失敗談を書きたいのですがそれは日記7に譲って、今回はどうしても書きたい電池の電源について書きます。<br />
<br />
<hr />
<br />
一次電池の単三2本(3.0V)や二次電池のニッケル水素なりENELOOP2本(2.4V)から5Vを作るためには昇圧が必要なのですが、<br />
<br />
・GPSアンテナが電力食いである(入力電圧(3.8~5V)に関係せず130~200mA食いやがる)<br />
・昇圧回路を作るのが面倒<br />
・必要な電圧が5Vで、入力は単3電池2本がベスト。<br />
<br />
という二つの理由から携帯の充電器をばらして使うことにしました。<br />
<a href="//aout.blog.shinobi.jp/File/HNI_0056.JPG" target="_blank"><img border="0" align="right" src="//aout.blog.shinobi.jp/Img/1237036081/" alt="HNI_0056.JPG" /></a><br />
携帯の充電器のいいところは<br />
・電池の電圧が低く(ニッケル水素の2.4V)でも安定して5Vを供給する<br />
・もともと電源用のためかなりの電流を流せる(5V側200mA、電池側470mAで電圧も下がってませんでした)<br />
・上のような大電流を流しても高効率89%！<br />
・電池ボックス付き<br />
<br />
逆に悪いところは<br />
・入力、出力電圧を変えるためにはICの解析が必要<br />
・あまり安くはない(700円はする)<br />
<br />
100円SHOPとかで売ってたら一番なんですが、昇圧用ICが高いのでダイソーではおいてませんね。ダイソーにおいてある携帯電話充電器はすべて電池4本(6V)から携帯電池の電源の5Vに落とすものばかりでした。<br />
たぶんレギュレータが入っているだけなんでしょう。<br />
あーでも300円ぐらいでおいてないかなぁ。<br />
<br />]]> 
    </content>
    <author>
            <name>nya</name>
        </author>
  </entry>
  <entry>
    <id>aout.blog.shinobi.jp://entry/51</id>
    <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/gps%E3%83%AD%E3%82%AC%E3%83%BC/gps%E3%83%AD%E3%82%AC%E3%83%BC%E8%A3%BD%E4%BD%9C%E6%97%A5%E8%A8%985" />
    <published>2009-03-11T14:12:19+09:00</published> 
    <updated>2009-03-11T14:12:19+09:00</updated> 
    <category term="GPSロガー" label="GPSロガー" />
    <title>GPSロガー製作日記5</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[うまくいかない～<br />
<br />
GPSレシーバは見通しがよく、きちんとした姿勢でおかれないと安定して受信ができないとわかってきたので、表示部やAVR本体から離せるようにすることを考えました。<br />
<br />
UART通信の信号線を3芯シールド線で離したのは良かったのですが、そこからなぜか表示がまたバグりはじめた・・・<br />
<br />
とりあえず<br />
1.前回同様、UARTのタイミングがうまく取れていない。<br />
2.信号が劣化している<br />
3.線の抵抗値が大きすぎて、信号をAVRがうまく拾えない。<br />
<br />
などを考えてみています。<br />
<br />
あと、レギュレータの出力電圧がかなり低いです。<br />
4805なので出力は5Vになるべきなのですが、4V付近まで落ちてしまっている。<br />
原因ですが、あまり良くわかりません。200mAを食うGPSレシーバをはずしてみたらちゃんと5Vになります。<br />
レギュレータは電圧差分を熱エネルギーに変えているので、感覚的には熱の問題さえなければちゃんと降圧してくれそうな感じなのですが。<br type="_moz" />]]> 
    </content>
    <author>
            <name>nya</name>
        </author>
  </entry>
  <entry>
    <id>aout.blog.shinobi.jp://entry/50</id>
    <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/gps%E3%83%AD%E3%82%AC%E3%83%BC/gps%E3%83%AD%E3%82%AC%E3%83%BC%E8%A3%BD%E4%BD%9C%E6%97%A5%E8%A8%984" />
    <published>2009-03-01T03:02:03+09:00</published> 
    <updated>2009-03-01T03:02:03+09:00</updated> 
    <category term="GPSロガー" label="GPSロガー" />
    <title>GPSロガー製作日記4</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[前回「<a href="http://aout.blog.shinobi.jp/Entry/48/">ヒューズDE☆封印</a>」してしまったtiny2313の代わりも買ってきて、ようやく製作再開です。<br />
素直にmega644使えばよかったような気もします。<br />
<br />
<hr />
<br />
UARTについて<br />
前回までではUARTが失敗していたのですが、ようやく成功しました。<br />
自戒をこめて、間違った原因などを記しておきます。<br />
UARTで失敗して困っている人の役に立てばと思います。<br />
<br />
間違えていた原因は、オシレータの周波数が8MHzばかり気にしていて、<font color="#ff0000">クロックの8分周を忘れていた</font>ということ。実効クロックは1MHzでした。気づいてみればあまりにばかばかしくて、書くのも恥ずかしいです。<br />
8分周をはずすには、あのヒューズビットを書き換えなければなりません。速度的にも困ってないので、いろいろとトラウマのあるヒューズビットは書き換えたくないｗ。<br />
プログラムだけで書き換えたいなぁと思って、1MHzのままUARTの分周比だけを変えてしまえと、baud rateから分周比Nを求める式を<br />
<br />
N = 8000000/16/9600 -1<br />
<br />
から<br />
<br />
N = 1000000/16/9600 -1<br />
<br />
に変えたところ、やっぱり動きませんでした。<br />
原因は今度こそ精度のようです。<br />
2番目の式ではN=5.51･･･となり誤差が8~10%にも及びます。<br />
このため<font color="#ff0000">クロック1MHzでbaud rate9600bpsのときはうまくいく分周比がない</font>のです。<br />
<br />
9600bpsを扱いたいときは8MHz(N=51.08･･･/誤差0.16%)や10MHz（N=64.10･･･/誤差0.16%)などを使わなければいけないようです。<br />
<br />
<br />
あと、前回気づかなかったのですが、<br />
秋月で買ったときについていた説明書(紙切れ一枚)には<br />
9600bps 8 N 1<br />
と書いてあったのですが、CanMoreのデータシート(見た目はしっかり)には<br />
4800bps 8 N 1<br />
と書いてありました。<br />
前回の製作日記を読んでいただいた方には、どっちが正解かということはもはや自明ですね。<br />
<br />
<font size="4"><font color="#ff0000">GT-720Fのデータシート間違い3ヶ所目</font></font><br />
<br />
もう勘弁してくれ。CanMoreのデータシートはまず疑ってかからねば。<br />
あ、ちなみにbaud rateをまちがえるとデータの送受信はできません。GPSモジュールがGPSモジュールとして働いてくれません。<br />
<br />
<br />
<br />
最後に前回書いた恥ずかしい間違いなどの訂正と、正しい原因にいたるまでの過程でわかったことなどを。<br />
<br />
前回の記事で「内部8MHzRC発振では精度が悪いのではないか」ということですが、baud rateが直ってから内部にもう一度切り替えてみたところ、問題なく通信できました。<br />
ということで、<font color="#0000ff">内部RC発振器でも外部セラロック発信器でもどちらでも9600bpsUARTは可能</font>。ということがわかりました。<br />
<br />
また、部室のオシロスコープで<font color="#ff0000">GT-720Fの出力を見てみたら5V与えているにもかかわらず4V程度しか出ていませんでした</font>。これをうまく読み取れていないのではないかという仮説もたてて、間に74ICを挟んでCMOSレベルにしてからAVRに入力させてみたのですが、結果から言えばこれも無駄でした。<br />
<font color="#0000ff">AVRのVｃｃ=5Vのときに、4V程度の入力ならちゃんとHとして読んでくれる</font>ようです。今は74ICは抜いて実験中です。また不具合が出ればそのときにでも報告します。<br />
<br />
<br />
<br />
<hr />
<br />
LCDとUART<br />
UARTのタイミングについて<br />
<br />
ようやくGPSレシーバの出力をうまくUARTで受け取れるようになりましたが、今度は位置情報をLCDに表示しようと思ってもうまく表示できませんでした。<br />
ところで、GT-720Fから出力されるフォーマットはNMEA-0183のVersion 3.01です。<br />
NMEA-0183と一言に行っても、いろいろなフォーマットがあります。<br />
このうち位置情報と速度情報だけでほかの要らない情報を含まないフォーマットがRMC(RECOMMANDED MINIMUM SPECIFIC GPS/TRANSIT DATA)です。GT-720Fはほかにも衛星情報を含むGGAやGLLを吐いてくれるのですが、今回はそれらの情報は見捨ててRMCを使うことにしました。<br />
<br />
RMCのフォーマットは<br />
$GPRMC,&lt;時刻&gt;,&lt;測位の可否&gt;,&lt;緯度&gt;,&lt;N/S&gt;,&lt;経度&gt;,&lt;E/W&gt;,&lt;速度&gt;,&lt;速度の方向&gt;,&lt;日付&gt;,その他いろいろ&lt;CR&gt;&lt;LF&gt;<br />
<br />
とほしい情報だけ並んでいます。<br />
で、まずはGT-720Fからどんどん送られてくる文字列から、&quot;$GPRMC&quot;を捕まえたあと、コンマを3回数えて緯度情報を送られてくる一文字ずつ出力させました。つまり、<br />
<br />
char ch;<br />
<br />
/*GPRMCを捕まえたてコンマを3回数えた後*/<br />
for(;;){<br />
&nbsp; ch = GetCharFromGPS();　　//UARTでGT-720Fから文字を受け取る。<br />
&nbsp; LCDPutChar( ch );　　　　　　 //LCDに出力<br />
&nbsp; if( ch == ',' ) break;　　　　　　　//コンマなら「緯度」のセクションは終わり<br />
}<br />
<br />
としたのですが、うまくいかない。変な文字列ばかり表示される。<br />
<br />
この原因は受け取った文字をLCDへ逐一出力させたことにありました。LCDへの出力はLCDモジュールの処理完了を待つためかなり時間がかかります。それに対し、<font color="#ff6600">UARTは9600bpsで動作しているため、途切れなく文字が届いた場合、1秒に1000文字くらい送られてくる</font>計算になります。AVRのUARTでは文字をためておくバッファが2つしかないため、<font color="#ff0000">UDRを読みにいく間隔が1msよりも大幅に遅すぎるとどんどん読み落としを作ってしまいます</font>。<br />
<br />
つまりUARTでほしいデータを読み取っているときは、重い処理を同時に行うことは危険なのです。今回LCDモジュールの余裕を見て1文字出力するたびに2msほどwaitしていたのでこのようなことが起こりました。<br />
<font color="#0000ff">いったん文字列をバッファリングして、RMCのデータを読み終わったあと</font>、じっくりとLCDに出力することで解決しました。<br />
<br />
<hr />
<br />
最後にtiny2313で快調にプログラムを組んでいたら、AVRWRTから「プログラムのサイズがでかすぎてAVRのフラッシュに入りきらないよ！」って言われました。<br />
マイコンで組んでいれば本当によくあることです。<br />
ちなみにtiny2313の2KBフラッシュしかもたないAVRでは、小数を扱うと大きくファイルサイズが増大します。<br />
つまり<br />
<br />
･float,doubleで変数を宣言する　<br />
だけではなく<br />
･float,doubleで型キャストして、小数計算させる<br />
<br />
などが1箇所でもあると、小数計算ライブラリを読み込むようです。AVRの小数計算ライブラリが馬鹿でかいらしく、hexファイルが5KBほど増えます。この量は大体の場合tiny2313のFLASHのサイズを超えさせてしまうようです。<br />
<br />
ということで<font color="#ff0000">tiny2313では工夫して整数のみで計算を行い</font>ましょう。<br />
<br />
まあ、これも常識なのでしょうかｗ。まだマイコン工作が2作目の私にとってはかなりの衝撃なのですが。<br />
<br />
<hr />
<br />
ということで、数々の教訓を残してGPSレシーバちゃんは元気に動いております。<br />
<br />
<font size="4"><font color="#ff0000">常時130mAを食いながらｗ<br />
</font></font>]]> 
    </content>
    <author>
            <name>nya</name>
        </author>
  </entry>
  <entry>
    <id>aout.blog.shinobi.jp://entry/49</id>
    <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C/%E5%AF%BA%E7%94%BA%E3%83%9E%E3%83%AB%E3%83%84" />
    <published>2009-03-01T01:31:44+09:00</published> 
    <updated>2009-03-01T01:31:44+09:00</updated> 
    <category term="電子工作" label="電子工作" />
    <title>寺町マルツ</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[新しいAVRを買ってきました！<br />
<br />
秋月に注文すれば1個100円のtiny2313ですが、寺町のマルツでは367円もしました。<br />
さすが電子部品のコンビニ。早い、高い、うまい。<br />
でも便利なので感謝してます。ありがとう寺町マルツ。<br />
秋月が安いのはしゃあないよね。<br />
<br />
ワイヤーストリッパーとノギス<br />
ついでに念願のワイヤーストリッパーとかノギスとかも買ってきました。<br />
ワイヤーストリッパーは1500円くらいの一番安くて小さなものを買ったのですが、やっぱり使いやすいです。<br />
なくても何とかなる工具ですが、はっきりいって便利すぎ。皮むくのが楽しくなります。<font size="1">今だけでしょうけど。</font><br />
ノギスはちょっとお金を出してサイズの小さな(7cm)のものを買いました。持ち運びが便利ですし、私が作るものには、そんなにでかいものなんてありゃしません。<font size="1">でかいものは定規で測ればいいや。</font><br />
で、小さいのを買ったのはよかったのですが、これがおおはずれ。<br />
動かすたびに何かがすれている音がします。<br />
動きが滑らかじゃないノギスなんて！油をさしなおしてみたのですが無駄でした。少し残念。<br />
<br />
DIP IC抜き<br />
「マルツではたったの500円でDIPのIC抜きが買える」ということを先輩から聞いていたので、今日こそは！と思っていたのですが、今日も入荷待ち状態。Kさんに訊いたら海外の製品らしく、取り寄せには3ヶ月かかるとか（^_^;)<br />
長いよ！<br />
<br />
GPSレシーバ<br />
マルツの店頭でもGPSレシーバを見つけました。最近いろいろと出るようになりました。現在進行形でGPSレシーバを扱っていることもあり、おっと思って見てみました。<br />
<a href="https://www.marutsu.co.jp/user/shohin.php?p=60617">https://www.marutsu.co.jp/user/shohin.php?p=60617</a><br />
スペック<br />
価格　5800円<br />
CEP 3m<br />
衛星追尾感度 -163dBm<br />
出力規格　USB<br />
<br />
ちなみに今私の使っているGPSレシーバGT-720F<br />
価格3500円(秋月価格)<br />
CEP 5m<br />
衛星追尾感度 -160dBm<br />
出力規格　LVTTL、RS-232C<br />
消費電流　200~130mA<br />
<br />
うう、うらやましい。CEPはたったの3mだし、通信のdBはよくわからないけど3dBってことは感度が倍いいようだし。消費電力もさすがにGT-720Fほどではあるまい。<br />
ただ、出力規格がUSBってのは扱いが難しい。もしまだGPS製品作るならこいつを使ってみたいなぁ。<br />
<br />
店員さんのKさんもいらっしゃって、いろいろ話せたので結構満足でしたｗ<br />]]> 
    </content>
    <author>
            <name>nya</name>
        </author>
  </entry>
  <entry>
    <id>aout.blog.shinobi.jp://entry/48</id>
    <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/gps%E3%83%AD%E3%82%AC%E3%83%BC/gps%E3%83%AD%E3%82%AC%E3%83%BC%E8%A3%BD%E4%BD%9C%E6%97%A5%E8%A8%983" />
    <published>2009-02-26T01:04:03+09:00</published> 
    <updated>2009-02-26T01:04:03+09:00</updated> 
    <category term="GPSロガー" label="GPSロガー" />
    <title>GPSロガー製作日記3</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[昨日はRS-232C経由でPCと接続しGT-720Fの動作確認をしたので、今日は本命のLVTTL側の端子を使ってマイコンでデータを扱うことに挑戦。<br />
<br />
実は今回のGT-720Fを使う前に、一度秋月からGPS-52を購入し、同じようなGPSロガーを作ろうとしていました。<br />
しかし端子を逆差ししてしまい、GPS-52はあえなくご臨終。4800円が一瞬で吹き飛びました(泣)<br />
<br />
今回はそのテストに使っていた回路を再利用してGPS-52のテストを行うことにしました。<br />
<br />
<hr />
<br />
GPSモジュールから受け取るプロトコルはNMEA-0183で同じなので、プログラムもほとんどそのまま再利用。<br />
GT-720からの出力を液晶モジュールSC1602にそのまま出力する安直なプログラムです。<br />
とりあえずつないでみよう。えいっ。<br />
<br />
・・・文字化け。<br />
<br />
テストパターンの&rdquo;Hello, world!&quot;はちゃんと出力されるから、LCDへの出力プログラムミスではないらしい。となるとUARTがうまく受信できていないらしい。<br />
<br />
とりあえずGT-720(9600bps出力)からの信号にうまく同期できていないのだろう、と当たりを付けて、<br />
<br />
・baud rateはちゃんと9600bpsになっているか。<br />
・1byte=8bitの受信になっているか。<br />
<br />
ということを確認。問題なし。<br />
<br />
・・・困った。UARTを扱うのが初めてだからどう対処すべきかわからない。<br />
<br />
UARTはクロックにうるさいとどこかで聞いたので、内臓クロックを使ってるのがまずいのかと思って内臓クロックの精度を見てみた。<br />
tiny2313のデータシートによると、<br />
<br />
内臓RC発振器：誤差2%<br />
<br />
UARTの精度は5%絶対必要でできれば3%といっているので結構大きい。面倒くさがらず、外部クロックにしよう。<br />
<a target="_blank" href="//aout.blog.shinobi.jp/File/HNI_0013.JPG"><img border="0" align="left" alt="HNI_0013.JPG" src="//aout.blog.shinobi.jp/Img/1235575750/" /></a>買ってあったまま使っていない8MHzセラロックを使う。<br />
<br />
これまた使うのは初めてなので、極性がないこととか、ちゃんと調べながらｗ<br />
回路図上の記号が対称だから、極性なんてないとは思っていたけど、やっぱりないようですねｗ<br />
<br />
<br />
<br />
<a target="_blank" href="//aout.blog.shinobi.jp/File/HNI_0012.JPG"><img border="0" align="left" alt="HNI_0012.JPG" src="//aout.blog.shinobi.jp/Img/1235575749/" /></a><br />
セラロックをつけたところ。<br />
コネクタは赤いコネクタから右回りに、電源、ISP、GPSモジュール、LCD。<br />
<br />
<br />
<br />
<br />
<br />
<br />
外部クロックに切り替えようとヒューズビットを書き込んだところ。<br />
<br />
<font size="5">まったく入力を受け付けなくなりました。</font><br />
<font size="1">お約束ですね～</font><br />
<br />
間違ったヒューズビットを焼いてしまったようです。<br />
<br />
AVRはヒューズビットという、電源が切れてもAVR自身の設定を覚えておくビットがあります。<br />
クロックの部分やリセットの条件についてなど、AVR動く条件がそのヒューズビットで決められています。<br />
ですので、意図しないヒューズビットを書き込んでしまった場合、AVRを動かしてやれる条件を満たすことができず、AVRは動きません。<br />
AVRが動かないとヒューズビットの書き換えもできないので、誤ったヒューズビットを書き込んでしまうと、手持ちの機材ではAVRは一切動いてくれなくなる、という地雷のような設定があるのです。<br />
<br />
今回はその地雷を見事に踏み抜いてしまったらしいです。<br />
<br />
ATtiny2313のヒューズビットはクロック選択の部分だけ抜き出すと、<br />
<br />
<br />
<table cellspacing="1" cellpadding="1" border="1" style="width: 284px; height: 138px;">
    <tbody>
        <tr>
            <td>外部ｸﾘｽﾀﾙ/ｾﾗﾐｯｸ発振子</td>
            <td>1111～1000</td>
        </tr>
        <tr>
            <td>128kHz内部(WDT)発振器</td>
            <td>0110</td>
        </tr>
        <tr>
            <td>8MHz校正付き内蔵RC発振器</td>
            <td>0100</td>
        </tr>
        <tr>
            <td>4MHz校正付き内蔵RC発振器</td>
            <td>0010</td>
        </tr>
        <tr>
            <td>外部ｸﾛｯｸ信号</td>
            <td>0000</td>
        </tr>
        <tr>
            <td>(予約)</td>
            <td>0xx1</td>
        </tr>
    </tbody>
</table>
<br />
となっているようなのですが、誤って0110を焼いてしまったようなのです。（今となっては確認すらできません）<br />
表によれば128kHz内部発振器が働くはずなのですが、SPIでプログラミングできません。これまたよくわかりません。<br />
<br />
使っているプログラマはディジットのAVR WRTなので高電圧プログラミングによるヒューズビットの書き換えもできず、お手上げです。<br />
<br />
クロック周りの設定は気をつけなければならないとわかってはいたのですが、今回は外部発振器を持っていたので楽観していました。<br />
油断大敵です。<br />
<br />
ということで、ATtiny2313を一つ封印してしまいました。1個100円なのでたいしたことはないですが、予備が一個もないので今日は作業中止。<br />
<br />
<hr />
<br />
結局UARTがうまく働かなかったのは、内臓クロックを使ったせいなのかどうかも検証できずじまいでした。ヒューズビットを直すか、新しい2313で成功したら、内臓クロックでも試してみたいです。<br />
<br />
<br type="_moz" />]]> 
    </content>
    <author>
            <name>nya</name>
        </author>
  </entry>
  <entry>
    <id>aout.blog.shinobi.jp://entry/47</id>
    <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/gps%E3%83%AD%E3%82%AC%E3%83%BC/gps%E3%83%AD%E3%82%AC%E3%83%BC%E8%A3%BD%E4%BD%9C%E6%97%A5%E8%A8%982" />
    <published>2009-02-25T05:39:38+09:00</published> 
    <updated>2009-02-25T05:39:38+09:00</updated> 
    <category term="GPSロガー" label="GPSロガー" />
    <title>GPSロガー製作日記2</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[2009年2月現在、秋月で扱っているGPSレシーバは<br />
<br />
Position製 GPS-52D<br />
CanMore製 GT-720F<br />
<br />
の2種類しかないのですが、CanMoreのほうはつい最近出たばかりです。<br />
そのせいか、この手の製品には多い「使ってみたよ！」という報告がなかなか少ないです。<br />
電子工作初心者のクセに道しるべがあんまりないという冒険をしなければなりません(笑)<br />
<br />
知られていないということなので、GT-720Fのスペックを書いておきます。<br />
<br />
<hr />
<br />
<font size="4">GT-720Fについて</font><br />
<br />
まずはCanMoreのデータシートから<br />
<br />
Sensitivity 感度<br />
Cold Start&nbsp; 初回起動での衛星捕捉 -147dBm<br />
Re-acquisition 2回目以降の衛星捕捉 -155dBm<br />
Signal detection 衛星追尾 -160dBm <br />
<br />
Accuracy 精度<br />
位置 CEP5m<br />
速度 0.1m/s<br />
<br />
サイズ<br />
34 x 34 x 9.35[mm]<br />
<br />
おそらくCold Startとは「GPSモジュールが記憶している衛星の情報がまったく当てにならないぐらい時間がたった後起動したら」ということだと思います。<br />
<br />
<br />
まずは感度ですが、部屋の中(鉄筋アパート)からは衛星捕捉は不可能でした。<br />
ベランダに出しておくと1分弱で追尾をはじめ、20分ほど放置したら7つぐらい衛星をキャッチしてくれました。<br />
<a href="//aout.blog.shinobi.jp/File/GT-720F.jpg" target="_blank"><img border="0" align="left" src="//aout.blog.shinobi.jp/Img/1235506025/" alt="GT-720F.jpg" /></a><br />
使用目的から言えば満足できる感度です。<br />
<br />
精度は期待通り。下宿の位置ぴったりの値を出してくれました。<br />
少数以下4桁分まで出してくれます。<br />
住所が十分ばれるくらい精度が良いのでモザイクを。<br />
<br />
<br />
<br />
で、消費電力です。<br />
なんと<br />
衛星追尾時でも<font size="5"><font color="#ff0000">常時130mA</font></font>、衛星捕捉時なんて<font color="#ff0000"><font size="5">200mA</font></font>も食いやがります。<br />
入力を3.3、5Vどちらにしても同じだけ食います。<br />
5V駆動したら衛星捕捉時<font size="5"><font color="#ff0000">1W</font></font>。お前はヒーターか何かか。<br />
<br />
実際に連続稼動しているとほんのり暖かくなってきやがります。まさかGPS扱ってて放熱を考えなきゃならんとは。<br />
参考までに<br />
衛星捕捉時：200mA<br />
2次元測位状態(3衛星捕捉状態)：170mA<br />
3次元測位状態(4衛星以上捕捉)：130mA<br />
<br />
<br />
何よりも問題は、GT-720のデータシートには<br />
<br />
「&lt;135mW」<br />
「Power Consumption &nbsp; &lt;42mA」<br />
<br />
とかかいてあることです。大嘘です。135mWじゃなく&lt;135mAの間違いじゃないかなと思います。しかも&lt;135mAになるのも衛星をちゃんと追尾できているときだけ。<br />
<br />
<br />
GT-720のデータシートの間違いはまだあります。<br />
これを間違ってどうするといいたくなりますが、ピン配置です<br />
データシートにはピン番号順に<br />
<br />
1 Serial Data Out1(LVTTL)<br />
2 Serial Data In1(LVTTL)<br />
3 Serial Data Out2(RS-232 level)<br />
4 Serial Data In2(RS-232 level)<br />
5 Power<br />
6 GND<br />
<br />
であると書いてあります。<br />
しかし秋月から送られてきた資料には<br />
<br />
1 GND<br />
2 Power<br />
3 RS-232 IN<br />
4 RS-232 OUT<br />
5 NC<br />
6 NC<br />
<br />
<font color="#ff0000"><font size="6">逆じゃねぇか</font></font><br />
<br />
ちなみにピンの番号付けの方向が間違ってるわけじゃなく、正真正銘逆です。<br />
先にネタバレしているのですが、秋月が正解です。<br />
まさか秋月のピン説明とデータシートが食い違っているなんて夢にも思わず、ただそのときたまたま手元にあったからという理由だけで秋月の資料をみて動作確認をしていました。<br />
<font color="#ff0000"><font size="4">データシート見てなくてよかった。<br />
</font></font>いったい何の冗談なのか。<br />
データシートが間違ってるって、いったい何を信じて設計をすりゃ良いんでしょう？<br />
<br />
5,6がNon Connectになってるのは秋月からの資料がRS-232C経由でPCとつなぐことを意図した説明だからです。LVTTLの入出力があるんだから、秋月もピンの内容ぐらい説明してやれば良いのに。<br />
<br />
<br />
ちなみにGT-720Fにはコネクタのついている面の一つ左の側面にチップLEDが装備されており、電源が入ると光ります。光り方は2種類あり、<br />
<a href="//aout.blog.shinobi.jp/File/HNI_0011.JPG" target="_blank"><img border="0" align="left" src="//aout.blog.shinobi.jp/Img/1235506026/" alt="HNI_0011.JPG" /></a><br />
点灯：衛星捕捉中(200mA食ってる状態)<br />
点滅：最低3つの衛星を捕捉(170/130mAの状態)<br />
<br />
という意味のようです。<br type="_moz" />]]> 
    </content>
    <author>
            <name>nya</name>
        </author>
  </entry>
  <entry>
    <id>aout.blog.shinobi.jp://entry/46</id>
    <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/gps%E3%83%AD%E3%82%AC%E3%83%BC/gps%E3%83%AD%E3%82%AC%E3%83%BC%E8%A3%BD%E4%BD%9C%E6%97%A5%E8%A8%981" />
    <published>2009-02-24T02:06:44+09:00</published> 
    <updated>2009-02-24T02:06:44+09:00</updated> 
    <category term="GPSロガー" label="GPSロガー" />
    <title>GPSロガー製作日記1</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<a href="http://www.iiyo.net/products/foreathlete205/">Garmin</a>とかが出している走行速度計を作りたい！ということで、作り始めました。<br />
<br />
自転車の速度計とはちがって、マラソン中に持って走るということから、必要用件などを<br />
<br />
・リアルタイムで現在の速度がわかること<br />
･腕時計型や、腰に巻くなど、走行中に見やすいこと<br />
・最低5時間(フルマラソンの完走)の間は電池交換なしで動くこと<br />
・ある程度の耐衝撃性をもつこと<br />
・ある程度の防滴性をもつこと<br />
<br />
<br />
続いて目標を<br />
<br />
・200g以下<br />
・腕に巻くならさらに軽量に<br />
・走行後、PCでデータの編集が容易であること<br />
<br />
<br />
速度計だけなら、GPSのデータをロギングする必要はないのですが、<br />
<br />
「PCで走行経路とかわかったらたのしいんじゃね？」<br />
<br />
という野望をかなえるために、データをロギングすることに決定。普段は自転車に乗せてたら楽しそう。<br />
<br />
<br />
調子に乗ってさらに野望を<br />
<br />
・グラフィックLCD/OLEDを積んで、カーナビのようなナビを表示<br />
<br />
<hr />
<br />
部品<br />
<br />
・GPSレシーバ　GT-720F<br />
<a href="javascript:void(0);/*1235415285146*/"><img border="0" align="left" alt="HNI_0010.JPG" src="//aout.blog.shinobi.jp/Img/1235415205/" /></a><br />
これがなければ始まらない。教科書の電磁気学程度では無線の知識とはいえない。自作はさすがに難しいでしょう。<br />
<br />
CanMore製。秋月にて3500円。<br />
<br />
<br />
<br />
<a target="_blank" href="//aout.blog.shinobi.jp/File/HNI_0009.JPG"><img border="0" align="left" alt="HNI_0009.JPG" src="//aout.blog.shinobi.jp/Img/1235415204/" /></a><br />
<br />
裏面はこんな感じ。<br />
<br />
<br />
<br />
<br />
<br />
<br />
続いて使用するマイコン<br />
野望の実現のためにはかなり高性能かつピンの多いマイコンが必要。ということで<br />
<br />
ATmega644<br />
<a target="_blank" href="//aout.blog.shinobi.jp/File/HNI_0008.JPG"><img border="0" align="left" alt="HNI_0008.JPG" src="//aout.blog.shinobi.jp/Img/1235415206/" /></a><br />
プログラムの入る領域は64KBとすばらしくでかい。<br />
出力のできるピン数は32ピンとこれまた多いこと多いこと<br />
<br />
<br />
<br />
<br />
<br />
<br />
それにしても図体がでかい。「俺はmega644だ。なんか文句あるか」っていいたげな存在感です。<br />
<br />
tiny2313とならべると<br />
<a target="_blank" href="//aout.blog.shinobi.jp/File/HNI_0007.JPG"><img border="0" align="left" alt="HNI_0007.JPG" src="//aout.blog.shinobi.jp/Img/1235415207/" /></a><br />
こんな感じ。<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br type="_moz" />]]> 
    </content>
    <author>
            <name>nya</name>
        </author>
  </entry>
  <entry>
    <id>aout.blog.shinobi.jp://entry/45</id>
    <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/%E6%97%A5%E8%A8%98/%E5%AF%9D%E5%86%B7%E3%81%88%E3%81%A3%E3%81%A6%E3%82%B3%E3%83%AF%E3%82%A4" />
    <published>2008-09-23T10:06:45+09:00</published> 
    <updated>2008-09-23T10:06:45+09:00</updated> 
    <category term="日記" label="日記" />
    <title>寝冷えってコワイ</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[いやタイトルのまま。怖いですね～。<br />
<br />
今回の風邪はウィルス性胃腸炎だそうな。風邪って言う病気はないからこっちが正しいですね。<br />
それにしても、すでに発熱から三日目ですが、下痢が止まりません。体のほうはブログつけようかってくらいに回復しているのに、腹はどうにもならんなぁ。<br />
<br type="_moz" />]]> 
    </content>
    <author>
            <name>nya</name>
        </author>
  </entry>
  <entry>
    <id>aout.blog.shinobi.jp://entry/44</id>
    <link rel="alternate" type="text/html" href="https://aout.blog.shinobi.jp/%E3%82%A2%E3%83%8B%E3%83%A1/%E3%82%B9%E3%82%AF%E3%83%BC%E3%83%AB%E3%83%A9%E3%83%B3%E3%83%96%E3%83%AB%20%E6%9C%80%E7%B5%82%E5%9B%9E%EF%BC%81" />
    <published>2008-09-19T17:26:51+09:00</published> 
    <updated>2008-09-19T17:26:51+09:00</updated> 
    <category term="アニメ" label="アニメ" />
    <title>スクールランブル 最終回！</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<font size="5">熱いよ～～っ！<br />
</font><br />
やっぱり最高だね。スクランは。<br />
<br />
恋する気持ちをひたすら丁寧に丁寧に描くところがたまりません。<br />
ギャグもかなりぶっ飛んだ勢いのギャグだし、笑いあり、熱さありってのが私のツボらしいです。<br />
<br />
正直3期をやってくれなかったのは残念無念なのですが、最終話だけでもやってくれてよかった。<br />
スクランの漫画を購入することに決定ｗ<br />
<br type="_moz" />]]> 
    </content>
    <author>
            <name>nya</name>
        </author>
  </entry>
</feed>