koheiのおもちゃ修理記録

宇部おもちゃ病院 毎月第2土曜日 13:00~16:00
宇部新天町の西の端、市民活動センターで開院してます。

7/28 チャーリープレクシングについての考察(続編1)

2019-07-28 | PIC・電子工作
さて先日、福岡から山口に、深夜車で帰りながら、「チャーリープレクシングについての記事を書こう~」と、つらつらと考えていたら、ふと「スイッチ入力にも使えるんじゃないかい?」と思い当たった!

PICは使えるポート数が少なく、ポート数を増やすと値段が高くなってしまう。
PICでポートを節約して入力点数を増やすには「抵抗分圧」という常套手段がある。
しかし、全てのデバイスにアナログ入力がある訳ではない。それに、優秀な定電圧電源を使うならいいけど、「おもちゃ」として応用するには、電池電圧の低下や、モーターが起動する時の電源電圧の変動等も考慮して、あまり無理せず1ポート当たり3点ぐらいに抑えるとか、電源電圧の参照を取るとか、いろいろと不便もありそう。

チャーリープレクシングでのLED点灯の理屈を応用できれば、3ポートで6入力、4ポートで12入力、5ポートで20入力…が実現できる。12個もスイッチがあるおもちゃのマイコン換装をするかどうかは分からないけど、考えておいたらいつか役に立つかも…。

チャーリープレクシングの「ミソ」は、LEDは逆電圧を掛けても点灯しないことを利用して、正負を逆にして個数を2倍にしてる所かも。極性のない電球を使ったのでは、実現できない。
これをスイッチに応用するには、やはり、スイッチに極性を持たせないといけない。つまり、余分にダイオードを入れてやれば、実現するのでは?

具体的に3ポートで書くと、こんな感じ。

プルアップは、マイコン側の内部プルアップを使用する。
使わないポートは入力設定でHi-Z(プルアップ)にしておいて、スキャンの条件は、
SW1検出 : b=0,a=IN → a=0
SW2検出 : a=0,b=IN → b=0
SW3検出 : c=0,b=IN → b=0
SW4検出 : b=0,c=IN → c=0
SW5検出 : c=0,a=IN → a=0
SW6検出 : a=0,c=IN → c=0
これで行けそうな気がする。但し「2個同時押し」といった時にはどうなるか?回路を眺めてても、組み合わせが多くてよく分からないので、実際に組んで試してみよう~!
8PINマイコンで、入力にもLED表示にもチャーリープレクシングを使って、6入力-6LED表示をやってみる!

最初、PICでやってみようと思ったけど、プログラムを作り始める前に、「PICはMCLRと兼用のポートは入力のみ」に制限されてることを思い出した。チャーリープレクシングの為にはTRIS(Tri-State)が全部必要。
14PINのPICに変更してしまったら「8PINマイコンで6入力-6LED表示!」の「限界にチャレンジ!」にならなくなるので、ここは、6ポートの全部を入出力に使えるATtiny13aを使う事にする。

ブレッドボードでの作業状況。

ブレッドボードでの試作は…、あんまり好きじゃないなぁ。考えようによっては学研の「電子ブロック」みたいかもしれないけど、縦が全部繋がってて制約多いし、接続今にも間違えそうだし…。
(実際、接続間違えてトランジスタが「バチッ」と焼けたのが1回、ICが焼けたのが1回あるww。でも、こんな試作にユニバーサル基板を1枚消費したくないww。)

プログラム組んで走らせてみた。案の定一発でうまくいかず、またもや点灯回路を確認するためだけのプログラムに書き換えてみたけど、点灯回路はOK。
ポートを設定した後の電圧安定待ち時間の為に「asm(NOP);」を1個入れてたのを、3個に増やしてもまだダメ。for文で10回ループさせたら、ちゃんと動くようになった。

最終のプログラムは、電圧安定待ち時間には、「delay.h」の「_delay_us」を使って2μs待たせた。LED表示は、スイッチ複数押し時の状態確認のため、ダイナミック表示にしてある。

#define F_CPU 9600000 // 9.6MHz

#include <avr/io.h>
#include <util/delay.h>

#define LED_a PINB0
#define LED_b PINB1
#define LED_c PINB2
#define SW_a PINB3
#define SW_b PINB4
#define SW_c PINB5

void disp_LED(unsigned char disp_data)
{
   DDRB = 0b00000000; // PB0~5を全て入力
   // LED_1
   if ((disp_data & (1 << 0)) != 0 )
   {
      PORTB |= (1 << LED_a); // LED_aをHに
      PORTB &= ~(1 << LED_b); // LED_bをLに
      DDRB |= (1 << LED_a); // LED_aを出力に
      DDRB |= (1 << LED_b); // LED_bを出力に
   }
   _delay_ms(2);
   DDRB = 0b00000000; // PB0~5を全て入力

   // LED_2
   if ((disp_data & (1 << 1)) != 0 ) // LED_bをHに
   {
      PORTB |= (1 << LED_b); // LED_bをHに
      PORTB &= ~(1 << LED_a); // LED_aをLに
      DDRB |= (1 << LED_b); // LED_bを出力に
      DDRB |= (1 << LED_a); // LED_aを出力に
   }
   _delay_ms(2);
   DDRB = 0b00000000; // PB0~5を全て入力

   // LED_3
   if ((disp_data & (1 << 2)) != 0 )
   {
      PORTB |= (1 << LED_b); // LED_bをHに
      PORTB &= ~(1 << LED_c); // LED_aをLに
      DDRB |= (1 << LED_b); // LED_bを出力に
      DDRB |= (1 << LED_c); // LED_cを出力に
   }
   _delay_ms(2);
   DDRB = 0b00000000; // PB0~5を全て入力

   // LED_4
   if ((disp_data & (1 << 3)) != 0 )
   {
      PORTB |= (1 << LED_c); // LED_cをHに
      PORTB &= ~(1 << LED_b); // LED_bをLに
      DDRB |= (1 << LED_c); // LED_cを出力に
      DDRB |= (1 << LED_b); // LED_bを出力に
   }
   _delay_ms(2);
   DDRB = 0b00000000; // PB0~5を全て入力

   // LED_5
   if ((disp_data & (1 << 4)) != 0 )
   {
      PORTB |= (1 << LED_a); // LED_aをHに
      PORTB &= ~(1 << LED_c); // LED_cをLに
      DDRB |= (1 << LED_a); // LED_aを出力に
      DDRB |= (1 << LED_c); // LED_cを出力に
   }
   _delay_ms(2);
   DDRB = 0b00000000; // PB0~5を全て入力

   // LED_6
   if ((disp_data & (1 << 5)) != 0 )
   {
      PORTB |= (1 << LED_c); // LED_cをHに
      PORTB &= ~(1 << LED_a); // LED_aをLに
      DDRB |= (1 << LED_c); // LED_cを出力に
      DDRB |= (1 << LED_a); // LED_aを出力に
   }
   _delay_ms(2);
   DDRB = 0b00000000; // PB0~5を全て入力
}

int main(void)
{
   unsigned char LED_disp; // LED1~6の点灯をセットするための変数:対応ビットの1で点灯

   while (1)
   {

// キー入力スキャン部
      DDRB = 0b00000000; // PB0~5を全て入力
      PORTB = 0b00111000; // PB3~5を内部プルアップ、他はLow出力
      LED_disp = 0x00; // LED_disp初期値としてゼロを代入

      // SW_1
      PORTB = 0b00111000 & ~(1 << SW_b); // SW_bだけLowに
      DDRB = (1 << SW_b); // SW_bだけ出力に
      _delay_us(2);
      if ((PINB & (1 << SW_a)) == 0 ) LED_disp |= 0b00000001;

      // SW_2
      PORTB = 0b00111000 & ~(1 << SW_a); // SW_aだけLowに
      DDRB = (1 << SW_a); // SW_aだけ出力に
      _delay_us(2);
      if ((PINB & (1 << SW_b)) == 0 ) LED_disp |= 0b00000010;

      // SW_3
      PORTB = 0b00111000 & ~(1 << SW_c); // SW_cだけLowに
      DDRB = (1 << SW_c); // SW_cだけ出力に
      _delay_us(2);
      if ((PINB & (1 << SW_b)) == 0 ) LED_disp |= 0b00000100;

      // SW_4
      PORTB = 0b00111000 & ~(1 << SW_b); // SW_bだけLowに
      DDRB = (1 << SW_b); // SW_bだけ出力に
      _delay_us(2);
      if ((PINB & (1 << SW_c)) == 0 ) LED_disp |= 0b00001000;

      // SW_5
      PORTB = 0b00111000 & ~(1 << SW_c); // SW_cだけLowに
      DDRB = (1 << SW_c); // SW_cだけ出力に
      _delay_us(2);
      if ((PINB & (1 << SW_a)) == 0 ) LED_disp |= 0b00010000;

      // SW_6
      PORT = 0b00111000 & ~(1 << SW_a); // SW_aだけLowに
      DDRB = (1 << SW_a); // SW_aだけ出力に
      _delay_us(2);
      if ((PINB & (1 << SW_c)) == 0 ) LED_disp |= 0b00100000;

// LED表示
   disp_LED(LED_disp);
   }
}

(ココのgooブログで、プログラム内の「<」と「>」の入力・表示がうまくいかない…。とりあえず1回は入力・保存できるようになったけど、もう一度編集・保存すると、中身が変わってしまう。問い合わせをしたけど、完全解決しない…。なんとかして~!)
AVRのポート操作は、なんでこんなめんどうなんだろう。調べ直して思い出しながらなんとか出来上がったけど、出来てから見ても暗号みたいww。

これで、1~6まで単独で押して、対応するLEDがちゃんと点灯するのが確認できた。
同時押しは…、期待通りに点灯する組み合わせもあるが、余分なLEDが点いてしまう組み合わせもある…。
1と2、3と4、5と6はOK。1と5はOKだけど、1と6を押すと、4も点いてしまう…など。

実機で組んで、誤判断する組み合わせが分かれば、誤判断の理由も分かる。
LED点灯回路の時に、「LEDを2個通る別の経路があるけど、Vfの関係でそっちは電流が流れても点灯しない」のと同じ状態。
例えば、4を検出するために、「b=0,c=IN」で「C=0」を確認するのだが、1と6をONにしてると、4を直接通る経路ではなく、6→1を経由して2回ダイオードを通る経路が出来てしまって、あたかも4がONしてるかのように、CをLと判断してしまうんですね…。
ダイオードのVf×2でCをLと判断しないようにできないか、電源電圧をLEDが光るギリギリ:2.2Vぐらいまで下げてみても、誤判断は解消できませんでした。
使った信号用のダイオード、電流が低いとVfがかなり低い様です。(LEDも似たような性質とは思いますが。)

結果とすれば、同時押しを考慮しなくていいなら、チャーリープレクシングの理屈で、ポート数:nに対して、n×(n-1)の入力の検出ができそうです。
SW1から順にスキャンしていって、1個ONが検出されたらbreakして残りはスキャンしないようにすれば、同時押しによる誤作動は回避できると思います。(後日:いや、それじゃあ甘いなぁ。もちょっと良く考えなければ…)
アナログ入力による「抵抗分圧」でも、普通は「同時押し」は検知できないので、これでもいいと思いますが、例えば、ペアの1と2、3と4、5と6は、同時押ししても誤判断しないので、同時押しを考慮したい組み合わせに制限を掛ける手もあるかもしれません。

さてこれで、チャーリープレクシングの理屈を応用して、入力点数に対してポート数を減らせる見込みが立ちました。これがいつか役に立つ日が来るか、誰か「役に立った~!」という人が現れるか?
もし、「役に立った~!」という人が居れば、是非コメント下さいww。

(後日:wikiの英語版には、inputへの応用の記事がちゃんとありました。回路は載ってなかったけど、PICを入力&プルアップにして検知する方法も載ってました。まあ何事も、自分でやってみる事に意義があるという事でw。)

(後日2:wiki英語版の「Input data multiplexing」の個所には「スイッチ複数同時押しを考慮しなくていいなら、ダイオード4個で組める。ダイオード12個なら、スイッチとデータは必ず1対1で対応する」と書いてある。
「ダイオード4個で組める」の回路は、多分下記になると思う(検証はしてない)。

しかし「ダイオード12個なら、スイッチとデータは必ず1対1で対応する」は、テストでは実現できなかった…。入力ポートのプルアップには、マイコン内部の「Weak pull-up」を使ったが、もっと強いプルアップで、Lのポートに数mAぐらい流してダイオードのVfを上げるか、元々Vfの高いダイオードを使ったりすれば、実現できるかなぁ…)
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

7/28 断線チェッカー続き~チャーリープレクシングについての考察

2019-07-28 | PIC・電子工作
先日の「断線チェッカー作ってみた」の回路ですが、「ポート4つでLED10個を制御。どんなロジック…?」と思いましたが、「チャーリープレクシング」という回路だそうです。
とりあえず、直近で参照されたのは「ラジオペンチ」さんの記事。以前にちらっと読んだ気はするのですが、難しくて全然記憶に残ってませんでしたw。自分で手を動かしてみないと、見ただけではなかなか理解できない…。より理解を深めるべく、自分で回路書いて考えてみます。

基本の回路は下図。

A~Dの4つの中から2つを取る組み合わせは、LED組の左から順に、A-B・B-C・C-D、A-C・B-D、A-Dの6通り。
式で書くと、4C2=(4×3)÷2=6。
このポート組の間に、逆並列のLEDを挟んで点灯させるので、12個のLEDが制御できる。
式で書くと、4C2×2=(4×3)÷2×2=12。
結果、使うポート数をnとすれば、n×(n-1)個のLEDが制御でき、3ポートで6個、4ポートで12個、5ポートで20個、6ポートで30個…と、普通のマトリックスを使うより少ないポート数で、多くのLEDの点灯が制御できます。
難点としては、例えば8×7のマトリックスだと、列ごとに点灯を制御するので、7分の1(又は8分の1)のダイナミック点灯で出来ますが、チャーリープレクシングでは1個づつの点灯になるので、56分の1のダイナミック点灯となり、制御も煩雑、という事があると思います。

さて、ラジオンペンチさんの記事からは、居酒屋ガレージさんの「電波チェッカ用12LEDレベル表示回路」という記事が参照されてますが、そちらに書いてある回路は、LEDの電流制限抵抗を1回しか通らない回路です。この回路と、元の「逆並列LED」の回路は同じ物でしょうか…?
理解してみれば、記事内の「LEDは対向させずに、カソード側をコモンにしてつないでみました」で理解しろよ~という事かもしれませんが、自分なりに解釈して回路を書いてみます。

上の回路にて、各ダイオードのアノードに着目すると、Aからアノードに繋がってるLEDは3つあります。同様に、BもCもDも、アノードに繋がってるLEDが3つずつあります。
例えば、Cについて見ると、下図の通り。

という事は、LED:12個を、「アノードに繋がってるLED」でまとめると、

となります。

この下がどうなるか、最初「基本回路①」のLEDに番号を振って対応させようとしましたが、組み合わせを理解すれば簡単な事。
Aの下にはB・C・D、Bの下にはA・C・D、Cの下にはA・B・D、Dの下にはA・B・Cが繋がります。
これを回路として書くと、

となり、LEDを同じ向きで並べた回路の完成です。
各ポートの出力の、分岐の前に電流制限抵抗を変更すれば、「基本回路①」と同様に、抵抗を2回通る回路になります。
ここでひらめいた!「逆並列」の基本回路①では、A-BとB-Aを区別せずに、4C2×2と捉えましたが、LEDを同じ方向に表現すると、A-BとB-Aを区別して、順列「4P2=4×3=12」で表現した事になるのではないかと思います。

ラジオペンチさんの記事では、これを「マトリックス形式」に変形してますが、ここも自分で考えてみます。
同様に「アノードに繋がってるLED」を意識して書くと、下図のようになります。

各ポートからの出力を横共通線として、アノードに繋がるLEDが3つずつ付いてます。そして、「LEDを同じ向きで並べた回路」と同様に、今度は縦線を共通線として、「Aの下にはB・C・D、Bの下にはA・C・D、Cの下にはA・B・D、Dの下にはA・B・C」が繋がります。
見ても同じかどうか判別できませんが、きっと同じ回路ですw。

このマトリックスをよ~~~く見てると、あるものに似てるのに気が付いた!
スポーツ大会等で見る、リーグ戦の「対戦表」です。

4チームの中から2つを選ぶ対戦の組み合わせは6通りで、6試合となりますが、①の試合はAチームvsBチームで、①’は①と同じ試合ですが、BチームvsAチームとなって、①をひっくり返した結果になります。
つまり、マトリックス形式で書いた場合、右上半分と左下半分は、アノードとカソードをひっくり返した関係にあるという事ですね~。

ラジオペンチさんの記事では、マトリックスの隙間をつぶす為、右上半分のLEDをひっくり返した回路を紹介したのち、「SparkFun」のLEDマトリックスの回路を紹介していますが、上図の「マトリックス①」の右上半分を、そのまま「むぎゅ~~~」っと左に詰めると、下記の様な回路になります。

SparkFunの回路は、右上半分のLED群を下に詰めて、ポートとの接続が上側に出てますが、「アノードで整理」をスタートにすると、このような書き方に辿り着きました。

ラジオペンチさんの記事では、さらに「ikkeiさん」という方の記事が紹介されており、7セグLEDの点灯をチャーリープレクシングでポート数を減らす回路や、8×8LEDマトリックスの制御ポートを減らす回路が紹介されており、これまっっった難しいのですが、とりあえず、基本は理解できたかな~w。
(「チャーリープレクシングについての考察(続編)」に続くww。)
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

7/21 断線チェッカー作ってみた

2019-07-20 | PIC・電子工作
いつもネット経由でお世話になっているおもちゃドクターの先輩が、PICのタッチセンスを使った「断線チェッカー」を作ったとの事。作った先輩曰く「修理としては新しいコードに交換するので、断線箇所が判ったとしても益は無い」との事だが、いやいや。マイクコードや、マウス・レジ型おもちゃのバーコードリーダー等で、多芯だったりして替えたくない・切り縮めで対応したいけど、本体側・末端側のどっちで断線してるか分からない、という時に役に立ちそう。
秋月で買い物する用事があったので、ついでにPIC16F1823を買って作ってみる事にした。

記事を読ませて頂いて、バーLED表示は不要(音だけでいい)と感じたけど、12F1822と16F1823は10円しか変わらない。買い物ついでで送料がまとめてなら、バーLEDも100円なので、16F1283でバーLED表示も付けて、フルバージョンで作ることにした。

普段、5V3Aのアダプタを持ち歩くので、電源は5Vにする。SW切り忘れ・節電を考える必要ないので、スリープはせず、Wake-upの為のタクトSWも付けない、といった仕様にする…が、いつもの様に人の作品を勝手に変更して作ると、すんなり完成しないのでした…。

元の回路はこんな感じ。

(※元の回路で、抵抗の入れ方に間違いがあったそうです。元記事は修正されたので、そちらを参照ください。)
これを、上記仕様で変更して作るのだが…、LEDハンダ付けする時にLEDの極性(A-K)間違えた~。ちゃんと確認して付けたつもりなんだけど…。でも慌てない、プログラムのLED点灯部の「0と1、2と3…」の点灯を逆にすれば大丈夫。

これで書き込んで動かすと…、音はちゃんと鳴るけれど、バーLEDの表示がなんだかバラバラ…。回路もプログラムもチェックするけど、間違いは見つからない…。 しかたないので、プログラムを「0~9までLEDを順番に点けるだけ」に書き換えて確認してみるも、やはりなんともバラバラである。改造プログラムのミスで、「0:点きっ放し」になっちゃった時に確認すると、0を点けたときに、2と9も点灯してる様である。よく見ると、2と9はちょっと暗めに点灯している。

回路をよ~~~く眺めてみると、「0を点けたときに、2と9も点灯する」のは、電源電圧を5Vに変更した事による必然でした。
5Vに変えたときの回路は下図。元の回路に、LEDの電流制限抵抗の値が書いてませんでしたが、電流計算して、470Ωとしました。

0を点けるには、RC0をH、RC3をL、その他はHi-Zにして、赤線の経路に電流が流れますが、オレンジのラインにも電流計路が出来てしまいます。
このままの回路でも、電源電圧を3.4Vまで下げれば、2も9も点かなくなるけど、3.5Vでもうっすら光ってしまう。
3.4Vの時の電流を計算して、「これなら大丈夫だろう」と電流制限抵抗を1.8kΩに取り替えてみたけど、まだ状況変わらない…。これは…、本来点けたいLEDが相当暗くなるまで抵抗上げないと、2と9の点灯を抑えられないのでは…?

これじゃあダメだ…。えーいめんどうだ!ポートも余ってる、LED点灯回路を変更しよう!ポートが6個あればできるはず。
しかしここで、もう1つマズそうな事が…。バーLEDのDatasheetによると、逆耐電圧は5Vと書いてある。正逆を反転して点灯を変えるこの仕組みだと、電源電圧5Vで使用すると、カタログ上の逆耐電圧の上限値が掛かってしまう。まあ、電流制限抵抗が入ってるので、なだれ降伏して無制限に電流が流れて焼き切れてしまう事はないとは思うけど、逆耐電圧の上限で使うのは気持ちが悪い…。

手持ちであった小電力用のダイオードを直列に入れて、そっちで逆電圧をブロックさせる事にする。余分にダイオードを入れたので、電流制限抵抗は470Ωに戻して、最終の回路は下図のようになった。
(いや~ちょい待て。電流制限抵抗が掛かってるので、逆方向のLEDには、光ってるLEDのVf=2.1Vの逆電圧しか掛からないわ~。という事は、ダイオードを直列に入れた意義は、印加電圧をVf=1V程度下げる効果だけだな~。これで作っちゃったのでもう取らないけど、正逆直列に入れたダイオードは不要だったw。)
音は最初、ケースに入りづらかったので、1cmぐらいの圧電ブザーを付けてみたけど、いまいち音が小さい。ドライブにMOSFETのAO3400を入れて、2cmのスピーカーを使いました。圧電ブザーでも家なら十分聞こえますが、おもちゃ病院会場だと多分聞きづらいので。

ケースに入れる前の基板はこんな感じ。表:

裏:

ケースに入れるとこんな感じで完成~。

右のネジの所をみのむしクリップでくわえて、断線を調べたい対象線と繋ぎます。
(元記事によると、「手でGNDに触って人体側をGNDに落すと、ノイズを拾っての誤作動を起こしにくい」とあったので、ケースのどこかにGND端子を出そうと思ってましたが、ケースに入れる前に動作確認した所、GNDを持っても持たなくても検出状況に変化無かったので、GNDは無視しました。)

さて、遅ればせなのですが、電源電圧5Vで「LEDと電流制限抵抗を2回通ったら点灯しない」が実現するのか、検証してみる。
Datasheetによると、使ったバーLEDのVfは2.1Vとの事。手持ちの多分Vf=1.8Vの赤色LEDで検証してみる。

電流制限抵抗を変えて、電源電圧を変えて、抵抗両端の電圧差を測定して電流を求める。
電源電圧抵抗V_LEDaV_LEDb,cIaIbLED-b,c
5V 2K1.821.741.6mA0.38mA点灯
5V 5.1K1.771.700.64mA0.16mA点灯
3.5V 5.1K1.741.610.34mA0.03mAかすかに点灯
5V 10K1.731.670.32mA0.09mA薄っすら点灯

5.1KΩで3.5Vまで落とした状態。LED-aはまだしっかり光るが、LED-b,cも分かる程度に光ってしまう。


10KΩで5Vの状態(LED-aの方の抵抗は、10KΩが足りなくて、5.1Ω×2になっている)。LED-aがだいぶ暗くなってるのに、LED-b,cはまだ薄っすら点灯してしまう。

「LEDは、電流によらずVfがほぼ一定」と聞いていたけど、さすがに電位差不足の時にはそうはならないらしい。そして、電位差不足で、公称のVf-0.3Vになるぐらいまで電流を落としても、目で見える程度に点灯する様ですね。 この結論からすると、電源電圧がVfの2倍に近い場合、もう少し詳しく言うと、電源電圧>(Vf-0.3)×2程度だと、この「LEDと電流制限抵抗を2回通ったら点灯しない」事を期待した回路は無理って事になるでしょうか。
(という事は、Vf=3.3Vの青色バーLEDを使えば、元の回路で5V電源でも大丈夫かもw?)
とっとと諦めて、点灯回路変更しといてよかったわ~w。

さてこれで、LEDの点灯部を変更したプログラムを書き込んで、「断線チェッカー」完成しました。フタして動作状況はこんな感じ。

(作動させて断線個所が探知できるか確認してたら、スピーカーがかなり発熱してたので、やむなく直列に抵抗を追加。100Ωでは音が小さすぎ。まだやや発熱するけど、20Ωを入れた。)

またもや、元の回路を勝手に改変して作るので一発で成功しないけど、まあ、失敗して試行錯誤するのこそが自作の楽しみ、という事にしておこうww。(今回は、元の制作者にヘルプを出さずに解決できたし。)
使う機会が来るかな~
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

7/13 宇部定期開院

2019-07-17 | おもちゃ
7月度の宇部おもちゃ病院定期開院日です。
この日は、宇部工業高校から「見学」という事で4名も来てくれました~!
先月のリユースフェスの時に、リユースにいつも何かしら(スライム作ろう!とか、今回はサンドブラスト体験とか)出店してる宇部工業高校の先生を紹介して貰って、生徒で興味のありそうな子派遣して!と院長からお願いしておいたのが、早速来てくれました。
これが…、元気良くて積極的で、電子部品の知識とかハンダ付けとかの基礎がある、めっちゃ使える子たちでした~!

ということで、助言しながらその子たちが修理したものも、ぼくの実績カウントにしちゃお~ww。
1件目、ラジコン(赤外リモコン)ヘリ。

「買った時から全く動かない」みたいな話でした。ケイタイのカメラで見て、赤外線LEDの発光が確認できない。高校生たちに「そこのエアコンのリモコン持っておいで~」と、リモコンの赤外線LEDの発光が、ケイタイのカメラで見れることを説明。(最近のスマホでは、「外カメ」「内カメ」があり、iphoneでは「内カメ」の方じゃないと見えないみたい。今回はAndroidケイタイで見てもらったけど、やっぱり「内カメ」じゃないと見れなかったっぽい。)

続いて、赤外リモコンのモニターで信号を確認。2cmぐらいの距離なら信号が拾えるけど、だんだん離してくと音が小さくなって、5cmぐらいで全く検出できなくなる…。
「3つ付いてる赤外LEDが、3つ一遍に壊れるのはおかしい…。」ということで、LEDドライブの表面実装Trを取り替えてみる。
「トランジスタ、何て書いてある?」「…1しか読めません~」「……これは、Y1だな、Y1なら持ってるぞ」という事で、表面実装のSS8050を取り替えてみましたが、改善しない…。

次に、LEDを3つとも外してみた。そして新品を1個付けて確認したが、光らない…。
基板をよく見なくっちゃ。LED3つは、直列に接続されてるんですね。

という事で、1個ダメになっただけで、3つ全部点かなくなるんですね。
ケイタイのカメラで1個ずつ点灯確認して、ダメだった1個だけを新品に取り替えて、ばっちり直りました!

そうこうしてるうちに、いつの間にやら高校生3人が、勝手に別のラジコンを分解し始めてる。(写真撮りそこなった、写真はイメージですw。)

30cmぐらいの大き目なラジコンで、実物は黒でした。ガルウイングだったので、ランボルギーニかと思ったけど、フェラーリーだったかも…。

1回「ボディが外れません~」と持ってきたので、ツメで引っかかってる感じの所を外してあげた後、「前進とステアリング操作はちゃんと動くけど、バックだけ動かないんだけど…」とヘルプが来ました。
コントローラ操作して、モーターに電圧が掛かるかどうか確認してもらったけど、やはりバックは電圧が掛からないとの事。ラジコンチェッカで、後進の信号は出てることを確認。

ヘリコプターの方やりながら、チラっと基板を見たら、モーターブリッジと思われるTrの中の一つに亀裂が入ってました。Marking見てもらったら「B7何とか」だったので、手持ちのちょっとボディの大き目な2SAのトランジスタに取り替えてもらった。
「ハンダ吸取り器使った事ある?」「あります、スッポンって楽しいヤツや~」という事で、ハンダ付けしやすいように吸取り器で吸って貰ったら、ランドが1ヶ所剥げちゃったけど、慌てない。レジスト削って付けさせて、ばっちりバックも走る様になりました。

さて、今日は来院者多くて、時間も終わりかけにもう1件。高校生たちせっかく来てもらったので、ギリギリまで働いて貰おうww。歩行器の音が出る部分。

液漏れで電池BOX端子がメタメタ。ざっとリューター掛けたけど、復活しないので分解。プラス線が断線してました。
かなりハンダの乗りが悪くなってたけど、プラス線は何とか接続。そうこうしてるうちに、マイナス線も切れた~。
「線換えましょう」と提案有り、マイナス線は取り替えた。端子もハンダが乗りそうになく、マイナス端子1個取り替えて、復活です。

あとは入院での対応。4件目という事で、「そうめん流し器」らしいです。(これは…おもちゃかw?)

とりあえず、電源のスライドSWがONの位置で固着して動かない…。電池入れてみたら、ちゃんと動いて水も上がったけど、一応分解してみる。

ケースにはネジが1個もない…。接着かと思ったけど、はめ込んであるだけだった。
水中ポンプになってて、周りは防水になってない。パイプの外は濡れない想定のようだが、どうしても水がかかってSWが錆びてしまうみたい。
一応動くのだが、いまいち不安定なので、スライドSWは取り替える事とした。

ちょうどツマミが長めのが1個あったので、そのまま取替して終了。

5件目、アンパンマンのキーボード。

これは、他のドクターから「私の手に負えない」と預かって帰る事になった物。
「一応動くが、30秒ぐらいしたら鳴らなくなって『ブッ、ブッ、ブッ』と音がし出す。電源パイロットのLEDも点滅する」との事。家に帰って点けてみると、たしかにそんな状況。
基板はこんな。表:

裏:

電源電圧の不安定を疑って、電源入れて電池両端電圧を確認。モーターが動くと少し電圧下がるが、ほぼ6Vある。アルカリ電池とはいえ、電流が増えると電池の内部抵抗で電圧が下がるのはしかたない範囲でしょう。「ブッ、ブッ、ブッ」の状態になっても、電池電圧に変化無い…。

もう夕方だったので、明日やろう~。明日、水晶の発振確認して、ちょっと数が多いけど、電解コンデンサ1個ずつ外して確認するか……、と思いつつ別のことしてたら、ひらめいた!!

電池BOX端子に「リセッタブルヒューズ(別名ポリスイッチ)」が直付けしてある。これの不良だろう!
電源入れて、電池端直接じゃなくて、リセッタブルヒューズの後で電圧確認すると、スイッチON後から徐々に電圧が下がっていく。リセッタブルヒューズの電圧降下がだんだんと大きくなっていく。「ブッ、ブッ、ブッ」の状態になると、2Vぐらいまで低下してる!
こないだAliExpressで悩んで買った1.6Aのリセッタブルヒューズに取替えよう。

下が元ついてたヤツ。規格・定格は不明…。Aliで買ったヒューズ、ちょっと定格が大きすぎたわ…、ちょっと不勉強でした。
「0.8Aぐらいじゃ、モーターの起動電流で落ちやしないか?」と思って大き目買ったのだけど、即断型のヒューズと違って、リセッタブルヒューズは公称定格の2倍流れないと落ちないらしい。それも、2倍流れて1分とか経たないと落ちないらしい。公称の定格は、「その電流なら何時間流しても落ちない」連続通電可能電流、といった意味合いらしい。10個買っちゃったけど、次は小さめ買おう…。

もう1件、NINTENDOのスイッチを預かる羽目になってたのですが、悩んだ末、修理は見送りとしました…。音はするので電源は入ってる様だが、画面が映らないという状況。要液晶取替と思われる…。
NINTENDOのサポートページを見ると、液晶取替:8,640円とある。民間でも商売にしてるところもある。一方、密林で液晶買うと3,980円、隣国から買えば、最安2,500円ぐらい。
しかし、おもちゃ病院活動としては、「他では誰も修理してくれない物」の修理をしたい。もしくは「買った方が安い」「ここでダメならもう捨てます…」といった物。
「メーカーに修理に出したら1万円近く掛かる所、おもちゃ病院に持ってったら4000円で直してくれた!ラッキー♪」というのは、ちょっと虫のいい話な気がして…。
それと、スイッチの液晶交換はなかなか大変そう。一応裏蓋は開けてみたのだけど、裏蓋開けた後、中の基板を上から順にほぼ全部取って、さらに表の両面テープでがっちり固定してあるタッチ板を割らない様に剥がさないと、液晶が取り替えられないらしい。全体的に「メンテ性は良い」という評価らしいけど、触る箇所が多い分、ミスのリスクが高くなり、メーカー修理の方が確実と思われる。
やればできない事は無いと思うけど、まだまだ新しい機種なので、メーカー修理をお勧めして返却としました。(VitaじゃないPSPや3DSより前のDSとかならやってもいいかな…?)

という事で、入院も含めて終了しました。
それにしても、高校生たちと修理が、超楽しかった~。来月以降も、また来てくれるかな~w。



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

6/23 鵜の島バザー出張開院

2019-07-14 | おもちゃ
毎年出席してます「鵜の島婦人会バザー」への出張開院です。
毎年出てはいるのですが、多分去年も一昨年も来院ゼロで、カレーとケーキセットをごちそうになって帰るだけで心苦しい限り…。今年はなんとか3件ありました。ドクター2名で対応です。
(またもや、他のドクターと共同作業で、途中の写真がほとんどなくてすみません…。)

1件目、グランドピアノ。

全く音が鳴らなくなった、との事。電池は無い、多分鉄琴みたいな構造のピアノと思われます。

中開けてみたら、アルミパイプを叩く構造ですが、ちょっとテンションのかかったスポンジで固定されてたアルミパイプが、スポンジぼろぼろになって、端っこが切れてパイプが全部ひっついちゃって、打鍵に対してずれちゃってるし、ひっついて「コ~ン」と鳴りもしない、という状態。(写真が無くて、ほんとすみません…。)

その場では、スポンジの代替材料がなくてどうしようもなかったので、元のスポンジを引っ張って端っこを固定して、なんとかごまかし。一応音は鳴る様になりました。
しかし、主に対応してたもう一人のドクターが、鍵盤を押した後、降りる時に「ガツン」と音がするのが気になると。多分、クッションがへたってると思われます。
一旦パイプのセットを外して、クッションをなんとか補修します。

クッションには、厚めのスポンジ両面テープを持ってたので、片面のシールを剥がずにこれを使いました。写真は、鍵盤を半分ぐらいはめ戻した所の状態です。
これで、まあまあになり、全部組んで終了としました。

2件目、さかな釣りゲーム。

全然動かないとのことでしたが、単3電池3本のうち、1本だけ完全消耗で、それを換えたらちゃんと回りました。
スピーカーがついてて、何らか音楽が鳴るはずですが鳴らない。スピーカー確認すると不良だったので取り替えてみましたが、それでも鳴らず、COB不良と思われます。何か適当な曲で換装できない事も無いのですが、「回れば遊べるのでこれでいい」との事で、終了としました。(修理実績としては、一応「〇」としておきます。)

3件目、アンパンマンのクレーンゲーム。

出ました、嫌がるドクターが多い、有名な難敵です。久しぶりに修理しますw。

とりあえず「全く動かない」との事なので、メインスイッチを疑い。音量変更も入ったちょっと複雑な接点のスライドSWでした。

「表面のメッキが傷むので磨いて使っちゃいかん!」という人も居ますが、磨きましたw。

さて、動かしてみると…、走行・横行・巻き上げのうち、横行が全く動きません。多分モーターピニオンの割れと思われます。ギアボックス要分解です。

写真撮ってなくてほんとすみません…。詳細写真は、過去の記事を探して下さいw。
いつもの「3段重ね重箱タイプ」です。一番上は巻き上げのモーターだけで、とりあえず異常なし。横行と走行のモーターは「3段重ね」の一番下の段なので、上から順に分解。結局、横行・走行ともピニオン割れで取替えました。取り替えてモーターセットして、下から順に組み戻し。
一番上の巻き上げの組み方が難しくて、知らないと調整できずに、ドクター泣かせなんですね。
両手で包み込むような状態で、バケットのチェーンを全部巻き上げの位置まで巻き取って、その位置で「ストッパー付きのギア」を、ストッパーに当たって止まる位置でセット。この状態でずれないように気を付けながら、モーターや途中の歯車をセットして、ふたをします。

試運転時に、ラックと噛む横行の12Tの歯車も亀裂があったので、取り替えました。
これで組み戻して試運転。ばっちり完治!
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

6/22 リユース出張開院

2019-07-14 | おもちゃ
いつもの「宇部市子育てグッズリユース広場」への出張開院です。
宇部おもちゃ病院、今年度から院長が代わって新体制。今までいつもは、前院長と二人だけか、最近は前院長もなかなか来れず、ナースさんと二人だけが多かったのですが、今回は新院長ともう一人、応援に来てくれました。ドクター3人でごそごそ、でも来院は2件だけでした。
(他の人と共同で修理したので、途中の写真が撮れずすみません。)

1件目、鳩時計。(出た、おもちゃかどうか「グレーゾーン」のヤツですね。)

単1電池の手持ちがなかったので、可変電源つないで針をグルグルたら、ちゃんと鳩動いて、鳴き笛も「パッポー」と鳴いて異常なし。単2電池を無理やり接触させて動かしてみても、異常なしでした。
返却時に対応ドクターが「原因不明、何もしてないけど動くようになった!」と説明してましたが、まあ、モーター渋りかなぁ。(でももしかしたら、依頼者さんは「鳩&音入り/切り」のスイッチの存在に気付いてなかっただけかも…。)
とにかく動くことは確認できたので、修理完としますw。

2件目、はずみ車で走るトラック。

半分分解状態で持ち込まれました。「これ以上分解できなくて…」との事。
ナンバープレートのシールの所にネジが隠れてました。分解して確認。
ギアボックスの8Tだったかな、ピニオンがボロボロになってました。ギアボックス外して分解したかったのですが、タイヤを抜かないと完全に分解できず大変そうだったので、なんとか軸を外さないまま分解して、ピニオン圧入して修理しました。

最近リユースも、おもちゃ病院への来院少ないのですが、いつもにも増して少なかったですね。「参観日の小学校が多い」っていう話でしたが、去年の6月:10件、8月:2件、今年2月:10件、といった感じで、波があるかな~といったところです。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

6/8の続き:ファービー修理(完結編)

2019-07-14 | おもちゃ
「隣国に発注したモーター、届いたら仕様が違ってた」の件はまだ解決してないのですが、ファービー自体の修理はなんとか終わらせました。(結局、着ぐるみ着せた状態の写真撮り忘れたまま、返却してしまいました。)

とりあえず、モーターが解決しないうちに、「傾斜スイッチ」の整備をしておきます。

分解中の写真も撮ったと思ってたけど、撮ってなかったみたい…。写真の右下の水色の線が繋がってる円筒形の部品が、ファービーの「傾斜スイッチ」です。上蓋がハンダコテの様な物で溶かして付けて、その上をさらにホットボンドで固めてありましたが、写真はホットボンド除去後です。

溶かしてある所にカッターで切れ目を入れてコネたら、蓋が外れます。上の電極板を外すと、中からパチンコ玉より2周り小さいぐらいのきれいな金色の玉が出てきます。電極も玉もアルコールで拭いて、手で触らない様に組み戻します。
(この傾斜スイッチの作動が不確実だと、「寝っぱなし」になっちゃって、起きてちゃんとしゃべってくれなくなります。見た目はピカピカできれいでも、磨くと良くなります。)

さて、モーターですが、再度外していろいろと確認してみる。
巻線or巻線と整流子を繋ぐ接続部で断線or接触不良があるのでは?と思い、3極の整流子間の抵抗を測ってみるが、どこも同じ抵抗値で、どうも巻線の不具合はなさそうな気がする…。
「やっぱ、ブラシの当たりが悪いんだろうか…。そうだ!5個買ったけど巻線仕様が不適で使えない新品モーターがある。こいつのブラシをつけてみよう!」
という事で、新品モーターからブラシのついてる樹脂部ごと移植して組んでみたところ、なんだか良さそう。
配線も接続して動作確認してみると、ばっちり動きました~!

あらかた組んで試運転してみると…、瞼がちゃんとあかない…。敷き板して上げ底したゴムが、まだちょっと当たってない。やっぱり何か貼ろう、何かいいゴムないかなぁ…。そうだ!自転車のタイヤチューブがあった!
タイヤチューブを細く切って、両面テープじゃ全然つかなかったので、瞬間接着剤で貼り付けました。
ちょこっと当たりが強すぎるのか、動きがいまひとつ硬い気もしますが、ちゃんと開閉する様になりました。

これから一仕事なのですが、全部組み戻してぬいぐるみも着せて、修理完となりました~。
まあ、@約80円でモーター買って、ブラシしか使えないんじゃ割高で、「どねーかせぇ(送り直しor払い戻し)」の苦情は継続しますが、とりあえずこのたびは「完」とします。
(後日)払い戻しは、Aliの「Open Dispute」を使って、結局送料のみ支払い、商品代を払い戻ししてもらいました。全額払い戻しを要求するとゴネられてめんどうだと思ったのと、まあ、ブラシだけでも有効に使えるかと思ったので。
割引で格安だった、5個で商品代が113円、送料が250円だったので、@50円を払った事になりますね。まあ、ブラシしか使えないと割高ですねww。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

6/8の続き:ファービー修理(途中まで)

2019-07-10 | おもちゃ
さて、6/8の宇部おもちゃ病院の入院患者の修理が終わらず、ブログが滞ってます…。
このままではブログが溜まる一方なので、途中経過をアップしておきます。

修理品はファービーです。ある程度難航は予想してましたが、予想以上に難航しています。
着ぐるみを脱がしてしまって、外観写真をまだ取ってないので、写真は分解後から。
分解の詳細は、ラジオペンチさんにお任せしますw。

とにかく、目・口を動かすモーターが動かない事には、シーケンスが全く進まず、言葉もしゃべらないらしい。
分解状態でモーターのコネクター外して、電源つないでしばらくモーターをつついてると、ようやく回り出したけど、どうもいまいち。回ったり回らなかったりする。
構造が複雑なので気が進まないけど、分解を進めて、モーターを分解して、ブラシの確認をする。

やっぱりブラシはかなり傷んでいる。日本おもちゃ病院協会の技術講習でブラシ修理用としてもらった厚さ0.1mmのリン青銅板を切って折り曲げて、ブラシを作る。(もらったリン青銅板、残りが少なくなってきた。どこかで調達せねば…。)

左が元のブラシ、右が作ったヤツ。

分解途中に1ヶ所不具合な所が。モーター回転させても、目(瞼)が動かなかった。
最初、瞼の端っこのストッパーの突起が枠の外に外れて引っかかってたので、それを取ったけどまだ動かない。

引っ掛かった状態で無理やり何度も動かそうとしたせいか、摩擦力で目・瞼を動かすゴムが偏摩耗してしまって、当たりが弱くなってる様子。ここは、ゴムを作り直すのは困難そうだし、貼り足すのも不安だったので、ゴムの下に1mmぐらいの下敷きを両側敷いて、上げ底にした。

これで組み込んで試運転してみるが…、まだ回転が悪い。つついてやらないと回り始めなかったり、回っても途中で遅くなったりする…。目(瞼)の所に手を入れたのが抵抗になってるのだろうかと、下の写真の状態、目・口を外して、胴体の上げ下げ棒も外して負荷を下げて試運転してみるも、まだ回転悪い…。

あちこちグリスアップしてみるも、良くならない…。どうも、駆動で負荷掛かってるわけではなく、モーター自体の不調と思われる。気が進まないけど、モーター外して確認する…。

モーター外すには、ギア部の下面にあるピニオンを外さないといけないので、ギア部と基板を分離しないといけない。(ちなみにピニオンは、m=0.5の18Tだった。)
外したモーターはこちら。ブラシは手作りで取り替えた状態。

モーター単体で回してみても、やっぱりつついてやらないと回転始めなかったり、回転にムラがあったりする。改めて整流子もきれいに磨いてみたけど改善しない。手回ししても、特に重くない。ブラシと整流子はこれ以上どうしようもない。巻線に異常があると思われる。これは「モーター取替」しかないか…。

最近、AliExpressのお陰で、部品検索・調達が格段にレベルアップしたww。さすが「世界の工場」中国、日本で小売りしてない部品がいくらでも購入できる。
「dc motor 020」で検索すると、同じモーターが上がってくる。ケースの形状・構造が2種類あるので、同じ形のヤツ、送料入れて@80円ぐらいのを5個頼んでみた。

6/15に注文、7/3に到着。見た目、全く同じモーターをゲット!(軸がちょっと長いけど、特に干渉はしなさそう。)

念のため、電源つないで試運転してみる……。
先日作った電流計付きの可変電源で、試しに3V掛けて試運転してみると、なんと、電流が1.8~2A流れて過電流で電圧が下がる。設定下限の1.2Vまで下げても、1.8A流れる。これじゃダメなんじゃない…?

つけてあったモーターは、端子両端にヒューズか抵抗かが付けてある。カラーコード:橙橙金銀なので、3.3Ωかしら。抵抗掛けて電流下げてる、又は駆動回路側で電流を制限してる?
(先輩から指摘有り)端子両端には緑色の胴体のノイズ減衰の為のインダクタがつけてある。カラーコード:橙橙金銀なので3.3μH。とりあえず取り付けて回してみよう、と思ったら、駆動回路が壊れたー!

壊れたら直すしかない…。基板裏はこんな感じ。

基板表はこんな感じ。

下の方にトランジスタがたくさんついてる辺がモーター駆動回路部分。
回路を起こそうかと思ったけど、両面基板で追うの大変なので断念。テスターでB-C、B-E間の導通当たって、壊れたトランジスタの当たりを付ける、駆動回路部右上のS8550が1個、断線モードで破損してた。
何故かリード部品のS8550の手持ちがなかったので、「大は小を兼ねる」SS8550で取替え。(違いは、S8550はIcMax=0.7Aに対し、SS8550はIcMax=1.5A)
これで、リセット押したらモーター行きターミナルに5V掛かる様になったので、駆動回路は多分復活。

さて、問題のモーターですが、右が元々ついてたモーター。左が隣国から仕入れたモーター。

この写真だとわかりにくいですが、巻線の太さが全然違う。右は髪の毛よりも細いぐらいのニクロム線で、だいたいFA-130なんかもこんな感じ。左は明らかに太い。直径で3~5倍はありそう。たしかに、巻線が「高電流仕様」です。

「抵抗入れたら行けないか?」と、1/4Wの10Ωの抵抗を両側に入れて、4V・0.2Aぐらい掛けてみましたが、アホです。モーター回らないのに、抵抗がキンキンに加熱して火傷しそうになっただけでしたw。

購入した商品のページには「3V voltage test, no-load current is about 70MA, stall current is about 335MA load speed of about 11,800 per minute」と書いてある。3Vで0.07Aはちょっと低すぎるかな?とも思うけど、写真の巻線もやっぱり細い。これは、書いてある通りのスペックのモーター送り直しか払い戻しか、「異議申し立て」するしかないなぁ…。

Aliの「020」で引っかかる商品を色々みてくと、「Voltage: 1-4.5V (tested is 3.7V)、Speed: 58000 rpm (4.5V up to 70,000 rpm)、Current: 1.6A」で、写真の巻線も太いヤツがある。(同じく「3Vで70mA」と書いてあるのに、巻線が太い写真の店もある。)
「こっちのスペックに近いんじゃないの?仕様を調べて結果を教えて下さい。正しい仕様のモーターを送り直すか払い戻しして!」と、異議申し立てしました。

という事で、今回はここまででブログアップとしておきます。

コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする