精度高く電流制御が出来て、電流モニタも出来たまでは良かったのだけど端子電圧の測定値に誤差が出てしまう問題がなかなか解決出来ない。分かっているのは電流0の時は値がよく安定している事と電子負荷に電流を喰わせると、喰わせている電流値に比例して測定電圧に誤差が出てくる事。電圧測定端子の電圧をテスタで測っても想定通りの電圧でモニタ電圧のように誤差は出ていない。結果的に、GNDの電位差が誤差を引き起こしていた模様。今回の電子負荷は、大電流が流れる定電流回路のリターン側を制御回路のGNDと同一電位として構成していたのだけども電流が流れると、配線抵抗x電流で発生する電圧分だけ全く電流が流れていないGNDとの間で電位差が出ちゃうわけ。悪いことに、大電流側をボード上のGNDにしてしまっていたために電位が高い側のGNDがボード上の基準となってしまいそれよりも(電圧降下分だけ)低い電圧をADCが正しく受けられなかったみたい。その証拠に、電位差が出ているGND間をショートしてやると電圧計のマイナス側がしっかり測定範囲に入ったためテスタの指示値とモニタ値が一致した。何の事だか分からないと思うけど、結局はADCの入力範囲を超えた入力を(結果的に)しちゃってたって事。そりゃ正しく測れないわな。原因が分かれば修正は簡単。ボードのGND接続点を変更、電流を最大で流しても問題ない事が確認出来た。半田めっき線が欲しい。半田の乗りが悪く、私も毎度半田メッキしながら使っていますが予め半田めっきされた便利な線があるようで、先ほど発注致しました。http://www.densen-store.com/category/taac_detail.asp?id=173ただ、最小購入単位が1kgと、個人購入するには多すぎます。電子工作クラスタに属する皆さんであれば誰でも使う類の線材だと思いますので、小分け頒布したいと思います。お送りする手段と、代金の受け渡しについてちょっと悩んだのですが銀行振り込み・郵便配送としたいと思います。配送はexpack350(日本郵便)にて行います。振り込み先は以下にお願いします。(@\400)※お振り込みいただく際、送料\350をお忘れなく。-頒布を希望される方は、以下の手順にてご連絡ください。このblogエントリにコメントで以下の情報をご連絡下さい。56m/100gです)※50g単位でお願いします。端数はご遠慮ください。齊藤(@cronos_sv)より、DMにて追ってご連絡致します。お振り込みをお願い致します。手元に届くまで楽しみにお待ち下さい。@cronos_svが帰宅してからの時間で作業を行う都合上お手元に届くまでに少々お時間を頂く事となると思います。前回までで、機能としては完成したんだが計時し始めると、どんどん時刻がズレていく問題が見つかった。最初はオシレータの発振周波数が割り切れない値だったのが原因かとも思っていたのだけど、原発の周波数が合ってもズレる。オシロで1秒毎の処理を行っているはずの部分の時間をチェックしたら...なんだこれは。正時(0秒)に始まる解析処理によって計時間隔が伸びてしまい、1秒が狂ってしまっている様子。1秒を計時(本当は1mSecだけど)する処理の中に他の処理を含めないように作りたいのだけどどうやったもんか良いアイデアが浮かばなかったので以前から気にしていたrtosへの実装を試そうと思う。FreeRTOSのAVRへの実装について調べてみたんだが資料らしい資料がほとんど無い。Studio上でのビルドのしかたが分かった。配布されているファイルは、依存部を除いて基本的に手を加える必要は無い。手を加える必要があるのは以下の3ファイルだ。●port.cFreeRTOSの配布物に、atmega323/gccでのサンプルがある。今使っている石はatmega88pなので、レジスタ名その他が若干異なるため、port.cの対応が必要になる。そのままでは割り込みが使えなかったりタイマのレジスタ名が異なっていたりするので一見動いているように見えていても、タスク切り替えなど肝心なOSとしての機能は一切動いてくれない。●FreeRTOSConfig.hatmega323はRAMが2kByteだが、atmega88pは半分の1kByteなのでconfigTOTAL_HEAP_SIZEをいじってやる必要がある。あとはconfigCPU_CLOCK_HZで与えているクロック周波数を設定してやる位だろうか。longこれを追加している。(新規追加:名前は何でも良い?)配布物の中にはタスクの記述を行う部分、main()などは入っていない。そこは新たにファイルを作って記述していく事になる。http://www.freertos.org/a00098.htmlまずはLチカという事で、上記サイトを参考にタスクを記述してみる。この例ではタスクは1発だが、RAMの許す限りタスクは追加出来るようだ。下が0.2秒毎に点滅させるTask2。タスクスイッチには、約30uSec程度の時間が掛かっているようだが見た範囲では切替時間は大きくブレるような事は無いみたい。いう事で、ググっただけで全くもって自分で頑張ってないのだけど後は一通り開発出来そうな所まで持ってくる事が出来た。後はタスク間通信のしかたの理解、UART通信の実装辺りが出来てくると楽しくなってくるかな。