エントリー

ユーザー「gshoes」の検索結果は以下のとおりです。

東芝の家電に思うこと

 東芝と言えばなく子も黙る総合電機メーカーであり,かの田中久重にまで起源を遡る,名門中の名門です。その守備範囲は最先端の半導体から防衛・原子力まで広がっており,規模,技術ともに世界屈指の製造業です。

 こういう大きな会社というのは,知名度の高さに反して親近感というのは案外わかないものなのですが,東芝がえらいなと思うのは,一般家庭やアマチュアのホビーストの懐にもちゃんと飛び込んで,そのための多少の手間やコストには目を瞑るという大らかさがあったことでした。

 1つはサザエさんと東芝日曜劇場。サザエさんに至っては,登場する家電が常に最新の東芝製という念の入れようでした。

 1つは高性能な電子デバイスの,アマチュアへの供給に積極的だったことです。

 電子デバイスというのは,数がまとまらないと商売にならないので,1つや2つ欲しいと言うアマチュアをいちいち相手にしていたら,手間ばかりかかって儲かりません。それでアマチュア向けのお店をサポートする問屋さんや代理店を相手にするのですが,それでも金額は大した事はありません。

 しかし,東芝はそれこそ戦前から,アマチュアへの電子デバイスの広告と啓蒙を積極的に続けていたように思います。戦前から戦後にかけての,「初歩のラジオ」などの雑誌には東芝の真空管の広告が出ていますし,高度経済成長期においてはオーディオの雑誌にも,最新のトランジスタの広告が出ています。

 私が特に覚えているのが「初歩のラジオ」に長年連載が続いた,「東芝ラジオ教室」です。東芝は見開きの広告のページをずっと買い続け,ここでなかなか良く出来た電子工作の製作記事が見開きで掲載されていました。広告ページですから東芝のデバイスを使う物しか出ていませんが,広告費以上に儲かるわけはなく,電子工作少年に東芝を知ってもらうという「先行投資」だったと言えるでしょう。

 それに,実際に電子部品店に行ってみれば,東芝のトランジスタやダイオードは手に入りやすく,価格も安いのです。ゆえに雑誌の製作記事にも登場する機会が多くなり,ますますその部品がお店で買われることが増えるというサイクルが成り立つようになります。

 ですから,東芝の2SC1815が先代の2SC372やその前の2SB56などと同じように,我々アマチュアに最も馴染みのあるトランジスタとなるのは,当たり前のことでした。

 しかし,いかに広告に熱心で知名度もあり,安価で入手がたやすいとしても,性能が優れていて,使いやすい物でなくてはなりません。よく知られたように2SC1815はそのままHiFiオーディオ機器や無線装置に組み込めるほどの汎用性と高性能を誇る万能トランジスタでした。
 
 こうして,東芝のトランジスタを大事なお小遣いで1つ2つと買い求めた子供が,やがて大きくなって技術者になったときに,東芝に強い安心感をもってしまうのだと思います。私もそうです。

 余談ですが,かつての電子工作の雑誌に掲載されていた製作記事というのは,なかなか設計が難しいです。読者がいざ作ってみようと思い立った時に,手に入った部品の性能は保証されておらず,スキルも知識も経験も年齢もバラバラ,持っている測定器もまちまちで,その使い方も正しいとは限りません。調整だって出来る人と出来ない人がいて,そもそもほとんどの場合一発では動きません。

 どんな人が作っても完成し,無調整で性能が出て,間違った使い方をしても壊れない,手に入りやすい部品だけで構成されいて,しかも安い。

 そういう設計が理想とされている世界が,かつての電子工作雑誌の製作記事です。

 これはかなり難しいことで,そうならなかった製作記事も多くありました。記事を書かれた先生方にも多少の温度差があったり,使命感はお持ちでも技術が追いつかないケースもあったように思います。雑誌によっても考え方が違うようにも思いました。

 そういう意味では,自分の為だけに自分で設計する回路が,一番手抜き出来ると言えるでしょうね。
 
 こういう製作記事の,部品面を支えたのが東芝でした。東芝のトランジスタ,東芝のダイオード,東芝のデジタルIC,東芝のアナログIC・・・いくつもの部品名が頭の中に焼き付いています。

 その東芝が大きく揺れています。そして先日,家電部門が中国の家電メーカーに売却されることになりました。技術,ノウハウはもちろん,従業員も生産設備も継承されて,しかも東芝ブランドも今後40年間使用するというのですから,我々からみてこれまでと何が違うのよ?と思う訳ですが,東芝の根底に流れる「消費者の懐に飛び込む」ことは,今後はなくなるかも知れません。

 もう1つ,東芝が他の家電メーカーと違うなと思うポイントを,ちょっと視点を変えて書いてみようと思います。

 1990年代前半まで,家電製品は急激に進化し,その先頭を日本のメーカーが走っていました。

 最終製品の進化がデバイスの進化によって成される構図は今も昔も変わりません。しかし東芝がちょっと違っていたのは,デバイスの進化を東芝自身が強烈に推進していた事と,それを積極的に最終製品に搭載して性能向上を果たしていたことです。

 デバイスを作る事が出来ないメーカー,あるいは進化させることの出来ないメーカーは,デバイスの使いこなしで最終製品の性能を向上させることになります。シャープやカシオなんかがそうですね。自ずと安い製品か,「その手があったか」というような工夫に満ちた製品が多くなります。

 一方の東芝やNEC,日立などは世界最高峰のデバイスメーカーでもありましたから,これを自社の製品に搭載することで,他には全くない機能や圧倒的な高性能な製品を作る事が出来ました。当時も言われた一流メーカー製と二流メーカー製との間には,このあたりに大きな溝があったように思います。

 製品が部品で作られている以上,製品は部品の性能を絶対に越えられません。言い方を変えると,部品の性能が向上すれば,自動的に製品の性能は向上するのです。

 東芝は,それを愚直に進めたメーカーだったように思います。1970年代のオーディオ製品の性能向上は,ローノイズ低歪みのトランジスタとFETの登場で成されましたが,東芝のデバイスはその先頭を走っていました。

 ラジオや無線機器の高感度化,高性能化,多チャンネル化も半導体の力です。コンピュータもそうです。東芝はCPUやメモリ,周辺LSIの主要なメーカーでした。

 一例を挙げましょう。かつてアナログテープデッキが現役だった時代,アナログ録音では不可避なヒスノイズを削減するシステムとして,Dolbyノイズリダクションがありました。

 民生用のDolby-Bは,安価で安定した動作を狙ったために,性能面での妥協がありました。ここに勝機ありと踏んだ日本のオーディオメーカーは,こぞってDolby-Bを越えるノイズリダクションを開発しました。

 でも,Dolbyにだって,Dolby-Bが性能面で不十分である事は分かっていたはずです。Dolbyは研究開発を生業にする会社ですから,自社でデバイスを開発しません。民生品に採用されるには,性能と価格のバランスを取らなければならず,あえて性能を落としたのでしょう。

 やがて複数の会社からDolby-Bを上回るノイズリダクションが登場しましたが,結局残った物はありませんでした。

 そんな中で健闘したと思うのが,東芝のADRESです。ADRESはDolby-Bを上回る性能を誇り,しかも音質も良いと評判でしたが,それだけなら他のメーカーにもチャンスがありました。東芝が違っていたのは,ADRESをIC化したことです。

 IC化すれば,価格は劇的に下がり,性能も安定します。当初ディスクリートで作る事を想定したDolby-Bが性能面で妥協したのは当然の判断であり,IC化することが前提ならもっと性能を上げることだって出来たでしょう。

 ADRESは,自社のデバイス開発能力を背景に,性能と価格と安定性を高次元で両立したシステムだったのです。

 ADRESは複雑な処理が必要でしたが,ICは東芝しか開発しませんでした。また,東芝はADRES用のICを少なくとも3世代作り続けており,その都度大きく改良されていました。

 基礎開発,デバイス開発,そして最終製品の設計という3つが協調し,優れた製品が登場したという例だったと思います。

 このことは,別に東芝に限ったことではなく,当時の日本の家電メーカーの強さの源泉でもありました。

 ADRESの場合,それでも残れませんでした。DolbyがデバイスメーカーにワンチップICを作らせたことで,もともと簡単だったDolby-Bがもっと簡単に安く使えるようになったことが1つ,もう1つはワンチップ化を前提にした複雑なシステムであるDolby-Cを開発し,すでに普及していたDolby-Bとの互換性を武器に急速に広まったためです。

 今にして思えば,Dolbyは自らの役割と出来る事をきちんと認識し,その時々でやるべき事をきちんと理解していたんだなと感心します。

 人づてに聞いた話で恐縮ですが,デバイス部門と最終製品の部門が仲が悪くて,最終製品に自社の半導体を供給してもらえず,他から購入していたメーカーもあったそうですし,互い相手をバカにしあっていた会社もあると聞きます。

 またある会社では,デバイス部門が弱くなってから,少しずつ最終製品が弱くなっていきました。

 そして現在。共通化によって大量に生産された部品を安価に手に入れて最終製品にすることでしか,価格と性能をバランスできない時代になりました。デバイス専業メーカーが作るデバイスに太刀打ち出来ず,それを使った製品はどのメーカーでも大差がない,これはすなわち,世界中のメーカーがかつてのシャープやカシオと同じ土俵に上がったことを意味しています。

 つまり,ここでの勝者は,価格とちょっとした工夫で他社を出し抜いた会社です。

 東芝は,残念な事に,この競争では勝てませんでした。

 自分達の都合だけでデバイスを進化させ,自分達の製品に使って自分達の望む性能向上を果たす,結果として複数のメーカーが様々なアプローチで個性的な製品を作って世に問う,我々は新製品が出る度に,胸を躍らせて使ってみる,そういう話が普通でなくなり,世界第一位か二位までの僅かな会社の特権となってしまったには,こういう背景があったのだと私も改めて思いました。

 では,現在は最終製品の性能は,以前よりも上がりにくいのでしょうか?

 いえ,そうではありません。デジタル化とCPUの処理能力向上により,製品の性能はソフトウェアが握る時代です。ソフトウェアはデバイスと違って初期投資が軽いこともあって,自分達の都合で自分達が作る事がまだまだ可能です。

 そして,それが出来たメーカーは,技術を進歩させ,優れた製品を世に問い,大きな支持を受けて文化を創り上げていきます。

 私個人にとっては,シャープの買収よりも,東芝の家電部門の買収の方が大きいニュースでした。それは,最終製品を決定付ける要因が変化していたという気付きが,確信に変わるものであったからです。

 そういえば,シャープが液晶に傾倒した理由の1つに,かつてのテレビのキーデバイスであるブラウン管を自社で作っていなかったことをあげる人がいます。テレビメーカーにとって自社開発のブラウン管を持つことは,夢でした。

 液晶の時代をなかば強引に引き寄せたシャープは,念願のキーデバイスを手に入れます。しかし,残念な事に,時代は変わっていました。夢やロマンだけでは,商売は出来ません。

 そして東芝はもちろん,ブラウン管も,液晶も持っていました。でも買収されてしまったわけですが,これを「日本のメーカーの凋落」という単純な文脈で語ってしまうことには,私はどうしても納得出来ないのです。

AVRtiny13Aでつくるシリーズ4 I2CでキャラクタLCDを

  • 2016/04/01 08:26
  • カテゴリー:make:


 今回は,tiny13AでI2CのキャラクタLCDを動かすという話です。

 またまた秋月ですが,AQM0802という320円のキャラクタLCDがあります。8文字x2行で,大きさは2.5cm x 1cm程度と小型,3.3Vで動作し消費電流も最大1mAとなかなかのものです。

 I2Cですから,電源2本と信号線2本の合計4本を配線するだけです。これがtiny13Aに繋がってくれると,随分出来る事が増えそうです。

 同じI2Cで叩くSi5351AやaitendoのLCDが動いているんですから,なにも心配などありません。アドレスを変更し,コマンドとデータを送ってやれば,すぐに文字が出てくるさ,と思って軽い気持ちで始めたのです。

 ところが,これが悪夢の始まりでした。

 いくらやっても動きません。文字も出ません。初期化も出来ていないようです。おかしい,とにかくおかしい。

 いろいろいじっても,全然動く気配がありません。配線ミスも疑いましたが,それもなし。このLCDはハンドシェイクをせず,ウェイトで制御しますので,十分なウェイトをあちこちにいれましたが,それでもダメ。

 関数を作らず,ベタでデータを流し込んでもダメ。とにかくダメなのです。

 いろいろいじっているうちに,初期化だけは出来るようになりました。スタートコンディションに続けてアドレスを送り,コマンドをだだだと流し込むと,とりあえずLCDがぼやーっと動き始めます。

 そこからさらにデータを書き込むと,なにやら文字が出るようになりました。でも,化けていたり,出なくなったりと,散々です。

 いろいろ試していると,ストップコンディションから次のスタートコンディション,そしてアドレス送信という一連の流れを繰り返さず,続けてデータを送り込めば動く事がわかりました。

 この段階で胃に穴が3つほどあいていた私は,向かい風に立ち向かえなくなっていました。もうこれでいい,とにかくデータを流し込もう・・・

 しかし無残に,表示は途中で途切れ,そこからはバケバケになってしまいました。

 万策尽きた。もうダメだ。俺はもう疲れた。寝る。

 悪いことに,オシロスコープが使えない環境で検討をしていたのですが,それはすでにSi5351AでI2Cが動いていたので,I2Cで問題が出るとは思っていなかったからです。

 AQM0802特有の問題,もっと言うとLCDコントローラであるST7032の相性問題と考えて,もうこのLCDはあきらめようと思っていたのですが,最後に波形だけ見て終わりにしようとおもったのでした。

 自宅にある,使い慣れたバグファインダー,HP54645D。

 Si5351AのI2Cにプローブをあて,設定完了までの約1秒間,波形を丸取りです。

 そして拡大して波形の詳細を見ていきます。

 私はここで,戦慄しました。

 まず。I2Cの基本的な概念が実装されていません。I2Cは,SDAの取り込みをSCLのエッジでは行いません。SCLがHighの時に取り込む,レベルトリガです。ゆえに,SDAはSCLがLowの間にしか,動かしてはなりません。

 波形を見ると,SDAとSCLが同時に変化しています。これでもなんとか動いているのは,Si5351Aのマージンのおかげでしょう。

 スタートコンディションを見ていきます。うん,これはまあ正常です。

 次,ACKです。一説によると,ST7032はACKを返す際に,レベルを下げきれないことがあり,これが誤動作に繋がるという話です。しかし,今回はプルアップ抵抗を大きめにしてある(10kΩ)ので,ちゃんとACKが下がっています。問題ありません。

 そして次,ストップコンディションです。

 ・・・え,ストップコンディションが出てないじゃないか。

 一応それらしい動きをしていると思われる場所は,最後の部分にありました。しかし,SDAがHighのままになっていて,その状態でSCLがLowからHighになっているのです。

 本来なら,SDAは一度Lowになってなくてはならず,そこからHighにならないといけないのですが,ストップコンディションになり損ねています。

 どうやら,ストップコンディションを発生させる関数の先頭にSDAとSCLの両方をLowにする記述を忘れているようです。

 自宅ではコンパイラもライタもないので,修正はできません。おそらくこうだろうとコードをざざっと書いて,翌日修正をして書き込んで見ると,何事もなかったように文字が出ました。

 うれしいと言うよりも,なんだかバカバカしいと思いました。

 というのも,このコード,google先生に聞いて出てきた,ある人のコードをそのままコピペしたものだったのです。一応内容は理解したつもりでしたし,なにより動作しているわけですから,ここを疑うことはしませんでした。

 そもそも,この方も,海外のあるサイトから持ってきた物だとおっしゃっていて,内容を理解した上でウェイトを調整したと書かれていました。

 でもね,内容を理解されたという割には,波形を見たら5分で分かるようなミス,それもストップコンディションというI2Cの基本中の基本シーケンスが動いていないんですから・・・

 いえいえ,信じた私が一番悪いのです。

 他人を信用せず,全部自分で書こうかと,途中までソフトウェアI2Cを書いていた途中のことでしたが,原因が分かり,修正ができたのですから,もうこのまま使います。

 この修正をaitendoのLCDで作った時計にも入れてみましたが,当然問題はありませんでした。これで検証終了。修正版を正式にリリースです。

 まとめるとこうです。ストップコンディションが出ていない状態ですので,バスは生きています。しかしホストはスタートコンディションとアドレスを発行します。スレーブはこれがデータかコマンドと解釈するので,意味のある数字なら動くし,ダメなら動かないわけです。

 なら,Si5351Aではなぜ動いたのか。これはやっぱり,ストップコンディションが出ていなくても動くようになっていたから,ということでしょう。もしかしたら,SDAもSCLも両方ともが,ある時間以上Highになっているとタイムアウトでバスを解放するようになっているのかも知れません。

 aitendoのLCDも修正前状態で動いていましたので,こちらもストップコンディションを無視しているんでしょうね。3つのデバイスのうち,2つが動けば,申し訳ないけど正しく動いていると信じてしまいます。

 ということで,なんとかAQM0802を動かす事に成功しました。I2Cの動作も詳細に理解しましたので,決して無駄ではなかったと思うのですが,それでもどかっと疲れが出ましたし,釈然としない物もあります。

 今回もはっきりわかったのは,やっぱり波形を見るとすぐに解決するということ,そしてオシロスコープはやはり最強ツールだということでした。

 波形を見ずに試行錯誤をしていては,20時間経っても30時間経っても問題が見つかりません。問題が見つからないと対策も打てません。

 でも,波形を見れば,本当に5分で問題が発覚,対策も打てます。

 そして波形を取るのも,簡単にできると作業が捗ります。I2Cを解析する機能を持ったオシロスコープもありますが,私はそこまではいりません。ただ,見たい部分を確実に取り込める事が大事です。

 これはつまり,多彩な条件を設定出来る,キレのいいトリガがオシロスコープの性能を決めるといっていいのですが,それ以外に,長時間丸取りし,あとで詳細を拡大して見ることが出来る機能が,私には必須です。

 今のオシロスコープでこの機能がどのくらい装備されているのかわかりませんが,HP54000シリーズはこの機能の走りだったと記憶していて,幸い私が使い始めた54645Dがもつこの機能に,思わずため息が出たことを覚えています。

 拡大すると取り直しになるオシロスコープがまだ多く,見たい部分の位置が,先頭からのバラバラの時間になってしまうようなケースだと,もうお手上げだったりします。

 少ないチャンスを確実にものにするのが,キレのいいトリガ。そしてそのチャンスを生かし切るのが,MegaZoomです。

 最近,安価なオシロスコープが当たり前になってきており,電子工作を嗜む人達の間でオシロスコープを持っていることが珍しくなくなりました。

 それはそれでいい時代になったと思うのですが,それらが本当に良いものかどうか,私にはわかりません。良い道具を使えば,良い仕事ができます。それを強く感じた,一連の騒動でした。

GPSで周波数を追い込む

  • 2016/03/31 15:57
  • カテゴリー:make:

 周波数カウンタにTCXOを搭載し,2ppm以下の周波数精度を手に入れた私ではありますが,2ppmといえば,1MHzに対して2Hzですから,8桁の周波数カウンタの精度としては,ちょっと心許ないのも事実です。

 フルスケール10MHzを測定するとすれば,1ppmなら10Hzです。ちょうど3桁目が10Hzの桁ですので,8桁のカウンタなら下2桁が信用出来ないという事になります。せっかくの8桁カウンタなのに,寂しいですよね。

 温度変化や経年変化はやむを得ないとして,今出ている周波数が一体どれくらい正確なのか知りたいと思っても,そういうチャンスはなかなかありません。ルビジウム発振器に手を出すとか,校正済みのOCXOを買うとか,そういうことは費用の問題もそうですし,維持の問題もあるので,素人には厳しいです。

 ちょっとまった,手軽に高精度な「絶対値」が手に入る方法があります。GPSです。かつてはJJYの10MHzをつかまえるとか,カラーテレビの内部からカラーバースト信号を引きずり出すという方法がありましたが,JJYの短波は停波して久しく,カラーバーストも地デジになった現在では無い物ねだりに過ぎません。中国政府が威信をかけて出している標準電波もありますが,それこそ知る人ぞ知るでしょう。

 GPSではすべての衛星で位相まで揃った高精度な周波数が手に入り,これを元に測位を行います。周波数の精度が高くないと測距精度が上がりませんので,GPSの衛星には10E-13という精度の原子時計が搭載されて,しかも精度は地上で管理されています。

 GPSの受信機はこの周波数と位相まで一致させて測位を行います。ですから,理屈の上では10E-13の精度が手元にくるはずですが,なにせ宇宙から飛んでくる電波ですから,空気の揺らぎもあって,そこまでの精度は出ません。
 
 調べて見るとGPSモジュールが出力する1秒パルス(1PPS)の精度は10nsくらいとのことです。1nsは10E-9秒ですから,1PPSの精度は10E-8ということになります。

 ここで重要な事は,この1秒で10nsのズレという精度は,常に補正され続けているので,10秒だろうが100秒だろうが1000秒だろうが,トータルのズレはやっぱり10nsということです。ということは,長いスパンで見れば見るほど,精度は上がっていくのだという事です。

 また,正確なパルスは1秒に一度しか出ませんから,パルスが出ていないときは,GPSとは別の時計を持っていないといけません。ここに変動の大きな発振器を使うと,1秒ごとに正確な時間に補正されるとは言え,1秒未満の時間は全くあてにならないということになってしまいます。

 よく,GPSを使ったタイムベースにOCXOを使う例を見るわけですが,1秒未満の時間はOCXOを使い,これを1秒ごとにGPSで補正して使っているわけです。

 GPSの1秒ごとの精度は10E-8から10E-9くらいですが,これが1000秒になると10E-12くらいに精度があがります。こうして長い時間かけてOCXOの補正を続けて,最終的に10E-12という原子時計に迫る精度を手元に作り上げるのです。

 まあ,ここまでやると結構大変です。そこでふと見方を変えてみたのですが,10E-8でよければ,1秒でいいのです。なら,面倒な仕組みも必要なく,GPSモジュールから出てくる1PPSだけでいいですよね。

 もちろん,周波数も異なるので,この1PPSをそのまま,周波数カウンタのタイムベースにすることはできません。しかし,タイムベースを校正するための基準クロックとしてなら,十分です。

 そう,GPSの1PPSのパルスが,正確に1Hzになるよう,周波数カウンタのタイムベースを調整するのです。

 とはいえ,この方法では1秒に一度しかパルスが出ませんので,ゲートタイムが10秒程度の普通の周波数カウンタでは10個のパルスしか数える事が出来ません。10MHzがGPSから出てくればいいんだけどなあ・・・

 そんなことを数年前から考えていたんですが,周波数は周期の逆数ですので,周期を計ればいいんじゃないかと気が付きました。

 周波数カウンタのモードを周期を測定するモードに切り替えます。正確な1秒を入力に突っ込むのですから,この1秒の間にタイムベースのパルスがいくつあったかを数えれば,校正できそうです。

 例えば10MHzのタイムベースを数えることにすると,カウントされた数字は10000000となり,1000000.0us,すなわち1秒という測定結果を得られることでしょう。

 とまあ,そんな風に妄想していたところ,ふと最近のGPSモジュールのタイムパルス出力が,1PPSではなく10kHzや1MHz,はては10MHzまで設定可能であることを知りました。

 なんと,GPSから10MHzが直接出てくるなんて,夢のようです。

 しかし残念ながら,それは夢でした。というのも,ジッタが大きすぎて使い物にならないんだそうです。理由はどうやら,GPSモジュールの内部クロックが48MHzで,ここから10MHzを作っている関係で,どうしてもジッタが大きめに出るのだとか。だから,1MHzや8MHzといった整数比であれば,ジッタは少ないものが手に入ります。

 さて,話を整理します。

 うちの周波数カウンタは,TCXOを使って安定度を2ppm程度にしてあります。これは10MHzフルスケール(8桁フルカウント)で,20Hz程度の測定誤差が出ることを意味しています。

 ただし安定度ですから,初期値に対する変動が2ppmというだけで,初期値がいくつかはデータシートを信用するしかありません。VM39S5Gという秋月のTCXOは1ppm以内に合わせてあるということですが,以前ここに書いたように電源電圧で大きく変動し,0.1Vで40Hzも動きます。0.03Vずれると1ppm変動するというのですから,これはかなり大きいです。

 一応,高精度な電圧計で電源電圧を5Vぴったりに追い込んでいますし,秋月の話を信じるなら5Vで1ppm以内に調整されているということですので,そんなにずれているわけではないと思いますが,それでも初期値は現在不明なままです。

 そしてその初期値は,絶対精度がはっきりしている,GPSから生成された周波数との比較で手に入ります。本来GPSでは1PPSしか出てきませんし,これも長期的に平均を取らないと10E-12レベルにはなりませんが,1秒でも10E-8程度の精度は持っているという話です。

 そこで,GPSで1PPSを元にしたもっと高い周波数を作り,これを周波数カウンタに突っ込み,その周波数になるように周波数カウンタのタイムベースを調整します。タイムベースの調整は,TCXOに供給する電源電圧の微調整で行います。

 よし,あとはどうやって行くかを考えましょう。

 GPSといえば,aitendoです。aitendoのGPSの取り扱い品種は多く,でもあまり詳しい説明がないので,正直敷居は高いです。ですが,先人達の苦労のおかげで,なにを買えばいいのか,調べることができます。

 今回私が買ったのは2種類,u-bloxのNEO-6Mが搭載された基板とアンテナのセットでNEO6M-ANT-4Pです。数ヶ月前のトラ技にも出ていたんですが,値段が上がったようで1980円ではなく2780円で買いました。

 もう1つは最新のNEO-M8Tが搭載された,GM-8013Tです。最新だけにちょっと高くて,3980円でした。最新のものが欲しいのは,別のいろんな衛星をつかまえたいわけではなく,少しでも感度を稼ぎたいと思ったからです。

 そうと決まれば,在庫があるうちに注文です。迅速な対応で,翌日には届きました。ありがたいですね。

 さて,届いたGPSですが,いずれもシリアルポートで繋ぎます。RS-232Cではないので,レベル変換はいらないのですが,この時手元に,USB-シリアル変換基板が1つもありませんでした。

 しかも,u-bloxのツールである,u-centerはWindows Vista以降しか動かないという事なので,古いPCではダメ。USB-RS-232C変換ケーブルも新しいOS用のドライバがなくて動かず,結局買い直す羽目になりました。

 Windows8.1でu-centerが動くようになって,ようやくこの2つのモジュールに火を入れます。PCとの通信は問題がないのですが,室内なのでなかなか衛星をつかまえてくれません。特にGM-8013Tは全然だめです。壊れたのか?

 そのうちつかまえるだろうと,u-centerで先に設定をいじってみます。configuration viewからTP5の設定をあれこれいじって,8MHzを出してみました。衛星をつかまえていないので,あくまでこのモジュールの内部クロックです。

 周波数カウンタで調べると,7Hzほど高いです。なるほど。

 ・・・さて,そのうちつかまえるだろうと思っていた衛星は,なかなかつかまりません。やっぱり壊れたのか?

 ふと気が付くと,一緒に電源を入れたNEO6M-ANT-4Pは結構しっかりつかまえているようです。

 こっちにシリアルポートをつなぎ替えて,設定をします。衛星をつかまえていないときには1MHzを,衛星をつかまえてロックしたら8MHzになるようにしました。こうすれば,いちいちPCを立ち上げなくても状態が出力される周波数でわかります。

 衛星をつかまえない状態では1MHz,つかまえたら8MHzに鳴っていることを確認して,これを10MHzに設定してみると,値がパラパラとばらつきます。オシロで見れば,それはそれはひどいジッタで,これは全然使い物にならないです。

 1MHzや4MHz,8MHzや規格外ですが12MHzにすると,ジッタが目視できないくらいの綺麗な波形が出てきます。周波数カウンタでも値は動きません。

 とりあえず,この8MHzを校正用基準周波数として,周波数カウンタのタイムベースの電源電圧を調整し,8MHzになるようにあわせます。最初はゲートタイムを1秒にして大まかにあわせ,次にゲートタイムを10秒にして追い込んで行きます。

 10秒に一度しか値が更新されませんので調整は難しいのですが,ちょっとずつちょっとずつあわせます。

 8000000.0Hzになるように根気よく合わせるのですが,5Vを作っている可変電圧LDOの可変抵抗が,いかに多回転型を使ったとはいえ,時間と共に変動があるのです。TCXOで温度変化を相殺しても,電源電圧に温度依存があったり経年変化があったらなんか意味がないです。

 最終的に,0.1Hzの桁まであわせ込みました。

 8桁の周波数カウンタは,ゲートタイム10秒で0.1Hz以下をカウント出来ません。最大0.1Hzの測定誤差を起こすわけですから,これは0.0125ppm,すなわちこの段階では1.25ppb以内の精度になっているということになります。

 もちろん安定度が2ppm以下ですので,こんなものはすぐに変動してしまうでしょう。そんなに意味はありません。けど,やっぱり限界ギリギリまでせめた,という気持ちよさはありますね。

 一応,このまま二晩通電して周波数を測定し続けました。周波数カウンタは最終桁が2ほど動く事はありますが,なんとか追い込めたようです。ゲートタイムが10秒で精一杯ですので,1PPSから作る8MHzの精度も10E-8くらいがいいところでしょう。あるいはGPSモジュール内蔵のPLLから生成する8MHzなので,もっと悪いかも知れません。

 仮に10E-8出ていれば,この周波数カウンタの精度としてはまずまずでしょう。
 
 ところで,GM-8013Tも同時に調べていたのですが,翌日の朝になるとちゃんとつかまえるようになりました。窓際に置いておくとたくさんの衛星をつかまえるようになり,ロックした瞬間に7Hzのズレがあった8MHzも,ピタッと8MHzになりました。

 ということで,周波数カウンタの校正は終わりました。TCXOの安定度が気になる場合は,GPSで校正をしてから測定をすればいいわけで,TCXOとGPSの手軽さが生きてきます。

 この状態で,手元のOCXOも調整をしましたし,TCXOも可能な物は確認して調整をしました。優秀だったのは以前鈴商の店頭で買ったNECの15MHzで,これはもともと1ppm以下のズレしかない上に,電源電圧の変動に対しても安定でした。優秀です。

 TG-5021も電源の変動には強かったです。これがトヨコムの9.98MHzのものだとバンバン動きます。VM39S5Gもそうです。こういう観点で評価をしないと,このあたりの発振器は難しいですね。


AVRtiny13Aでつくるシリーズ3 TCXOを使って時計を作る

  • 2016/03/31 12:04
  • カテゴリー:make:


 さて,今回はCPUのクロックに外部のTCXOで作った10MHzを突っ込み,これをもとに時計を作るという話です。少し前に,わざわざSi5351で32.678kHzを生成して時計を作ったという話を書きましたが,そんなことをしなくてもTCXOの時計を作る事は出来るんじゃないかという発想を,実際にやってみたという話です。

 そのTCXOの周波数ですが,別に10MHzでなくてもいいんじゃないのと思われると思いますが,そうは問屋が卸しません。

 なにせtiny13Aです,最終的に1秒を作る事の出来る外部クロックは,限られます。ここでは手持ちの関係もあり,10MHzのTCXOを使う事にします。

 原理は簡単で,以前の32.768kHzの時計と全く同じです。ただ,CPUクロックを使いますので,プリスケーラを通せます。

 まず10MHzをプリスケーラで1/64します。そうすると156250Hzになるのですが,これをカウンタで数えます。一定の数になったら割り込みを発生させますが,割り込みの発生が整数回数でなければ,1秒を作れません。

 そこで,数える数を250とします。すると1秒間に625回の割り込みが発生します。割り込み処理で変数をインクリメントし,625になったら1秒です。あとは普通に作ればいいだけです。

 変数はint型になりますし,16ビットの加算になるのでコードも大きくなりますが,処理時間としてはこのくらいの内容なら,まあ大丈夫でしょう。

 LCDは,引き続きデジットの8桁14セグのものです。

 

続きを読む

AVRtiny13Aでつくるシリーズ2 LMT01を使った温度計

  • 2016/03/30 10:50
  • カテゴリー:make:

 秋月の少し前の新製品に,TIのLMT01という温度センサICが登場しました。面白そうだったのでそんなに安くはなかったのですが,買ってみました。

 デジタル式の温度センサなのに,わずか2端子で電源の供給から測定値の送信までやってしまうという,なんだかよく分からないセンサなのですが,使いやすさ向上のためにピン数を減らして行く過程で,いつのまにやらピン数を減らすことが目的にすり替わり,使い勝手はむしろ悪くなっている事に気が付かないという,賢い人がよく陥る罠を地で行っているICだと思います。

 まあ,本来の目的そっちのけで,意地になって違う道を追い続けるという姿勢は,私は嫌いではありません。

 このIC,測定値をパルスの数にして,消費電流の変化で出力します。考えましたね,消費電流の変化とは。

 元々の消費電流が極めて小さいので,抵抗を挟んで電源を供給しても動いてくれます。その抵抗の両端に発生する電圧をつかまえれば,パルスの数を数えることができますね。でも,数を数えるといっても,どこからどこまでの数を数えればいいのやら。

 もしここで,勢いでLMT01を買ってしまい,途方にくれている人がいらっしゃったら,データシートを横目で見つつ,読み進めて下さい。

 LMT01は気温を測る温度センサICです。出力はデジタルで,2ピンの小さなICの中に温度センサとA-Dコンバータ,そしてシリアルインターフェースが入っています。どんな風にやってるかは知りませんが,リニアリティの補正も行われているので,出てくるデジタルデータをそのまま使う事ができます。

 その上,測定温度範囲が広く-50度から150度(おいおいシリコンの破壊限界じゃないか),しかも精度が他に比べて良好で,-20度から90度までなら誤差はわずか±0.5度です。電圧出力のセンサICではないので,A-Dコンバータが必要ありませんし,A-D変換時の誤差を考えなくて済みます。

 デジタル出力のセンサですので,データは電圧でも電流でも抵抗でもなく,数字で出てきます。電源とデータ出力を兼ねるという変態っぷりを実現したのは,その特徴的なシリアル通信によってですが,これ,クロックが別にないだけではなく,スタートもエンドもわからないなんて,なんちゅう無茶をやるんだか。

 私は最初,温度に応じた頻度でパルスが出る程度の物だろうから,ローパスフィルタで平均化して電圧値に変換すればいいか,位に考えていました。けど,それだったら,デジタル値で出力されるというこのセンサのメリットを生かせません。別にサーミスタでもいいという話です。

 考え方としては,測定1回分のデータは,決まった時間の中で出てくるという事が基本になります。かつ,パルスの周期は温度に無関係で一定です。

 このICは25度くらいで1200くらいのパルスを送って来ますが,温度の変化でこれが500になっても2000になっても,1回分の時間はほぼ同じです。パルスの周期も同じですから,あいた時間はパルスが出てこない期間となります。

 なら,こうしましょう。とにかくパルスの数を数えます。パルス何周期分かの時間を待って,前後のパルスの数を比べてみましょう。もし変わっていればパルスが出続けている,つまりデータの転送中ということになりますから,まだ数え続けます。

 もし,前後で値が変わっていなければ,もうパルスは出ていないという事ですから,転送は終了ということになります。すなわちその値が,測定値です。

 僅かな電流の変化を,ほんの僅かな電圧変化に変換してマイコンに突っ込むわけですが,ここにはトランジスタによるIV変換を使う事が,データシートでは紹介されています。しかし,コンパレータを内蔵するマイコンなら,直結が可能です。幸い,tiny13Aにはコンパレータがあります。

 コンパレータで電圧変化を掴んで,変化があれば割り込みで変数をカウントし数を数えます。しばらく待ってから数を比較してやればいけそうです。

 そして,その値を摂氏に変換しないといけません。データシートでは,(パルスの数/16-50)になるということです。すごいですね,ちゃんとリニアリティの補正もすんでいます。

 ですから,パルス数が1234だったら,27.125度ということになるわけです。お,小数点が出てきましたね。面倒くさそうです。

 LCDは前回と同じデジットの8桁14セグのLCDを使います。

続きを読む

ユーティリティ

2026年04月

- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

過去ログ

Feed