迷走の果て・Tiny Objects

迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。

スイッチサイエンスI2C接続小型LCDを試す。

ロボットプログラミング教室を手伝うことになったのですが、そこではArduino互換機(Studuino)を使います。
電池動作を考慮してでしょうか、クロック8MHz、VCC=3.3Vとなってます。

実は以前にスイッチサイエンスさんからI2C接続小型LCD搭載ボードを買ったのですが、これが3.3V版なのです。うっかりしてました。
当時は(今も^^;;)VCC=5Vで使ってたので使う機会の無いまま放置してたのですが、ちょうどいいので試してみました。
スイッチサイエンスさんのブログをそのまま試しました。
ArduinoのA2をVCC、A3をGNDとして使うという、私にはちょっと思いつけない方法で接続してます。

こんな風になります。
ここではラジオペンチさんの「外付け部品無しでArduinoの電源電圧を測定する」を使わせていただきました。
ただArduinoの基準電圧(1.1V)は結構ばらつきがあるようで、実測3.34Vなのですが3.29Vと表示されたのでスケッチ内で補正しました。
スタディーノ

このままだとA0からA3が塞がってしまい使いにくいので、ユニバーサル基板の切れ端を使って下の写真のように移動しました。
D13をVCC代わりに使ってます。
スタディーノVCC2

スイッチサイエンスLCD接続回路

スポンサーサイト

サーボモーターSG90を試す(1):即日バラシ(ではありません)

いつもニコニコ即日バラシ・・・って懐かしい、ポチねぇどうしてるんでしょうか?

子供向けロボットプログラミング教室を手伝うことになりました。
コントロールはArduino互換機、ソフトはScratchなのでさほど問題は無いだろうと高をくくってます。
でもロボットだから当然モーターを使いますが、メカは苦手^^;;
というわけで勉強のため(?)秋月からサーボモーターを買ってしまいました。
ちょっと動かした後、ついバラしてしまいました^^;;

SG-90の偽者が出回ってるようで、Tower Pro SG90, SG92R 侵害品の判定方法というサイトを見つけました。
調べた限りでは偽者ではないようです。
SG90バラシ1

小さな基板(11ミリ×9ミリ)の両面に8ピンのICが載ってます。
SG90バラシ3
SG90バラシ2

角度検出用の可変抵抗器。
SG90バラシ4

モーターに繋がってる IC、FZMOS-2。検索しても出てきませんでした。
モーター制御用のHブリッジドライバでしょうか?
SG90バラシ5

もう1つの IC 型番不明。
SG90バラシ6

ArduinoにRTC-8564をつなぐ(8)VCC電圧表示、サーミスタ103JTを使った温度表示

先の記事の続きです。
VCCと温度を表示するようにしました。
VCC_温度表示

上から2行目がVCCです。
ラジオペンチさんの記事を流用させていただきました。
デジタルテスターで実測 4.99V のとき 5.12V と高めに表示されました。Arduino(正確にはびんぼうでいいの)は二つあるので差し替えてみても 5.10V でした。
当初はソフト側で補正していました。
ATMEGA328の基準電圧はデータシートによると1.1V±0.1Vです。より正確な基準電圧を使えばいいのではと、手持ちのMC1403を使った結果、5.01Vと改善できましたが、ソフト補正のほうが簡単です。

シールド上の103JT


3行目は温度表示です。
過去記事でサーミスタ103JTを使った温度表示をしたことがありますが、そのまま流用です。
とりあえずのスケッチですので、温度がマイナスの場合の表示を考えてません。
今考え中・・・・

Arduino:スケッチ書き込み時のタイミングチャート

あちゃんでいいのv1
スケッチ書き込み時のシリアルアダプタの各入出力をロジックアナライザで調べてみました。
使ったスケッチはおなじみのBlink (いわゆるLチカ)です。
Channel 0はシリアルアダプタのTX出力、1はRX入力、2はDTR出力です。
Channel 0でトリガをかけてます。
Arduino書き込み
まずDTRがLになります、CRによる微分回路でArduinoをリセットします。

0.5秒後に0x30、0x20が送られ、Arduinoは0x14、0x10 を返します。
Arduino書き込み2

さらに0.5秒後に同じく0x30、0x20が送られ、Arduinoは0x14、0x10 を返します。
0.5秒後に書き込みが始まります。その後どういうやり取りがあるのかまでは調べてません、調べても多分私にはわかりません。
ちなみにビットレートは57600bpsでした。

あちゃんでいいのver.1

ウチではびんぼうでいいのをつかってます。
実はあちゃんでいいのも買っていたのですが、うまく動かせず放置してました。買ったのは今販売されてるVer2ではなく初期型、リセットスイッチがありません。
USB-シリアルアダプタをつないでのDTRリセットも出来ませんでした。
理由は単純でDTRリセット用のコンデンサをつけてませんでした^^;;
1番ピンのすぐ近くにランドがあるのを見つけたので0.1μのチップコンデンサをつけたらちゃんと動作するようになりました。
今aitendoさんで売ってるのはリセットスイッチもリセット用コンデンサも付いてます。
DTR_reset.jpg

2つ持ってます、シリアルアダプタとの接続用のピンヘッダはL型に換えてあります。
ケーブルはホットボンドで固定。
あちゃんでいいの

アマゾンで買ったUSB-シリアルアダプタ
USB_シリアル変換基板


あちゃんでいいのv1

ArduinoにRTC-8564をつなぐ(7)Duemilanove vs. Fio

ウチのArduinoはaitendoさんのびんぼうでいいのをつかってます。
1号機のチップはスイッチサイエンスさんのArduino Duemilanove用交換チップ
2号機は同じくスイッチサイエンスさんのArduinoブートローダ書き込み済みATMega328P-PU(内蔵CR発振8MHz版)を使ってます。
1号機のクロックは16MHz、2号機は8MHzです。

先の記事でデジットのLCDを動かしてますが、表示は割り込み処理中に行ってます。
クロックの違いで割り込み処理にどれだけ差が出るのかロジックアナライザで調べてみました。

スケッチをちょっと変更、割り込み処理の最初でD13ピンをHIGH にします、最後でLOW にします。D13を見れば割り込み処理にかかる時間がわかります。
ついでにSCL、SDA、シリアル出力(D2ピン)、デジットLCDのWR 入力(書き込みクロック)も見ました。
digitLCDと接続回路

上がクロック8MHz、下が16MHzです。
Channel0がD13ピン、以下SCL、SDA、シリアル出力(D2ピン)、WRです。
クロック8MHzだと割り込み処理に17.8mS かかってますが、16MHzだと9.77mS です。
ちょっと意外だったのはシリアル出力が終わる前に割り込み処理が終わってることです。
FIFOバッファでも持ってるのか、それともシリアル出力は割り込み処理してるのか、多分割り込み処理してるんでしょう(未確認)

Fio_Duemilanove.jpg

ArduinoにRTC-8564をつなぐ(6)デジット6行16桁7セグメントLCDで日時の表示

先に実験していたデジットの6行16桁7セグメントLCDをつなぎ、日時表示してみました。
digitLCDと繋ぐ3

回路図です。D2ピンを割り込みに使ったので、LCDとの接続を変えました。
digitLCDと接続回路

スケッチですが・・・。
別々に書いたスケッチを無理やり合体させたので、すんなりと動くわけありませんでした。
どうにか表示できるまでにはなった(つもり)ですが、問題が起きるたびに泥縄式に書き換えたのでスパゲッティコードです。
全体を書き換えたほうがいいのかもしれませんが、サーミスタ温度計やらあれこれ乗せてみたいので、当面このままです。

公開はちょっと考え中・・・。

続きを読む »

ArduinoにRTC-8564をつなぐ(5)バニラシールドに組む、スケッチの問題点発覚

RTCをバニラシールドに組んでみました。
が、動きません・・・あせりました。
バニラシールド上に組む

RTC-8564の初期電源投入時にちゃんと対応していなかったのが原因でした。
データシートから引用します。
RTC初期電源投入時の注意

注2にあるように、このままでは32.768KHzがCLKOUTから出力されます。両エッジ割り込みにしているので1秒間に65536回の割り込みがかかってしまいます。

修正したつもりですが、自信なくなってきました。
電気二重層コンデンサをつないだままで実験していたので気付きませんでした。
外して動作確認を繰り返しましたが、まだ何か問題があるかも。



電気二重層コンデンサを試す(1)

先の記事で書いたRTCのバックアップにはデジットで買った電気二重層コンデンサを使ってます。0.22F 5.5Vです。
これの放電特性を調べてみました。
5Vに充電したまま30分後、入力抵抗10MΩのデジタルテスタをつないだまま、一日に数回電圧を測定し、エクセルに打ち込みました。データロガーなんてものはありませんので^^;;
なぜ30分待ったかというとNEC/TOKINのデータシートの36ページにある測定方法に倣ったからです。

10日間(240時間)で5Vが1.5Vまで低下しました。
グラフの計算値というのは、5Vに充電された0.22Fのコンデンサを10MΩで放電させたときの計算上の値です。

電気二重層コンデンサの放電特性

自己放電が意外とあるようです。
エルナー社のサイトには

電気二重層コンデンサには微小電流の自己放電があります。
従って、蓄電後に小電力で長時間使用する場合は、自己放電を考慮して放電時間を求める必要があります。

とあります。

一個測っただけですし、周囲温度の影響(測定時は20~25℃でした)もあるでしょうから、何の参考にもならんでしょうけど。

こんなん、測って何なる?と聞かれると困ります・・・、測ってみたかった、それだけです。

ArduinoにRTC-8564をつなぐ(4)I2Cバスを見る

回路図書き換え。
ArduinoのSDAとSCLはA4とA5に繋がってるだけなんて、昨日まで知りませんでしたよ^^;;
R3からこのようになったようですが、なんせArduino ビギナーなもんで・・・・。
Arduino_RTC接続回路3

さて、ロジックアナライザでI2Cバスを見ました。SDA、SCL及びCLKOUTです。

CLKOUTの両エッジで割り込みがかかってます。
CLK1Hz_20160501215906cdf.jpg

割り込みからI2Cバスがスタートするまで。62μS。
割り込みからスタートコンディションまで

全体のI2Cアクセスが終了するまで。
RTC-8564のレジスタ読み出しアドレスを指定してから、カレンダーデータを読み出してます。
1mSのディレイが入ってます、参考にしたスケッチにあったのでそのままにしてましたが、入れなくても大丈夫だろうと今は外してます。
I2Cstart_stop_20160501215908b65.jpg

カレンダーデータの読み出し。
I2C読み込み

SCL拡大。クロックは100KHzになってますね。
I2Cクロック

ArduinoにRTC-8564をつなぐ(3)

恥ずかしながら、とりあえずのスケッチ。(Arduino IDE 1.6.4)
私のところではどうにか動いてますけど、動作保証はしません、念のため。

いろんなサイトを参考にしましたので、コメントがそのままの場合もあります。
コメントアウトしたままのコードもあります。

初めての場合、年月日時分秒をシリアルモニタから打ち込まないと動作しないかもしれません。
2016年5月1日7時30分00秒なら
160501073000
と入力します。入力データのチェックはやってませんので変なデータを入れると当然表示もおかしくなります。

秒のクリアが出来るようにしました。
*
を入力すると30秒以上なら切り上げ、未満なら切り捨てますが、59分の場合は切り上げしません、処理がややこしくなるので。

こんな風になります。
秒の切り上げ切捨て


 | HOME | 

文字サイズの変更

プロフィール

edy

最新記事一覧(サムネイル画像付き)

DABP(Dual Amplifer Band Pass)フィルタとGIC(Generated Immitance Converter)の解析 Aug 22, 2017
百均のUSB LED電球(2) Aug 13, 2017
百均のUSB LED電球 Aug 11, 2017
状態変数型バンドパスフィルタ(2) Aug 05, 2017
状態変数型バンドパスフィルタの解析、発振回路に応用するため。 Jul 30, 2017
CJMCU Beetleを試す Jul 29, 2017
Arduino 互換ボード SS MICROを試す Jul 22, 2017
店の電飾(3)無限鏡(infinity mirror) Jun 25, 2017
店の電飾(2)回路の変更とスケッチ Jun 25, 2017
店の電飾 Jun 18, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

このブログをリンクに追加する

月別アーカイブ

08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  12  11  10  09  07  05  04  03  04  03  01  12  11  10  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  02  01  12  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  10  09  08  07  06  05  04  03  02  01 

カテゴリ

プログラミング (0)
freescale (1)
AVR (3)
テルミン (16)
緊急警報放送 (3)
78K (1)
PSoC (295)
地上デジタル放送 (2)
電子工作 (410)
HX711 (2)
ACS712 (6)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (32)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

名前:
メール:
件名:
本文:

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん