2014/04/30

Uncompatino Act.5

制作のポイント

パーツはそれほど多くありません。
秋月の基盤は、ハンダ無しです。
フラックスを塗布しました。
FT232RLのハンタ付けが、
最大の難関です。
配線パターンを記録しておき
付け終了後の導通試験に備えます。
ほかのパーツを乗せる前に、
端子とランドの導通をD.M.M.
で確認しておきます。
今回は、3.3Vにするのが最終目的なので
解説本の中の、「3.3Vから5.0Vに戻す。」
迄を組み立てのステップ1とします。
------
5.0VでLCDシールドを載せ
動作確認のため
millis() 関数で刻む時計
[dClock100.ino]
を動かします。
セラミックの発振子の実力を
見極めるため、仮に接続しました。
-------
millis() 関数で刻む時計
[dClock100.ino]

300分で約7秒の誤差でした。
クリスタルの発振子の実力を
見極めるため、仮に接続しました。
-------
millis() 関数で刻む時計
[dClock100.ino]

300分で約1秒の誤差でした。

2014/04/29

Arduino Uno R3 互換機 Act.3

オンボードの水晶発振子で動く
時計のスケッチを考えました。
茂吉の処女作です。
/*
millis()? 関数で刻む時計
[dClock100.ino]
2014/04/29 daikunomokichi
millis()? 関数は、
Arduinoボードがプログラムの実行を開始した時から現在までの時間をミリ秒単位で返します。
戻り値=符号なしlong整数型
約50日間でオーバーフローし、ゼロに戻ります。
開始数分前に設定し、コンピュータから離脱後、[RESET]し、時刻合わせをする。
*/
long dTimer0 = 0;                       //起動後経過時間
long dTimer1 = 0;                       //開始時日時
long dTimer2 = 0;                       //日時刻=起動後経過時間+開始時刻
long dTimer_y0 = 2010;                  //設定した開始年
long dTimer_y1 = 0;                     //2010より経過年
long dTimer_yy = 2014;                  //開始時刻  年
long dTimer_mm = 4;                     //開始時刻  月
long dTimer_dd = 29;                    //開始時刻  日
long dTimer_hh = 20;                    //開始時刻  時
long dTimer_nn = 00;                    //開始時刻  分
long dTimer_ss = 0;                     //開始時刻  秒
long dTimer_d0 = 0;                     //年頭からの総日数
long dTimer_d1 = 0;                     //曜日  日1 月2 火3 水4 木5 金6 土7
long dTimer_d2 = 0;                     //2月29日の補正
long dTimer_d3 = 0;                     //月の末日
long dTimer_hh_mod = 0;
long dTimer_nn_mod = 0;
long dTimer_ss_mod = 0;
//曜日  日1 月2 火3 水4 木5 金6 土7
char dStr1[ ] = {
    '_', 'S', 'M', 'T', 'W', 'T', 'F', 'S'
};                                      //1文字目
char dStr2[ ] = {
    '_', 'u', 'o', 'u', 'e', 'h', 'r', 't'
};                                      //2文字目
char dStr3[ ] = {
    '_', 'n', 'n', 'e', 'd', 'u', 'i', 'u'
};                                      //3文字目
long dYear1[ ] = {
    5, 6, 0, 2, 3, 4, 5, 1, 2, 3, 4, 6, 0, 1, 2
};                                      //2010からの元日の曜日
long dYear2[ ] = {
    0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1
};                                      //2010からの閏年の補正テーブル
long dMoth1[ ] = {
    31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};                                      //1月~12月の各月の日数
long dMoth2[ ] = {
    0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
};                                      //1月~12月の各月の1日の年頭からの日数
long dSpeed = 100;                      //100が標準。10は10倍速
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
void setup()
{
    lcd.begin(16, 2);                   //LCDの大きさ
    lcd.clear();                        //クリア
    //開始日時を秒(10=1秒)に変換
    dTimer1 = (dTimer_dd  * 864000) + (dTimer_hh * 36000)  + (dTimer_nn * 600) + (dTimer_ss * 10);
    dTimer_y1 = dTimer_yy - dTimer_y0;                                //2010より経過年
}
void loop()
{
    dTimer0 = millis() / dSpeed;                                      //起動後経過時間=>秒(10=1秒)
    dTimer2 = dTimer0 + dTimer1;                                      //日時刻=>秒(10=1秒)
    dTimer_hh_mod = (dTimer2 % 864000);                               //(日時刻÷1日)の余り=>時分秒
    dTimer_dd = (dTimer2 - dTimer_hh_mod) / 864000;                   //(日時刻-時分秒)÷1日=>日
    dTimer_d0 = dMoth2[dTimer_mm - 1] + dTimer_dd;                    //各月の1日の年頭からの日数+日=>年頭からの総日数
    //曜日表示のための閏年の2月29日の補正
    dTimer_d2 = 0;                                                    //2月29日の補正なし
    if (dTimer_d0 > 59) {                                             //2月29日または3月1日
        dTimer_d2 = dYear2[dTimer_y1];                                //補正テーブルを参照
    }
    dTimer_d1 = ((dTimer_d0 + dTimer_d2 + dYear1[dTimer_y1]) % 7);    //曜日  日1 月2 火3 水4 木5 金6 土7
    //月の末日
    dTimer_d3 = dMoth1[dTimer_mm - 1];                                //月の末日
    if (dTimer_mm == 2) {                                             //2月の場合
        dTimer_d3 = dMoth1[dTimer_mm - 1] + dYear2[dTimer_y1];        //閏年の補正
    }
    if (dTimer_d3 < dTimer_dd) {
        dTimer1 = dTimer1 - ((dTimer_dd - 1) * 864000);
        dTimer_mm = dTimer_mm++;
        //12月(大晦日)
        if (dTimer_mm > 12) {                                         //12月の場合
            dTimer_mm = 1;                                            //1月に戻す
            dTimer_yy = dTimer_yy++;                                  //年を+1
            dTimer_y1 = dTimer_yy - dTimer_y0;                        //2010より経過年
        }
    }
    dTimer_nn_mod = (dTimer2 % 36000);
    dTimer_hh = (dTimer_hh_mod - dTimer_nn_mod) / 36000;              //時
    dTimer_ss_mod = (dTimer2 % 600);
    dTimer_nn = (dTimer_nn_mod - dTimer_ss_mod) / 600;                //分
    dTimer_ss = (dTimer2 / 10) % 60;                                  //秒
    lcd.setCursor(0, 0);
    lcd.print(dTimer_yy);
    lcd.print("/");
    lcd.print(dTimer_mm / 10);
    lcd.print(dTimer_mm % 10);
    lcd.print("/");
    lcd.print(dTimer_dd / 10);
    lcd.print(dTimer_dd % 10);
    lcd.print(" (");
    lcd.print(dStr1[dTimer_d1]);
    lcd.print(dStr2[dTimer_d1]);
    lcd.print(dStr3[dTimer_d1]);
    lcd.print(")");
    lcd.setCursor(0, 1);
    lcd.print(dTimer_hh / 10);
    lcd.print(dTimer_hh % 10);
    lcd.print(":");
    lcd.print(dTimer_nn / 10);
    lcd.print(dTimer_nn % 10);
    lcd.print(":");
    lcd.print(dTimer_ss / 10);
    lcd.print(dTimer_ss % 10);
    lcd.print(" ");
    lcd.print(" [");
    lcd.print((millis() / 1000) / 60);                                //経過分の表示
}




2014/04/28

Uncompatino Act.4

秋月電子通商より発売されている、Uncompatino関連のパーツを購入しました。 
①AVRマイコン ATMEGA328P-PU
http://akizukidenshi.com/catalog/g/gI-03142/
②UncomPatino基板 (基板単品販売)
http://akizukidenshi.com/catalog/g/gP-07487/
③『作って遊べるArduino互換機』パーツセット
http://akizukidenshi.com/catalog/g/gK-06906/
④低損失三端子レギュレーター 3.3V800mA NJM2845DL1-33 4個入 http://akizukidenshi.com/catalog/g/gI-02247/
⑤絶縁型ラジアルリード型積層セラミックコンデンサー 0.33μF50V2.54mm 10個入 http://akizukidenshi.com/catalog/g/gP-04227/
⑥電解コンデンサー(ルビコンPK) 100μF25V85℃
http://akizukidenshi.com/catalog/g/gP-03122/

追加で

ゼロプレッシャーICソケット (28P)
http://akizukidenshi.com/catalog/g/gP-00025/

600mil -> 300mil  改造レポート
↓ doggie's Home さんの解説
http://www.geocities.jp/doggie_ele/psoc/socket/socket.htm



2014/04/27

2014/04/20

Arduino Uno R3 互換機 Act.2

オンボードの水晶発振子で動く
時計のスケッチを見つけました。

↓ 熾火研究所*電子工作室さんのページ
http://d.hatena.ne.jp/OkibiWorksLabo/20100612/SimpleClock_pde

どのくらいの精度なのか測ってみます。

オリジナルと異なる点は、
デフォルトの時間を2~3分先にし、
コンピュターから離脱します。
その時間の2秒前に[RESET]押して
時刻を合わせます。
だから、USBの電源部分だけで動きます。
コンピュータにはつないでいません。

RTCの利用への前フリです。







追伸
8時間後で、1秒以内でした。

2014/04/18

Arduino Uno R3 互換機

悩み悩んで、何が良いのか解らないまま、
Amazon を見ていたら、リーズナブルな価格に惹かれました。

Arduino Uno R3 オリジナル

Arduino Uno R3 互換機 と 16×2_LCD の組み合わせでほぼ同じ価格です。

サインスマート製の互換機&16×2_LCD を「ポチ」しました。

↓ 「SainSmart 1602 LCD Keypad Shield」
http://www.sainsmart.com/sainsmart-1602-lcd-keypad-shield-for-arduino-duemilanove-uno-mega2560-mega1280.html
↓ 「Sample Code Download」
http://sainsmart.com/zen/documents/20-011-901/keypad_lcd.zip

UnoR3 は、USBのコネクタが傾いて取り付けてあった。
16×2_LCD は、タクトSWの基盤裏の足が、本体の電源コネクタに干渉する。

品質に少々問題有り。

↓ 秋月電子通商 DFROBOT 製 LCDと同じ仕様らしい。
http://akizukidenshi.com/catalog/g/gM-07029/
↓ DFROBOT 製 LCD
http://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)



2014/04/16

I2C 接続

小生の頭の中は、さらに混乱している。
マイコンとのインターフェースで 「I2C 接続」の採用が増えている。
少ないI/Oを温存し、線2本で繋げていける。

ここにも 3.3V 5.0V の壁がある。

マイコン 5.0V ⇔ I2C機器 3.3V での双方向の接続の場面が多い。

↓ 「I2Cシリアルバス」 のウキペディア
http://ja.wikipedia.org/wiki/I%C2%B2

↓ 「電子工作実験室」後閑哲也さんの解説
http://www.picfun.com/c15.html

頭の中を整理し、
オリジナル5.0Vにするのか
Uncompatino版3.3V(8MHz)にするのか
Arduino での 構築を再考しなければならない。

2014/04/15

3.3V と 5.0V

3.3V と 5.0V が混在している。
このことは、理解しにくい。

昔昔は。5.0VのTTLしかなく、
そのあと、CMOSロジックが出てきて、電圧の使用可能範囲が3.0V~15.0Vと広くなった。
そのあたりまでは理解できるが、

5.0VのTTLがいなくなった?代わりに、

3.3V系と5.0V系が存在し、しかも混在している。

そのほか、「5.0Vトレラント」、「LVTTL」とか
さらに仕分けにくくなっている。

「Tech Village 」のサイト
解説は↓を読むとなんとなく見えてくる。
http://www.kumikomi.net/archives/2009/05/ioledrs-232.php

GlobalTop社製GPSモジュールFGPMMOPA6H用Breakout基板
を検索したら、
http://runningele.cart.fc2.com/ca2/20/p-r-s/
http://www.switch-science.com/catalog/1085/
が見つかった話をしたが、

2枚の基盤は大きな違いがある。

ランエレは、VCC3.3V標準で、入出力はLVCMOSみたいだ。
スイッチ(Adafruit )は、VCC5.0V標準で、入出力はCMOS 5.0Vみたいだ。
  (ArduinoのI/Oという概念なので、変換回路がオンボードされているみたいだ。)

「みたいだ」は、小生には確たる知識がないので「スミマセン」。

2014/04/12

Uncompatino Act.2

秋月電子通商で何を購入するか、セレクトします。Act.2
[1]GPS(BackUP_CR2032)
[2]温度センサ
[3]SDカード
[4]フォトIC(光センサ)
[5]ブザー
---
[6]LCD表示(タクトSW付き)
---
============================================

ボタン電池基板取付用ホルダー CR2032用(縦型)
http://akizukidenshi.com/catalog/g/gP-02019/
高精度IC温度センサ LM60BIZ
http://akizukidenshi.com/catalog/g/gI-02490/
SDカードスロットDIP化モジュール
http://akizukidenshi.com/catalog/g/gK-05818/
照度・周波数変換フォトIC 550nm S9705(2個入)
http://akizukidenshi.com/catalog/g/gI-02443/
圧電スピーカー(圧電サウンダ)(13mm)PKM13EPYH4000-A0
http://akizukidenshi.com/catalog/g/gP-04118/
3.3V動作LCDキャラクタディスプレイモジュール 16×2行 バックライト付白抜き
http://akizukidenshi.com/catalog/g/gP-04794/
2x7ピン(14P)両端コネクタ付リボンケーブル(フラットケーブル)
http://akizukidenshi.com/catalog/g/gC-02489/
ピンヘッダ 2×7 (14P)
http://akizukidenshi.com/catalog/g/gC-00166/
タクトスイッチ(大)10個セット
http://akizukidenshi.com/catalog/g/gP-02561/
両面スルーホールガラス・ユニバーサル基板 Bタイプ めっき仕上げ 95x72mm 日本製
http://akizukidenshi.com/catalog/g/gP-03232/
Arduino用ユニバーサル基板
http://akizukidenshi.com/catalog/g/gP-06877/
ピンヘッダ 1×6 (6P)
http://akizukidenshi.com/catalog/g/gC-01669/
ピンヘッダ 1×40 (40P)
http://akizukidenshi.com/catalog/g/gC-00167/
ピンソケット (メス) 1×5 ( 5P)
http://akizukidenshi.com/catalog/g/gC-02762/


2014/04/11

Uncompatino Act.1

「作って遊べるArduino互換機」  鈴木 哲哉 (著)
読み始めました。

















Arduino デビューです。
ラベルも追加しました。
===========================================
Arduinoの学習。茂吉のロードマップ
オリジナル5.0Vを製作。
  Arduinoに慣れる。
  ATMEGA328P-PUに「3.3V版ブートローダー」を書き込む
3.3V版のを製作。
  温度&時計の表示。
  温度をSDカードに記録
を目標にしたい。
===========================================
特製シールド製作計画
---
[1]GPS(BackUP_CR2032)
[2]温度センサ
[3]SDカード
[4]フォトIC(光センサ)
[5]ブザー
---
[6]LCD表示(タクトSW付き)
---
見やすくするため、LCDは別ボードに。
===========================================
秋月電子通商で何を購入するか、セレクトします。
-----
基本セット
-----
①AVRマイコン ATMEGA328P-PU
http://akizukidenshi.com/catalog/g/gI-03142/
②UncomPatino基板 (基板単品販売)
http://akizukidenshi.com/catalog/g/gP-07487/
③『作って遊べるArduino互換機』パーツセット
http://akizukidenshi.com/catalog/g/gK-06906/
-----
3.3V拡張セット
-----
④低損失三端子レギュレーター
3.3V800mA NJM2845DL1-33 4個入
http://akizukidenshi.com/catalog/g/gI-02247/
⑤絶縁型ラジアルリード型積層セラミックコンデンサー
0.33μF50V2.54mm 10個入
http://akizukidenshi.com/catalog/g/gP-04227/
⑥電解コンデンサー(ルビコンPK)
100μF25V85℃
http://akizukidenshi.com/catalog/g/gP-03122/

2014/04/07

3.579545MHz

NTSCコンポジット映像からバースト信号を取り出し、 それに位相ロックした基準クロックを生成し、その精度はルビジウム発振器近い。

という話をしました。

秋月電子通商に説明書がありました。

JH2CLVさんの解説は、↓。

アナログ放送終了した現在、過去の遺物となってしまいました。
が、試しに、繋いでみました。
地デジTVのビデオアウトより
スカイパーフェクトTVのSD画質チューナーのビデオアウトの方が
ふらつきが少なかったので3.579545MHzでロックしていると仮定し
カウンターを微調整してみました。
1Hz減でまで追い込みました。


2014/04/06

AVR ATmega328

AVRマイコン ATMEGA328P-PU
http://akizukidenshi.com/catalog/g/gI-03142/
(秋月電子通商で販売しています。)

















に出会う。
「Atmel AVR」、「Arduino」のウィキペディア
http://ja.wikipedia.org/wiki/Atmel_AVR
http://ja.wikipedia.org/wiki/Arduino
ワンチップマイコンPICに興味があったが、
竜巻がきたかのように蹴散らしてしまった。
-----
AVR 対 PIC の戦い
やねうら王さんの解説
http://d.hatena.ne.jp/yaneurao/20080228
-----
いきさつは、
GlobalTop社製GPSモジュールFGPMMOPA6H用Breakout基板
を検索したら、
http://runningele.cart.fc2.com/ca2/20/p-r-s/
http://www.switch-science.com/catalog/1085/
が見つかった。
コンピュータとの接続をどうするのかを検索すると、
TTL3.3V または TTL5.0V  を
USB または、RS232C に
変換するのが見つかる。
□Aコース FTDI FT231X
http://akizukidenshi.com/catalog/g/gK-06894/
□Bコース FTDI FT232RL
http://akizukidenshi.com/catalog/g/gK-01977/
□Cコース ADM3202
http://akizukidenshi.com/catalog/g/gK-06464/
といくつか候補が上がる。
その他にも
「なんでも作っちゃう、かも。」さんのサイト
http://arms22.blog91.fc2.com/blog-entry-299.html
が見つかった。
ここで「Arduino Uno」とは何ぞや?
秋月電子通商にも売っている。
Arduino Uno Rev3
http://akizukidenshi.com/catalog/g/gM-07385/
しかも、コンパチブルまでも売っている。
Arduino UNO互換ボード (DFRduino UNO R3)
http://akizukidenshi.com/catalog/g/gM-07044/
過去の経験からコンパチが出ているのは、本家が売れている証拠。
少し、掘り下げてみる。
制作例を見ると「何ができるのか」が参考になる。
Kimio Kosakaさんサイト
で製作事例が掲載されている。
Arduino Diecimila を使う
(Uno の先代のDiecimilaでの制作ですが)
http://make.kosakalab.com/arduino/
「なんでも作っちゃう、かも。」さんのサイト
[Arduino]のタブ
http://arms22.blog91.fc2.com/blog-entry-297.html
スマートプロジェクト
ジャンルカ・マルティーノ
Arduino Uno
金本茂
スイッチサイエンス
http://www.kumikomi.net/archives/2011/12/in08gian.php
http://www.switch-science.com/catalog/181/
キーワードが続く。

2014/04/04

手に入れました。カウンター

手に入れました。ユニバーサルカウンター。
中古の ADVANTEST TR5822
https://www.advantest.com/cs/groups/public/documents/document/adv007807.pdf
(1985年製のMPU搭載、「H61-Y」、「D61-Y」という印字から1986年製造と思われる。)

















この機種でよくあるタクトスイッチの不具合は6個中6個。100%壊れていました。
(1個は正常でしたが、4~5回押したら壊れてしまいました。)

解説は↓
同様な機種を修理をされている「気まぐれ天使」さんのHam Radio 修理日記
http://blogs.yahoo.co.jp/osamu_1961/31048964.html#31048964

ある掲示板で
ALPS SKECADA010 という情報がありましたので、

http://smartdata.usbid.com/datasheets/usbid/2000/2000-q2/5252_85.pdf

アルプス電気株式会社 電即納サービスセンター に メールにて問い合わせをしました。
Apr.3 2014 返信有り、

「大変申し訳ございませんが、SKECシリーズは現在生産中止となっており、在庫もなくご対応が難しい状況です。ご希望に添えず、まことに心苦しい限りではございますが、御了承戴きますよう宜しくお願い申し上げます。」

とのことです。

そこで、なんとかしたいと素人の浅知恵。でやってみました。写真はありません。

材料
[1]ノック式ボールペンのバネ直径4.5mm程度(キャップ軸3mm角が入る大きさ)
[2]薄い両面テープ
工具
ドライバー、強力ニッパ、ハサミを用意します。

リカバリ作業
[Act.1]タクトスイッチは、土台を基板に残し、可動部分を引き抜くことが出来ます。
[Act.2]ゴム中央の突起部分は、切除し捨てます。(押しても戻ってこない場合は分離している。)
中央の穴の空いたゴム筒にします。
[Act.3]]両面テープにゴム筒を置き、0.5mm程度大きく円状にハサミで切ります。
[Act.4]ゴム筒を可動側キャップ軸の元に位置に貼り付けます。
[Act.5]白い□をキャップ軸に通し、バネを2ターン切り、キャップとの間に入れます。

バネの形状が、押した時の感触を左右します。また、ストロークを2mm程度確保する必要があります。ターンを中央部分を大に巻始めと終わりを小にすると良いと思います。
何度か作って元に戻してを繰り返し、カットアンドトライでフーリングがつかめると思います。

オリジナルは、ゴムの突起が、キャップを手前側に押していましたが、
リカバリでは、「スプリングで浮かす。」そこがポイントになります。

TR5822 はユニバーサルカウンタなので、レシプロカル計測や周期計測ができます。
GPS から得られる 1PPS 信号 (1秒に1回の基準パルス) で 周波数校正を行う予定です。

気になる、1PPS出力の有るGPSモジュールは、
PA6H Breakout基板

http://runningele.cart.fc2.com/ca2/20/p-r-s/
http://www.switch-science.com/catalog/1085/
https://www.adafruit.com/products/746

レシプロカル計測の特徴は、周期から周波数を逆算しているので、
低周波の場合、1Hzより小さい少数点以下の桁まで測定できることです。

たとえば
RCオシレータで約10Hzを発信させて、それを計測した場合

通常のカウンタでは、1秒間で何回かを計測します。
結果は、10Hz。+-1カウントの誤差がでることがある。

レシプロカル計測では、9.991070Hzと小数点以下まで表示。
校生済みであれば、0.000010Hzまでは正確に計測可能となるはず?です。