振り子時計の振り子回路修理

f:id:jun930:20201221095724j:plain

 壁掛け型の振り子時計、時計は正常だが振り子だけ振らなくなってしまいました。しばらくこの状態で使っていたのですが、電池交換の際に電極がベタベタしていることに気が付きました。

f:id:jun930:20201221100234j:plain

 以前にアルカリ電池を使用して液漏れした経験から、時計の電池はマンガン電池を入れるようにしていましたが、今回はマンガン電池も液漏れしてしまいました。

f:id:jun930:20201221100434j:plain

 液漏れは見つけたときに清掃しておかないと、錆が回ってボロボロになってしまいます。分解清掃を兼ねて動かなくなった振り子をチェックしようと思います。

f:id:jun930:20201221100616j:plain

 グズグズになった振り子用の基板が出てきました。酸っぱい匂いもします。

f:id:jun930:20201221100853j:plain

 コイルの細い線まで緑青に侵されていて、ちょっと触ったら線が朽ちました。これが原因で振り子が止まってしまったようです。

 原因は分かったのですが、長年この時計を使ってきて初めて気が付いたことがあります。昔のゼンマイ式の時計は振り子が時を刻むのですが、クオーツ式の時計は、振り子はお飾りなのでまったく別回路になっていることです。これまで時計が止まると2本の電池を交換していましたが、実は、クオーツ式ムーブメントの電池と、振り子の電池が別だったことを初めて認識しました。取説には書いてあったのかもしれませんが。。

 基板の状態が悪いのでコピー基板に換装するしかないかと思い、基板の部品を取り外し回路をメモします。下の画像はトランジスタの実装方向のメモの画像です。603の刻印ですが、どうやら2SC2603だとわかりました。f:id:jun930:20201221101957j:plain

 ボビンに2重にまかれたコイルの一方が2.2uFのコンデンサと1MΩの抵抗のLPF経由でベースに、もう一方が5.1kの抵抗経由でコレクタに接続されているだけでした(エミッタ接地回路)。コイルの巻き方は不明ですが、振り子の磁石がコイルを通過するタイミングに合わせてトランジスタがON/OFFするような回路です。
 パターンが見えにくい箇所はボロボロになったレジストを紙やすりで削りながら確認したところ、ダメージが大きいのはレジスト部分で下の銅箔は意外と残っていることがわかってきました。全部のレジストを落とすと、一部切れたパターンがあるものの概ね再利用可能な状態になりました。パターン面は軽くフラックスを塗布して部品を再実装、切れてしまったパターンはジャンパーで修正、部品面もやすりで削ってコーティング剤を塗布しました。

f:id:jun930:20201221104430j:plain

 酸っぱい匂いも無くなりましたので、しばらくはこの基板のまま動くと思います。修理作業は時計の構造を再認識するいい機会になりました。次回からは1本づつ電池交換することにします。

電気ポットを恒温槽にしたい #1

■はじめに
 捨てる予定だった電気ポットを改造して小さな恒温槽を作りたいと思っています。制御基板のマイコンArduinoに換装して好きなファームで動作するようにしたいので、まずは回路読みからスタートです。
■分解
 使う機体はタイガーマイコン沸とうポットPFG-B(1990年製)、底蓋を開けると基板が出てきました。基板の第一印象は、トランスもレギュレータも見当たらないけどマイコンの電源はどれが作っているんだろう?です。家電の回路はコストを抑えるための努力がされているので、トランスもレギュレータも省かれたのでしょう。どうなっているのか回路を追うのが楽しみです。f:id:jun930:20201213184542p:plain

 基板を取り外してさらに掘り進めると、お釜の底が出てきました。電源ラインに152℃の温度ヒューズがあり、空焚き状態になっても電源が切れるようになっています。真ん中にセンサーらしき物があり、ネジを外してみるとシリコーングリスでお釜の底と熱結合されています。テスターを当てた感じからNTCサーミスタと思われます。そして手前に820Ω7Wのセメント抵抗、端子台経由でヒーターへの配線伸びています。このセメント抵抗は何に使うんだ?

f:id:jun930:20201213185543p:plain

■回路図を起こす

 回路図を書くために基板の両面画像を半透明にして重ねました。

f:id:jun930:20201213190357p:plain

 以下は重ね画像と現物を確認しながら作った回路図です。

f:id:jun930:20201213220750p:plain

 ダイオードの型番やツェナーダイオードの電圧が一部不明です。また、Q1,2,3のN411FはBJTのマークになっていますがデジトラと思われます。トレースのミスはあるかもしれませんが、回路図のお陰で動きは想像ができるようになりました。

■驚きの電源回路

 分解当初に疑問であったマイコンの電源も独特の実装になってました。マイコンの電源は回路図上のTPと書かれたラインになります。これは交流100Vの入力ライン(TA)に接続されたL1(値不明)の出口に直結されていました。マイコンが100Vの波に乗っているイメージです。この波に対して5Vの電位差を作っているのがツェナーダイオードのD7とTR1になります。D7がTP - 5.9Vを作りTR1がGNDを吸うことで約5Vの電位差を作っているわけですが、リニアレギュレーション回路ですから100Vとの差の95Vに対して、マイコン回路で使用した電流を掛けた分のエネルギーを捨てないといけません。TR1(2SA1309)のコレクタ損失は0.3WですのでTR1にお願いしたら丸焦げですし、そもそもVceoもオーバーしています。この問題を解決するのがD6です。Vceoを抑えてエネルギーを捨てる役割を後段(TSライン)に送っています。TR1のコレクタの先はTSと書かれたラインでCN3経由で外部のセメント抵抗に接続されていました。セメント抵抗はお釜の底経由でポットの水を温めD1で整流されてもう一本のACライン(TB)に帰ります。実に理にかなった斜め上発想の電源回路でした。マイコンの電源は100Vを直に定電圧したものでした。そして放熱先がポットの水だったわけです。

■つなぐと危険
 この電源実装はCPUを換装したときの注意事項になります。CPUはArudinoにする予定ですのでシリアルケーブルでPCに接続して使おうと思っていました。上記の通り電気ポットのマイコンはほぼAC100Vラインなわけですから、マイコンのピンに接続するということは、USBシリアルケーブルをAC100Vに差し込んでいるようなものです。電池駆動のノートPCだったら壊れないと思いますけど、人間が感電するかもしれませんし、フレームアースされたPCと接続した場合はPCが壊れる可能性があります。基板にトランスが見当たらない段階で薄々は感じていましたが、PCとの接続には絶縁インタフェースが必須になります。
■注意点その2

 このポットは通電している限りセメント抵抗が常に発熱します。半波整流ですので半分を使っているとして、実効値の半分の50V - 5V = 45Vを820Ωで消費すると平均的に約2.5W分のエネルギーでお釜を温め続けます。お釜は魔法瓶ではありませんし隙間から大気と通通ですので、周りをほんのり温めます。恒温槽として使う場合、ヒータを完全にOFFできないので微妙な温度調節は期待できないかもしれません。


つづく

Lepy LP-2024A+を2入力にする改造

 LP-2024A+を知人に頂きしばらく使っていました。値段の割に良い音がすると話題のアンプです。

f:id:jun930:20201115141315j:plain

 入力は3.5mmステレオジャックとRCAピンジャックの2つですが、入力切替スイッチはありません。両入力端子は導通されており2入力と言うよりは電気的には1入力の仕様になっています。

 普段はテレビのオーディオ出力を受けているのですが、加えてbluethoothオーディオの受信機もこれにつなげたくなり無理やり2入力にしたところ音が小さくなっていました。セレクタを設けて切り替えにするのもイマイチです。bluethoothオーディオはスマホやPCからそれぞれつなげたい時につなげるので、操作はbluethoothの接続だけにしたいと思いました。

 と言うことで、LP-2024A+の入力端子の裏側にミキサー回路を追加することにしました。

f:id:jun930:20201115141521j:plain

 入力コネクタは左下に2つ並んでいます。元々はその隣にスピーカー端子もあったのですが、粗悪な作りで早々に壊れてしまい取り外してケーブル直結、その先に端子ブロックを半田して使っています。

 入力された信号はC30,31を通りボリュームに入ります。ボリュームが初段のオペアンプ(NJM4580D)で作る反転増幅回路の増幅率を決める抵抗比を作っています。

f:id:jun930:20201115142343j:plain

 カップリングコンデンサ(C30,31)の間にミキサーを挿入するために2.2uF無極性のケミコンを撤去しました。

f:id:jun930:20201115143004j:plain

 3.5mmステレオジャックとRCAピンジャックを導通しているパターンをカットし、RCAピンジャック側に入っている分圧抵抗と同じ回路をステレオジャック側にも作ります。

f:id:jun930:20201115143235p:plain

 ミキサー回路は初段と同じオペアンプ(NJM4580D)を使いこんな感じにしました。反転増幅回路の増幅率は-1です。

f:id:jun930:20201115143435j:plain

f:id:jun930:20201115143516j:plain

 ミキサー回路の基板を作りオペアンプに両面テープを貼りアンプの空きスペースに付けました。各所からバイパスする線を引き回して完成です。

 2入力同時接続でも音が小さくなることはなくミックスされて出力されるようになりました。頂きもののアンプまだまだ活躍できそうです。

 

QFPの手はんだ

 前にステンシルをビールの空き缶で自作する記事を書きました。あの方法は使用するドリルの径で精度が決まります。手持ちのドリルは0.5mmが一番細くQFPパッケージをブリッジなく仕上げるのはなかなか難しです。0.3mmを揃えればいいのかもしれませんが、0.5mmの刃物でも日常的に折ってしまう自分には0.3mmを扱いきれる自信がありません。

 そんな状況で、QFPパッケージの使用頻度も高く、ステンシルなしの試作実装では手はんだを余儀なくされています。これを手はんだする場合、一般的に端の1,2ピンを仮止めしてからフラックスを十分に効かせて小手を滑らす様に半田を流し、ブリッジははんだ吸い取り線で修正する方法が紹介されており、長い間そのように付けていました。

f:id:jun930:20201112132627p:plain

 あるとき、工場から納品された基板で、はんだレベラーが厚めに処理されているものに出会いました。フラックスを塗布して足を温めらたそのまま付いてしまうのでは?と思いやってみたらブリッジもなく非常に綺麗に付いたのです。

 はんだレベラーの厚みは基板工場によって差異がありますので毎回うまく行くとは限りません。ですから、フラックスを効かせたランドに対して小手先に糸はんだをのせて滑らせる前処理を行うようにしています。ICのピンの裏側にも予めフラックスを効かせて、はんだを盛ったランドの上にICを載せ、順番にピンを温めればブリッジすることなく綺麗に付けられるようになりました。

f:id:jun930:20201112132653p:plain

 これまでQFPの手はんだはブリッジを修正する手間が憂鬱でしが、この方法を行うようになってからはブリッジの憂鬱から解放されました。

缶ビールでステンシル

 電子工作の世界も半田コテと糸ハンダを使った実装が厳しくなってきました。表面実装部品を使うことが当り前になり、スルーホール部品の使用頻度が少なくなりました。それに伴い部品実装はクリームハンダとリフローを使う方法が主流です。

 時代に抗えず我が家もクリームハンダ実装を行います。ところがクリームハンダの塗布が今ひとつ厄介なのです。沢山の基板を作る場合は基板を工場発注すると同時にクリームハンダ用のステンシルも注文してしまうのですが、試作段階の基板や一品モノの基板を作るときなど、ステンシルを発注するのがもったいないなぁと思われるケースです。

 爪楊枝やら何やらを駆使して手作業でクリームハンダをランドに置く作業はそれはそれはしんどい作業なのです。この苦痛を何とかしたいと思い、缶ビールの空き缶をステンシルとして使うことを始めています。

f:id:jun930:20201103142528j:plain

 ビールを飲んだ後は、捨てる缶をハサミでチョキチョキしておきます。設計した基板データのランド部分に穴データを沢山配置してエクセロンファイルに出力してG-CODEに変換します。そいつをNCにかけて穴あけします。

f:id:jun930:20201103142802j:plain

 この方法良いところはG-CODEが簡単に作れるところです。普通にドリルデータを作るだけなのでエクセロンファイルをFlatCAMに読み込んでG-CODEを作れば良いだけです。ドリルの径が1つでOKならばツールチェンジしなくて良いのでG-CODEを流しておきさえすれば後は自動的にでき上がります。上の写真は0.9mmのドリルでビール缶に穴を開けた様子です。ドリルでも連続して打てば長穴っぽい物ができます。

 QFPパッケージくらいになるとこの方法ではさすがに厳しいですが、クリームハンダを手で塗布する苦行から大幅に解放されることは確かなのと、今ビールを飲まねばならぬ止むに止まれぬ理由ができる副作用もあって、なかなか良い手法なのであります。

折らない折る刃(OLFA)

 カッターナイフの用途を思い返しますと、ガラエポ基板のパターンカットとか、回路にパッチを当てるときにレジストを剥すとか、錆びを削るとか、紙以外のものを取り扱うことが圧倒的に多いです。

■常に酷使さる刃先

 紙以外の用途に使うと切れ味が悪くなるのは勿論、先端の折れや削れてしまうこともしばしばあります。少々切れ味が悪くなったからと言って刃を折っていると早々に短くなってなってしまいますから、少々の場合は刃先を研ぎ直すようにしています。

 先日、割れた皿を瞬間接着剤で付ける位置を失敗しやり直しになったとき、断面に残った接着剤をこそぐ作業も刃先でゴリゴリしました。ちょっと硬めの陶器の断面を相手に刃先を酷使した結果、先が丸くなってしまいました。

■丸まった刃先は復活できるの?

 折ってしまえば一瞬で切れ味回復なのですが、これを研いで使い物になるのか?と思ったわけです。これまでは黄色の両刃部分を包丁と同じように研いでいましたが、流石に先が丸いと、折ったときの様な切れ味にはなりません。

f:id:jun930:20201103102241p:plain

OLFAの切先

 そこで、ダイヤモンド砥石を使って刃の先端部分の赤い線の部分を落としてみました。見事に切れ味が戻りました、まぁ当り前ですよね。

■盲点?

 先端部を折るか砥石で落とすかの違いでやっている事は同じ、何故これまでここを研がなかったのか不思議です。ある種の盲点だったのかもしれませんけど。今後は刃を研ぐときは赤い部分も少し落とすことにします。

 もう一つの使い方として、刃と反対側の角も何か硬い物をこそぐときに使うので、丸くなる傾向にあるのですが、赤い部分を落とせばこちらの角も復活するのです。まぁ当り前ですけど・・・

 この味を占めてしまったからには、今後OLFAを折ることはなくなるのかもしれません。

STM32F746G-DISCOでUSBホストにキーボードを接続するメモ

 マイコン関連の工作をしているとシリアルデータやピンの変化を長時間ロギングしたいことが多々ある訳ですがPCを使ってログを収集していると何かと不便で、独立したデータロガーが欲しいと思っていました。そんなとき目に留まったのがSTM32F746G-DISCOでした。LCD、SDカード、Arduinoピン互換の端子があり、ロガーにはぴったりのボードだと思いました。

f:id:jun930:20200818145454p:plain

 早速データをSDカードに保存するコードを書いてみたわけですが、データ取得を止めずにデータを抜き出したい、ログを別のファイル名にしたい、ターゲットボードにコマンドを送りたい、などの機能が欲しくなりUSBキーボードからコマンドを送れるようにすることにしました。
 そこで、STM32にUSBホストを作りUSBキーボードを機能させるまでのメモを残しておこうと思います。最初に行うことはSTM32CubeMXでボードを指定してしまうことです。ボードを指定すれば回路図を開いて個々に設定する手間が省け粗方な設定はよろしく行われます。

f:id:jun930:20200818142912p:plain

 USB関連で設定を変更したヵ所は、MiddlewareのUSB_HOSTを選択してClass for FS IPでHIDを選択したのみです。その他、FREERTOSは使わないことにしました。

f:id:jun930:20200818143245p:plain

 ここまでの設定ができたら、コードを生成して正常にコンパイルできることを確認です。(開発環境周りは割愛)

 キーボードの押下イベントを受けられるように自分のコードの任意の場所に以下の関数を作成します。(PRINTF1の部分を適宜変更して使用)

void USBH_HID_EventCallback(USBH_HandleTypeDef *phost)
{
    uint8_t key;
    HID_KEYBD_Info_TypeDef *pki;

    if(USBH_HID_GetDeviceType(phost) == HID_KEYBOARD){
        pki = USBH_HID_GetKeybdInfo(phost);
        key = USBH_HID_GetASCIICode(pki);
        if(key){
            PRINTF1("%c", key);
        }
    }
}

 最後に自分のコードのメインループから、MX_USB_HOST_Process();を呼び出すようにします。Arduino風に書くと、以下のような感じ。

void loop(void)
{
    MX_USB_HOST_Process();
}

  USBキーボードはCN13(USB_FS)の端子に接続しましょう。キー配列は101となっているようです。配列を変更したい場合は、usbh_hid_keybd.cの配列変数を編集すれば良さそうです。

 

以上