« 2026年2月 | トップページ | 2026年4月 »

2026年3月

2026年3月25日 (水)

アマゾン「amazon basics単4」(800mAh) 充放電実験開始

ダイソー「LOOPER単4」(650mAh) 800サイクルで終了

これに続き、単4のニッケル水素電池をイジメてみます。
選んだ(買った)のはアマゾン。
「amazon basics単4(800mAh)」
Am11

初回放電~4回目の放電までの電圧変化を
グラフにしました。 (クリックで拡大↓)
Cap030

初回放電(0.2C:160mA)が249分。
定格が5時間=300分ですので、83%ほどの
容量を残していたということで、すぐに
使えるよう充電状態で販売されていた
ようです。

さて、これからどんな挙動を示してくれる
でしょうか。

アマゾンの単3の結果
Amazonベーシック 2000mAh単3ニッケル水素電池 800サイクル目で終了
Amazonベーシック単3(2000mAh) 60%(72分)放電 1200回で終了

■■■ 電池あれこれ ■■■

| | コメント (0)

2026年3月23日 (月)

ダイソー「LOOPER単4」(650mAh) 800サイクルで終了

ダイソーのニッ水、「LOOPER単4」(650mAh)、
これのイジメ開始が2025年11月15日
そして、 400サイクル目が2026年2月4日

先ほど800サイクル目が終わりました。
50サイクルごとの0.2C放電での放電電圧変化を
見ると、ギリギリ180分を切っていないのでまだ
大丈夫そう。
Cap005_20260323164101

しかし、0.5Cでの充放電電圧と充電停止電圧の
変化を見ると・・・あきません
Cap006_20260323164201

0.2C放電を終えた直後の601サイクル目と
701サイクル目の放電がいきなり1.00Vに
達していました。
0.2C放電直後の充電で、ちゃんとエネルギーを
溜められなかったようです。
  -ΔVはちゃんと検出してた
  けど、時間が短かった。
内部抵抗は723mΩまで上昇してました。

「LOOPER単4」、300サイクルは頑張れる
400サイクルを越えると怪しくなってくる。
こんな評価でしょうか。

ということで、これでこの電池へのイジメを
終わります。

 

| | コメント (0)

2026年3月22日 (日)

tinyAVRのシリアル出力(だけ)を割り込みでというライブラリ

シリアル入出力といえば組み込みライブラリ「Serial」を
使った読み書きが一般的です。
Arduino UNO R3など、多くのツールではUSBラインを
通じてPCとつながっているので、IDEのシリアルモニタで
双方向のやりとりが可能です。
しかし・・・tinyAVRのようにチップ単体でモノを作るとなると、
 「受信はいらんねん。 送信だけあればエエんや。」
という場面が出てきます。
  送信だけ:マイコンで処理したデータの記録を
       PCなどでするという用途
そんなときに使うtinyAVR用のシリアル出力ルーチンを
まとめてみました。

この2つのファイルをスケッチファイル(".ino")と
同じフォルダにコピーします。
  "serial_tx_tn.h"   ヘッダファイル
  "serial_tx_tn.cpp"  ソースファイル

・ヘッダファイル "serial_tx_tn.h"

/********************************/
/* tinyAVR シリアル送信処理 */
/********************************/
// ヘッダーファイル
#ifndef _serial_tx_tn_h
#define _serial_tx_tn_h
#include <inttypes.h>
#include <Print.h>
// 定義
class serial_tx_tn : public Print{
public:
serial_tx_tn(uint8_t ch);
void begin(long);
virtual size_t write(uint8_t);
using Print::write;
};
#endif
// end of "serial_tx_tn.h"


・ソースファイル  "serial_tx_tn.cpp"

/********************************/
/* tinyAVR シリアル送信処理 */
/********************************/
#include "serial_tx_tn.h"
#include <inttypes.h>
#include <Arduino.h>
/***** 送信割り込みデータ ******/
volatile char tx_bff[48]; // 送信割り込み文字バッファ (A)
// チップのRAM容量に合わせて
volatile byte tx_rdp; // 送信 読み出しポインタ (B)
volatile byte tx_wrp; // 送信 書き込みポインタ (B) volatile byte tx_cnt; // 送信 データ数 (B) // バッファを大きくするならwordで
uint8_t tx_ch; // 送信チャンネル
/***** シリアル送信割り込み *****/
// 送信完了で起動
ISR(USART0_TXC_vect)
{
USART0.STATUS = USART_TXCIF_bm; // 送信完了解除
if(tx_cnt == 0){ // バッファに残データ無し
USART0.CTRLA &= ~USART_TXCIE_bm; // 送信完了割り込みオフに
}
else{ // バッファにデータあり
USART0.TXDATAL = tx_bff[tx_rdp]; // 1文字送信
tx_rdp++; // ポインタ+1
if(tx_rdp >= sizeof(tx_bff)){ // 最終?
tx_rdp = 0; // 先頭に
}
tx_cnt--; // データ数-1
}
}
/***** シリアル出力 *****/
// 1文字出力
size_t serial_tx_tn::write(uint8_t c)
{
volatile byte cnt; // サイズはtx_cntに合わせて (B) do{ // 送信バッファ空き待ち
cli(); // 割込禁止で
cnt = tx_cnt; // 送信バッファ内データ数
sei();
}while(cnt >= sizeof(tx_bff)); // 空きをチェック
// 初めてならいきなり出力
// 2回目以降は割込禁止にしてバッファに書き込む
cli(); // 割込禁止に
if(!(USART0.CTRLA & USART_TXCIE_bm)){ // 初めての送信
USART0.CTRLA |= USART_TXCIE_bm; // 送信割り込みon
USART0.TXDATAL = c; // 1文字直接送信
}
else{ // 送信継続中
tx_bff[tx_wrp] = c; // 1文字書き込み
tx_wrp++; // 書き込みポインタ+1
if(tx_wrp >= sizeof(tx_bff)){ // 最終?
tx_wrp = 0; // 先頭に
}
tx_cnt++; // データ数+1
}
sei(); // 割込有効に
return 1;
}
/***** コンストラクタ:送信chを記録 *****/
serial_tx_tn::serial_tx_tn(uint8_t ch)
{
tx_ch = ch; // (使っていない)
}
/***** 初期化 *****/
// USART0 シリアル出力だけ 受信はしない
// BPS:通信速度
void serial_tx_tn::begin(long bps){
USART0.CTRLA = 0; // 送信完了割り込みのセットはtx()で
USART0.CTRLB = 0b01000000;
// || ||||+-- MPCE
// || ||++--- RXMODE
// || |+----- ODME
// || +------ SFDEN
// |+-------- TXEN 送信有効
// +--------- RXEN 受信はしない
USART0.CTRLC = 0b00000011;
// |||||+++-- CHSIZE 8BIT
// ||||+----- SBMODE 1stop
// ||++------ PMODE Parity無し
// ++-------- CMODE 非同期USART
USART0.BAUD = (4L * F_CPU) / bps; // 10MHzなら4166
}
// end of "serial_tx_tn.cpp"

いくつか注意点があります。

・シリアル出力する「TXD0」ポートはユーザーが
 出力ポートに指定しなければなりません。
   代替ポートを使う場合もあるし、自動で
   出力になるようにはしていません。

・送信完了割り込みで次文字を出力しています。
 tx_bff[]のバイト数を大きくすると、文字列送信
 完了の待ちが短くなり、送信処理から早く解放
 されます。
 256バイト以上にしたい時は文字ポインタなどを
 wordにしなければなりません。(現在はbyte)

・文字、数値出力はSerialと同じように
   write  print  println  printf
 を使います。

サンプルスケッチです。

//  シリアル出力のサンプル
// マイコンのクロック周波数を出力
#include "serial_tx_tn.h" // シリアル出力制御ヘッダーファイル
serial_tx_tn SerialTX(0); // SerialTXの名でシリアル出力
/***** SETUP *****/
void setup() {
byte i;
float f;
PORTA.DIR = 0b11001110; // ポートを出力に (C)
// || |||+---- PA0 6pin in UPDI
// || ||+----- PA1 4pin out
// || |+------ PA2 5pin out
// || +------- PA3 7pin out (test)
// |+---------- PA6 2pin out TXD
// +----------- PA7 3pin out
SerialTX.begin(9600); // PA6 (2pin)がTXD出力
for(i=0;i<100;i++){ // 1sec待ち
delayMicroseconds(10000); // 10ms
}
VPORTA.OUT |= (1 << 3); // PA3(7pin) H (test)
SerialTX.println();
SerialTX.print("ATtiny402 : "); // タイトル
SerialTX.print(F_CPU); // クロック周波数
SerialTX.println("Hz");
SerialTX.printf("%lu.%03lukHz\r\n",
F_CPU / 1000L, F_CPU % 1000L);
f = (float)F_CPU; // クロック周波数をfloatに
SerialTX.printf("%fMHz\r\n", f / 1000000.0); // "%f"で
VPORTA.OUT &= ~(1 << 3); // PA3(7pin) L
}
/***** LOOP *****/
void loop(){ } // なにもしない


こんな出力が得られます。
  ATtiny402 : 16000000Hz
  16000.000kHz
  16.000000MHz

このルーチンを使うと、ROMサイズの関係でSerialでは無理だった
printf()で「"%f"」を使った浮動小数点出力ができました。
ギリギリですが、こんな使用量です。
  ROM 3889バイト(94%)
  RAM  65バイト(25%)

tx_bff[]を48バイトにした時の出力タイミングが
こんな様子です。
Aa11_20260322150901

割り込みを使わないと、全部の文字が出力し終わるまで
処理から開放されません。
tx_bff[]をもっと大きくすれば、気にならないくらい
の早さで戻ってきます。
  総文字数より大きな値にしたら、出力処理に
  食われた時間は1msほどでした。
    32bit値の数値変換
    floatの数値変換
ROMに余裕があれば標準のSerialを使えば良いでしょう。
しかし、ATtiny402のようにギリギリだと、お役に立てるかと。

・テストスケッチとライブラリ
  ・ダウンロード - serial_tx_tn.zip


※これも役に立つ(かも)
ATtiny402マイコン サンプル:I2Cで液晶表示(Wire.hを使わないで)
数値をBCD出力(表示)するルーチン #3

※「SerialTX.print」出力による「#if 0」の位置での
 プログラムサイズの変化
   ★1~★4はprintfでの"float"出力有効はなし。
   ★5で"float"有効に。

Pf11

  VPORTA.OUT  |=  (1 << 3);     // PA3(7pin) H
#if 0   ★1
SerialTX.println();
SerialTX.print("ATtiny402 : "); // タイトル
     ★2
SerialTX.print(F_CPU); // クロック周波数
SerialTX.println("Hz");
     ★3
SerialTX.printf("%lu.%03lukHz\r\n",
F_CPU / 1000L, F_CPU % 1000L);
     ★4
f = (float)F_CPU; // クロック周波数をfloatに
SerialTX.printf("%fMHz\r\n", f / 1000000.0); // "%f"で
     ★5
#endif
VPORTA.OUT &= ~(1 << 3); // PA3(7pin) L

★1 SerialTX.printなし     710バイト
★2 SerialTX.printで文字だけ  754バイト
★3 数値を出力         921バイト 
★4 printfで数値出力      2415バイト 
★5 float値出力         3889バイト

「SerialTX.print」を使っての数値出力だけなら
ほんとにROMを食いません。
printfでfloatを出力しなければROMが4096バイトの
ATtiny402でも安心して使えます。

「SerialTX」じゃなく「Serial」を使うと、
使わない受信処理までが組み込まれて
ROMエリアが膨れます。
「SerialTX」を「Serial」にしてROMサイズの変化を
試すとこんな具合。
★1 Serial.printなし     1368バイト
★2 Serial.printで文字だけ  1412バイト
★3 数値を出力        1585バイト 
★4 printfで数値出力    3079バイト 
★5 float値出力       4kオーバー





| | コメント (0)

2026年3月19日 (木)

VCO IC「MAX2606」を使ったFMワイヤレスマイク

Facebookに流れてきた「FM送信機(ワイヤレスマイク)」の解説。
 ・MAX2606 IC-Based FM Transmitter

「MAX2606」という現アナデバ・・・昔はマキシム
のVCO ICが使われてます。
データシートには2002年の日付。
この手の「変わったIC」、昔なら
「ごっつい紙のデータブック」をパラパラ見ていて
「面白いのがあるゾ」っと目にとまったものです。
ネットになってから、出会うのが難しくなったような・・・

※20世紀のデータブックあれこれ
Dtbk1

| | コメント (0)

2026年3月12日 (木)

1Hzパルス発生回路改造

2026年2月 1日:備忘録:1Hzパルス発生回路
ATtiny402を使った1Hzパルス発生回路
これをちょっと手直ししました。
 ・空いている3つのポートを入力にして
  ロータリーDIPスイッチを接続。
 ・「0~7」の3bitで8種類の発生周波数を設定。
 ・オシレータ出力を増幅していた
  74LVC1GU04を74HC1GU04に交換。
    LVCだと電流消費大だった!
てな、手直しを施しました。

8種類の固定周波数しか出せませんが、安定した
60Hz(地元の電源周波数)が欲しかったので、
1Hzだけよりはマシかと、手持ち部品を活用しま
した。
まず回路図。
1hz10

電源は5V。
12.8MHzの発振モジュールは秋月で購入。

小さなプラ箱に入れてます。
1hz12

中の様子。
1hz11_20260312144301

Arduino IDE環境での制御スケッチ。

/**************************/
/* 方形波発生回路 */
/**************************/
// "TINY402_1HZ02.ino"
// 2026-03-12
// 12.8MHz TCXOをクロックに
// DSW(0~7)の設定で方形波を出力
// 0 1Hz
// 1 10Hz
// 2 50Hz
// 3 60Hz (60.000375Hz)
// 4 100Hz
// 5 120Hz (120.00075Hz)
// 6 440Hz (440.01375Hz)
// 7 1kHz
/***** 分周データテーブル *****/
// 周波数発生モードなので12.8MHzを1/2した
// 6.4MHzを原発振周波数と考える
const struct{
const word cmp0; // TCA0 CMP0データ 1/(n-1)
const byte clksel; // プリスケーラ設定値 + ENABLE(b0)
// 1/1,2,4,8,16,64,256,1024
}frq_tbl[] = {
{ 6250 - 1, 0b00001111 }, // 0 1Hz 1/1024 6250Hz
{ 2500 - 1, 0b00001101 }, // 1 10Hz 1/256 25kHz
{ 64000 - 1, 0b00000011 }, // 2 50Hz 1/2 3.2MHz
{ 53333 - 1, 0b00000011 }, // 3 60Hz 1/2 3.2MHz
{ 64000 - 1, 0b00000001 }, // 4 100Hz 1/1 6.4MHz
{ 53333 - 1, 0b00000001 }, // 5 120Hz 1/1 6.4MHz
{ 14545 - 1, 0b00000001 }, // 6 440Hz 1/1 6.4MHz
{ 6400 - 1, 0b00000001 }, // 7 1kHz 1/1 6.4MHz
};
/***** DSW読み込み *****/
// 0~7を返す
// PORTA offで1 onで0
// PA2:DSW-1 PA6:DSW-2 PA7:DSW-4
byte inpdsw(void)
{
byte n;
byte d = 0; // リターンデータ
n = ~PORTA.IN; // ポートA反転して入力
if(n & 0b00000100) d |= 1; // DSW-1
if(n & 0b01000000) d |= 2; // DSW-2
if(n & 0b10000000) d |= 4; // DSW-4
return d;
}
// こんなコードに展開されていた
// 90 91 08 04 lds r25, 0x0408 ;PORTA.IN
// 90 95 com r25
// 92 fb bst r25, 2 ;2
// 88 27 eor r24, r24
// 80 f9 bld r24, 0 ;1
// 96 fd sbrc r25, 6 ;6
// 82 60 ori r24, 0x02 ;2
// 97 fd sbrc r25, 7 ;7
// 84 60 ori r24, 0x04 ;4
// 08 95 ret
// bld,bst命令が珍しい
/***** DSWデータ *****/
byte dsw_now; // 安定した現在値(0~7)
byte f_dswok; // 変化確定フラグ dsw_nowに安定値
/***** DSW変化チェック *****/
// 確定したらf_dswokを1に dsw_nowが確定値
// PITの1024Hz周期で実行
void chkdsw(void)
{
static byte exc; // 実行区分
static byte tm; // 1msタイマ
// PITの1024Hz周期でダウンカウント
static byte chk; // DSW入力安定チェックデータ
byte d;
d = inpdsw(); // DSWデータ入力
if(tm) tm--; // DSWチェックタイマダウンカウント
switch(exc){
case 0: // 変化チェック
if(dsw_now != d){ // DSW変化あり
chk = d; // チェックデータ
tm = 20; // 20ms
exc = 1;
}
break;
case 1:
if(chk != d){ // 変化続く?
chk = d; // チェックデータ再セット
tm = 20; // タイマも再セット 20ms
}
else{ // 安定
if(tm == 0){ // タイムアップ
dsw_now = d; // 新DSW値
f_dswok = 1; // 確定フラグをon
exc = 0; // 次の変化待ちに
}
}
break;
}
}
/***** 周波数設定 *****/
// d:DSW設定値 0~7
// 分周値は-1してある CMP0にセット
void setfrq(byte d)
{
TCA0.SINGLE.CTRLA = 0; // TCA0 タイマー停止
TCA0.SINGLE.CMP0 = frq_tbl[d].cmp0; // 分周値
TCA0.SINGLE.CNT = 0; // カウント 0から
TCA0.SINGLE.CTRLA = frq_tbl[d].clksel; // プリスケーラ+ENABLE
}

/***** SETUP *****/
void setup() {
cli(); // 割込禁止
// ポート設定
PORTA.DIR = 0b00000010;
// || |||+---- PA0 6pin UPDI
// || ||+----- PA1 4pin out WO1 波形出力
// || |+------ PA2 5pin in DSW-1
// || +------- PA3 7pin in 12.8MHzクロック入力
// |+---------- PA6 2pin in DSW-2
// +----------- PA7 3pin in DSW-4
PORTA.PIN2CTRL = 0b00001000; // PA2 5pin DSW-1
PORTA.PIN3CTRL = 0b00001000; // PA3 7pin CLKIN
PORTA.PIN6CTRL = 0b00001000; // PA6 2pin DSW-2
PORTA.PIN7CTRL = 0b00001000; // PA7 3pin DSW-4
// +----- pull up有り
// クロック設定 PA3/CLKINに12.8MHz
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLB, 0); // プリスケーラなし
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, 3); // 外部からクロック
// タイマーTCA0, 分割モードで初期化されるので16bitモードに
TCA0.SPLIT.CTRLA = 0; // タイマー停止
TCA0.SPLIT.CTRLESET = 0x0F; // 強制リセット
PORTMUX.CTRLC = 0; // TCAポート多重切り替えなしに
// タイマ設定
TCA0.SINGLE.CMP1 = 0; // PA1 4pin WO1
TCA0.SINGLE.CTRLB = 0b00100001;
// ||||+++----- WGM 波形生成FRQ(周波数)
// |||+-------- ALUPD
// ||+--------- CMP0EN
// |+---------- CMP1EN PA1 4pin WO1 出力
// +----------- CMP2EN PA2 5pin
// DSW(0~7)で周波数を設定
dsw_now = inpdsw(); // DSW値(0~7)
setfrq(dsw_now); // 8選択で1Hz~1kHzセット
// RTC,PIT 有効に
while((RTC.STATUS & 0x0F) || // RTC busy ?
(RTC.PITSTATUS & 1)); // PIT busy ?
// PIT分周操作
RTC.PITCTRLA = 0b00100001;
// |||| +-- PITEN PIT有効
// ++++----- PERIOD 1/32 →1024Hz
sei(); // 割込有効
}

/***** LOOP *****/
// DSWの変化をチェック
void loop() {
if(RTC.PITINTFLAGS & 1){ // 1024Hz(約1ms)周期
RTC.PITINTFLAGS = 1;
chkdsw(); // DSW変化チェック
}
if(f_dswok){ // DSW変化あり
f_dswok = 0;
setfrq(dsw_now); // 1Hz~1kHz周波数セット
}
}
#if 0
最大4096バイトのフラッシュメモリのうち、
スケッチが534バイト(13%)を使っています。
最大256バイトのRAMのうち、グローバル変数が
5バイト(1%)を使っていて、ローカル変数で
251バイト使うことができます。
#endif
// end of "TINY402_1HZ02.ino"

inpdsw()関数の下にあるコメントに書きましたが、
DSWのビット操作で「bst」と「bld」命令が出て
おりました。
ステータスレジスタの「Tフラグ」の応用、珍しい
のじゃないでしょか。

・Arduino IDEの設定
Ide_set02

書き込みはMPLAB@SNAPで。

※チャタリング対策
ロータリーDIPスイッチ、一般的なスイッチのチャタリング
除去だけじゃなく、回転が安定したことを確かめてから
設定値を更新しなくちゃなりません。
こんな手順です。
 ・約1ms周期でポートからDSWの値を入力。
 ・確定データから変化したかをチェック。
 ・変化があればそれをメモ。
 ・20msタイマをセット。
 ・メモしたのと変化があればタイマを再セット
  してチェック時間を延長。
 ・変化が無ければ(20m間)安定したと判断して
  確定データを更新し、新しくなったことを
  フラグで知らせる。
普通はタイマ割り込み内で処理するのですが、
今回は、他に時間がかかる処理が走っていないの
でメインループで処理しました。
  メインの処理はこれだけなんで。

実際の波形を見てもらいましょう。
I11_20260313105301

上側のch1は方形波出力。
設定7の1kHzと設定6の440Hzが見えています。

下側の波形はスイッチのbit0。
 設定7ならLレベル。
 設定6ならHレベル。
設定の変化から20ms後に周波数が変わっています。

そこにチャタリングを加えます。
 ・「チャタリング除去回路」じゃなくって「チャタリング発生回路」をどうぞ

I12_20260313105501
bit0がバタバタしてる間は周波数は変化しません。
20ms間落ち着いてから周波数を変えています。

| | コメント (0)

2026年3月10日 (火)

トランジスタ技術付録「エンジニア手帳2026」

トラ技の4月号付録は『エンジニア手帳』。
Ejt11
NPNトランジシタがいっぱい並んでますが、探せば
違うのが見つかります。
  Nch-MOS FETとJFET、IGBT、PNP Trが
  確認できます。

この中に「分圧抵抗の組み合わせ表」というのが
昔から載っています。
E24系列の抵抗を組み合わせて、分圧回路を組むための
抵抗比が整数倍になる値を表にしてあります。
でも・・・ちょっと抜けています。
Ejt13

「3k+27k」をベースにする1/50や1/100は
100倍低周波アンプで示しました。

抵抗の組み合わせの「捜索」は
  ラジオペンチさんのE24系列の相対比率表
が役に立ちます。

| | コメント (1)

2026年3月 9日 (月)

FDKの長寿命電池「HR-AAULT」(1000mAh) 6000cyc目

『FDKの長寿命電池「HR-AAULT」がやってきた』
2022年9月。
先ほど6000サイクル目の充放電を終えました。
50サイクルごとの0.2C放電のグラフでは、
ほんとに劣化を感じません。
Cap002_20260309094801
放電時間は10%も変わらないし、放電維持電圧も
安定しています。
  1000mAhの電池なんで、放電電流が
  小さいということもありますが、それでも
  優秀です。
そして毎サイクルの充放電時間と充電停止電圧。
Cap003_20260309095101
充電時間と充電停止電圧が暴れている「▼▼▼」の
ところは、電池ホルダの接触不良。
400サイクルごとにホルダから電池を抜いて内部抵抗を
計っていたんで、その再装着をミスしたのが原因です。
  気をつけてたんですが、ミスはミス。
その後、電池の取り外しはしていません。

この電池の充放電実験、まだまだ続きそうです。

※メーカーが示す寿命グラフ
Aa1_20220608062501
6000サイクル目なんて、まだ序の口。


| | コメント (0)

2026年3月 8日 (日)

TDK製ノイズフィルタ「ANF-106」

客先の現場からのヘルプ。
ポンプ駆動用のインバータが働くとカメラの
映像にノイズが入るということで、
 「手元にあったから試してみて」っと手渡し
たのが、
  TDK製のノイズフィルタ「ANF-106」
Nf11
ずいぶん前ので、もうすでに廃番。
コンセントの差し込みに挿して使います。
Nf12

カメラ側のAC100V電源に入れたら、ずいぶんノイズが減っ
たということで、その後、
  コーセル ノイズフィルタ NBH-10-432
を入手し、電源ラインに入れるようにしたのです。

ところが、「TDKのほうが調子がエエ」との報告
がやってきました。
コーセルのは
 「超低域広帯域 9kHz-10MHz高減衰 2段フィルタ」
と高性能なはず。
何が違うねん」っということで、仕事場から発掘できた
もう一つのANF-106を解体してみることにしました。
  3本のラインヘッドネジを外せば
  簡単にバラせ(蓋が開く)ます。
中はこんな具合です。
Nf13
ラインにパラに入る「Xコンデンサ」の値を見ると「0.22μF」。
Nf14
これが2つ。
Nf15

「Yコンデンサ」は4700PFで、アースをとっていな
いので、これは実質無関係。
Nf16

どうやら大きめの「Xコンデンサ」が効いているよ
うです。
コーセルのとは違うノイズフィルタを試してみますわ。

※ノイズフィルタの電流を計ってみる
AC100Vを加えたときのノイズフィルタだけの
電流を計ってみました。
約17mAでした。
インピーダンスは約6kΩ。
こちら大阪は60Hz。
  C=1/2パイ・f・R
で、コンデンサの値は約0.44μFとなり、
2つのXコンデンサがパラになっている
ようすが出てきました。

※帰ってきたコーセルのノイズフィルタ NBH-10-432
Nf31

Xコンに「1.0μF」が2つ。
Nf32

こっちの方がTDKの簡易型より良く効きそうなんですが・・・
なんだろうなぁ。

| | コメント (1)

2026年3月 7日 (土)

アエバ外科病院破産

【速報】大阪市の医療法人『アエバ会』従業員に向け破産を通知

このアエバさん、ガキンチョの時にあれこれお世話に
なりました。
小1のとき、横断歩道上(通学路で現中川歩道橋の場所
にあった)で交通事故にあい、大腿骨骨折で3カ月入院。
リハビリがつらかった。

小5の時、近所で走ってて転けたところにとんがった石。
(まだ地道だった)左膝上部裂傷。

玄関先で転んで頭から出血したご近所のおばちゃん。
「救急車待ってられへん」っと、ドミンゴに乗せて
連れて行ったのもアエバさん。

ケガといやアエバさんでした。

で、記事中にあります
  老人保健施設の「すこやか生野」については
  今月31日まで、営業を継続しながら、他の施
  設への紹介などの手続きを進める予定・・・
この「すこやか生野」。女房・智ちゃんが、現在、
歯科衛生士としてお手伝いしております。
突然のアエバ倒産の話、「4月から無職やぁ~」っ
と叫んでおりました。

 

| | コメント (0)

14ピンのATtiny3224のEVOUTB出力

 14ピンのATtiny3224、ピン配置にはイベント
出力としてEVOUTA(PA2)EVOUTB(PB2)の2つが記
されていますが、あれこれしてもEVOUTBが出力して
くれないんです。
EVOUTAはちゃんと出ます。

 EVOUTBの代替ポートが「ピンの外」なので、ひょっ
としたら最初から除外されているのかもしれません。
3224a

※青数字「4」のところっす。
ATtiny3224で裸の32bit周波数カウンタ #2

もうちょっと追いかけます。

※20ピンのATtiny3226でもEVOUTBが出力しません。
スケッチの該当部分。

//  EVENTを使ってEVOUTにタイミングを出力
EVSYS.CHANNEL1 = 0x80; // ch1入力:TCA0_OVF
EVSYS.USEREVSYSEVOUTA = 1 + 1; // ch1出力:EVOUTA(PA2) 出力
EVSYS.CHANNEL2 = 0x80; // ch2入力:TCA0_OVF
EVSYS.USEREVSYSEVOUTB = 2 + 1; // ch2出力:EVOUTB(PB2) 出力
EVSYS.CHANNEL3 = 0x80; // ch3入力:TCA0_OVF
EVSYS.USEREVSYSEVOUTC = 3 + 1; // ch3出力:EVOUTC(PC2) 出力

TCA0のオバーフロータイミングを3つのEVOUTに出力。
EVOUTA(PA2) とEVOUTC(PC2)はパルスが出ます。
EVOUTB(PB2)出力はLのまま。
なんででしょうね。

ATtiny3224もATtiny3226もEVOUTBの代替ピンは
ありません。

loop()内でPB2をトグルさせたらパルスが出たので、
イベント出力EVOUTBに切り替わっていないようです。

| | コメント (2)

« 2026年2月 | トップページ | 2026年4月 »