トラブル遭遇

2019年4月23日 (火)

「LEDの劣化」と「蛍光灯やLED電球の点滅」

仕事場のHPスペースを使って、
  ・LEDの劣化
  ・蛍光灯やLED電球の点滅
を、まとめておきました。
ZAQのブログとHPの閉鎖騒ぎ後、きちんと復活していなかったページの一つです。
「LEDの劣化」には、LEDの長期間点灯での輝度変化を記録するのに使っているツールの制御プログラム(ソースファイル)をアップしてあります。
「蛍光灯やLED電球の点滅」では、残念ながら動画が復活できていません。
この動画の元データ、どっかにあるはずなんですが・・・
家のPCなのか、仕事場のPCの中なのか・・・
パナのデジ一「LUMIX DMC-L10」に関するトラブル遭遇記、この場所に復元しました。


| | コメント (0)

2019年4月22日 (月)

ダイソーの「COBホルダーライト」、LEDを交換

ダイソーの「COBホルダーライト」、LEDの寿命テストのために二つ買っていました。
ところが、テスト開始早々で100mA駆動していたのが脱落。

2019年04月09日:ダイソーの「COBホルダーライト」電流と輝度の変化を
2019年04月15日:LED点灯 ほったらかし実験
2019年04月17日:ほったらかしにならなかったLED点灯実験

LEDを抜き去った「ガラ」(ケースと回路)が残っています。
これもったいないので、次のように改造しました。
・昇圧回路から、on/off・点滅回路(点滅用IC)を撤去。
・押しボタンスイッチも撤去。
   ※これで電源のon/offができなくなってしまう。

21_6

・電源スイッチとしてスライドスイッチを付加。
   ※物理的なスイッチでon/offを実施。
・取り去ったLEDの代わりに1WタイプLEDを一つだけ装着。
   ※放熱用の銅板にハンダ。
    手持ちの東芝製「TL1F2-DW0,L」 を使った。

22_2

簡便にホットボンドでペタペタと。

23_1

24_1

LEDの装着位置、左右に有る斜めの反射板が使えるギリギリ端っこのほうがよかったかも。

※リンク
『実用的なLEDライト改造』シリーズと更新情報(最近、何しとらっせる?)



| | コメント (0)

2019年4月15日 (月)

Arduino PB5(デジタル入出力D13)に注意を

2019年3月22日:Arduinoのアナログ基準電圧入力の絡みで、Arduinoのブートローダーを眺めていて注意というか覚え書きをちょいとまとめておきます。

●PB5ポート
ATmega328の19番ピン。
Arduinoでいうところのデジタル入出力「D13」ポート。
SPI(Serial Peripheral Interface)での「SCK」。

●タイマー1
16bitタイマー

この2点、Arduinoのブートローダーで使われていますので、競合に注意が必要です。
タイマー1に関しては、オーバーフローをチェックしているだけで割り込みなどは使っていませんし、ユーザープログラムはリセット起動しますので問題は発生しません。
ブートローダー内でRUNしているという認識だけで良いかと。

※この他にも、TXD、RXDの通信ポート、ウォッチドッグタイマーが使われます。

ここで問題なのがPB5ポート
Arduinoのサンプルプログラムで基板に乗ったLEDを点滅させるのがこのポートです。

PB5ポート、ブートローダー起動で出力ポートに設定されます。
そして、起動確認のためにパルスを出力してLEDを点滅します。
つまり、ユーザープログラムが走る前に「出力ポート」に設定されて、なおかつ「H/L」のパルスが出力されるのです。
その後、ユーザープログラムに切り替わるといったんリセットされ、入力ポートになってからsetupが実行されます。
この起動待ちのおよそ1.5秒、「PB5は出力ポートになる」ということを記憶にとどめておいてください。
  ※これ、ネットを探しても注意書きが見つかりません。

具体的にどんなかオシロで見てみました。
入力と出力、そして内蔵プルアップ状態を見るため、PB5に47kΩの抵抗を2本つなぎ、それぞれ+5VとGNDにつなぎます。
すると・・・
  ・出力ポートなら0Vあるいは5Vに張り付く。
  ・入力ポートなら0V・5Vの中間レベル、2.5Vに。
  ・入力で内蔵プルアップ有りならHレベルが
   少し持ち上がり3Vくらいに。
これでPB5の状態を確認できます。

こんなスケッチを書き込みます。

void setup() { // デジタル13番ピン=PB5を
 pinMode(13, INPUT_PULLUP); // pullup有りの入力に
}

void loop() { // なにもしない
}

結果、こんな波形が観測されます。

Ard21

リセットスイッチ押し下げで、
(1)リセット状態なので中間レベル。
(2)ブートローダー開始で出力ポートになり
  H/Lのパルスを出力(LED点滅)。
    ※単発でHになるArduino UNOもありました
(3)LレベルのままPCからの通信待ち。
(4)通信無しが続くとリセットしてユーザー
  プログラム起動。
  いったん入力モードに。 中間レベルの2.5V。
(5)ユーザープログラムのsetupが走り始めて内蔵
  プルアップ有効で3Vほどに。

この(2)と(3)区間が問題なのです。
(a)PB5を出力として使った場合
  ブートローダー起動中に不要なパルスがユーザー回路
  に加わる。
  これが問題なければ気にする必要はないが、何かの
  出力を直接制御していると具合が悪いことがある。
    (リレーを駆動しているとか)

(b)PB5を入力として使った場合
  入力信号とPB5が衝突する。
  ユーザープログラムが走り始めれば問題ないが、
  ブートローダー起動中、PB5は出力になるのでこの期間、
  信号衝突の危険性がある。

(c)PB5=入力で、GNDに引っ張るスイッチやオープンコレクタ信号
  この場合も、Hパルスが出る区間(2)があるのでだめ。
  PB5がHの時、スイッチがオンしていたりOC信号が
  L駆動だったら短絡発生の可能性。

・対策方法:
<1> PB5は入出力として使わない。
    逃げの一手で!

<2>出力として使いたい時は、不要パルスが加わっても
  大丈夫な出力で使う。
   例:LED表示用出力やLCDのデータ線、7seg LEDの駆動出力
    ピピちゃん温度計     LCDのD7ライン
    バレーボール用得点表示器  7seg LED駆動出力

<3> どうしても入力として使いたいときは、衝突による
  大電流を避けるため1kΩ程度の抵抗を直列に挿入し
  ておく。
  すると、5V-0V間の衝突でも5mA程度の電流に押さえられる。
  内蔵プルアップを有効にした場合でも、十分ローレベル
  に引っ張れる。
    (内蔵プルアップ抵抗は20~50kΩ)

具体的には、
・ナダ電子製「プリンタシールド」応用例 Arduino UNOでチャートレコーダを実現

ここで紹介している回路の「PB5」を見てください。
スイッチにつないでいるんで、起動時にオンしている(GNDに落ちる)とPB5が短絡してしまいます。
それを防ぐため1kΩの抵抗を直列に入れています。


※ブートローダーに関連するファイル

■pin_defs.h
/* Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, and Duemilanove */
#define LED_DDR DDRB
#define LED_PORT PORTB
#define LED_PIN PINB
#define LED PINB5

■optiboot.c
#if LED_START_FLASHES > 0
// Set up Timer 1 for timeout counter
TCCR1B = _BV(CS12) | _BV(CS10); // div 1024  ←タイマー1起動
#endif

/* Set LED pin as output */
LED_DDR |= _BV(LED);  ←PB5を出力ポートに

#if LED_START_FLASHES > 0
void flash_led(uint8_t count) {  ←LED点滅処理
do {
TCNT1 = -(F_CPU/(1024*16));
TIFR1 = _BV(TOV1);
while(!(TIFR1 & _BV(TOV1)));
#ifdef __AVR_ATmega8__
LED_PORT ^= _BV(LED);
#else
LED_PIN |= _BV(LED);
#endif
watchdogReset();
} while (--count);
}
#endif


※ブートローダーからユーザープログラムの実行
ユーザープログラムの実行はウオッチドッグタイマーでリセットさせているようです。
MCUSRを見て、「通常リセットならブートローダーの処理へ」、「通常リセット以外はユーザープログラムを実行」という処理が入っています。
だもんで、ユーザープログラムはリセット状態からの実行になり、マイコン内のレジスタはリセット状態に初期化されます。
ブートローダーで使っているタイマー1は無視できますが、PB5は外に現れる現象ですんで無視できません。



| | コメント (2)

2019年4月 9日 (火)

USBコネクタ出力の充電器、0.1Aでダウン

同僚が「使い物になれへん。」「ネタにする?」っと、提供してくれました。
  ※同僚も中を確認したので、すでに開封済み
「3USB CHARGER」と、タイトルが記されていますが、スペックの記載がありません。

11_7

負荷をつなぐと「0.1A」でダウン。
とても充電器としては使えない、というしろもの。
「5V」はちゃんと出てますが、負荷増大ですぐに電圧低下。

で、私。
「コンデンサを変えてみよか?」っと、AC側入力の平滑コンデンサと出力コンデンサを国内メーカー品に変えてみました。
  入力 2.2uF→10uF
  出力 470uF→1000uF
と、元のよりちょいと大きくしてみました。
その結果、0.4A流せるようになって、ましにはなりました。
しかし・・・ 負荷をつないだ状態では起動しません。
立ち上がった後に負荷をつなぐと0.4Aほど出せますが、負荷有り状態でAC100Vオンだと0.1Aがやっとこっさ。
こりゃとても実用になりません。
400円くらいで買ったんだと。
もったいないけど廃棄です。

※これの解析がyoutubeに出てました。
https://www.youtube.com/watch?v=OHf1U8etd6M


| | コメント (0)

2019年4月 8日 (月)

重要アラームは点滅させて欲しい

三和のデジタルテスターで「あれれ??」な事態に遭遇。
    ※私が悪いんだけれど・・・
ある回路のキャリブレーション系電圧を計っていると、この前に計った値と微妙に違うんです。
メモしてあった電圧と数パーセントの誤差が出ています。
  「おかしいなぁ? 回路は触っていないし・・・」
  「別のテスターで見てみよう」
っと、自作回路のほうを疑わずに、メーカー製の計器を疑うという大胆不敵なトラブルシュート。
すると・・・
「さっきのテスター、狂ってるやん」だったんです。
でも、心の中では・・・
「えらいこっちゃ。 つぶしてもたんかな?」っと心配事が。

これ、テスターの液晶表示画面をよく見ると、見慣れない小さなマークが「点灯」しています。
    これ↓
11_6

テスターの型番:三和のPC700
1V以上のレンジだと9999カウント。
mVやmAだと6000が最大カウントという仕様。
そのマークを拡大。
12_4

なんとなく「電池」のマークですが、安定して表示したままです。
はい。 理由は単純。
テスターの電池消耗による測定精度の悪化でした。
新品電池に交換して解決です。
そして、警報マークも消えました。

しかし・・・ 重大な警報は「点滅」させて欲しいかと。
そして[- +]という記号的なものの点灯より「Low BAT」と文字で示してもらう方が目立つような気がします。

説明書を見ると、これだけの情報が液晶表示されます。
13_1
この中の(11)が電池消耗警報表示。

ちなみに、このテスターの電池、単3や単4(電池消耗警報マークの形状)ではなくって「006P」が使われてます。
だもんで、警報マークの[-+]・という単3単4電池を横にしたような形状にはちょいと違和感。
006Pの格好にして欲しかった。


原因がわかるまで、ちょいと遠回り。
製作した回路も異常なしでした。


| | コメント (2)

2019年4月 4日 (木)

2.1ΦのDCプラグが付いた5V出力のACアダプタが見つからない!

DCプラグで5V電源を受けている装置を動かしたいんだけれど、
2.1φ標準DCジャックの付いた5V出力ACアダプタが見つからない・・・
どっかにあるはずなんだけど、何かで使ってしまったのか・・・・

探すより、作った方が早いかっと。

その手法。
・2.1φDCプラグ
   使いさしのと、コードが切れた先端部が残っている。

・マイクロUSBメス・コネクタ
  秋月:P-10963 電源用マイクロUSBコネクタDIP化キット
     ↑
   これを買ってあった!

・マイクロUSBプラグのついたUSBケーブル
    (標準的に在庫あり)

・USB出力のACアダプタ
    (↑百均屋に行けば売っている)

マイクロUSBのジャックを2.1φプラグに結合させてしまおうと考えたのです。

11_4

DCプラグのベロの間にはさんでハンダして固定しようという魂胆。
こんな具合に・・・
12_2
   ↑
  こちらはマイナス。  (プラグは外マイナス)
プラグの中心穴がプラス。
13
基板を削ってハンダを流し、中心側の端子にハンダ付け。

USBケーブルのプラグとはこんな具合に連結。
14
これで、通電できました。

もう一つが、電線が切れたACアダプタの先端プラグ。
こんなのも「いつか役に立つかも」っと、捨てずに置いてあります。
   役立つ時が来た!っと。
プラグの絶縁物(柔らかい樹脂)をニッパーとカッターで取り除き、円柱のプラグ本体を取り出します。
15

秋月の基板のプラス側パターンのレジストを削り取って、ハンダを盛ります。
16

ここで役立つのが、文鎮:ハンダ付け補助ツール
これが有るのと無いので、作業の進みが違います。
17

中央のプラス側端子を基板にハンダ。
マイナス側はクズ線を使って、プラグの外装金属にハンダして固定。
18
そのあと、熱収縮チューブをかぶせて絶縁。
19

ヒートガンで加熱する時も、「文鎮」が役に立ちます。
20

クリップの先に付けたゴム板 で 丸いものも安定してつかめます。

非常事態への対応でした。

※「どこへいったかわからない」の原因は「整理整頓」してないから!

作ったこの二つのアダプタ、どこを常置場所にしようかっと。・・・
ちゃんと決めておかないと、また探すはめになりそう (悪い予感)

| | コメント (0)

2019年3月22日 (金)

Arduino IDE アップデートしたらMsTimer2が使えなくなった・・・

   ※私が実行した対策方法はあとで示します。
「Arduino」の開発環境、「アップデートがあるよ」のメッセージが出たんでアップデートしたら、これまで使えていた「MsTimer2」(タイマー割り込み処理)が動かなくなってしまって、「なんで?」状態に。
動かなくなったのは「MEGA-2560」。
「Arduino-UNO」では大丈夫。
調べてみると「MsTimer2.cpp」内のチップ名称指定からMEGA2560が抜けていると。
  ※検索:arduino mega2560 mstimer2
対策として「MsTimer2.cppにパッチを当てよ」とのこと。

アップデート前はちゃんと動いていたんです。
アップデートでMsTimer2.cppが古いのに書き換わったんだろうなの想像。
こんなのイヤ! 

~~~~~~~~~~~~~~~~~~~~~~~~~~
★私の対策方法
MsTimer2を使わず、タイマー2モジュールを直接制御して、
割り込みルーチンをベクトル設定から。

●setup内
 :
// タイマー2 割り込み有効に
TCCR2A = 0b00000010;  // WGM21,20 CTCモード
TCCR2B = 0b00000100;  //  プリスケーラ1/64
OCR2A = 250-1;            // 16MHz / 64 / 250 = 1kHz
TIMSK2 = 0b00000010;  //  OCIE2A コンペアマッチA割り込み有効
 :
●割り込み処理
/***** タイマー値 *****/
volatile byte tm_1ms; // 1msダウンカウントタイマー max 255ms
/***** タイマー2 1mS割り込み *****/
// コンペアマッチA割り込み
ISR(TIMER2_COMPA_vect)
{
  if(tm_1ms) tm_1ms--;  // 1ms値ダウンカウント
}

 

~~~~~~~~~~~~~~~~~~~~~~~~~~
MsTimer2の最小単位が1ms。
チャートレコーダーでは0.5msが欲しかったんで、割り込みを直接記述。

ただし、
AVRマイコンのCコンパイラ 具体的に ※volatileを忘れずに!
のように注意(word以上のデータをアクセスする時の割り込み禁止処理)が必要。

Arduino IDE、そういやこんな変更もあった・・・

 

 

| | コメント (0)

2019年3月21日 (木)

混ぜるな危険! ストレートとクロスのLANケーブル

昨年の製作物での制御ソフトの変更依頼。
通信にRS-422を使っているのですが、その接続はお手軽にということでLANケーブルを使っていました。
変更したソフトの動きを確認するには現物のハードが無いとできません。
そこで、通信用のケーブルも含めて現物を送ってもらいました。
ところが・・・
新しいソフトを組み込んでデバッグしようとしたら通信がうまくいかないんです。
制御ソフトの手直し、どこかでスカタンしたのかと思い、もとのソフトに戻してもダメ。
「ありゃ、ハードがおかしくなったか?」と通信のテストプログラムから再スタートです。
ところが、うまくいかない。
信号確認のためにはオシロが必要。
ソフトの手直しで、オシロスコープが出てくると・・・こりゃ重傷です。
オシロで見ると、RS-422で出入りする通信信号がおかしいのが一目瞭然。
で、なぜ?
はい。
それがタイトルの内容。
こちらに帰ってきたLANケーブル(何本もある)中に「クロスケーブル」が1本、混ざっていたのです。
それも、4芯の10BASE-T用のケーブルが。。。。。
   (この装置用にこちらから送ったものじゃない)
11
ちょっと見にくいですが、4本のケーブル色が入れ替わっているのが分かるかと。
こちらでは、クロスケーブル要注意ということで一目で分かるよう、プラグの両端にそれと分かるタグをくっつけています。

そうそう。
この装置の接続用に「百均LANケーブル」を何本か使っていたのです。
ちょっと不安になり、帰ってきたケーブルの接触抵抗を見ると、1Ωを越えているのに遭遇。
接触はしているんですが、ピンによって抵抗値が不安定なところがあるんです。
再圧着して大丈夫になりましたが、ちょい不安。
ケーブルをはさんで導通を確認したい、こんな時も文鎮:ハンダ付け補助ツールが役に立ちます。
12
マイコン型導通チェッカーでチェック。
接触抵抗1Ωを判断できます。

| | コメント (2)

2019年3月18日 (月)

左足!

金曜日帰宅時、停止時にロー側ギアにセットした自転車変速機のかみ
合わせが悪くて、出発時、踏み込んだところでガキッっとチェーン位置が
移動してペダルが異常回転。

その変動に足がついて行けず、左足がペダルから外れて地面と衝突。
左足膝の裏側が痛くって(ちゃんと歩けないくらい)、ちょいとめげてます。
湿布を貼ったり痛み止め薬を飲んだり・・・

椅子で座り仕事を続けてたら(膝を曲げた姿勢が継続)、まともに立ち
上がれない。
今朝はだいぶましなんだけど、医者へ行ってこようかと…
※行くのはここ↓

| | コメント (3) | トラックバック (0)

2018年12月 1日 (土)

JRのボールペン お笑い状態に

JRでもらった2色ボールペン 、仕事へ行く時、いつも胸ポケットに挿していたんですが
これを挿したままのカッターシャツを洗濯機に入れてしまいました・・・
11
外装の割れをレジンで補修しながら使っていました。
しかし、今回は・・・
12
インクが断裂。
振り回したら元に戻るかな?
   ※今日は昼から「おもちゃ病院」。
     その時、電動ドリルでやってみます。

| | コメント (4) | トラックバック (0)