ツール

2022年8月24日 (水)

パルスジェネレータを作ってみた:箱に入れた

2022年8月5日:Arduino-UNOでパルスジェネレータを作ってみた
2022年8月7日:パルスジェネレータを作ってみた:16MHzクロックを追加
この続きで、完成形に持ってきまして、2台作りました。
  ※前のとは回路が少し違います。

一つは乾電池2本仕様。
バックライト無しの液晶で。
P11_20220824162601
タカチのプラケース「SW-125」。
こんな中味。
P13

二つ目がバックライト付きの液晶なんで、ちょい
電流が増えるので電池を3本に。
P12_20220824162601
ケースは「ダイソ-」で入手。 税込110円。
P14
安く買ったケース、ついつい手抜きで加工精度が
もうひとつ。
液晶の窓部分の寸法が微妙にずれてます。
  ※気にしない、気にしない。
   買ったのはダイソー。
   日本製。東大阪市高井田の「(株)シャルム」
   SAI-20-P8  No.141  181 x 90 x 28mm
   材質:ポリプロピレン

Arduino UNO単体で試すならこんな接続で。
Pa11

箱に入れた回路には、電池電圧低下検出回路も
入れてあります。
電池3本仕様のを図示。
Pa12

さて、これをまとめて製作記事としてトラ技に投稿したの
ですが、記事を出してから、ロータリーエンコーダの入力
部分をちょいと手直しをしました。
原稿では
  「A相の↓エッジパルスをINT0に入れて割り込み
   処理でカウント」
としました。
そのため、ハード的なチャタリング除去回路
(CRを使ったディレー回路)が必要です。
INT0割り込み内の処理でチャタリングを逃げる手当は
しているのですが、激しいのが来ると、カウントを
ミスることがあるのです。
  ※立ち上がりの時に出たチャッタを
   ↓エッジが来たと勘違いすることが
   あった。
Pa13

回路をシンプルにということで、このディレーを
無くして(1000PFのコンデンサだけに)、カウント
処理をタイマー割り込み内に入れてチャタリング
除去を試してみたのです。
タイマー割り込みを2kHzにして4段のシフトレジスタ
のデータ一致で信号の安定を検出します。
この方法↓
2020年9月16日:ロータリーエンコーダーの2相パルスをタイマー割り込みで

今回のスケッチはINT0割り込みじゃなく、タイマー割り込みを
使ったのをアップしておきます。

  ・ダウンロード - p_gen16c.txt
    ※ファイルタイプを.txtにしています。(普通は.ino)

お試し下さい。

※2022-09-03 ちょっと手直し
「SW2長押し」による「duty 50%設定」。
この時も「duty hold」状態になるようにしました。

   ・ダウンロード - p_gen16c1.txt

どっちが使いやすいか・・・
「デューティ50%で使いたいんや」の時、
前のだと、「duty 50%」後に「duty hold」操作、あるいは、
「duty hold」状態で「duty 50%」操作という流れでした。
手直し後は「duty 50%」でそれを維持してくれるという
ことで、ちょい、手間が省けるのではないかと。

duty holdの解除は、
 ・再度SW3を長押し。  あるいは
 ・W:パルス幅設定モードにしてエンコーダを操作。
    Wモードにしただけでは解除しません。
    パルス幅の値を変えた=デューティを変えたぞ
    でholdを解除します。
P:周期設定モードのままだとduty 50%を維持。
   ※周期設定値が奇数だときっちり50%にはな
    りません。

  ※動き、操作の詳細はスケッチを読んでね。
   ミスを発見したり、改善点があれば、コメント
   してください。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~
※追記 タイマー割り込みでのチャタリング除去処理

まず、INT0割り込みでのカウント処理の様子。
CRフィルタがないと、こんなミスカウントが出ます。
Ww11m
↓エッジだけが欲しいんですが、A相立ち上がりで
発生したチャタリングが悪さをしてミスカウントしています。

拡大
Ww12m
INT0 ↓エッジパルス割り込み処理では、
  ・直後のA相がHならミスなので除外
  ・前回の有効↓より4ms経過してないと除外
という処理を入れているのですが、それを逃れる
パルスが出現しています。
ハード的なローパスフィルタが必要です。

それをタイマー0.5ms割り込みで処理すると、
こんな具合に。
Ww21m
中央にジャギジャギが見えていますが、
  「0.5ms×4回で安定」
という処理で、ミスカウントは逃れています。

INT0エッジ割り込みか、タイマー割り込みか、
利点、欠点はそれぞれです。
・INT0エッジ割り込み
  即応答。 素早いカウントが可能。
  チャタリング対策はハードで。
    (エンコーダの特性に合ったCRフィルタを)
  INT1を使えば4逓倍処理も可能。
・タイマー割り込みで
  ポートにつなぐだけでOK。
  2相パルスが速いと抜かすかも。
  割り込み処理でいつも実行されるので
  パルス入力がないときでも時間が食われる。
     (もったいないぞ。 タダだけど)
  8bitのシフトレジスタなんで、この2相パルス
  に加えて、あと6つの信号のチャタリング除去
  もついでにできる。


※9月12日:エンコーダを素早く回した時の処理

前回のカウントパルスから20ms未満の時(早回し)の加速処理
をテーブルにしました。
スケッチの中、「const byte enc_spd[] PROGMEM」に
0~19msの加速パルスをテーブルにしています。
ご自由に。
   ・ダウンロード - p_gen16d.txt

バージョン:P-Gen16d  2022-09-12 です。




| | コメント (17)

2022年8月 7日 (日)

パルスジェネレータを作ってみた:16MHzクロックを追加

2022年8月 5日:Arduino-UNOでパルスジェネレータを作ってみた
この続きです。
クロック源、もう一つ「速いの」を追加しました。
これまでは、
 1us  1MHz
 10us 100kHz
 0.1ms 10kHz
 1ms  1kHz
の4種類でしたが、ハード的に得られる最高クロック
16MHzを追加しました。

クロック周期が「1/16us」で、「0.0625us」が最小単位と
なります。
小数以下の表示桁が4桁に増えちゃうわけです。
1クリックで1つ増減するのではなく「0.0625」増減します。
  ※同じ4桁でも、「0/16」「1/16」・・「15/16」と
   1/16で示す方が増減が分かりやすいかと思ったん
   ですが、どうでしょう?

整数部の最大が「4095」になるので、小数点を入れても
「9桁」になり、なんとか表示できました。

こんな具合。
Ta2

タイマー1のカウント値16bitの最大65535で、
「4095.9375us」となります。
  ※1MHzクロックだと1usピッチで最大が「65.535ms」
   でした。単純に周波数16倍。

クロックを変えるとこんな感じで表示が変わります。
Ta1

16MHzでの最下位カーソル位置が0.1桁のところになり
ここに合わせたときだけ0.0625ピッチで変化します。
しかし、10^0桁~10^3桁に持ってくると、ちゃんと
10進で変化するようになっていて、操作上の違和感は
ありません。

※その後:
2022年8月24日:パルスジェネレータを作ってみた:箱に入れた
をどうぞ。

| | コメント (3)

2022年8月 5日 (金)

Arduino-UNOでパルスジェネレータを作ってみた

ラジオペンチさんとvabenecosiさんのパルスジェネレータを
真似してみました。
・ラジオペンチさん
   http://radiopench.blog96.fc2.com/blog-entry-808.html
・vabenecosiさん
   http://vabenecosi.blog.fc2.com/blog-entry-37.html

そのままでは、面白くないので、
  ・トラ技 2010年7月号 ATtiny2313を使ったハンディ方形波発生器
の方式、
 ・16bitタイマー1のクロック入力T1に
 ・タイマー2で作った方形波を入れる
ということにしてみました。

クロック源となる方形波の周波数は、
1MHz 100kHz 10kHz 1kHzの4種類。

周期だと1us 10us 0.1ms 1msとなり、
これをクロック源として16ビットで設定できるので、
最大の周期は、
  1us : 65.535ms
  10us : 655.35ms
 0.1ms : 6.5535秒
  1ms : 65.535秒
となります。
  ※ATtiny2313では3桁のデジタルスイッチだったので
   もの足りなかった。

とりあえずArduino-UNOをベースに試してみました。
こんな回路。

Pg11

操作スイッチを4つにして、ロータリーエンコーダで
設定できる入力桁位置を設定できるようにしています。
   ※←(SW2) →(SW3)がカーソルスイッチ
カーソルより右の下位桁の値をそのままにして
左側(上位桁)の数値だけを±できるようにしました。

「12.345ms」で、2の位置にカーソルがある時CCW回しすると
→11.345ms
→10.345ms
→ 9.345ms
→ 8.345ms
→ 7.345ms
と、下位3桁はそのままにして上位の数値を-1します。

  ※左右のカーソルを独立させたので、操作スイッチは
   4つになっています。

また、スイッチの拡張機能操作は「二つ同時押し」
ではなく「長押し」にしています。

こんな操作画面です。
Ga001
右上がタイマー1の供給クロック周期。 (4種類)
右下が出力パルスの極性、PosとNegで表示。
周期設定の時は周期から周波数を計算して表示。

SW1の操作で周期設定とパルス幅設定を変えます。
Ga002
パルス幅設定の時は、デューティ比を表示します。

Ga003

操作する桁を固定できるので、大きく数値を変えることが
できます。
パルスの周期を0.2秒にしてパルス幅を変えてみました。
エンコーダーのつまみをあわてずに回すと、
デューティが「100% → 0% → 100%」と変化する
様子が見えます。

Pg21
デューティ100%と0%でH、Lに張り付かせる処理も
面白いかと。

・エンコーダの回転チェック
・操作スイッチの入力
この二つを割り込みで処理しています。

エンコーダをクルクル操作すると、周期やパルス幅が変わ
るので、その値の表示だけでなく、周波数とデューティー比
を計算して表示します。

その処理時間が「7~8ms」。
  ※液晶表示に時間がかかる

エンコーダのクルクルを速くすると・・・処理が間に合わ
なくなってきます。
でも、エンコーダのカウント処理は割り込みで動いているので、
up/down値の抜けはありません。

メイン側の計算・表示処理がつまってもカウント抜けは
しないというしかけになっています。

その様子です。
エンコーダを速く回した時、表示処理がつまっている
様子が見えています。
  ※loopの頭で出力ポートをトグルしているので、
   処理が間に合わなくなると、トグルが見えるように
   なります。
   描画中はトグルが止まります。
Pg22

テスト出力しているパルスで、表示処理中も、エンコーダ
の回転を読んでいる様子が見えています。

割り込みを使わずにエンコーダを読んでいたら・・・
   カウント抜けの可能性大です。

ラジオペンチさん、vabenecosiさんの回路そのままでは
動きません。
  ・OC2A 方形波出力 → T1クロック入力のつなぎ
  ・エンコーダをINT0、INT1に。
     (INT1は割り込みでは使っていない)
ということで、液晶やスイッチのポートが変わっています。

・回路図(BSch3Vファイル) 圧縮
      ダウンロード - pgen16a.zip

・スケッチ (ファイルタイプをtxtに)
      ダウンロード - p_gen16a.txt


さて、ケース入れを考えなければなりません。
電源は電池かな。


※追記 : 参考、関連あれこれ
     (勉強のために読んでみて)
2020年2月10日:ArduinoのanalogWrite 1/255なの?
2020年1月28日:Arduinoから「タイマー0」を取り上げる(ユーザーが使う)
2022年7月25日:Atmega328P タイマー/カウンタ1の高速PWM動作
2020年8月13日:Arduino、analogWriteは捨てちゃえ。ちゃんとしたPWMを使おう
2020年8月16日:Arduino UNOのPWM出力を(ちょっと精密に)確かめる
2020年9月19日:クリック有りのロータリーエンコーダーで
2019年4月1日:ArduinoのEEPROMアクセス、「EEMEM」について
2020年2月4日:Arduinoのタイマー OCRレジスタは「n」じゃなく「n - 1」の値を設定せよ
2022年3月11日:Arduino-UNO 割り込み処理のミスあれこれ:ロータリーエンコーダー
2018年10月11日:魔法の言葉「volatile」


| | コメント (2)

2022年7月 7日 (木)

「糸ようじ」のプラケースを使うシリーズ:赤外線リモコンチェッカー

ダイソーの「糸ようじ」。
以前、この空きケースを使って回路を組み込んだのがこれ。
 ・2021年3月23日:中波振幅変調電波発生回路 いわゆるAMワイヤレスマイク

今回はこのケースに組み込んだ「赤外線リモコンチェッカ-」を紹介
しておきます。
文鎮:ハンダ付け補助ツール 製作元の佐藤テック君が、
「リモコンの調子が悪い! 見て!」っと、赤外線リモコンを
持ってきました。
デジタルカメラや携帯電話のカメラでリモコンの赤外LEDを
見れば発光しているかどうかが分かります。
電池の消耗のように簡単な時はこれで十分なんですが、
今回は「動くときもある。」という不安定な状態とのこと。
こうなると「おもちゃ病院」案件
赤外線リモコンのチェッカー、こんなのを作ってあります。
赤外線を受けたら音を出す!というシンプルなものです。
  ※手書きだった回路図をまとめておきました。

Cd1_20220708091701
 
制御コードを液晶表示するというツールも昔々に
作ってあるのですが、発光しているかどうかをチェック
するには「音で聞く」のが一番手軽。
  ※オシロでの波形観察は、もっと複雑怪奇
   なトラブルに遭遇したときでしょうか。

「糸ようじ」のケース、「タダでもらったもの!」ということで、
ケース加工の気が楽です。
  ※エエかげんでエエやンっと。
   ホットボンドで部品をくっつけて、中ぶらりんの
   配線もok。 (短絡さえしなければ)

Cc12_20220707131901

Cc13

Cc14

赤外線の受光ユニットはジャンク箱からの発掘品。
シールドケースの中を見るとソニーの「CX20106A」という
ICが入っていました。

こんな音が出ます。
https://www.youtube.com/watch?v=8j62ooOGqG8
  ※リモコンが出す赤外光も写っています

※「SONY CX20106A」で検索したら
「共立」で似たようなユニットを発見。
https://eleshop.jp/shop/g/gL4541H/
  外形とピン位置が異なりますが、シリーズもの
  なんでしょう。
  今ふうの赤外線受光ユニット、使用可能な
  電源電圧が広くなってますが、この発掘品は
  5Vでした。 電圧が低くなると動作せず。
  電池2本で動かしたかったので、HT7750Aを
  持ち出してきたという次第。
  すると・・・電源ノイズがぁぁ。

| | コメント (2)

2022年7月 6日 (水)

デジタルテスター「FLUKE 87IV」の赤外線通信ユニット完成

2022年6月29日:デジタルテスター「FLUKE 87IV」の赤外線通信
で、「こりゃ作らなあかんなぁ~」と思い立った
IrDAによるデータ吸い上げユニット」、できました。

こんな回路です。
Ab1_20220706153701

秋月のIrDAモジュール:AE-RPM851A  と
USBシリアル変換モジュール:AE-CH340E-TYPEC
それに 「MCP2122」と 「ATTINY841」 マイコン。

クロックは水晶発振子。
通信速度が9600BPSだけということで、4.9152MHz。
  16MHzで動いているArduino-UNOの処理速度、
  けっこう速く感じますが、4.9152MHzだと
  「ちょっと遅いな~」っという感じがします。

小さなプラケース(ダイソーで入手したけど、もう売ってない)
に入れました。
Ab22
赤外線部は穴をあけなくてもプラケースを通してやりとり
できています。
50cmほど離しても大丈夫。
  でも、1mは届きません。

Ab21

電源はUSBから供給。
PCを起動しなくてもSDカードでシリアルデータロガー
が使えるように、TTLレベルでも出力しています。

通信している間は、テスターのオートパワーオフは延長されていて
勝手に電源が切れるということはありませんでした。

・起動メッセージ タイトル表示
 # FLUKE model 87IV IrDA com reader
 # Op-key       (2022-07-05)
 # 1 : Start measure  ←PCでのキー操作は0,1,2の3つ
 # 2 : Stop
 # 0 : Clear cyc counter
 # FLUKE 87, V1.01,75530000 ←IDコマンドで機種名取得
   0 +0.0576 V AC  ←勝手にデータ取得開始
   1 +0.0576 V AC
   2 +0.0576 V AC  ←1秒サイクルで読み出し
   3 +0.0576 V AC
   4 +0.0576 V AC
 # Stop.  ←「2」キーで停止
 # Start.  ←「1」キーで再開
   12 +0.0575 V AC  ←停止中もサイクル秒値を進めてる
   13 +0.0575 V AC
   14 +0.0575 V AC
 # Clr cyc.  ←「0」キーでサイクル秒値をクリア
   0 +0.0576 V AC ←測定は継続
   1 +0.0576 V AC
   2 +0.0576 V AC
 # Stop.     ←停止
 # Clr & Start.  ←クリアして測定再開
   0 +0.0577 V AC
   1 +0.0578 V AC
   2 +0.0578 V AC
   3 +0.0578 V AC
   4 +0.0578 V AC
   5 +0.0708 mV AC ←途中でレンジを変えている
   6 +30.080 mV AC
   7 +24.909 mV AC
   8 +40.721 mV AC
   9 + Out of range. V DC ←オーバーレンジの表示
   10 +0.0000 V DC
   11 +0.0000 V DC
   12 +0.0000 V DC
   13 +0.0000 mV DC
   14 +00.022 mV DC
   15 +00.023 mV DC
   16 +00.023 mOhms
   17 + Out of range. kOhms
   18 + Out of range. MOhms ←抵抗レンジ オープンだ
   19 + Out of range. MOhms
   20 +01.474 mV DC
   21 +01.758 mV DC
   22 +0.0008 V DC
   23 +0.0008 mV AC
   24 +40.148 mV AC
 # Err  ←通信遮断でエラー表示
   41 + Out of range. mV AC ←通信回復で自動的に測定再開
   42 +43.682 mV AC  ←サイクル秒値を見ればエラーが
   43 +43.174 mV AC   生じていた時間が分かる
 
・起動直後、テスターとの通信
   赤外線でやりとりできるか?
   機番を読めるか? をチェック
(太字がテスターからの応答)
<CR> 「0x0d」を送って応答を見る。
 1
<CR>  4回実行
 1
<CR>
 1
<CR>
 1
ID<CR>  「ID」コマンドを送って機番を待つ
 0
 FLUKE 87, V1.01,75530000
QM<CR>  測定開始「QM」コマンドでデータ要求
 0
 QM,+0.0434 V AC
QM<CR>
 0
 QM,+0.0435 V AC
QM<CR>
 0
 QM,+0.0435 V AC
    応答文字の「0」と「QM,」を除いてから、
   測定データとしてPCに送信しています。
起動直後あるいは測定中に、テスターとの通信が失敗しても
1秒ごとに「QM」コマンドを送っています。
テスターから応答が返ってくればそこから自動的に測定が
再開されます。

※制御プログラム
  Atmel studio 7.0を使いました。
  ソースは「main.c」1本。
  関連ファイルといっしょに圧縮しています。
    ダウンロード - fluke87_irda_tn841.zip

  割り込み処理しているのは2つのシリアル送受だけ。
  タイマーはフラグを見ています。
  メインの中でタイムアップをチェックして計時処理。

| | コメント (0)

2022年6月29日 (水)

デジタルテスター「FLUKE 87IV」の赤外線通信

IrDA絡みでひょんなことから見つけたFLUKEのデジタルテスター
model 87IVの赤外線通信

このテスターを買って22年ぶりの快挙!
こりゃ、使えそうです。

まず、資料。
 ・EEVblog Electronics Community Forum ≫Fluke 87IV please whisper in my IR
この中で通信コマンドが記された資料が示されていました。
 ・http://www.pewa.de/DATENBLATT/DBL_FL_FL187-9-89IV_BEFEHLSSATZ_ENGLISCH.PDF
   ※これが見つかったから試せたわけで!

こちらでは、こんな具合に対向させて通信してみました。
F10
テスター側の赤外線ポートは頭。
楕円形の黒い窓です。

記事内の写真、テスター内部見ますと、TIの「UART←→IrDA」
インターフェースIC「TIR1000」が写っています。
  ※このIC、昔からあったんですな。

この↓記事でテスターをバラして中を見ています。
 ・2018年3月19日:FLUKE 87IV、切り替えダイヤルが回らない!
よく見ると・・・
IrDAモジュールとTIR1000が写っています。
当時の写真を引っ張り出してきました。
F11_20220629091901
「HPL837」。 この下側がボディの「窓」。

F12

右隣は発振器かなぁ。
「FPX7?37」と読めます。

※検索で
  ・マルチメーターの歴史

※桁数表記「3・1/2桁」について
フルークのデジタルテスターをあれこれ検索していたら、
このページ、
  ・デジタルマルチメータの基礎と概要 (第1回) 「DMMの歴史と変遷」
に「桁数表記」の話が出てます。

~~~~~~~~~~~~~~~~~~~~~~~~~
  参考ですが、DMMの桁数について触れます。
  前述したように、DMMはハンドヘルドタイプの
  3.5桁からベンチトップの8.5桁のものまで多種
  多彩です。
  最大の数値表示が、1999のものも4000のものも、
  3.5桁や3-1/2などの呼び方をしますが、正確を
  期す(底数10の対数で解く)と、
    1999表示は3.3桁、
    4000表示は3.6桁、
    6000表示は3.8桁、
    9999表示でフル4桁
  ということになります。
  しかし、この表現は、一般的にはあまり
  使われていないようです。
~~~~~~~~~~~~~~~~~~~~~~~~~

log 1999」は「3.3008…」。 確かに3.3桁っぽいです。
しかし、「1999」表示のテスターは、「0~+1999」
じゃなくマイナス側も含めて「-1999~+1999」を
表示してくれます。
ということで、正の値だけでlog変換して桁数を
出すのは間違っているような。

※過去記事
  ・2011年01月31日:1/2桁とは
  ・2011年08月10日:1/2桁とは 「セグメント説」


| | コメント (2)

2022年6月27日 (月)

「UART←→IrDA」変換IC、MCP2122を検索すると

「MCP2122」を検索すると、こんな出来合いの回路が
出てきます。
本家、マイクロチップのデモ基板。
 ・MCP212XEV-DB MCP212X DEVELOPER'S DAUGHTER BOARD
 ・MCP212XDM MCP2120/22 DEVELOPER'S BOARD

実験用アダプタ基板。
 ・MCP2122 INFRARED ENCODER/DECODER
 ・MIKROE-2871

どちらも通信ボーレートは115.2kBPS固定。

TIR1000」のは見つかりませんね。
でもこんなのが。
 ・https://www.eevblog.com/forum/testgear/fluke-87iv-please-whisper-in-my-ir-p/

フルークのテスターの改造記事。
FLUKE-87IV」といや、使ってるぞい!
 ・2018年3月19日:FLUKE 87IV、切り替えダイヤルが回らない!
 ・2019年6月27日:FLUKE 87IV、抵抗レンジが安定しない

| | コメント (0)

2022年5月31日 (火)

DC-DCコンバータテスト回路の資料

モノリシックパワー(MPS)社製ブーストコンバータIC「MP3120」試運転
に出てきたDC-DCコンバータテスト回路。
これを紹介したのかどうかの記憶が曖昧・・・
あらためてメモを置いておきます。

回路図は↑に記しましたが再掲。

Dcctest1
使用したマイコンはATmega88。
16MHzで動かしています。

電源は12V。
三端子で内部回路用の5Vを作っています。
マイナス出力のDC-DCコンバータもチェックできるように
してありますので、オペアンプ回路は±5Vで動かしています。

さて問題はプログラム。
アセンブラで書いています。
参考にしていただけますかどうか・・・

   ・ダウンロード - dcc1.zip

includeファイルは無しで、1本のプログラムです。
空行も入れてざっと4700行。 デカい!

bin→10進変換やbin→文字変換あたりのルーチンが
あれこれ使えるかと思うのですが・・・もう昔話ですなぁ。
割り込みと関係するwordデータ、これをアクセスしている
ところには「CLI ~ SEI」がたんまりと入っています。

こんなパラメータを内蔵EEPROMに保存しています。

 Mode +/- (0:+ 1:-): 0
 Power Start (Volt): 0.70 V
 Power End (Volt): 2.00 V
 Power Step (Volt):0.10 V
 Power I Limit (Amp):1.00 A
 Load Start (Amp): 0.00 A
 Load End (Amp): 0.30 A
 Load Step (Amp): 0.01 A
 Load V Limit (Volt): 2.50 V
 Wait Time :0.25sec
 V,A Unit TX 0:x 1:on: 0
 Index skip 0:x 1:on: 1
 PWM Power 5V (PWM): 339
 PWM CC +1.0A (PWM): 966
 PWM CC -1.0A (PWM): 970
 Pwr(A) 1.0A (A/D): 515
 Load(V) +5V (A/D): 517
 Load(V) -5V (A/D): 517

最後の6つは、PWMによるD/A出力(コンバータへ供給する
電圧と定電流源の電流設定)とA/Dでの電流、電圧入力の
キャリブレーション値です。

計測を始めると、こんなデータがシリアルで出てきます。

# Supply : 0.70V 2.00V Step:0.10V Limit:1.00A
# Current:+0.00A +0.30A Step:0.01A Limit:2.50V

0.80 0.01  0.00 3.75
0.80 0.05  0.01 3.75
0.80 0.10  0.02 3.75
0.80 0.17  0.03 3.76
0.80 0.23  0.04 3.76
0.80 0.30  0.05 3.76
0.80 0.49  0.06 3.75
0.80 0.61  0.07 3.71
0.80 0.75  0.08 3.69
0.80 0.14  0.09 0.05 *

0.90 0.01  0.00 3.75
0.90 0.05  0.01 3.75
  :

左から、供給電源電圧、電源電流、
出力負荷電流(定電流)、出力電圧。

トランジスタ技術 2011年1月号 に掲載してもらった
スイッチド・キャパシタIC(負電源出力)の特性調査に
この回路を使いました。
掲載されたのは測定したグラフだけで、この試験回路と
その説明は省かれていました。
   ※2011年のダウンロードサービス にもありません。
    投稿原稿には含んでいたはずなんだけど・・・

なにせ、アセンブラ。
割り込み処理の「頭」の記述はこんな具合。

;***** 送信完了割り込み処理  *****
;  [13 UDR Empty]ベクトルより飛んでくる
TXEINT:
  PUSH  AL
  PUSH  AH
  PUSH  ZL
  PUSH  ZH
  PUSH  SREG_SAVE    ;現ステータスデータをセーブ
  IN   SREG_SAVE,SREG ;ステータス レジスタ 退避
;* 送信データ数チェック
  LDS   AL,TX_CNT    ;データ数
  TST   AL
  BRNE  TXEINT1     ;あればスキップ
   :

「AVRマイコンのレジスタ名と違うやん」っと思われた
人は、エラい!
レジスタ名にAL、AH、ZL、ZHを使っているのは
「過去の遺産」を使うため。
AVRマイコン特有の「番号で記すレジスタ名」がイヤだからと、
ソースの先頭でこんな「ずっこ」をやっています。
 .def  AL   = R16
 .def  AH   = R17
 .def  BL   = R18
 .def  BH   = R19
   :
 .def  XL   = R26
 .def  XH   = R27
 .def  YL   = R28
 .def  YH   = R29
 .def  ZL   = R30
 .def  ZH   = R31

こうすることで、8080やZ80、さらに8086やV30で作っていた
ルーチンに「近づける」のです。
R16以降のレジスタは8bit値の直接代入ができますんで、
便利なんです。

割り込みでのSREGを保存している「SREG_SAVE」も、
固定的なレジスタに割り付けています。
 .def SREG_SAVE = R15 ;ステータスレジスタ退避用
どのレジスタを使おうかという悩みがありません。


Arduino-UNOの初体験  が2012年12月です。
この制御プログラムもArduinoをベースにして
書き直せば良いんでしょうが、けっこうめんどう。
今のままでも動いてるし・・・。

| | コメント (0)

2022年5月30日 (月)

工具に「ゴムコーティング」を

友人から情報です。

・小さいモンキーとアンギラのグリップのゴムが
 ダメになった。
・ゴムが無いだけで持ちにくくなる。
・CMでゴム塗料を見たことがあったので探してみる。
・お高くないのがあったので試してみた。
・写真のは3回浸けたもの。
・下処理(洗浄とシーラー塗布)は必要。
・塗料缶に浸して引き上げるだけで綺麗につく。
・モンキーは3回でちょうど良い感じ。
・アンギラはもう少し回数重ねる方が良さそう。

Aa11_20220530110601

  Performix ゴム・コーティング剤
  プラスティ・ディップ液状コーティングゴム
  429ml ブラック

ということです。

 

| | コメント (0)

2022年3月29日 (火)

電卓の機能 知らなかった:「÷=」で「1/X」に

女房が持っているいくつかの電卓(関数電卓じゃなくごく普通の)、
その中の1つ、シャープ製の電卓に説明書が付いていたので、
消費税の計算方法なんかの解説を読んでいました。
  ※税込み、税抜きの計算手順なんかですな。

その説明書でこんな記述を発見。

「×=」で2乗を計算。 
   ※これは知っていたし、よく使う機能。

「÷=」で逆数を計算
 これで「1/X」が出てくる!
   ※この機能、知りませんでしたよ。

試してみてちょっと感激。
電卓への要望、何度も書いてますが
  「1/X」をワンアクションで。
これができない関数電卓はキライ。

関数電卓なら、2nd-Funcに割り当てられていても
「1/X」の機能があるだけで逆数計算できるだけ
ましです。

普通の電卓しかない時に逆数を計算したいなら、
計算途中のX値をいったんメモリーに入れてから
「1÷MR=」として値を出すわけです。
  ※あるいは直接数字入力で「1÷X=」で。

それが「÷=」の2アクションで逆数が出現しちゃったの
です。
普通の電卓で、です。
ほんとに知りませんでしたよ。

例えば、抵抗の並列計算。
 CM      メモリークリア
 R1 ÷ = M+  R1の逆数をメモリーに加算
 R2 ÷ = M+  R2の逆数をメモリーに加算
 R3 ÷ = M+  R3の逆数をメモリーに加算
 :
 RM      メモリーリード
 ÷ =     逆数にして並列抵抗値算出

これが、関数電卓じゃなく普通の電卓でできちゃう。
 1 / (1/R1 + 1/R2 + 1/R3 +・・・)

「×=」で2乗は知られてると思うんです。
でもこの「÷=」で逆数、皆に聞いても
「知らんかった」と驚いてました。

※できる電卓とできない電卓があるようです。

2007年03月01日:ロケットガール第二話…今から5分で操作をたたき込む
2007年03月24日:現用中の関数電卓
2018年2月24日:愛用電卓、アウト!
2018年3月14日:TIの電卓、これはバグなのか?
2020年10月26日:シャープ製関数電卓 EL-566


| | コメント (5)

より以前の記事一覧