google-site-verification: google3bd66dd162ef54c7.html

ArduinoでマイクロSDカードを使う

 データロガー作りの続き。前回はRTCを接続しましたが、今回はSDメモリカードを接続します。

▼マイクロSDカードコネクタ
マイクロSDカードコネクタ
 秋月のマイクロSDカードスロットDIP化キットです。

 RTCの接続では回路図をきちんと書かなくてトラブルになったので、今回は回路図を先に書きます。(笑;

▼マイクロSDの接続回路
マイクロSDメモリカード読み取り回路
 5V動作のArduino UNOの信号を3.3V動作のSDカードに接続するために、信号を抵抗で分圧してやります。
 CSは10Pinから出すことにしました。

▼動作波形
SPIモードのSDカードの信号
 一番上がArduinoからのCLK(13Pin)、中央がSDカードの端子のCLK(5Pin)、下がSDカードへのデータのDIN(3Pin)です。クロックの周期は250nsなので、プロトコルなどのオーバーヘッドを除けば4Mbpsくらいの速度が出ているようです。

 実は最初はネットで拾った回路図の値を使ってRa=1.8kΩ、Rb=3.3kΩとしていたのですが、

▼Ra=1.8kΩ、Rb=3.3kΩの場合の波形
分圧抵抗が高すぎ
 一応動作はしていますが、波形のなまりが大きくてタイミングマージンが充分確保されているか、すごく不安な状態です。本来はSDカードのインターフェイス規約(MMCのSPIの規格?)を見て判断すべきなのでしょうが、簡単には見つからなかったです。少なくともクロック波形に平坦な部分が無いのはヤバイと思います。

 波形のなまりはSDカードの入力容量と分圧抵抗で形成される時定数が大きすぎるために発生しているようで、分圧抵抗の値を小さくすると解決出来ました。但しこの方法は消費電流が増えるのであまりやりたくないのですが、データ化けなどが発生するリスクを考えたら背に腹は変えられないです。丁寧にやるならレベル変換のICを使った方が良いでしょうね。

◆まとめ
 これでArduinoのIDE 1.0.1に付属の「スケッチの例」にある「SD」のサンプルプログラムが動くようになりました。
 注:サンプルプログラムではCSがPin4になっているのでPin10に変更が必要です。
【変更例】
 const int chipSelect = 4; --> const int chipSelect = 10;

 データーロガーに必要な部品の動作確認はこれで完了したので、これからロガー機能の作り込みに入っていきます。
関連記事

tag : SPI通信 波形 レベル変換 MicroSD インターフェイス

コメントの投稿

管理者にだけ表示を許可する

u SD 参考にさせて頂きました

私も60才を過ぎ、ちょっとの小銭と
暇が手に入り、頻繁に秋葉原(秋月電子さん)に
徘徊している今日この頃です。

さて、μSDカードのR/W大変参考に
させて頂きました。

お礼申し上げます。

貴方のwebページと比べ物にならない位、
貧弱な私のページを紹介します。
単なるメモで済みませんが社交辞令として、
掲げます。

http://www.geocities.jp/mtakapii/index.html

re:u SD 参考にさせて頂きました

mtakaさん、今晩は、コメントありがとうございます。

何かお役にたったら幸いです。

あと、そちらのWeb拝見しました。倒立振子とかマンデルブロ集合とか、私もやりました。やりたいことは似てるんだな、と再認識しました。

http://radiopench.blog96.fc2.com/blog-entry-532.html
http://radiopench.blog96.fc2.com/blog-entry-551.html
カレンダー
04 | 2017/05 | 06
- 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 - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード