SDOTECK HOME

  • ご参考になりましたか?
    SDOTECKブログでは、みなさんからのフィードバックをお待ちしています。 説明が解らなかったり、もっと詳しく解説してほしいポイント・テーマがありましたら、お気軽にsudoteck@gmail.com までメールくださるか、記事にコメントして下さい。
  • -

RF PowerAMP なら

  • RF AMP DESIGN

HEX calc pro 1.00

  • HEX calc pro ver1.00
    エンジニア向けの16進と浮動小数点を混在して入力出来る計算機 。 Version 1.00 高機能な 16進電卓や科学計算電卓はありますが、いちいちモードを切り替えなければならず、最大の問題は16進数と小数点値を同時に使用出来ないことです。
    詳しい説明はここ
    iTunes ではここまで

ATT calc

  • ATT calc ver2.00
    iPhone 用 RF アッテネーター計算ソフトです。  RF開発エンジニアに必要な、 dBm - W 換算機能をはじめ、π型やT型の ATTを 設計する上で、必要な dB値から抵抗値を算出する機能と、 E24系列の抵抗値を 使用したときの減衰量(dB)と整合インピーダンス(Ω) が表示されますので、どの 抵抗値の組み合わせがよいか検討できます。  また、正確な値を必要とする場合に2個のE24系列抵抗を並列接続して理想の値を 求める計算機能も持っています。  操作はピッカーホイールを回すだけですので、実験中でも片手で簡単に操作 できます。

FIL Calc

  •  LPF 計算機
    RFエンジニア向けフィルター計算ソフト LPFやHPFの設計をするときに、いちいちパソコンを起動してフィルタを設計、結果をプリントアウトして、実験室に行ってネットワークアナライザで測定・実験、ちょっと修正したい時にまたパソコンの所にもどって、再計算...というのが結構面倒で、手軽にiPhone で計算できるといいいなと思って作りました。

iPhone APP

  • ATT calc ver2.00
    SDOTECK が開発した iPhone APP の紹介です。 NEWS---SWRproリリース

Amazon

  • AMAZON Books

RAKUTEN

  • RAKUTEN

mujic.jp

  • music.jp
    music.jp

サイト内検索には?

  • -------------------------------
    ◆下の検索機能でこのブログのすべての関連項目を検索出来ます。是非使ってみて下さい。
サイト内検索
ココログ最強検索 by 暴想

SCHEMATICS

BOSE

  • BOSE
    クワイアットコンフォート20
無料ブログはココログ

Google

  • Google

« 2012年3月 | トップページ | 2012年5月 »

2012年4月

2012年4月25日 (水)

「 データーシートを読もう」のはなし

「 データーシートを読もう」とは
 データーシートは部品を使う上で重要な電源電圧の絶対最大値や、最大出力電流などを読んで、設計上満足な値が出るか検討する重要な資料です。ですから、まず最大定格の表は外せませんね。

20120425_164705

そして代表的電気特性で、通常殿くらいの電源電圧をかけて使っているか、オペアンプだったら出力はどのくらいHighとLowで振れるか、どのくらい電流が流せるか...
20120425_165017

などいろいろチェックする項目が多いので、特に英文のデーターシートだったら、ちょっと大変ですね。
早くチェックして、出来ればすぐにでも終わりたい...と思ってしまいます。
例に挙げたのは単電源オペアンプの LM358 のデーターシートですが、色々あるデーターの図表を飛ばして、終盤にある楽しい資料を是非チェックしてみて下さい。
ハード的には
海外のデーターシートには結構具体的な回路例がついているのです。
20120425_164138
 例えば、右図は出力電流がこのオペアンプでは足りないなーと思った時に使える、出力にエミッターフォロワーをつけた Power AMP の回路図です。具体的な抵抗値もあるので、参考になりますね。しかしながらあくまで回路例なので、どのくらいのトランジスターを使えばどのくらい流せるかは、自分で考えなくてはなりません。そんな点も勉強になっていいでしょう。
20120425_164239
 次は電流を測定する回路です。V0 =1V/1A とありますから、1Aで 1V出ると分かります。電流検出抵抗は 0.1Ωなので、10Vで10A流すと 0.1Ω x 10A = 1V ... 1V x 10A = 10W となり電流検出抵抗は 10W 必要になるってのは、自分で計算しなければなりません。
 そんなわけで、是非データーシートは最後まで見てやって下さい。
下の図は TL072のデーターシートからですが、中には内部回路が載っている場合があります。ここまで見てくると、「なんだエミッターに64Ωで、出力に128Ωが入っているんじゃぁ負荷は抵抗値を高くしないとまずいなぁ」と気がつくこともあります。
20120425_163600


2012年4月22日 (日)

パリのはなし

パリとはいうまでもなく、フランスのパリです。
フランスは私の初めての海外出張で、初めて降り立った地で、当時はシャルル・ドゴール空港が出来たばかりではなかったかと思います。その話は、海外出張のはなしで、してますので、今回は家族で初めて行ったフランスについて書いてみます。
 Image0161998年、娘が中学2年の時に「受験前に」とフランス7日間現地5日間の滞在で、ホテルはパリの1軒に連泊という珍しい旅行でした。もちろん大きな目的は「ルーブルを2日かけて見よう」で、やはりミロのビーナスモナリザがメインでした。Image017モナリザはそんなに混んでなかったですが、アクリルのパネルで守られ、ちょっとじっくり見れる状況ではないでしたが、本物だからといってそんなに近くで見れる訳ではなかったですね。ルーブルはすべてを見るのは2日間でも大変で、古い宗教画の部屋は素通りして、地下のミイラなんかのほうが面白かったですね。と...いうより、実はルーブルは2日目の午前中くらいで飽きてしまって、すぐに対岸の「オルセー美術館」に行ってしまったのです。こっちは印象派が多く、ミレーや、モネなどの有名な絵がいっぱいあるので、美術館としてはコンパクトですが、何階かに分かれて各階がとても見応えがありました。もう一回行くなら、オルセーがいいなぁ。
 と、フランスと言えばやはり食べ物ですね。Image0363日目にエッフェル塔に行って、すごい長いエレベーター待ちの行列にうんざりして、がんばって階段で上がったかいもあって、偶然展望台のある階のレストラン「ル・ジュール・ヴェルヌ」から準備で出て来た店員のお姉さんに聞くと、ランチなら空席があるそうで、ラッキーにもパリの展望を見ながらの食事となりました。何を食べたか?きっと生ガキだったような、すごい大きなボールに入ったスープだったような?あまり覚えていないのは、食事のオーダー会話だけで全力を使い果たしてしまったからかなぁ?
 もう1つの目的はベルサイユ宮殿で、「パリから電車で行けるので行ってみよう」と気楽な感じで出かけたのですが、地下鉄で出かけて乗り換えようとベルサイユ行きの列車を駅員さんに聞くと「今日は工事で動いてないよ」との答え、列車地図を見ながらなんとか違う線路で行くことが出来ましたけど、いまさらながらよく行けたなぁと関心。ベルサイユも混んでたけど、あまり宮殿では部屋や調度ぐらいしか見る物がなくて、やっぱり庭園がいいとのんびり歩いて散策しました。Image034夏の暑い盛りだったので、のどが乾いたなと思ったら、青年が「ジュースはいかが?」というので、1杯頼んだら、背中にしょったかごからオレンジを取り出して手動の絞り機で力任せにがんばって絞ってくれました。うまかったかどうかより、その青年のがんばって絞っている様子がいまでも思い出されます。
 で、夕食はさぞかし...とおもって期待していたのですが、娘と妻は夕方になると「眠いー」と時差ボケが直らず、レストランどころではありません。私が近所の八百屋や弁当屋に買い出しにいってホテルでの夕食ばかり...最後の日は、日本食が恋しくてオペラ駅のそばでうどんを食べたっけなぁ...
ソフト的には
 いろいろとツアーガイドっぽくて大変な旅行でしたが、自分たちで5日間過ごす経験がよかったのか、娘は大学生の時にバイトで金を貯めて仲の良い友達(女の子で安心?)とやはり5日間パリに遊びにいったようです。私がネットで予約してやったオペラ座の公演が違った場所のオペラ座だったという落ちがありましたが...まあ 自力で海外旅行行けるようになって、たいしたもんだと思ったものでした。


2012年4月20日 (金)

ビットシフトのはなし

ビットシフトとは
 [Bit Shift ]で、デジタルデーターの1ビットずつを左右に動かせる、便利な命令です。
例えば 2進法では 10進法の4 は、00000100b と表します。 bは2進法表記のこと、16進表記では
0x04 とか書きます。これを例えば A という8ビットの変数に入れます。
A = 00000100b
ですね。
これをビットシフト演算子で右に1つシフトさせると
A = A >> 1 ;
と書きます。; はc言語の区切り記号です。
そうするとどうなるかというと
A = 00000010b = 0x02 = 2
になります。
1が右に1つズレていますね。

同様に
A = 00000100b ;
A = A << 1 ;
と書くと
A = 00001000b = 0x08 = 8
となります。
つまり、
右シフト >> は2分の1にすること
左シフト << は2倍にすることになります。
2進法だから当たり前ですが...
Led_driveport
ハード的には
なにが便利かというと、例えば右図のように1つの8ビットポートに繋がれた LEDをレベルに応じて点灯させる時など
(この図では、Portが Low で点灯する回路ですから、光らせたいビットを0にします。)

switch(level){
case 0 :
PortD = 11111111b; //レベル0
break;
case 1:
PortD = 11111110b; //レベル1
break;
....
....

などとやるよりも

unsigned char segdata ;
segdata = ( 0xff << level );
PortD = segdata ;

で、出来てしまいます。
シフトして右からは 0が入ってくるのでこのようなことが出来ます。

ソフト的には
 しかしながら、時々コンパイラによったり、CPUによったりして、時々困ったことが起きます。
今回も PIC で起こったことは...
LEDを光らせることで使ってましたが、以前はLowをセグメント出力して光らせていたのですが、今回仕様が変わって間にインバーターバッファが入ったので、光らせるビットを 1 にしなければなりません。

以前のソフトは

unsigned int BitData ;
unsigned char SegData ;

BitData =( 0xff00 << level );
SegData = BitData >> 8 ;

と int の上位8ビットを使ってポート出力時に 8ビットに変換していました。
ビット反転でも対応出来るし、初期値を 0xFF7F とすれば1個だけ点灯もできるし..と思って作ってました。

それで今回は

unsigned int BitData ;
unsigned char SegData ;

BitData =( 0x00ff << level );
SegData = BitData >> 8 ;

と単純にやっただけなのですが、結果は SegData はいつも 0x00 のまま。
level = 2 の時には
BitData = 0x00fc と下側8ビットの中でしかシフトしていません。
おかしいなーと思って、

unsigned int BitData ;
unsigned char SegData ;

BitData =( 0xff00 << level );
SegData = ~(BitData >> 8) ; //~ を使って単純にビットを反転

とりあえずこれでOKにしてしまいました。
しかしちょっと納得がいかないので追求しました。

unsigned int BitData ;
unsigned char SegData ;

BitData =( 0x0fff << Level ); //8ビット境界を越えて動くか実験
SegData = BitData >> 8 ;

level = 2 のとき
SegData = 00111111b といくではないですか?

どうやらコンパイラが初期値で変になっているようなので、

unsigned int BitData ;
unsigned char SegData ;

BitData = 0x0fff ; //初期値を入れてやる
BitData = BitData >> 4 ; //希望の値 0x00ffにする

BitData =( BitData << Level );
SegData = BitData >> 8 ;

これで動きました!
なんか追求するといろんな不具合がありそうで、チェックしないとけっこう大変ですね
こんなことでも、コンパイラにうまく思いを伝えないとやっぱ動かないんですね〜

2012年4月16日 (月)

シュミットトリガーのはなし

シュミットトリガーとは
[Schumitt trigger ]で、出力状態によって入力のしきい値が変化する入力のことで、デジタルのトリガーする極性( Hi->Lo/Lo->Hi )によって変化するレベル(しきい値)がかわるヒステリシス特性をもつことからシュミットトリガー入力とも呼ばれている。
ハード的には
Schumitt
右図のようなシュミットインバーター 74HC14 などがその代表的なもので、デジタル信号の中でノイズがあるような信号の入力によく使われる。
 通常のCMOSゲートICではしきい値付近がアナログ的に変化する場合、ほんのわずかなノイズでしきい値を超えてしまうため、しきい値の 2.5V付近で出力に大きなノイズが出てしまう。このような場所にこのシュミットトリガー入力を使うと、一度出力が変化してしまうとしきい値が変化してさらに大きな変化をしないと出力が変化しない。この 74HC14では 入力が 0Vから 2.3V付近に上がってくると出力が 5Vから 0Vに変化します。すると今度は 出力が0Vから 5Vに変わるには 1.4V以下にならないと変わらないのです。この 0.9Vぐらいヒステリシス特性があるので、ノイズがこれ以下だったら関係なくなる訳です。
 アナログのコンパレーターでもこの特性を作ることが出来ます。簡単に右図のコンパレーターで R1=R2=10KとしてR3=1k,R4=100kとします。まず入力が0Vから上がっていく状態を考えます。このとき+入力が0V以上、-入力が 0Vなので、出力は High なので+入力端子はR1の10KとVccから R3+R4を通って電圧が加えられ、R2の 10KでGNDに落ちます。電圧Vrefは Vref =Vcc x R2÷((R1//(R3+R4))+R2) = Vcc x (10k)÷(10k//101k +10k)=Vcc x (10k÷(9k+10k))=0.53 Vcc   Vcc=5Vとして2.6Vとなります。
*R1//(R3+R4) の意味は R1と(R3+R4)の並列抵抗の意味です。
この電圧を超えると出力は反転して 0Vとなります。するとR4はこんどはGNDに接続するので、しきい値は Vref(Lo)= Vccx(R2//R4)÷(R1+R2//R4)=Vcc x (10K//100k)÷(10k+10K//100k)=Vcc x 9k÷19k =0.47 Vcc となります。 Vcc =5V とすると Vref(Lo)=2.36Vとなります。一度出力がLowになるとこの電圧まで落ちなければLowを保持しますので、約0.24V程度のヒステリシス特性になっていることがわかります。ここで、R4を変化させればこの特性を変えることが出来ます。
ソフト的には
このシュミットトリガー特性を使ってインバーター1個で発振器ができます。データーシートに書いてありますので、是非見て下さい。

2012年4月10日 (火)

iOS アプリ FSpeed ver1.0 リリース

SUDOTECKは、車用ナビゲーションユーティリティ FSpeed version 1.0をリリースしました。
Fspeed
このアプリはGPSを使った速度計を基本に、3つの画面を切り替えて種々の車の情報を表示します。
詳細説明
・右上のSTART/STOP ボタンで GPS 速度計測を開始・停止します。
 START するときはエンジンスタートの音とともに、メーター動作が初期化されます。
・中央のつまみで左下のマルチ表示をマニュアルモード、傾斜計モード、地図モードに
 切り替えます。
・左側のつまみで、画面の明るさのモードを切り替えたり、地図モードでは地図の表示
 方法を切り替えます。
・左上の Fuel 表示はバッテリーの残量を示すもので、実際の車の燃料を計測する物では
 ありません。
・右中央のLAP表示は起動してからの走行距離を表示します。
 表示エリアをタップしますと、数値をクリア出来ます。
・info ボタンでバージョン表示と、サポートホームページへジャンプする機能が
 あります。
1) MANUAL 画面
 真ん中の回転ノブの中央のポジションがマニュアルモードです。
 マルチ表示エリアには仮想エンジンの回転計が表示され、スピードメーターと連動して
 変速ギアとともに計算され表示されます。
Fsp_ang
2)ANG 表示
 車の傾斜計を表示します。iOSデバイスの取り付け方法によっては前後の傾きが出て
 しまうことがあります。
 その場合は前後( PITCHING)のみ速度計の右下のAdjボタンを押すことで、現在の
 状態を水平に再設定出来ます。
 傾斜計の下にはそれぞれ数値が表示されます。
 傾斜計はGPSが OFFでも動作出来ます。
Fsp_map
3)MAP表示
 選択つまみは右回転しかしませんので、傾斜計表示の後は地図表示モードになります。
 この表示の時、左のつまみで、地図のみ(M) 、地図と衛星写真(M+S)、衛星写真(S)
 モードを切り替えることが出来ます。
 地図上には自分の車の向きが赤い三角形で表示されますが、iOSデバイスの取り付け方
 によって向きがズレる場合があります。
 そのような場合、地図画面の右下隅をタップすると時計方向に回転。左隅をタップ
 すると反時計方向に回転させズレを修正出来ます。
 また、地図上をタップすると拡大出来ます。
 縮小するには画面をピンチアウトする必要があります。
  地図表示はiOSデバイスがインターネットに接続されている必要があります。

*本アプリでGPS計測中は、自動スリープを停止させています。
 バッテリーのみで動作させている場合はバッテリー切れにご注意ください。
*サポートページはここ
iTunesではここ


2012年4月 4日 (水)

パワーSMDデバイスのパッドのはなし

パワーSMDデバイスのパッドとは
 パワー MOS-FETや低電圧電源ICなどは、TO-220のものはネジで放熱版に半田付けしますが、SMD型は基板に実装する際、どのくらいのパッド(半田付け電極パターン、もしくは非レジスト領域)をつけたらいいのか、時々悩みます。もちろん基本的にはリフロー半田で実装する時は、部品がうまくパッドの正しい位置に実装されるよう工夫やノウハウが必要です。
ハード的にはLayoutpad
 右図は IR の資料にあったパッド寸法図です。フットプリントについては「フットプリント(推奨最小パッド寸法):基板のフットプリントは、 リフローはんだ付け工程において表面張力による セルフアライメントが可能となる寸法の事。」と説明があります。
 TO-263は TO-220のデバイスをそのままSMD形状にしたもので、一番大きいですが、放熱効果を得るには14mmx24mm程度の銅箔面積を必要とされていますが、両面基板にして、スルーホールを多数設けることで表面積を削減出来ます。
 D-Pack は PowerMOS FETなど、SOT-223等は 1.5A出力の 定電圧IC等にも使われています。
 一番ポピュラーなのは、SOT-89 ではないでしょうか。これは 5V 500mA 程度の定電圧ICや小型PowerMOSトランジスタ、はては高周波用のMMICにも用いられています。中央のGND(orドレイン)端子から放熱出来るようにスルーホールをつけたりしますので、広めで、6角の形をしたパターンで工夫されています。 しかしながら、このパッケージを手半田する場合はちょっと大変です。というのは中央の端子は裏面に広くありますが、表面に出ているのはわずかで、半田ごてをあてて半田を流し込むのに少々テクニックが必要です。パッド面が半田メッキされていれば良いですが、銅そのままでは半田が乗りにくく、フラックス等で薄く予備半田して、かつ半田時にもフラックスで裏面までうまく流し込むように注意すべきです。
 失敗するとデバイスが半田の上に浮き上がってしまって、他の2本のリードを半田付け出来なくなったり、傾いたりします。これを直そうと半田こてをあてて修正しているうちにデバイスが熱で劣化してしまったりする危険もあります。
 NECの資料によりますとこの SOT-89では、端子温度 350℃以下でデバイスの1辺あたり3秒以内と規定されています。一辺あたりというのが謎ですが、3本の端子と、GNDタブそれぞれそのくらいスピーディーにやらないといけないことですね。赤外線リフローでも260℃以下60秒以内3回以内とけっこう厳しい(うまくリフロー出来れば1回で問題ないですが)ようです。
ソフト的には
 かつてリフロー半田が初めての頃、「パッド面積が広ければつかないことは無い」と思って気楽に設計していたのですが、半田の量が多くなると、デバイスが面積の大きい方の中央に引かれるんですね...D-PACKのFETがドレイン側に移動してゲート、ソースの足が離れてしまったり、回転してしまったりで散々でした。大は小を兼ねないのがこのパッド設計ではないでしょうか。


2012年4月 3日 (火)

int 型にキャスト のはなし

int 型にキャストとは
 C言語で int 型とは整数型のことで、キャストとは int型以外の数値型を int型に変えるような、「変数値を型変換する」ことで、代入先がintに指定されている時や、単純に整数値がほしい時によく使います。
今回は
iPhoneのバッテリーの値を読み取るのに、
[ UIDevice currentDevice].batteryLevel
にて、浮動小数点型(Float)の型の帰り値で、0.00(ゼロ)〜 1.00(フルレベル)までの値を得ることが出来ます。これを0から10までの int 型にしてバー表示をしようとしました。
int barLevel ;
barLevel = (int) [ UIDevice currentDevice].batteryLevel * 10.0f ;
としたのです。
Battlev10
デバッグ中はバッテリーがフル充電だったので、バッテリーレベルはフルの10個を表示して問題なかったのですが、確認しようとしばらく実機でバッテリーが減るまで動かしてみると、今度はゼロレベルになっています。他のアプリでバッテリー残量を計測すると91%なので、これはおかしい!
 さっそくデバッガで確認すると、barLevel に代入された値が0になっています。
そこで、
float fdata ;
int barLevel;
fdata = [ UIDevice currentDevice].batteryLevel ;
barLevei =(int) fdata * 10.0f ;
とやってみると、はじめの fdata には 0.910 が入っているのに、barLevel には 0になってしまうのです。
 ここで、はたと思いつきました。
「もしかして (int)は最初の fdata だけにかかっているんじゃないかな?」です。
(int)fdata は、 (int) 0.91 なので、 0 になります。 0 x 10 = 0 ですよね。
そこで、
barLevei =(int)( fdata * 10.0f) ;
とやったら、ちゃんと 9が入りました。
最初の
barLevel = (int) [ UIDevice currentDevice].batteryLevel * 10.0f ;
は、参考書丸写しだったのに...
正確には
barLevel = (int)( [ UIDevice currentDevice].batteryLevel * 10.0f );
と書くべきだったのですね。
C言語が自分の都合良く解釈してくれるわけないですね。
そして、もうすぐリリース
 無事にiTune にアップロード出来たので、認可されればもうじき新アプリがリリースされます。
今回は GPSで車の速度を計るもの。それだけでは面白くないので、仮想エンジンを作って、タコメーターとギアチェンジの様子を再現したり、傾きセンサーで車の傾斜計や、現在位置と向きを示す地図表示の機能をつけました。英語バージョンのチェックで現在位置を表示させたら、出てきました..この辺りは岳南鉄道の須津駅(Sudo)の近くです。英語バージョンでも漢字がでるのはちょっとびっくり。
20120403_141409


« 2012年3月 | トップページ | 2012年5月 »