morecat_labさんのtwitterでaruduinoの周波数カウンタのライブラリを知りました。
精度、安定度は不明ですが周波数から逆算するLCメータが作れるのでは? なんて考えました。
基本的考え方はtiny2313vでLCメータと同じでソフト部分だけ妄想してみました。
実数を使うとどれくらいメモリーを消費するか調べるために基本部分だけです。
コンパイルサイズは
Binary sketch size: 6406 bytes (of a 32256 byte maximum)
なので余裕です。
ハード部分は後日tiny2313vでLCメータを分解して再利用予定。
/*
Martin Nawrath KHM LAB3
Kunsthochschule f¸r Medien Kˆln
Academy of Media Arts
http://www.khm.de
http://interface.khm.de/index.php/labor/experimente/
*/
/*
Masahiko KANETAKA
kane4d@gmail.com
http://kane4d.blogspot.com/
Port MAP
D0 I RX
D1 O TX
D2
D3 I LC Mode SW (High: C, Low: L)
D4 I Zero Adjust Botton
D5 I Wave(Frequency)
D6 O LCD d7
D7 O LCD d6
D8 O LCD d5
D9 O LCD d4
D10 O LCD enable
D11 O LCD rs
D12 O Relay drive
D13 O LED
*/
#define USE_SERIAL
#define USE_LCD
#include <FreqCounter.h>
#ifdef USE_LCD
#include <LiquidCrystal.h>
#endif
double getfreq(unsigned int f_comp = 10, int gateTime = 100);
#ifdef USE_LCD
LiquidCrystal lcd(11, 10, 9, 8, 7, 6);
#endif
double frq1_r = 0.0F, frq2_r = 0.0F, frq3_r = 0.0F;
double val_r;
int cnt;
bool cal_bool = false;
#define pinLed (13)
#define pinRelay (12)
#define pinZeroAdjBtn (4)
// High: C, Low: L
#define pinLCModeSW (3)
#define DEFAULT_TRY_COUNT (3)
//1000pF + 100uH
#define CAL_CAP (1000.0F)
double getfreq(unsigned int f_comp, int gateTime)
{
double _frq_r = 0.0F;
FreqCounter::f_comp = f_comp; // Cal Value / Calibrate with professional Freq Counter
for(int i = 0; i < DEFAULT_TRY_COUNT; ++i){
FreqCounter::start(gateTime); // 100 ms Gate Time
while (FreqCounter::f_ready == 0) ;
_frq_r += FreqCounter::f_freq;
}
return _frq_r / DEFAULT_TRY_COUNT;
}
void setup() {
pinMode(pinLed, OUTPUT);
pinMode(pinRelay, OUTPUT);
pinMode(pinZeroAdjBtn, INPUT);
pinMode(pinLCModeSW, INPUT); // High: C, Low: L
#ifdef USE_SERIAL
Serial.begin(9600); // connect to the serial port
Serial.println("LC Meter v0.1");
#endif
#ifdef USE_LCD
lcd.clear();
#endif
//frq1_r = frq2_r = frq3_r = 0.0F;
}
void loop() {
if ( ! digitalRead(pinZeroAdjBtn) && ! cal_bool ){
//zero cal
digitalWrite(pinRelay, false);
delay(30);
frq1_r = getfreq();
digitalWrite(pinRelay, true);
delay(30);
frq2_r = getfreq();
digitalWrite(pinRelay, false);
cal_bool = true;
}else{
cal_bool = false;
if ( frq1_r > 0.0 && frq2_r > 0.0 ){
digitalWrite(pinRelay, false);
delay(30);
frq3_r = getfreq();
if (digitalRead(pinLCModeSW)){
//CALC_C
//val_r = CAL_CAP * ( (frq1_r / frq3_r) ^ 2 - 1.0 ) / ( (frq1_r / frq2_r) ^ 2 - 1.0 );
val_r = (frq1_r + frq3_r) / frq3_r;
val_r *= (frq1_r - frq3_r) / frq3_r;
val_r *= frq2_r / (frq1_r + frq2_r) ;
val_r *= frq2_r / (frq1_r - frq2_r) ;
val_r *= CAL_CAP;
}else{
//CALC_L
//val_r = CAL_C * ( (frq1_r / frq3_r) ^ 2 - 1.0 ) * ( (frq1_r / frq2_r) ^ 2 - 1.0 ) / CAL_CAP /( (2 * M_PI frq1_r)^2 );
val_r = (frq1_r + frq3_r) / frq3_r;
val_r *= (frq1_r - frq3_r) / frq3_r;
val_r *= (frq1_r + frq2_r) / frq2_r;
val_r *= (frq1_r - frq2_r) / frq2_r;
val_r /= CAL_CAP;
val_r /= 4 * M_PI * M_PI * frq1_r * frq1_r;
}
#ifdef USE_SERIAL
Serial.println(val_r);
#endif
#ifdef USE_SERIAL
lcd.println(val_r);
#endif
}
}
digitalWrite(pinLed,!digitalRead(pinLed)); // blink Led
}
2011年6月6日月曜日
2011年5月7日土曜日
ペーストハンダではんだ付け
Deal eXtremeで買ったペーストハンダではんだ付けしてみました。
LodeStar Soldering Paste (50g) $3.37
今日のpaypalのレートで$3.37 x 82.6447円 ≒ 279円
注射器は無いけど待ち切れずに開封。
注射器の代わりにビニール袋の角を切って絞り出しました。
マイコンPCB[PCB-ATMEGA128] + ATMEGA64Aで練習です。
温度制御のリワークステーションなんか持ち合わせてないので、コテライザーのホットブローを感を頼りに使います。
適当にはんだを盛って
部品を載せて
温風を当てて出来上がり。
コテライザーは650℃なので注意しながら遠くからすこしずつ近づけました。
灰色のペーストハンダから煙が出て銀色のなると部品が中心に勝手に移動します。
調子に乗って残り部品を一気に載せて出来上がり。
調子に乗って
丁寧に温風を当てなかったのでいくつかの部品がずれてしまいました。
多ピン部品の顛末は次回ということで...
LodeStar Soldering Paste (50g) $3.37
今日のpaypalのレートで$3.37 x 82.6447円 ≒ 279円
注射器は無いけど待ち切れずに開封。
注射器の代わりにビニール袋の角を切って絞り出しました。
マイコンPCB[PCB-ATMEGA128] + ATMEGA64Aで練習です。
適当にはんだを盛って
部品を載せて
温風を当てて出来上がり。
コテライザーは650℃なので注意しながら遠くからすこしずつ近づけました。
灰色のペーストハンダから煙が出て銀色のなると部品が中心に勝手に移動します。
調子に乗って残り部品を一気に載せて出来上がり。
調子に乗って
丁寧に温風を当てなかったのでいくつかの部品がずれてしまいました。
多ピン部品の顛末は次回ということで...
2011年5月1日日曜日
RTC DS1302のモジュールを作ってみた
ここの情報を参考に家庭内JJYを作成
イーサーシールドを持ってないので、aitendoで売ってるDS1302(50円)をarduinoで使えるモジュールにしてみました。
coconet液晶工房の閉店セールで買えば30%引きなのでさらにお得です。
DS1302にはバックアップ用充電池をトリクル充電する機能も付いているのでこれも試してみました。
端子は上から
ここで少し後悔が...
電気二重層コンデンサの電圧も外部に取り出せるようにすればよかったと後になって気付きました。この端子をMCUのADCもしくはコンパレータの入力につなげば充電具合を確認できたんですよね。
ここのページで電気二重層コンデンサのバックアップ時間を計算できます。
arduinoのDS1302用ライブラリを使いました。
PS.
福島のJJYが暫定復旧したので家庭内JJYは用済みとなりました。
イーサーシールドを持ってないので、aitendoで売ってるDS1302(50円)をarduinoで使えるモジュールにしてみました。
coconet液晶工房の閉店セールで買えば30%引きなのでさらにお得です。
DS1302にはバックアップ用充電池をトリクル充電する機能も付いているのでこれも試してみました。
端子は上から
- SCLK
- I/O
- CE
- Vcc
- GND
ここで少し後悔が...
電気二重層コンデンサの電圧も外部に取り出せるようにすればよかったと後になって気付きました。この端子をMCUのADCもしくはコンパレータの入力につなげば充電具合を確認できたんですよね。
ここのページで電気二重層コンデンサのバックアップ時間を計算できます。
arduinoのDS1302用ライブラリを使いました。
DS1302 | 50円 | aitendo |
電気二重層コンデンサ 0.047F 5.5V | 80円 | madoelecさん |
クリスタル 32.768KHz | 30円 | 秋月 |
PS.
福島のJJYが暫定復旧したので家庭内JJYは用済みとなりました。
2011年4月1日金曜日
5x5duinoに全部品を載せてみた最強仕様
手持ち部品で使えそうなものを全部載せてみた。
リセッタブルヒューズの容量が少なくてXBeeが使えませんでした。
USBコネクタとMCU間のリセッタブルヒューズを取り外すのは面倒。
ラジアルリードのリセッタブルヒューズを亀の子状態で取り付けられるか???
今回初導入したリセットIC ミツミPST3427URは期待した動作にならなっかた。
2度リセットがかかってしまう。
別回路で検証してみる予定。
リセットICの不具合で新発見
atmega328側リセットボタンはコンデンサ経由でHWB端子に接続されてるんですもんね。
comopさんのPEKEも同じ回路として作ったからHWBボタン無しでもOKですね。
PEKEの場合は
リセッタブルヒューズの容量が少なくてXBeeが使えませんでした。
USBコネクタとMCU間のリセッタブルヒューズを取り外すのは面倒。
ラジアルリードのリセッタブルヒューズを亀の子状態で取り付けられるか???
今回初導入したリセットIC ミツミPST3427URは期待した動作にならなっかた。
2度リセットがかかってしまう。
別回路で検証してみる予定。
リセットICの不具合で新発見
- atmega328側リセット長押し
- atmega8u2リセット
- atmega328側リセットを離す
atmega328側リセットボタンはコンデンサ経由でHWB端子に接続されてるんですもんね。
comopさんのPEKEも同じ回路として作ったからHWBボタン無しでもOKですね。
PEKEの場合は
- atmega328側リセット長押し
- atmega8u2 ISP端子のRSTとGNDをジャンパーピンでショート
- atmega328側リセットを離す
2011年3月31日木曜日
dotsduinoを作ってみた
発熱で調子が出ないのでdotsduinoを作ってみた。
dotsduinoのサンプルスケッチは2KBでおさまるので
参考回路図は本家を参照
ブログで私の勘違いの質問に丁寧に答えてくれてarms22さんありがとうがいました。
dotsduinoのライブラリは接続ピンを柔軟に変更できるように作られているので回路図なしでISP関連とTxD、RxDの端子を除外して適当に配線しました。
映像が傾いてるのは熱のせいです。
裏面にペンで配線をじかに書き込んでます。
電池2本駆動としてLEDの電流制限抵抗は220Ωにしました。
0.3mmすずメッキ線をラッピング(レガシー技術)でLEDに配線
ラッピングははんだ付けではないので飽きたらメッキ線をほどいてLEDとMPUを再利用できます。
Optibootを8MHzRCにしたもので動作確認しました。
赤外線リモコン受信モジュールOSRB38C9AAと組み合わせて家庭用リモコンでゲーム作れそうです。
100マス計算ゲームくらいなら作れそうです。
dotsduinoのサンプルスケッチは2KBでおさまるので
- Atmega8L(comopさんに分けていただいたもの)
- 8MHz RC
参考回路図は本家を参照
ブログで私の勘違いの質問に丁寧に答えてくれてarms22さんありがとうがいました。
dotsduinoのライブラリは接続ピンを柔軟に変更できるように作られているので回路図なしでISP関連とTxD、RxDの端子を除外して適当に配線しました。
映像が傾いてるのは熱のせいです。
裏面にペンで配線をじかに書き込んでます。
電池2本駆動としてLEDの電流制限抵抗は220Ωにしました。
0.3mmすずメッキ線をラッピング(レガシー技術)でLEDに配線
ラッピングははんだ付けではないので飽きたらメッキ線をほどいてLEDとMPUを再利用できます。
Optibootを8MHzRCにしたもので動作確認しました。
赤外線リモコン受信モジュールOSRB38C9AAと組み合わせて家庭用リモコンでゲーム作れそうです。
100マス計算ゲームくらいなら作れそうです。
5x5duinoの基板が届いた
FusionPCBから基板は届いたが発熱のためだるくて何もできない。
一応デジカメで撮っておいた
確認したら基板の裏面しか撮ってない。発熱ボケです。
atmega8u2側だけ部品を取り付けて動作確認
atmega8u2はcomopさんから分けていただいたものです。
atmega8u2 DFUとして認識されたがWindows7 64bitでは署名なしのドライバは使えなかった。
仕方がないのでXP Modeを立ち上げてFLIPを使ってUnoのシリアルファームを書き込み。
動作確認OK。
HWBボタンも動作したので一安心。
熱のせいかはんだ付けの調子がでない。
blogger.comにeagleやPDFのファイルをのせる良い方法はないか思案中。
一応デジカメで撮っておいた
確認したら基板の裏面しか撮ってない。発熱ボケです。
atmega8u2側だけ部品を取り付けて動作確認
atmega8u2はcomopさんから分けていただいたものです。
1μF 2012サイズの手持ちが無いので無理やり3216を取り付けてみた。
UCAPだから重要
ポリスイッチは100mAしか手持ちがなかったのでXBee動作は無理
atmega8u2 DFUとして認識されたがWindows7 64bitでは署名なしのドライバは使えなかった。
仕方がないのでXP Modeを立ち上げてFLIPを使ってUnoのシリアルファームを書き込み。
動作確認OK。
HWBボタンも動作したので一安心。
熱のせいかはんだ付けの調子がでない。
blogger.comにeagleやPDFのファイルをのせる良い方法はないか思案中。
2011年3月21日月曜日
arduino400を再設計してみる
PIC18F14K50(DIP) + Atmega328p(DIP)
PIC18F14K50(SOP) + Atmega328p(DIP)
MCP2200(SOP) + Atmega328p(DIP)
で使えるようにしてみた。
DIPとSOP両対応のため凄い配置になってしまいました。
八潮秋月でRGB LED(GB-339RPGBC)が10円だったので、これを使えるように変更するか思案中
50mm x 50mmの基板10枚を$12で作成できるところを見つけたのでそこに頼む予定
PIC18F14K50(SOP) + Atmega328p(DIP)
MCP2200(SOP) + Atmega328p(DIP)
で使えるようにしてみた。
DIPとSOP両対応のため凄い配置になってしまいました。
八潮秋月でRGB LED(GB-339RPGBC)が10円だったので、これを使えるように変更するか思案中
50mm x 50mmの基板10枚を$12で作成できるところを見つけたのでそこに頼む予定
「50mm x 50mmのarduino Uno互換 + Xbeeの基板を作ろうかなぁ」を注文した
FusionPCBに注文した基板が発送されたみたい
FusionPCBより安いところを見つけたけど、今回は見送り
FETでXBeeの電源を制御するようにしてみました。
3.3v -> 5vのレベルシフタもFET
FET三昧です。
POV-Rayの最終イメージはこれ
FusionPCBより安いところを見つけたけど、今回は見送り
FETでXBeeの電源を制御するようにしてみました。
3.3v -> 5vのレベルシフタもFET
FET三昧です。
POV-Rayの最終イメージはこれ
2011年2月17日木曜日
「50mm x 50mmのarduino Uno互換 + Xbeeの基板を作ろうかなぁ」の続き
「50mm x 50mmのarduino Uno互換 + Xbeeの基板を作ろうかなぁ」の続き
部品箱にある部品を出来るだけ使うようにしました。
2SC1815がまるで塔のようです。
5Vと3.3Vのレギュレータを無理やり乗せました。
XBeeの信号取り出し用に20pinの取り出しよう穴を追加できそうだぁ。
Eagle3D + POV-RAY使うと隙間を再発見できて非常に便利。
シルクを再配置したらFusionPCBに注文するかな。
部品箱にある部品を出来るだけ使うようにしました。
2SC1815がまるで塔のようです。
5Vと3.3Vのレギュレータを無理やり乗せました。
XBeeの信号取り出し用に20pinの取り出しよう穴を追加できそうだぁ。
Eagle3D + POV-RAY使うと隙間を再発見できて非常に便利。
シルクを再配置したらFusionPCBに注文するかな。
2011年2月12日土曜日
50mm x 50mmのarduino Uno互換 + Xbeeの基板を作ろうかなぁ
FusionPCB 50mm x 50mmでこんな基板を作ろうと思ってる。
USBシリアルはatmega8u2
メインはatmega328p
裏面にXBeeProを無理やり配置
そのまま使うとUno + XBee
中心部分のスロットで切断すると
左側はatmega8u2でシリアル変換 + XBeePro
右側はatmega328pのMetaboardになる予定
このサイズだと水晶、リセットボタン、スロットの専有面積比率が高くて集積度が上がらない感じ。
1KΩの抵抗もチップ抵抗アレイにしたい。
裏面のXBeeはアンテナ部分をはみ出る構造にして感度低下を避けてるつもり。
3.3vをTAR5SB33を予定していたけどXBeeProは270mAも消費するのかぁ。
すでにXBeePro2個買ってしまったよ。
5v -> 3.3vトレラントにツエナーダイオードを使う予定だけど、うまく動くか不安だよ。
3.3v -> 5vは2sc1815を使う。背が高すぎるから2sc4116に変更しようかなぁ。
今日時点でまだFusionPCBが旧正月から復活してない。
USBシリアルはatmega8u2
メインはatmega328p
裏面にXBeeProを無理やり配置
![]() |
| arduinoのピン配置+adc6,7 + mega8u2のI/Oすべて取り出し可能 |
中心部分のスロットで切断すると
左側はatmega8u2でシリアル変換 + XBeePro
右側はatmega328pのMetaboardになる予定
このサイズだと水晶、リセットボタン、スロットの専有面積比率が高くて集積度が上がらない感じ。
1KΩの抵抗もチップ抵抗アレイにしたい。
![]() |
| 裏面にXBeeを横配置 |
3.3vをTAR5SB33を予定していたけどXBeeProは270mAも消費するのかぁ。
すでにXBeePro2個買ってしまったよ。
5v -> 3.3vトレラントにツエナーダイオードを使う予定だけど、うまく動くか不安だよ。
3.3v -> 5vは2sc1815を使う。背が高すぎるから2sc4116に変更しようかなぁ。
今日時点でまだFusionPCBが旧正月から復活してない。
2011年1月31日月曜日
Arduino風 パソコン制御とマイコン制御
小山智史さんの「Arduino風パソコン制御とマイコン制御」を作成したのがこれです。
HT7750を使った電池駆動出来るように基板右側を使う予定。HTAプログラムとして動かすコンセプトが秀逸。
gainerと同じようにhidmon88.dllを127.0.0.1経由で操作するProxyを作ればIE以外のブラウザからも制御できそう。
proxyさえあればchrome上で動作させたProcessing.jsと連携できる。
HT7750を使った電池駆動出来るように基板右側を使う予定。HTAプログラムとして動かすコンセプトが秀逸。
gainerと同じようにhidmon88.dllを127.0.0.1経由で操作するProxyを作ればIE以外のブラウザからも制御できそう。
proxyさえあればchrome上で動作させたProcessing.jsと連携できる。
arduino400の基板を作成
気を良くしてarduino400の基板を作成しました。
昨年末Fusion PCBで50mm x 50mmサイズを発注。
初めてEagleCADで作ったりました。抵抗、コンデンサはすべて表面実装
秋月のAE-ATMEGAが出るのを知ってれば自分で作らなかったでしょう(涙)。
ピンフレームはarduinoの配置にしてあります。
再度作りなおすなら
普通に作るとこんな感じ
撮影用として大きい3225サイズのチップ抵抗を使いました。ランドを大きめに作ってるので簡単にはんだ付けできます。
入手性の悪そうな部品(ツェナーダイオード)パターンはアキシャルリードも使えるようにしてます。
ソケットの間にクリスタルを配置
秋月八潮で買った2色LED 300円/200個を使ってる。単色2本でも使えるようにカソードの穴は2つある。
昨年末Fusion PCBで50mm x 50mmサイズを発注。
初めてEagleCADで作ったりました。抵抗、コンデンサはすべて表面実装
秋月のAE-ATMEGAが出るのを知ってれば自分で作らなかったでしょう(涙)。
- arduino互換
- Metaboard互換
- PIC18F14K50のUSBデバイス(pic18spxとして動作可能)
ピンフレームはarduinoの配置にしてあります。
再度作りなおすなら
- USB Miniコネクタにする
- atmega8u2 + atmega328 SMD版を使ってUno互換にする
- 裏にatmega1284 SMD版のパターンも入れる
- xBeeのパターンも追加する
- 3.3vレギュレータのパターン
arduino400互換 |
普通に作るとこんな感じ
撮影用として大きい3225サイズのチップ抵抗を使いました。ランドを大きめに作ってるので簡単にはんだ付けできます。
右下に 赤外線受信モジュール(PL-IRM0101)を配置してます。
SIIのボルテージディテクタS-8053HNBをリセットICとして使う贅沢な設計
| Metaboard互換 |
| Metaboard互換(裏面) |
入手性の悪そうな部品(ツェナーダイオード)パターンはアキシャルリードも使えるようにしてます。
ソケットの間にクリスタルを配置
秋月八潮で買った2色LED 300円/200個を使ってる。単色2本でも使えるようにカソードの穴は2つある。
| 作りかけ(裏面) |
| リビングで使ってるやつ |
arduino400 + USB IR Toyしてみました
arduino400
次に作ったのがirukaさんのarduino400
pic18f14k50(200円) + atmega328(250円)でarduino互換機が作れるというすばらしいコンセプト!!
この時点ではまだarduinoに興味は無かったんですけど、作ってみて使わないと判らないことがあるんですね。
サンハヤトのICB-86G基板で作りました。
picのcdcはWin7(64bit)でも快適に動いてarduino環境を学ぶことができました。
ここからarduinoへ傾倒していきます。
pic18f14k50(200円) + atmega328(250円)でarduino互換機が作れるというすばらしいコンセプト!!
この時点ではまだarduinoに興味は無かったんですけど、作ってみて使わないと判らないことがあるんですね。
| MPUをはずされたarduino400 |
サンハヤトのICB-86G基板で作りました。
picのcdcはWin7(64bit)でも快適に動いてarduino環境を学ぶことができました。
ここからarduinoへ傾倒していきます。
2011年1月26日水曜日
AE-ATmegaのポリスイッチ配置
登録:
投稿 (Atom)

















