忍者ブログ
マイコン関連,パソコン関連から ゲームレビューやらなにやら, 私の捻じ曲がった視点から 戯言を綴る趣味ページです.
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

サンプルのSD/datalogger
SDカードとの通信部分がいつまでもブレッドボードでは片付けられないので,ユニバーサルプレート上で作り直しました.写真がこれ,まだAtemga328Pは半田していないし,SDとの接続もしてません.完成をイメージして置いてみただけなのです.サイズはSDカードの一部が少しはみ出しますがフリスクのケースに収める予定.マイクロSDの変換コネクタが何故半田されているかというと,手持ちのSDカード用コネクタが1回り大きくてフリスクに入らなかったので,仕方なくです.マイクロSD用のコネクタは今持ってません.

変換ソケットの下に,背景となっている回路図(電源の分圧だけだけど・・・)が配線されています.回路図は以前紹介した『なんでも作っちゃうかも』というページのSDカードに関する記事からの引用です.導線はArduinoに接続するように先は半田を乗せています.

で,今回の本題.サンプルプログラムの書き込み間隔はどのくらいなのか?それを調べるためにサンプルの一部を変更して書き込み時間を計測してみました.

// make a string for assembling the data to log:
String dataString = "";
dataString +=String(millis());
dataString += ",";

// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}

追加は太字の部分のみ.millis()関数で起動時からの経過時間を計測します.結果,記録間隔はだいたい『0.6秒』とかなり遅め.このままでは使い物にならないなぁ.やはりサンプルのままでは使えないという最終確認をしました.今度ちょくちょく改善していきます.
PR
AVRで自作Datalogger
センサをArduinoに接続して自作のdataloggerを作りたいんですよ.最終的にはArduino IDEでHEXファイルを作成し,まっさらなAVRにプログラムを書き込みたい.今は試作段階でブレッドボード上で作成している.SDカードにデータを書き込む場合windowsでそのままデータを読めるようにファイルを作成するには『FATファイルシステム』にしたがってデータを書き込む必要がある.Arduinoには『SD.h』が用意されているので,シリアル通信のようなコードを記述するだけで簡単にSDカード上にwindowsでも読み込めるファイルを作成することが可能なのだ.やはり,Arduinoって便利だね.しかも,サンプルコードでdataloggerが用意されていた.SDカードとの配線はコードに従うと,

MOSI - pin 11
MISO - pin 12
CLK - pin 13
CS - pin 4

と繋ぐ必要がある.サンプルにはpinについての設定の記述がないことから,header内を確認しないとpin配置を変更できなさそうだ.今のところ変更の必要はないけどね.



とりあえず,サンプルコードを書き込んで実行させた.凄い凄い.analog pin3ポートを読み込んでSDカードに書き込み,ついでにパソコンにはシリアル通信で状態を確認できる.ただ,書き込み頻度が遅い.

原因①analogdataを取得後SDカードのinitial,write,closeを繰り返している.
原因②パソコンへの通信で時間を食っている
疑問①SDカードへの書き込み頻度がわからない(遅くねぇ?)

①,②の解決方法は,バッファでも作ればいいのかな.仮にSDへの書き込みにx msかかるとしたら,その時間バッファにデータをためて,FIFO方式でOUT分を書き込めばいい(と思う).これイメージ.seleterは蓄え先や書き出し先を指定するもの.



で,疑問①は割り込みかけて一定間隔でデータを貯めていけばよい.これにはまだ,正式ライブラリではなく,Contributionライブラリの『MsTimer2』を使えばいい.


はずなんだけど,うまくいかない.何が問題なんだろうか・・・
ブレッドボードとAtmega328p
Arduinoとしてbootloaderとスケッチを書き込んだマイコンAtmega328pをボードから取り外し,ブレッドボード上で基本構成での動作を確認しました.

このマイコンには内蔵クロックがあったはずなので,電源とLEDだけ繋いでみたところ・・・?反応なし.もしかして外部クロックが必須なのかと所持しているセラロックをみてみると10, 20MHzしかない.即座に秋月でネット購入した16MHzのセラロックが昨日届いたので,再び挑戦.

あ,動いた(LEDが点滅した).ということで結論.
Atmega328pをブレッドボード上で動かすには,

1)電源
2)外部クロック

が必須.もしかしたらヒューズビットの設定で内部クロック動作
が可能になるのかな?
| 1 | 2 | 3 |
| top | next |
カレンダー
04 2025/05 06
S M T W T F S
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 31
ブログ内検索
プロフィール
HN:
Porky Penguin
性別:
男性
職業:
実はニートではない
自己紹介:
落書きやら,趣味について雑記していく予定.他にはソフトの覚書きなど記していくつもりです.

自画像は,以前私に似ていると言われた漫画のキャラクター,わかるかなぁ・・・某少佐です.(9巻,p190を参考にしました)

ついでに眼鏡を私の眼鏡にかけ直してみました.
バーコード
カウンター
フリーエリア
Design by Lenny
忍者ブログ [PR]