ツール

2025年12月 4日 (木)

ブザー報知周波数でマイコンの動作クロックを探る#2

ブザー報知周波数でマイコンの動作クロックを探る
この続き。

ここでは「コンデンサマイク」を使ってブザーの周波数を
拾ったのですが、マイクじゃなく「発音体」をマイク
がわりに使うほうが良い結果が得られました。

例えば、2kHzあたりなら「マグネチック・サウンダ」。
4kHzあたりなり「圧電サウンダ」と、発声側と同じ
ものがマイクとしても使えるのなら、2倍の高調波成分
を気にせずに、うまく波形を拾ってくれました。

マイクとは別経路で発音体をつなぎます。
Frq31

※関連
「圧電発音体」という呼称

| | コメント (2)

3.3V出力の実験用安定化電源回路にスイッチを付けたい

何時作ったのか忘れてしまいましたが、実験用の
3.3V出力の電源(モジュールと言ったら良いか)があります。
Rg11

こんな具合に、むき出しのヒートシンクにTO-220の
レギュレータとコンデンサをくっつけて入力と出力の
電線を引っ張り出しただけの簡単な構造です。
Reg41
そして、「むき出しはまずいかも」っと、プラケースに
入れた3.3V出力の電源を作ってありました。
Rgg2

これは、真鍮板をヒートシンクにしたので、
入出力電圧差が大きいときに電流を流すと
レギュレータがアツアツになっちゃいます。
Rg12

これを作ってから幾年月・・・
ここで電源を入り切りしたいなぁとなりまして、
「入力側と出力側、どっちにスイッチを入れたろか?」と。
このケースに取り付けられる手持ちのスライドスイッチ
日開の「SS-12」の定格を調べますと、定格電流0.1A(max)
となっていたのです。
入力にしろ出力にしろ、電源ラインを直接入り切りするに
はちょっとチカラ不足です。

そこで、Pch MOSFETを使って、スイッチの容量をカバーする
ことにしました。
こんな回路を電源の入力側に追加しました。
Rgg3
まず・・・ヒートシンクにしていた真鍮板を曲げて、
部品を乗せるスペースを作ります。
Rg13

5V~12Vの入力電圧を想定しているので、MOSFETの
Vgs最大電圧がギリギリになってしまいます。
そこで、S-G間に7.5Vのツェナーダイオードを入れて
電圧を規制します。
R3はZDがオンするくらいまで入力電圧が上がった
ときのツェナー電流を規制するための抵抗。
R1はパスコンに溜まった電荷の放電用。
この抵抗がないと、オフ時に電荷が残ってしまいます。
R2はS-G間がオープンにならないよう(Gの電位を
確定させる)にするためのもの。

このスイッチ回路を入力側にした理由。
 ・FETのオン抵抗で電圧がドロップしても
  出力電圧に影響しない。
 ・出力側だとゲートの駆動電圧が3.3Vと
  なり、十分な駆動にはもうちょい電圧が
  欲しいなぁ。
 ・出力側でon/offすると、R1とR3、ZD1が
  不要になり、部品が減らせるけど。
とりあえず、備忘録で。

※関連
パワーMOSFETの回路記号:MOSFETの矢印
2SK2232の代替品

| | コメント (1)

2025年10月31日 (金)

ブザー報知周波数でマイコンの動作クロックを探る

マイコンの動作クロック、水晶発振させていれば
それを信じれば良い(ちゃんと動いていたら)のですが、
内蔵クロックで動いているマイコンの動作周波数を、
回路をケースに組み込んだ後で調べるとなると、
ちょいと面倒です。

そこでこんなジグを考えてみました。
 ・マイコンのクロックでブザー駆動周波数を決めている
  回路に限定。 (ケースに入れてからも音を拾える)
 ・ピーとかプーとかのブザー報知をマイクで拾って
  周波数カウンタで計る。
 ・内蔵クロックからの分周比が分かれば
  報知周波数からクロック周波数を逆算できる。

マイクを増幅して周波数カウンタにつなげばよいのですが、
せっかくですんで、専用回路を考えてみました。
   まだ、バラックでの試作段階

・32.768kHz水晶を乗せたATtiny1614を使う。
  ATtiny1614につないだ32kHz水晶発振子、隣のピンの影響を受けるみたい

・タイマーは16bitのTCBを使う。
  ATtiny1614で(裸の)周波数カウンタ
   これは12bitのTCDを使った

・マイクアンプにMCP6021を使う
  8pinのシングル・オペアンプ MCP6021、MCP6023

・液晶はI2Cインターフェースの8文字x2行の
  8文字×2行のI2C液晶表示器に注意

・マイク入力レベル表示に計装アンプを使った両波整流回路を。

とりあえず、こんな回路。
Aa1_20251031152801

・バラック状態で実験
Bb11_20251031161401
周波数の最大表示は99.999kHz。
4Hz周期で測定して、4回を積み上げて1Hz単位の
表示に。

初めて使ったICが
・MCP6021   VREF付のオペアンプ
   10月30日に紹介
・74LVC1G3157 アナログ・マルチプレクサ
   7月17日に紹介
INA350A  計装アンプ
   https://www.ti.com/jp/lit/ds/symlink/ina350.pdf

INA350Aは10倍あるいは20倍を切り替えできる計装アンプで、
むちゃ安価なんです。 DigiKeyで79円
INA350Cになると30倍と50倍を設定できます。
そしてINA351になるとREF入力にバッファアンプが
入っていて、ベースとなる基準電圧を自由に設定
できます。 これが104円。
使用できる電源電圧範囲が1.8V~5.5Vと低いのが欠点ですが、
差動で電圧を増幅したいとき、便利に使えます。
   使ったのは今回初めて

この計装アンプとマルチプレクサで整流回路を作って
みたのです。
  周波数計測には関係ないけど、入力レベルを
  表示したかったので。

とりあえずスケッチ。 長いので圧縮
  ・ダウンロード - tiny1614_fcnt_lcd02.zip


※例えば
マイコン型導通チェッカーだと、ATtiny25Vの内部クロック
1MHzを1/4して250kHzを作り、それを1/125して2kHzを
作り、定格周波数2048Hzのブザー(GT-111P)を駆動して
います。
この報知周波数を計って500倍すればマイコンの駆動周波数
がわかります。

※あれこれ分かったこと
このGT-111Pですが、定格周波数で鳴らしたとき、
2kHzの波より倍の4kHzの成分のほうが大きく
出るのです。
そのため、作った周波数カウンタだと2kHzじゃなく
4kHzの表示がでます。
ブザーの穴をテープなどで押さえれば2kHzの成分が
勝って、ちゃんと表示するようになります。
これは、回路のせいじゃなく、ブザーの特性です。

・中心穴開放の時
B0000
2kHzより4kHzの成分のほうが大。

・中心穴をセロテープで塞いだとき
B0001

※各部の波形を観察

・発音体の穴を開放→4kHzの成分が大
Cc000_20251102151601
パルス間隔は不連続に見えるが「2ms間に8パルスは安定」
しているので、周波数測定値は安定して4kHzを表示する。

・発音体の穴をセロテープでふさぐ→2kHzに
Cc001_20251102151601

・発振器から4kHzの正弦波を入力
 Cb1

| | コメント (0)

2025年8月17日 (日)

買ってはダメ! コーナンLIFELEXリピート型結束バンド

結束バンドタイラップ、はたまたインシュロックケーブルタイ
呼び名はいろいろあります。

その中に「リピートタイ」と呼ばれる、さまざまなものの
仮固定に使える品種があります。

電子回路工作の用途では、電線の仮固定でしょう。
しかし、それよりよく使うのがイベントでの棒やホースの
固定。
イベントなどで、旗竿を別の柱にくっつけるなど、
仕事が終わった後、結束バンドを切らずに再利用できる
ので便利です。

この盆の間に行った、地域のイベント(霊園の案内や精霊流し)で
使う手持ちの「リピートタイ」が少なくなったので、御近所の
コーナンで「LIFELEX 30cm結束バンド リピート型 10本入 ブラック」
というのを3袋買ってきました。
1本あたり30円ほど。

ところが・・・これが使えない!
ちゃんと結束はできます。
しかし、ポッチリを押しても外せないのです。

手持ちの品と比べてみました。

T11_20250817113701


T12_20250817113701

T14_20250817113701


T13_20250817113701

コーナンのは、ポッチリ部が厚くなっているため、
これを押さえると締め付け固定しているモノの表面に
当たってしまい、ツメが動かず外せないのです。
押し代が確保できるようにうまくバンドを回転できれば
良いのですが、「どうにもならん」という取り付けのものもあり、
結局、ニッパーで切断ということになり、無駄な買い物に
なってしまいました。

この手のツール、ほんと使ってみないとその性能がわかりません。

| | コメント (0)

2025年2月21日 (金)

マイコン型導通チェッカーの部品

マイコン型導通チェッカーで使っているタカチの
プラケース「LM-100G」が終息するかもということで、
心配しています。
ケースが手に入らなくなったら、この頒布も終了です。
  まだ、大丈夫そうなんだけど

今回、とりあえずプリント基板とともに30セット分の
部品を集めているところです。

で、部品の価格ですが、コロナ前(2019年)と
今回のを比較してみました。   (税抜きで)

・マイコンATtiny25V    115円 → 224円
・オートゼロアンプMCP6V01 156円 → 304円
・コンパレータMCP6541RT   35円 → 54円
・低背ICソケット      93円 → 200円
・ケース(LM-100G)     600円 → 780円

上がっております。

~~~~~~~~~~~~~~~~~~~~
※ミノムシクリップかバナナジャックか

導通チェッカー、現在はミノムシクリップを使っていますが、
バナナ・ジャックで」と指定してもらえれば対応いたします。
   ※ミノムシは無し。プラグとコードも付きません。

このように、マル信無線電機のMK-628を使います。
2024年1月23日:マイコン型導通チェッカー バナナジャック付を頒布

D12_20240123113101

Lm100_11

この頒布はタカチのケース次第です。
電子部品、まぁ、これからも下がることはないでしょう。

 

| | コメント (3)

2025年1月 9日 (木)

ピンセット、危うし!

1980年頃から愛用しているスイス製のピンセット。
Pi11
昨日の続きで1608サイズの抵抗を基板にハンダ付け
しようしたら・・・
作業台の周りを見渡しても見つからない。
  定位置に置いてあるはずなんだが・・・
他の工具に紛れたかっと探しても発見できず。
「ひょっとして」っと作業机下の「ゴミ箱」を見たら
入ってました。

昨日の作業のお片付け、何かの拍子にピンセットを
落としてしまったのでしょう。
それがゴミ箱だっという、たいへん危険な状態でした。

今朝の作業でピンセットを探さなかったら次の
ゴミ出し日(土曜)に出していたでしょうから・・・
良かった良かった。

手に馴染んだ工具類、それらが無くなるとたいへんです。

2010年02月13日:ピンセット
2019年10月24日:くっついたらイヤっ! 着磁した安物ピンセット
2011年12月15日:百均ピンセット4種類


| | コメント (0)

2024年12月26日 (木)

EEPROMを使ったシリアル受信バッファ 512kバイトに増設

 備忘録として。

まだ、まとめの途中ですが「シリアルデータ記録装置」の
メモリーを512kバイトに拡張する作業を進めてます。
  ※回路図とスケッチはちょい待って。

Rr11_20241225180101
Rr12_20241225180101
Rr13

2020年3月16日:シリアルデータ記録装置を
2020年3月17日:ICの2段重ねで容量アップ
2020年3月20日:256kBシリアルデータ記録回路とりあえず完成

もともとは128kバイトのEEPROM、24LC1025
これを2段重ねにして256kバイトにして使っていたの
ですが、さらに重ねて「四重」に。
  (二重×2)
そうしたら512kバイトに。

記録するデータはゆっくりと9600BPSで受け
ているのですが、取り込んだデータを吐き出す
時は「早いほうが良いぞ」ということで、
送出を115.2kBPSにスピードアップしたら
どうだという改造(ソフト的な)をしてみたのです。

SDカードへを使ってのシリアルデータの取り込み
だと、データの取り出し速度は取り込み装置とは
別のものとして切り離せます。
しかし、今回のツールでは、自分が持つメモリー
へ書き込んだデータを取り出すには、シリアル通信しか
出口がありません。
ということで、「早よせんかい!」の罵声には通信速度の
アップしか方法がないのです。
で、あれこれ試している途中なのです。

※あれこれ
・書き込みはすでにページ書き込みを実現して
 いるので、取りこぼしはない。
   ターゲット装置との兼ね合いで、受け速度
   は9600BPSのままゆっくりで。
・取り込んだデータの吐き出しを115.2kBPSに
 スピードアップしようとすると、EEPROMの読み
 出し速度が問題に。
 1バイト単位での読み出しだと遅いのだ。
・スピードアップにはページ読み出しでバッファリング
 しながら送出ということになるのだが、Arduinoの
 ライブラリの制限でまとまりは30バイトが最大。
   (書き込みも同じ)
・それでも、1バイト単位での読み出しより早い。

EEPROMのページ書き込み、ページ読み出し手順の
の参考になるかと。

まず、回路図。
Serial_log3
2段重ねの24LC1025(24FC1025)を2ブロック。
これで512kバイトで、24LC1025が使えるアドレス範囲
0x00000~07FFFFを使い切りました。

その制御スケッチ。(元がArduino UNO R3)ですんで)
    ダウンロード - rxbff3a.txt

ファイル名を".ino"から".txt"に変えていますんで、
そのままエディタで読めるはず。

※改良点
・JP1をonすると、取り込んだシリアルデータを出力する
 ときの通信速度を115.2kBPSにして、12倍にスピードアップ。
   データ取り込み時の速度は9600BPSのまま。

・EEPROMのアクセス、ライブラリ(twi wire)を使わず、
 オリジナルのルーチンに。
   割り込みでの処理がないのですっきり。

・EEPROMをページアクセスするためのバッファも
 その大きさを自由にできちゃう。
   元のは30バイトまでという制限があった。

※参考にしてもらいたいところ

・EEPROMの書き込み、多くのサンプルプログラムが
   書いて → 待つ(時間で5msあるいは「ACKポーリング」で)
 をしています。
   これだと、書いた後は、何もできないのでもったいない。
 時間待ちは変わりませんが、
   待って → 書く、あるいは読む
 にしています。
 書き込みの完了でタイマーをセット。
   割り込みでダウンカウント。
 次に読み書きする時はそのタイムアップをチェックします。
 書き込み後、すぐ別の処理ができますんで、時間待ちの
 無駄が無くせます。
   今回のだとシリアルデータの受信処理を
   この5ms間も継続実行してます。

・ページをまたいだEEPROMの読み書きも、見てもらい
 ところです。
 多くのサンプルプログラムが、ページの境界を知らん
 ふりしています。
 24LC1025(24FC1025)の場合、ページは128バイト。
 連続していれば、1アクションで書き込み出来ます。
 しかし、書き込みバイト数に対して、アドレスが128バイトの
 境界で分断してしまうと、先と後の2回に分けて書き込み
 しなくてはなりません。
 例えば・・・
   先頭アドレス0x01234から100バイト(0x64)書きたい。
   アドレス0x01280がページの境界。
   0x01234~0x0127F と0x01280~0x1297の2回に
   分けて処理しなければならない。

   また、読み出しでは64kバイトごとの境界も関係して
   きます。
   ページ数の128バイトに関係なく連続して読み出しで
   きますが、16bitのアドレスを越えて読み出しすると、
   同じブロックの先頭に戻ってしまいうので、書き込み
   と同じように分割しての処理を考えなければなりません。

 お手軽に大容量メモリーが使えるのですが、
   「こんな処理で応用できるんかいな」
 っというサンプルが目に付いちゃいます。

・ライブラリ、wireとtwiを使わないようにしたら
 すいぶんと使用メモリーが減りました。
  ROMが7094バイトが4710バイトになって2384バイトの減
  RAMが1032バイトが888バイトになって144バイトの減
    (読み書きバッファを68バイト増やしてるのに)

※関連
2021年11月26日:EEPROM、 2kバイトと4kバイトの間には壁がある (24LC16で)
2024年4月12日:I2C液晶のアクセス、割り込みで処理しないようにすると
2021年7月2日:秋月の液晶表示器 ACM0802C-NLW-BBW-IIC、I2Cのプルアップ抵抗
2021年11月27日:EEPROM I2Cのクロックを早くすると・・・



| | コメント (0)

2024年12月13日 (金)

充電器用AC100V電源電流モニター回路

AC100Vにつながる20W程度の負荷の電流を
表示するために作った回路です。

Pm21

急速充電器、「充電が終わったよランプ」は
付いていますが、
 ・充電が終わったはず(ランプが消えるのか点くのか
  まちまち)なのに、まだ補充電してるやん。
ということが起こります。

充電器を改造せずにこの状態をチェックするには、
 「充電器が消費するAC100Vの電流を見る」
のがてっとり早いかっと作ったのがこれ。

Pwrmon1a
Arduinoに出会う前、2007年に製作。
H8/3664」を使ってます。
  ※Arduinoとの出会いは2012年。
2007年03月16日:電流モニター

「1:800」のCTで電流を拾い、RMS-DC変換ICで直流に。
それをマイコンで取り込んで液晶に表示という仕掛けです。
  ※交流電流計で良いんですが、電流変化を記録
   できれば面白いかなぁっと思ったのです。

これ↓を作ったのも似たような時期。
  ・2009年03月08日:充電器BQ-390の中身
  ・BQ-390の充電時間表示回路

その後は お手軽電力計 を使うことが多くなり、
この電流モニターを引っ張り出してくることは
無くなっていました。
ひさしぶりの登場です。

もっと昔は、
  ・2006年08月13日:高容量ニッ水電池の不調
日置のハイコーダ」を使って、充電器の電源電流変化を
見ていました。
これが、
  ・2024年7月2日:ひさしぶりのバージョンアップ:チャートレコーダ
につながります。
  ・2014年03月11日:「プリンタシールドでチャートレコーダ」、これがしたかった

※バックアップがわりにソースファイル(圧縮)
  ・ダウンロード - pwrmon3.zip
    ルネサスのHEWでプログラム

| | コメント (0)

2024年10月 5日 (土)

DDS方式の2相パルス発生回路、周波数スキャン機能を付ける

あれこれ悩みながらこしらえてきたDDS方式の2パルス発生回路
ざっと完成形に持ち込めました。
割り込み処理の時間はギリギリで動いていますが、
メインループはヒマ
ということで、周波数スキャン(sweep)機能を付加しました。
設定するのは、
  Lo側周波数 1~9999Hz   f1
  Hi側周波数 1~9999Hz   f2
  Rise時間  0.0~600.0秒  t1
  Fall時間  0.0~600.0秒  t2
  Hi待ち時間 0.0~600.0秒  w1
  Lo待ち時間 0.0~600.0秒  w2

スイープは
 (1) f1周波数で2相パルス出力
 (2) t1時間をかけてf2までパルス周波数を上昇
 (3) f2周波数をw1時間保持
 (4) f2周波数からf1まで周波数を下降
 (5) f1周波数をw2時間保持
 (6) (1)に戻る
を繰り返します。

「100Hz~400Hz」をスイープすると、こんな波形が出てきます。

Bb002_20241005115101
   変化点を拡大
Bb000_20241005115101

一番下の波形は「F-Vコンバータ」 で見た、
A相パルスの周波数変化。

まだ「main loopはヒマ」だからと、LOG SWEEPの処理も
書き加えてみました。
A相周波数がこんな具合に変化します。
Bb001_20241005115401

Arduino UNO R3のATmega328P(16MHzクロック)、
8bitマイコンなのに、意外と浮動小数点処理を頑張って
くれます。
10msごとに経過時間から周波数を計算しています。

※関連
2024年9月24日:秋月のI2C接続液晶 AQM1602XAを基板に直付け
2024年9月27日:1クロックでも速くしたい DDS方式の2相パルス発生器
2024年9月30日:1クロックでも速くしたい 割込を「ISR_NAKED」で

※回路図
Cw_ccw2

元のでは無しにしていたSW4にsweepの操作を割り当てています。


| | コメント (0)

2024年9月27日 (金)

アナログ計器

今夜のガレージ、「アナログ計器」の話があれこれと。

Analog11

| | コメント (0)

より以前の記事一覧