「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



Arduinoのスケッチ、長くなったのでファイル分割
をしようとして、エラーになった話の続き。

とりあえず、分割できた。たいした話じゃなかった。
こんな感じに、共通的な処理を.cppと.hの2つの
ファイルに追い出して、.inoファイルには主要処理
だけという配置に。だいぶすっきり。



.cppと.hの形式になったので、もう少し綺麗にすれば、
他のライブラリ同様にライブラリフォルダに入れても
使える状態になってるはず。



エラーになってた理由は大きくは2つ。

一つは、for文とかの中で変数定義しちゃってたり
する行儀の悪いのをエラーにされちゃってたり、
その他モロモロ。全部をC++の文法に倣って書き換え
するか、それとも拡張子だけ.cppに書き換えるかを
1秒ほど悩んだんだけど、手を抜いて.cppに変えた
だけで済ます。
最近、この手のルールは面倒なので、楽な方に
流されちゃってるんだよな。もう。


もう一つは、#includeで読み込むファイルの指定の
方法。というか、記述方法。
何故だかわかんないけど、ダブルコーテーションが
「全角文字」になってた。
フォントのサイズも相まって、凄くわかりにくいバグ。
しかもこの付近が怪しげだなぁと、何度も書き直し
した記憶が。

その2つ以外は、普通にヘッダファイルとかに分割する
方法に従えばokだった。


んで、半角で書き直したら、スルッと通った。動作も
期待通り。なんだよこれ。全然気付かなかったよ。
全角文字って…。エラーの出る場所が全然違うところ
で違う意味だから、わかんないよなぁ。


あとは、char型とかでwarning出てるんだけど、
これはuint8_tとかにした方がいいのかな?byte?
まぁ、細かいことはあとで。




んで、5110液晶でお絵かきするライブラリ的なもの
がなんとなく使える状態になってきたので、オシロ
のモック画面を考えてみる。

画面が狭いし、Arduinoのメモリも限られるので、
出来ることは微々たるもの。んで、ギリギリの線
を狙う。



とりあえず、左側に3文字×6行の文字表示エリア
と、右側にはデータ表示エリアを構える目論見。
必要があれば、データエリアにも文字を表示
しちゃえばいいし。



データエリアは、1マスが横16ドット縦12ドット。
4マス×4マスでは、64ドット×48ドットの構成。

この範囲で表示できるレベルを意識しつつ、
Arduinoの処理速度やADCサンプル速度、SRAMの
容量なども加味。


検討項目:

(1)最小と最長のサンプルレート
(2)扱う電圧の範囲と、切り替え幅
(3)トリガを掛けられるようにするか?
(4)FFTを搭載するか
(5)スクロール表示(ページ切り替え)有無
(6)ユーザインターフェース
などなど。


http://elm-chan.org/works/wcs/report.html
ChaNさんのオシロアダプター(UIはPC側で使う
オシロ)の回路を眺めなおす。

ほうほう。電圧のレンジ切り替えは、アナログ
スイッチを使って4段階に電子的に切り替えする
んだなぁ。なるほど。

(オペアンプ用電源にMAX232使ってたり、PCとの
 接続回路はフォトカプラで絶縁されてたり、色々
 「おぉ!」という練りこまれた回路でスバラシイ)


さらに、
http://www11.ocn.ne.jp/~nontomo/egawa/npcosc.html
以前見つけたこのサイトで、増幅回路部分を眺める。
うん。これとか他にも色々なサイトを眺めると、
インスツルメンテーションアンプ使って、入力の
インピーダンスを高くしてるんだよなぁ。

どうしようかなぁ…。あまり大げさな回路にしたくは
ないし、もっと言ってしまえば、入出力をR2Rアンプ
でサクッと済まそうと思ってたから、そこまで
やりたくないな。

まぁ、余ってるPWM出力を流用すれば、負電源くらい
はスイッチトキャパシタでなんとでもなるんだけど、
部品を、Arduinoのシールドサイズに収めたいんだ
よな。LCD含めて。

まぁ、シールド化しなくても、CPU含めて専用基板化
してもいいんだけど。



サンプルレートは、割り込み間隔に関わるので、
マイコン側にスイッチ入力で制御するとして、
電圧レンジについては、電子制御にするより、
スイッチクルクル回して切り替える方が、
なにかとラクチンだろうな。

http://akizukidenshi.com/catalog/g/gP-00101/
こんなロータリースイッチがいいのかな。
ロータリーエンコーダだと、コード出力だから
うまく行かないんだよな。DIPスイッチはチマチマ
だしなぁ。

±8V~±20mVくらいの範囲(4V/div~10mV/div)
くらいで、6段階切り替えって感じにしたいところ。
ナニがいいだろうなぁ…。


サンプルレートは、せいぜい音声周波数帯だな。



R2Rアンプは、オフセットがそんなに悪くなくて、
安定してて、安いってところから探してみると、
http://akizukidenshi.com/catalog/g/gI-06840/


FFTは、64点なら、Arduino用FFTライブラリ使って、
SRAMが540バイト増加で済むみたい。(+内蔵FLASH)


このへんかな。まぁ、少しずつ詰めていこう。




久々にオペアンプをアレコレ眺めてたら、
http://akizukidenshi.com/catalog/g/gI-02330/
こんなのがあったのか。OPA2353UA。

unityで安定だし、SR=22V/usと速いし、その他
モロモロのスペックがイイカンジだ。出力の
バッファも弱くない。これならビデオ信号が
扱えるだろうと思ったら、やっぱり例として
ビデオ用回路が載ってた。300円か。悪くない。



速いアンプといえば、以前買い込んだ
http://akizukidenshi.com/catalog/g/gI-04725/
NJM2137D。

SR=44V/usと速いんだけど、出力バッファの弱さ
のせいで、75Ωがドライブできず、ビデオ信号は
扱えなかったやつ。

そいういえば、これって出力バッファを強化する
回路をつければ、ビデオ信号が扱えるんじゃね?
と思って、調べてみる。

http://www.miyazaki-gijutsu.com/series4/densi0615.html
このページの、下から1/4くらいにある
 「(d) 正負両出力電流(その2)」
のところに書かれている、NPNとPNP、ダイオード2個
で組んだバッファを使えば、75Ωくらいは普通に
取り出せるんじゃないかなぁと。

このページの回路だと、増幅率が10倍になってる
けど、ビデオ信号は大増幅いらんし、振幅はせいぜい
1Vpp程度だから、大電力のトランジスタもいらん
だろう。多分2SC1815と2SA1015のペアで充分。
FTも速いし。

一度、コイツを使って、ビデオ信号出力に耐えるか
実験してみたいところ。



http://www.marutsu.co.jp/shohin_132587/
Arduino Pro Mini、安くなってるなぁ。1000円ちょっと
で買えちゃうんだなぁ。もう1個欲しいところ。


http://www.ubuntulinux.jp/News/ubuntu1404
Ubuntu、14.04LTSが出たのか。Arduinoは、1.0.5に
なったのかなぁ?

VMwareの12.04LTSを開いて、software centerを見て
みると…1.0.1までしか無いみたい。12.04 Precise
だとここまでなのかなぁ。

14.04 Trustyでは1.0.5が入るっぽいんだけどなぁ。
https://launchpad.net/ubuntu/trusty/amd64/arduino-core/1:1.0.5+dfsg2-1

アップデートした方がいいのかなぁ?



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする