とりとめもないBLOG

ただの日記です

安定化電源「LONGWEI LW-K3010D」修理

2023-07-05 10:00:00 | 工作

昨日書いた通り、新しい安定化電源を買ったので、前に使っていたポテンショメータの調子があまり良くない安定化電源「LONGWEI LW-K3010D」の修理を行う事にした。
修理といってもポテンショメータを新しい物に交換するだけなので、たいした手間ではない。
元からついていたポテンショメータはWXD3-12-1Wという物で、10kΩ 1Wという仕様になっている。
で、もう少し信頼性の高そうなポテンショメータで代わりになりそうなのが無いか国内のECサイトで探してみたのだけれど、サイズが大きかったり、仕様が合わなかったりでコレといったものを見つける事ができなかった。amazonで「WXD3-12-1W」で検索すれば同じものは売られているのだけれど、よく知らないメーカーなのにそこそこ高いのだ。
どうせ名も知らないメーカーの物を購入するならAliexpressで購入した方が安かったので、そちらで購入する事にした。型番はWXD3-13-2Wの10kΩという事で、壊れかけポテンショメータと同じような型番となっている。ケースの形状もそっくりだし、端子の出し方も同じなので、ラベルに書かれているメーカーは違うけれど、作っているところは同じなのかな。

サイズは新しく購入した方が、全体的に少し長くて、ボディー部分だけではなく、つまみの部分も長い。 調整幅は0~10kΩなのは同じだが、そこに至るまでのつまみの回転数は新しく購入した方が多くなってしまった。 まぁ、少しだけ微調整しやすくなったとポジティブに考える事にしよう。

新しいポテンショメータに付け替えて電源のボディーに取り付けると、予想通りツマミのサイズが合わず、少し飛び出してしまう。実用上問題無いので、気が向いたら適当なツマミに交換する事にしよう。

 

 

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

DINレールマウンター

2023-06-27 15:00:00 | 工作

最近電子工作への興味が一段落したので、3Dプリンターの稼働率が下がり気味で、折角あるのに勿体ないなぁという事で、いくつか作ってみることにした。
一つは受領印等のデータ印とスタンプインクを置いておく台のような物。もう一つはDINレールマウンターを2種類。
最初はUltiMaker Thingiverseにあった、こちらのDINレールマウンターを作ってみた。
この「DIN Rail Development Rig」はCADデータも公開してくれている。
シンプルで良いプロダクトなのだが、monotaroブランドの安価なDINレールにはネジ穴側のプレート部にもリブが付いていて、このデザインでは取り付けできない。 そこで、これを参考にして、適当に作り直すことにした。

作り直した3DデータはGithubにアップしておく。

内容はほとんど同じなので、手持ちのDINレールによって使い分けするとしよう。

スタンプ台は現物を定規で測りながら、カンで適当にデザインしていく。出来上がったデザインがこれ。

まぁ、このままだとスタンプインクの蓋がゴム印にインクを付ける際の振動で閉まってしまうので、蓋が勝手に閉じないように蓋が当たる壁面に適当な板磁石を貼っておく。 ゴム板磁石が黒色なので、スタンプ台本体は黒色のフィラメントで作る。

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

Lolin WeMos D1 miniのUSB-Serialが壊れた

2023-05-11 10:06:06 | 工作

以前からLED時計やLCD時計でお世話になっているD1miniだが、7セグLED時計のプログラムを書き換えようとPCと接続したところ、シリアルポートとしては認識するものの、プログラムの書き込みができない状況になっていた。
電源ラインは生きているようで、時計としては正常に動作するのでESP8266が壊れている訳ではないし、USB接続時にシリアルポートとして認識しているのでUSB-UARTチップのCH340が壊れた訳でも無さそう。たぶんCH340とESP8266の接続部分がダメになったのかな…
何をどうやっても復活しなさそうな感じだったので、別のUSB-Serial基板を使ってプログラムを書き換える事にした。

基板のシルク印刷で書かれている型番「AE-FT231X」で検索してみたら、どうやら秋月通商で販売されていた基板のようだ。
いつ買ったかのかも覚えていないUSB-UART変換基板なのだが、チップはFTDIのFT231Xを使っているのでCH340よりは高級というか安心して使用できる気がする。
この基板の良いところは3.3V出力や5V出力のピンがある事で、とりあえずD1miniのプログラムを書き換えるだけなら、電源や信号系の配線を全てこの基板から取れるので面倒がない。

D1miniとAE-FT231Xの接続は簡単で、
AE-FT231X - D1 mini
 3.3VOUT   -  3V3
 GND         -  G
 TXD          -  RX
 RXD          -  TX
と繋ぐだけだ。
他にはD1miniを書き換えモードにする為に、D3ポートをGNDに落としながらRESETボタンを押す必要があるので、その配線も必要。

書き換えの手順としては、
1.ArduinoIDEを起動して、書き込みたいスケッチを用意する。
2.AE-FT231Xを接続すると仮想COMポートが出現するので、そのポートにD1miniを割り当てる。
3.上記の通り接続してから、D3ポートをGNDとショートさせながらRESETボタンを押してやると、D1miniが書き込みモードに入るので、D3とRESETを共にオープン状態にして、ArduinoIDEでスケッチの書き込みを開始する。

というわけで、何とかプログラムの書き換えはできたのだけれど、思いのほか面倒くさいので、次にプログラムを書き換える時には、D1miniのモジュールごと交換した方が良いかな。
モジュールの値段も使い捨てレベルの値段なので、時間をかけて作業する方がコスパが悪い。


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

MAX7219 8x8ドットマトリックスLEDモジュールで時計とカレンダー

2023-05-06 00:52:22 | 工作

何気なしに購入した4連の8x8ドットマトリックスLEDモジュールなのだが、これといって使い道が思い浮かばなかったので、例によって時計にしてしまう事にした。
発想が貧困なので、他に実用性のある物が思い浮かばない。
今回も使用するマイコンはEPS8266だ。 D1 miniシリーズは小さい割にはDIPサイズでIOポートが並んでいて、電源がUSBから取れるし、プログラムの書き換えも同じUSBの口からできるので、手軽すぎてなかなか手放せない。
I2C一発だけで制御できるような工作物なら、もっと小さい基板やモジュールでもいけると思うのだけれど、結局電源周りの回路なんかを用意する必要が出てくるので、大きさ的には大差無いかなと。
なんといってもD1 miniシリーズは200円前半で購入できてしまうので、最悪壊れても財布へのダメージが小さいのが良い。

さて、昔からそうなのだが、私は日付に執着心が無いのか、今日が何月何日何曜日なのかをよく忘れてしまう。
いや、普通のサラリーマンなので曜日は雰囲気で分かるのだが、長期休みに突入したら曜日の感覚もかなり怪しくなる。
そこで日付と曜日を表示するだけのカレンダー専用機と、時計+カレンダーのごく標準的な表示の物を作る事にした。
手元にあるドットマトリックスLEDが8x8 4連の物で赤LEDが1つ、緑LEDが2つあったので、前者をカレンダー専用、後者を時計+カレンダーにする。

前回作ったLCD1602やLCD2004と違って、表示するフォントは全て自作する必要がある。というか、自作しないと自分の欲しいデザインのフォントが表示できない。
LEDのドット数の制限があるとはいえ、デザインセンス皆無な私にはフォントデザインはそれなりにハードルが高い為、いつも通りインターネット上に公開されているフォントをパクったり加工したりして利用する事にする。
フォントエディターに関しては、MD_MAX72XX Font Editorという、そのままな名前の素晴らしいサイトが存在するので、そちらを使わせて頂いた。
フォントやプログラムの参考にさせて頂いたのは、こちらのページ。 あとは日付用の小さいフォントや曜日のフォントは自作した。曜日の表記は日本人らしく漢字。1文字で済む上に、一目で何曜日か理解できるのが良い。
マトリックスLEDのキャラクター表示やスクロールに関しては、MD_MAX72xx.hや、MD_Parola.hといった、素晴らしいライブラリが存在してるので、ありがたく使わせて頂く。

まず作成したのは「時計+カレンダー」。時計をメインとしたかったので、カレンダー部分のフォントは小さめに。

折角のマトリックスLEDなのに文字が流れないのも寂しいと思ったので、30秒に1回程度の割合で、日付をスクロールさせて西暦年を表示させるようにした。ソースやフォントデータ、LEDユニットを収めるケースの3Dデータについては此方

次に作成したのは「カレンダー」。

フォントに関しては、先に作った時計部分で使用したフォントを使って大きく表示するようにした。これも日付表示だけだと寂しい気がしたので、1分毎に数秒だけ現在時刻を表示するようにしてみた。
カレンダーのソース、フォントデータ、ケースの3Dデータは此方

8x8マトリックスLEDが思っていたよりも小さかったので、作りながら視認性はどうかと心配していたが、LEDの明るさもあって想像以上に視認性は高い。

今は見慣れたという事もあって、大きすぎず小さすぎず丁度よい大きさかなぁと思っている。

参考にしたホームページ
がとらぼ
MD_MAX72XX Font Editor

 

 

 

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

LCD 1602あるいは2004で大きいフォントの時計を作ってみる

2023-03-31 21:00:00 | 工作

買ったまま放置状態の電子工作用の部品を活用するべく、ここ最近は時計ばかり作っているのだが、また懲りずに時計を作成した。
今回使用したのは1602とか2004と呼ばれるキャラクター液晶ディスプレイで、それぞれ横16桁×縦2桁、横20桁×縦4桁の文字が表示可能なディスプレイとなっている。
これらの液晶ディスプレイには予め文字や記号等がプリセットされているのだが、大きいフォントなどというものは存在しないので、自ら適当なキャラクターブロックを作成して、それらを組み合わせて文字を表現するしかない。 作業的にはドットマトリックスLEDで文字を書く作業に似ているかもしれない。

さて、外字登録部分にキャラクターブロックをぶち込んで、それらを組み合わせればそこそこ綺麗なフォントが表示できるんじゃないかと思って、とりあえず1602用に0~9までの数字のフォントのブロックを作りプログラムを書いたのだが、何をどうやっても最後の8ブロック分?しか文字が表示されない。
で、調べてみると1602や2004で外字を登録できるエリアは8ブロック分しか無いらしい。
だから世に出回ってる1602や2004の大きいフォントの時計はあんなにカクカクしたフォントなのかと理解できた次第。
そんなわけで、先人に倣って何とか8キャラクター追加するだけで大きいフォントを作ってみる。 といっても、インターネット上に出回っている作例のフォントデータを再利用させてもらうだけで、オリジナルの要素はほぼ無い。
各フォントブロックの作成は「LCD Custom Character Generator」というサイトで作成した。又、絵柄の確認は「ミニドット絵メーカー3」というサイトを利用させて頂いた。

最初に作ったのはLCD2004でeps8266とのデータのやり取りはI2Cで行っている。

ESP8266とLCDの間のケーブルが4本だけで済むので非常に楽だからだ。 この作品に関しては、インターネットに公開されていたプログラムをほぼそのまま使わせてもらった。 温度や湿度の表示は必要なかったので、その部分のキャラクタースクロール処理等は停止させている。 日付や曜日に関しては日本人に馴染みのある表記に変更した。
ソースはこちらに置いておく。必要ないコードも混ざっているが、とりあえず動けば良いという事で…

次にLCD1602とesp8266で作成。

こちらも2004と同様にI2Cでの接続となっている。 フォントブロックのパターンはインターネット上にあったものを参考にさせてもらった。組み合わせに関しては自分が見やすいように適当に改変している。 曜日は表示させるだけの余裕がなかった。
 
この時計のソースはこちらに置いておく。

いずれもNTPから時刻を取得して時刻補正しているだけで、7セグLED時計の時と同じくRTCは利用していないので無線LANが通じない場所では利用できない。 まぁ、月差が分単位で発生するぐらい無線LANが止まるような環境で使う事は無いので気にしない事にする。
あと、今回は複数のSSIDを設定し電波の強い方を使うようにしてみた。

 

 

 

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

ATOMSTACK P9 M50で透明のアクリル板の加工 その2

2023-03-30 00:42:33 | 工作

前回に引き続き、スモークの透明アクリル(3mm)の切断加工を試みてみた。
擦りガラス並みに曇らせた2mmのスモークの透明アクリルは切断した実績があるのだけれど、透明の物は今回が初めてだ。
結論から書くと、普通の透明アクリルよりはマシといった程度で、カットには至らなかった。
中古の傷付アクリル板なので、保護シートが無かった為、直接レーザーを当ててカットを試みたのだが、表面側の深さ0.5mmぐらいが溶けた程度。 パラメーターは出力100%、速度は180mm/min、1パス。

そんなわけで、表面に水溶性塗料を塗布して、速度を150mm/min、2パスでカットしてみたが、多少深く掘れるものの、焦げ付きが酷くなり、カット幅も広がって、出来栄えが悪くなっただけだった。

もっと適切な方法があるのかもしれないが、今のところ厚みのある透明系アクリル板に関しては、どうやっても切れない気がする。

とりあえず、今作ってる工作物でスモークの板が必要だったので、厚み1mmのスモーク(透明)塩ビ板をカットしてみたが、これについては、いつも通り出力100%、200mm/min、1パスで切断できるので、もうコレでいいかなぁ…
ただ、塩ビ板は使ってみて思ったのだけれど、かなり傷が付きやすい。透明度を維持する必要があるような用途には使いにくいかもしれない。

 

 

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

ATOMSTACK P9 M50で透明のアクリル板の加工

2023-03-05 16:16:05 | 工作

ATOMSTACK P9 M50を購入した事を以前ブログに書いたところ、透明のアクリル板が切れるかという質問を頂いた。 透明のアクリル板の加工に関しては興味があったので、時間のある時にでも試してみようと思っていたのだけれど、忙しかったり天気が悪かったりでなかなかテストできず、結局質問を頂いてから20日ぐらい経過してしまった。
で、時間ができたので早速試してみたのだけれど、結論から書くと、2mmのアクリル板ですらカットできず。 パラメーター弄ったり切り方を変えれば切れるのかもしれないけれど、切れても切り口や寸法精度が微妙な感じになりそうだったので、早々に諦めてしまった。

まず、参考の為、黒のアクリル板(2mm)をカットしてみる。
アクリルのカット時は保護シートを付けたままで行うと焦げが素材に付着しにくくなるそうなので、今回は保護シートをつけたままでカット。
使用ソフト LaserGRBL
Border Speed 200mm/min
Laser Mode M3-Constant Power
S-MIN 0%
S-MAX 100%
といった感じのパラメーター設定で1パスでカットする。
レーザーが当たる表面は

こんな感じで焦げも見えず、綺麗なもの。
裏面は

焼き切った後の煤が裏面に排出されるのか、裏面の保護シートにレーザーが反射してるのか分からないけれど、表面に比べてカット痕が太いし、焦げている。
で、カット自体は特に問題なくできていて、

このような感じ。切断面はツルツルという感じではないけれど、エッジは出ているので私の用途的には問題ないと思う。
さて、透明アクリル板の加工だが、パラメーターは上と同じ。
まずは保護シート無の部分でカットを試みてみる。

まぁ、当然の結果だが、レーザーが透過してしまうので、まともにカットできない。
おそらくこの感じだと彫刻すら難しいと思われる。 中途半端に傷が入っただけな感じ。
次に保護シートがついた状態でカットを試みる。これでカットできればよかったのだが、よくわからない状態になった。
レーザーが直接当たる表面は綺麗に模様が入っているのだが、深さ的には爪が引っかかるかどうかといった程度。

これは1パスでも2パスでも同様。
裏面の様子も基本的には黒アクリルと同じだが、黒アクリルの時と違って、かなり太く彫られている。
カットした直後の裏面の様子は下の写真の右側のような感じで、

保護シートだかアクリルだかの焦げた物が溝の中に詰まっている。
で、その煤を取り除くとV溝のような形でアクリルが削れているのだが、表面までは溝が到達していない。
1パスでも2パスでも切断には至らず、2パスでカットすると溝の幅が広がるだけで、深さは1パスの時と殆ど変わらないようだ。

1パスの裏面が

2パスだと

こんな雰囲気。
なので、もしかすると敢えてレーザーのピント位置を微妙にずらして、太目のレーザーで速度を落としてやればカットできるかもしれない。
或いは表面だけ保護シートを残しておいて、裏面の保護シートを剥がして、レーザーをしっかりと透過させてやれば、綺麗にカットできるかも…今度時間があるときに試してみよう。

アクリルばっかり切っていても楽しくないので、木片に写真を印刷してみた。
何パターンか試してみたが、木目に対して斜め方向に走査させるのが一番綺麗に見える気がする。
パラメーターは
Border Speed 3000mm/min
Laser Mode M3-Constant Power
S-MIN 0%
S-MAX 30%

 

 

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

PICマイコンデジタル時計キット Ver.3の表示部分だけ使う

2022-12-27 12:30:00 | 工作

前回から引き続き7セグLEDを利用したNTP同期型時計の作成。
先日の「超大型4桁LED表示キット」は秋月電子通商が販売している「超大型表示マイコンデジタル時計キットVer.4」の表示部分だけの基板なのだが、これを入手した当時はVer.4は販売されておらず、Ver.3が販売されていた。
で、Ver.3と超大型~表示キットを購入した結果、ver.3に元々付いていた表示部分の基板と7セグLEDが丸ごと使わずに残った。
このまま使わずに放置するのも勿体ないし、ICやマイコンも余分に買って余っているので、前回と同じような物の小型版を作る事にした。

このぐらいの大きさになるとケースは分割しなくても印刷可能で、表面のアクリル板も小さくて済む。端材を使ったので微妙に大きさが足りないが、自分で使う分には困らないだろう。
WeMOS D1 Mini互換ボードの取付部分は前回のケースで作ったから、少し微調整してほぼそのまま。縦横サイズはなるべく小さくしようと思ったので、今回ボタンは表示面に実装する。
適当な高さのタクトスイッチを表示基板の上に接着してタクトスイッチ用のスナップカバーを使って、表示面のアクリルからボタンが1~2mm程度飛び出すような感じにする。ボタンの接着位置は適当なので、アクリル板の穴位置は現物合わせで。穴径はスナップカバーがスムーズに動くギリギリのサイズを狙ってドリル径を0.1mmずつ太くして調整。

タクトスイッチスナップカバーはAliexpressで購入。この手の部品はamazonで購入しても結局中国から送ってくる事が多いから、amazonで購入する意味は殆ど無い。
因みにピン配列は「超大型4桁LED表示キット」と微妙に異なっていたので、DPと月日表示用のLEDの取り扱い部分を入れ替えたり、TM1637と基板のピンヘッダとの接続を少し変えたりしたけれど、基本的には殆ど前回と同じ。

まだマイコンとTM1637は余っているので、次は月差が1分ぐらい発生してしまう安物LED時計を改造してみようかな。

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

レーザー彫刻機「Atomstack P9 M50」を購入する

2022-12-18 14:47:55 | 工作

つい最近まで数万円で購入できる半導体レーザーで彫刻なんて出力が小さくて時間がかかるから面倒くさいと思っていたのだが、いつの間にか3.5万円も出せばレーザー出力10Wの彫刻機が手に入るようになっていた。(ブラックフライデー価格だったようで、今は5万円弱ぐらいするみたい)
今回購入したのは「ATOMSTACK P9 M50」という製品でXYのプロッター部分は1アーム式のお手軽な感じの物。

5Wレーザーを2本タンデムして10Wを稼ぎ出しているのだが、10万円出せば4本タンデムして20W出力の製品や、20万円出せば6本タンデムの30W出力の製品もある。
レーザーを束ねて出力を上げるには、プリズムやレンズ、レーザー発信機の取付、その他諸々の精度が重要になると思うのだけれど、なるほどホビーユース程度の精度ならこの金額で販売できるのか…
この手の製品は3Dプリンター同様、日本のamazonでも売られているので、色々な中華ECサイトと値段を比べなら、購入すれば良いと思う。メーカーや工場が中国や台湾なので、はっきり言って価格メリットが無ければ日本のECサイトで買うメリットは無い。amazonのマケプレ出品の商品を買ったところで、不具合があってもamazonが保証してくれる訳でも無く、出品者と交渉する必要があるなら、Aliexpressと何ら変わらない。

とりあえず、Inkscapeで画像を作ってLaserGRBLでレーザー彫刻機用のデータを作成。 1mm厚のアクリル板を四角く切り出すだけなら、LaserGRBLでも特に問題無く加工できた。

ATOMSTACKのM50を使って2.8mm厚のアクリルを切る際の設定はLaserGRBLの「Laser & Material Database」によると、100%出力、移動速度180mm/minで1パスらしいので、1mm厚なら200mm/minぐらいにすれば良いかと思ったのだが、余裕でカットできてしまったので、もう少し速度を上げても大丈夫かもしれない。
因みにLaserGRBLはラスターデータメインのソフトなので、カットの順番をセットできないから、本格的にレーザーカットを始めるならLightBurnを買った方が良いかな。
今のところは四角や丸に切るか、画像取り込みの彫刻しかしていないので、LaserGRBLでも問題ない。
問題があるとすれば、対象物をレーザーで焼くので、当たり前の事ながら煙と臭いが凄く出るから、屋内ではまともに作業する事ができない点だろう。特に火災報知器が設置されている場所では煙感知式だと間違いなく発報してしまうだろうし、樹脂や木材が焦げた臭いは、思いのほか長く室内に滞留するので、家族から忌み嫌われる事は確実だ。
住宅街やマンションのベランダでの作業でも臭いが隣近所に流れるので、何事かと思われるだろうし、レーザーカットそのものよりも作業環境づくりの方が大変かもしれない。
尚、今回カットしたアクリル板は、先日作成した7セグLED時計の表示パネルカバーとして使用。

鋸やカッターよりも精度が出ていて、切断面もかなり綺麗に切れたので、グレアのまま使ってみたのだけれど、やっぱり色々と反射して見え辛いかなぁ。見た目は綺麗なんだけど…

 

 

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

秋月電子通商 超大型4桁LED表示キット K-04380

2022-12-06 18:00:00 | 工作

超大型と書かれているが、先日作成した4インチ7セグLEDよりは小さい。
2.2インチの16セグLEDを7セグLEDとして利用する為の基板で、別売のマイコンデジタル時計キットと合わせて利用する前提の基板として販売されている。
2.2インチのアノードコモン16セグLEDは随分前にデジットで投げ売りされていた物を購入していて、長らく放置状態だった。
元々時計として使うつもり購入していたので、この秋月の基板もほぼ同時期に購入していたのだが、買って満足してしまって同様に放置状態。
放置される原因は概ね基板むき出しで使うのが嫌で、ケースを用意するのが面倒くさいからなのだけれど、ここ数年で3Dプリンターの利用環境が随分と良くなった事で積んだままの電子工作が捗るようになった。

今回はこの4桁LED表示キットを利用して、日付表示ユニットを作成する。まぁ、折角なのでボタンを押せば時計が表示できるようにはしておきたい。
基板の回路図は秋月の公式ページに書かれているので、そちらを参照すれば良い。
マイコンに関してはWeMOS D1 Miniの互換ボードを使用。

Arduino IDE上でのボード選択は「LOLIN(WEMOS)D1 R2 & mini」で問題無く動作した。USBのコネクターがType-Cになっているので、microUSBよりは抜挿への耐久性は期待できるかもしれない。
このボードはESP8266(ESP-12F)が使われているのでWiFiが利用できる。技適は通過しているのかどうかは分からないが、技適マークは無い。
既に無許可の海外製品だらけで汚れまくっている2.4GHz帯ではあるが、日本の法律では特定の条件を除いてFCCやCEやWi-Fi CERTIFIEDに通っていたところで、周囲に電波を出してはいけない事になっているから、電波を出す際にはその辺りを留意する事。
まぁ理屈だけで考えればアクセスポイントと繋いで使うのであれば、その周波数の波しか出ない訳で、技適に通っているAPを使って繋ぐ分には、何ら迷惑がかかる事は無いと思う。実際に計測したわけじゃないから想像でしかないけど。 たぶんUSB3.0の放射ノイズの方が酷い。

話が逸れた。今回の時計兼日付表示器の仕様としては、ESP8266を使ってNTPサーバーにアクセスして時刻を補正。 基本的に無線LANが繋がらない場所に持って行く予定は無いのでRTCは無し。 電源投入時とその後適当な間隔でNTPで時刻補正をかける事で対応する。
7セグLEDの制御はEPS8266で直接ドライブするにはピン数や電流量が足りないので、何故か10個程ストックしていたDIP仕様のTM1637というドライバーICを利用する。データシートはこちら

TM1637のDIP仕様はもう秋月では売っていなくて、amazonやaliexpressあたりで怪しげなのを買うしかない。国内流通在庫は探せばあるのかもしれないが面倒くさいので、素直にSOP仕様を購入するか、4桁までしか使わないなら、TM1630のDIP仕様を買った方が良いかもしれない。
ドライバーICを使うと抵抗とか考えなくても良くなるのが地味に有難い。

例によってラッピングワイヤーで繋ぐので、ピン配列だけ回路図で追いかけて、一覧表にまとめる。

LED_信号 TM1637 基板(K-04380) D1 mini
A 2 17  
B 3 18  
C 4 12  
D,月日LED-K 5 14  
E 6 13  
F 7 16  
G 8 15  
LED1,LED2-K 9 19  
DP   3  
DIG5(月日LED-A) 11 8  
DIG4,LED1-A 12 5,20  
DIG3 13 1  
DIG2 14 2  
DIG1 15 4  
GND 1   GND
VDD 16   5V
DIO 17   D1
CLK 18   D2
切替ボタン     D5

ドライバーICとマイコン間の接続は4芯だけなので楽だけど、ドライバーICと表示基板の間は結構接続ピン数が多い。

この秋月の基板で一か所に纏めてくれてるだけでも随分と有難いのだけれど…5台以上作るなら基板を作った方が良いかもしれない。

マイコンへのコーディングはいつも通りネット上に公開されているコードや既成ライブラリのサンプルコードのコピペ&改変。
esp8266のNTPを利用しての時間設定については、こちらのコードを拝借した。
先のページの解説によると、1時間に1回NTPサーバーに時刻を問い合わせているらしい。
今回利用したライブラリは「Seeed-Studio/Grove_4Digital_Display」と、前回に引き続き「ButtonEvents」。
Grove_4Digital_Displayについては、リンク先の説明を読めばわかるとおり、TM1637を利用した4桁7セグの時計ユニットを対象としたライブラリで、当然の事ながらそれが使いやすいような形になっているのだが、ライブラリ内の設定ファイル「TM1637.h」の最後の方に「const int DIGITS = 」という項目があって、利用桁数を変更できるようになっている。
今回はClockPoint(時計モードの際に0.5秒毎に点滅するアレ)とは別に月日表示の際にLEDを点灯させたいので、5桁目の適当なセグメントを利用する事にした。
このライブラリに付属しているClockDisplay.inoというサンプルプログラムの一部を利用してTM1637を制御する。
ClockPointの制御に関しては、DPセグメントをON/OFFしているので、秋月基板上のDPには接続せず、基板上のClockPoint(LED1,2)に接続する。
秋月基板のDPはLED4/LED6(時・分のそれぞれ一桁目)にしか接続されていないので月日表示の目印として使うには丁度良かったのだけれど、日付や時間を表示している際には、いずれのLEDも常時電圧が印加されているので、TM1637以外でGNDに落とす必要があって面倒くさかったので、別に2つLEDを用意して5桁目のアノードとDセグメントに接続した。
Dセグメントは7セグの下の横棒の事なので、5桁目を「1」や「8」に切り替えて点灯、消灯を制御している。
詳しい制御はコードを読んだ方が早いかもしれない。

#include Arduino.h
#include ESP8266WiFi.h
#include time.h
#include TM1637.h
#include ButtonEvents.h

#define WIFI_SSID   "hoge_ID"
#define WIFI_PASSWORD   "hoge_Pass"
#define JST     3600*9

#define ON 1
#define OFF 0

#define WAT 500 //ウェイト時間(ms)

// Define Digital Pins
#define CLK 4
#define DIO 5
TM1637 tm1637(CLK, DIO);

int8_t TimeDisp[] = {0x00, 0x00, 0x00, 0x00, 0x00};
unsigned char ClockPoint = 1;
const int mdled_pin = 12; //月日LED
const int button_pin    = 14; //表示切替ボタン
unsigned char DispMode = 0;
unsigned long wattime;

ButtonEvents change_button;

void setup() {
  Serial.begin(115200);
  delay(100);
  Serial.print("\n\nReset:\n");

  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while(WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(500);
  }
  Serial.println();
  Serial.printf("Connected, IP address: ");
  Serial.println(WiFi.localIP());
  configTzTime("JST-9", "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");   // 2.7.0以降, esp32コンパチ
  tm1637.init();
  tm1637.set(BRIGHTEST);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
  tm1637.clearDisplay();
  pinMode(mdled_pin, OUTPUT);
  pinMode(button_pin, INPUT_PULLUP);
  change_button.attach(button_pin);
  change_button.doubleTapTime(200);
  change_button.holdTime(5000);
  wattime = millis();
}

void loop() {
  while((millis() - wattime)
    change_button.update();
    if(change_button.tapped() == true) {
      DMode();
    }
  }
  if(DispMode) {
    TimeUpdate();
  } else {
    DateUpdate();
  }
  tm1637.display(TimeDisp);
  wattime = millis();

  //time_t t;
  //struct tm *tm;
  //static const char *wd[7] = {"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};
  //t = time(NULL);
  //tm = localtime(&t);
  /*Serial.printf("ESP8266/Arduino ver%s :  %04d/%02d/%02d(%s) %02d:%02d:%02d\n",
        __STR(ARDUINO_ESP8266_GIT_DESC),
        tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
        wd[tm->tm_wday],
        tm->tm_hour, tm->tm_min, tm->tm_sec);
        delay(1000); */
}

void TimeUpdate() {
  digitalWrite(mdled_pin, LOW);
  time_t t;
  struct tm *tm;
  t = time(NULL);
  tm = localtime(&t);
  ClockPoint = (~ClockPoint) & 0x01;
  if (ClockPoint) {
    tm1637.point(POINT_ON);
  } else {
    tm1637.point(POINT_OFF);
  }
    TimeDisp[0] = ((tm->tm_hour) / 10);
    TimeDisp[1] = ((tm->tm_hour) % 10);
    TimeDisp[2] = ((tm->tm_min) / 10);
    TimeDisp[3] = ((tm->tm_min) % 10);
    TimeDisp[4] = 1;
}

void DateUpdate() {
  digitalWrite(mdled_pin, HIGH);
  time_t t;
  struct tm *tm;
  t = time(NULL);
  tm = localtime(&t);
  tm1637.point(POINT_OFF);
    TimeDisp[0] = ((tm->tm_mon+1) / 10);
    TimeDisp[1] = ((tm->tm_mon+1) % 10);
    TimeDisp[2] = ((tm->tm_mday) / 10);
    TimeDisp[3] = ((tm->tm_mday) % 10);
    TimeDisp[4] = 8;
}

void DMode() {
    DispMode = (~DispMode) & 0x01;
}


各基板を収めるケースは手持ちの3Dプリンターでは一体形成品が印刷できなかったので、前回同様分割して印刷した。

今回は手抜きせずにマイコンボードを収める場所を作ったり、Type-Cのコネクターを繋いでメンテナンスができるように穴をあけたりしている。

なるべく高さを抑えたかったので、コンタクトピンを付けるにしても、高さを考えてカットする必要がある。

基板を作って直接実装してしまえば、あと3mmは追い込めるし、スッキリするから良いとは思うけれど、そこまでの完成度は求めていないからこの辺りが妥当なところだろう。
で、配線した基板とドライバーIC、ボタンスイッチをケースに入れて、グルーガンで固定。LEDが載ってる基板は更に4隅をネジ止めしておく。

あとはコレに適当な暗さのアクリル板を貼ってやれば、そこそこ見やすい時計&日付表示器になる。
因みに電源はType-CのコネクターからD1 mini互換ボードを経由し、D1 miniの5V出力をTM1637のVDDに接続している。 電流が足りるか分からなかったのだけれど、1週間以上動作させて問題無く動いているので、たぶん大丈夫なのだろう。
また、RTCを実装していないので、電源投入時に無線LANをつかみ損ねると暫く時計が初期化された状態で表示されるから、時刻補正されるまでは少し不安になるが、極力シンプルかつ安価に作りたかったので、我慢する事にしよう。

 

 

 

 

 

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

7セグメントLEDでカウンターの作成 その2

2022-11-27 18:21:43 | 工作

TPIC6C596がアノードコモン用のICなので、購入した7セグLEDも当然アノードコモンとなる。 ピン配列は購入したショップの説明欄に書かれていたので問題無かったのだけれど、セグメント毎のVf等のスペックが書かれていない。
で、色々と調べてみたら、共立電子に同じような商品が売られていたので、そちらを参考に実際に電圧を印加して確認した。結果A~Gは9V、DPは1.8Vだと思われる。今回DPを使う予定は無いけれど、TPIC6C596と接続するのであれば、リセット時等に電流が流れたりするので、それなりの制限抵抗を入れておかなければならない。
今回購入したTPIC6C596基板には最初から各セグメント毎に15Ωのチップ抵抗が実装されているが、もともと5インチ以上の7セグLEDでVf12V程度を想定している抵抗値なので、今回使用する4インチで使う場合は入力電圧自体を9V程度に収める必要があるし、そもそもDPには追加の制限抵抗が必須になる。
全部のセグメントに制限抵抗を追加するのは面倒くさいので入力電圧を調整する事で誤魔化す事にして、TPIC6C596基板を7セグLEDの背面に両面テープで張り付けてラッピングワイヤーで接続していく。

コンタクトピンが出ていてケーブルで接続する必要があり、行先がバラバラの場合という限られた条件では、ラッピングワイヤーは凄く便利だ。
半田付けすると故障時の部品の入替が面倒くさいし、ラッピングに比べて衝撃に案外弱い。まぁ、ラッピングも軸方向に引っ張れば抜けてしまったりするので、コンタクトピンが短すぎると使い難いところはある。
LEDの部分の作業はコレだけだ。配線距離が短いのは面倒が無くて助かる。 桁数を増やしたくなっても数百円のコントローラーボードとコントローラーボード間を繋ぐ為のケーブルを追加するだけで良いので、本当に有難い。
7セグLEDを保持する為のガワに関しては、3ユニットを収容できるような大きさの物を作れるような大きな3Dプリンターは持っていないし、持っていたとしても造形に失敗したら泣きそうなので、素直に1ユニット毎に作成する。

こうしておけば、後から桁数を増やしたくなった時に、中間ユニット用の保持部だけを作れば良い。
最初の造形物はLEDユニットの寸法通りに作成してしまって失敗。122mmの処を122mmで作れば当然入らない。印刷公差を考えて0.5~1.0mm程度は大きめに作る必要がある。ボタン取付用の穴も同様に0.5mm程度は大きくしておいた方が無難かもしれない。
まぁ、丸穴は最悪ドリルで拡張すれば良いので、0.2mm程度大きめの穴を開ければ使い物になるかも。
で、7セグLED保持部だが、内壁を0.5mm拡張しようとするとフライス盤で削るという方法が考えられるのだけれど、今回はインフィル充填率50%で作っているので、壁面を削ってしまうと強度的に問題が有りそうだ。
データを修正して作り直す方がフライス盤で修正するよりも面倒が無いし、その方が出来栄えも綺麗なので結局作り直すことにした。
しかし、所詮ホビー用の3Dプリンターなので1個作るのに9~12時間かかるのが辛い。
初回試作でボタン位置やケーブル通し溝に問題がある事が判明したので、無駄にはならなかったと思いたい。
こういう時にだけKP3Sぐらいの小さい3Dプリンターがもう一台欲しくなる。
総印刷時間に20時間以上かけて3桁分のケースを印刷しなおして7セグLEDを実装する。固定は全て両面テープ。

幅1mmのアクリル両面テープは携帯電話分解組み立ての際に裏蓋を固定する為に購入した物だが、ヒケの出ない接着剤として使用するのに便利で、今回の工作の際にもLEDの固定やケースとアクリル板を固定する際に大変役立っている。

アクリル板は元は普通のスモークの物だったが、それだとアクリル板を貼る前と大して見栄えが変わらなかったので、400番のペーパーを当てて摺ガラス調にする事でLEDの明かりがソフトになり、消灯しているセグメントやケース内の適当な配線や工作を見えにくくなった事で数字の視認性が良くなった。

電源に関しては10VのACアダプターを使用して、ATtiny88のVin及びTPIC6C596の12Vに入力する事で、7セグLEDのDP以外は制限抵抗の追加は無しとした。

5V系はATtiny88の5Vからの出力で全て賄う事ができている。
そんな感じのやっつけ電源なので、間違って12VのACアダプターを使ってしまうと、7セグLEDは壊れるかもしれない。
とりあえず半年程連続稼働させて問題なければ、そのまま継続使用しても大丈夫かなぁ…

 

 

 

 

 

 

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

7セグメントLEDでカウンターの作成 その1

2022-11-08 12:30:00 | 工作

4インチの7セグLEDを3つ使用してカウンター表示器を作成した。
といっても、昔の用にシフトレジスターを論理回路でゴチャゴチャする必要が無いので、作るのは非常に簡単だ。
今回作成したのは大型の7セグLEDを3つ並べて使用する物なのだけれど、将来的に4桁必要になるかもしれないという事から、1桁毎にTPIC6C596を取り付けて、このLEDドライバーをチェーン接続するという方式を取った。

この7セグLEDドライバー1つで制御できるのは一桁だけなのだが、これをディジーチェーンすると、いくらでも桁数を増やす事ができる。
カウンターの制御は当初Arduino nanoを使う予定だったのだが、既にヘッダピンを下向きに半田付けしてしまっていて、組み込みにくかった事と、最近Arduinoが互換品でもそれなりの値段になっていて(ヘタするとESP8266やEPS32のボードの方が安いぐらい)、使うのが勿体なかったので、

他に何か良いのが無いかと探してみた処、AtmelのATtiny88を見つけた。

このマイコンボード、実はnanoと勘違いして購入してしまった代物で、届いてからArduino nanoとは全く別物だと気づいて愕然としていたのだけれど、調べてみるとArduino IDEが使えるし、Vinや5Vout、EEPROM等、今回のカウンター作成で使いたい機能は一通り揃っていたので、試しに使ってみる事にした。
microUSB-Bのポートは付いているものの、USB制御チップが乗っていないので、シリアルで書き込みしないと駄目かなぁと思ったら、V-USBという仕組みを採用しているらしく、PCにドライバーを入れれば容易に認識した。
ArduinoIDEで使う際は、コンパイル後、ファームウェアを転送し始めたらPCとATtiny88をUSBケーブルで繋ぐ、もしくはATtiny88のリセットボタンを押してリブートするといった作法が必要になるけれど、慣れればCOMポートの設定も必要ないし便利といえば便利かもしれない。
カウンターのプログラムは多分に漏れず他人の書いたコードのコピペで、それを元にして実装したい機能に合わせてライブラリを追加したり、足りない部分や辻褄合わせの為のコードを追記していく。 Arduinoの良い処は既に安定して動作するライブラリを他人様が無料で提供してくれているところだろう。そして、ハードウェアレベルのロジックを考えなくても大抵の事ができてしまう。
何故そうなるのかといった理屈は知っておいた方が良いとは思うが、昔みたいにオシロを持ち出して波形なんて眺めなくても、電卓とスペックシートとプログラミング環境(とインターネットの集合知)があれば、ショボい電子工作なら素人でも手が出せるようになっているので、間口は無茶苦茶広くなっている。
凝った事をしたくなったら、基板の作成は安価に出せるようになってるし、機構や外装には3Dプリンターが使えるので、これもハードルが低い。
コードは以下の通り。


#include EEPROM.h
#include ButtonEvents.h

//GPIO declarations
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
byte segmentClock = 4;
byte segmentLatch = 5;
byte segmentData = 3;
const int up_pin    = 6; //カウントアップボタン
const int down_pin  = 7; //カウントダウンボタン
const int reset_pin = 1; //リセットボタン
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

ButtonEvents up_button; // create an instance of the ButtonEvents class to attach to our button
ButtonEvents down_button;
ButtonEvents reset_button;

int number   = 0;
int segnumber= 0;
int button_pt = 0;
char sp = ' ';

void setup()
{
  Serial.begin(9600);
  Serial.println(EEPROM.length());
  Serial.println("Large Digit Counter ver.1.0");

  pinMode(segmentClock, OUTPUT);
  pinMode(segmentData, OUTPUT);
  pinMode(segmentLatch, OUTPUT);
  pinMode(up_pin, INPUT_PULLUP);
  pinMode(down_pin, INPUT_PULLUP);
  pinMode(reset_pin, INPUT_PULLUP);

  digitalWrite(segmentClock, LOW);
  digitalWrite(segmentData, LOW);
  digitalWrite(segmentLatch, LOW);
  EEPROM.get(0x00,number);

  // attach our ButtonEvents instance to the button pin
  up_button.attach(up_pin);
  down_button.attach(down_pin);
  reset_button.attach(reset_pin);

  //ButtonParameter Setup
  //ダブルタップ制限時間(ms)
  up_button.doubleTapTime(200);
  down_button.doubleTapTime(200);
  reset_button.doubleTapTime(200);
  //長押し判定時間(ms)
  up_button.holdTime(5000);
  down_button.holdTime(5000);
  reset_button.holdTime(5000);
}

void loop()
{
  //アップボタン(シングルタップ +1, ダブルタップ +10)
  up_button.update();
  if(up_button.tapped() == true) 
  {
    EEPROM.put(0xf0,number); //カウンター数字バックアップ
    number++;
    number %= 1000; //Reset x after 999
    EEPROM.put(0x00,number);
  }
  if(up_button.doubleTapped() == true)
  {
    EEPROM.put(0xf0,number); //カウンター数字バックアップ
    number = number + 10;
    number %= 1000; //Reset x after 999
    EEPROM.put(0x00,number);
  }

  //ダウンボタン(シングルタップ -1, ダブルタップ -10)
  down_button.update();
  if(down_button.tapped() == true)
  {
    EEPROM.put(0xf0,number); //カウンター数字バックアップ
    number--;
    if(number < 0) 
    {
      number = number + 1000;
    }
    number %= 1000; //Reset x after 999
    EEPROM.put(0x00,number);
  }
  if(down_button.doubleTapped() == true)
  {
    EEPROM.put(0xf0,number); //カウンター数字バックアップ
    number = number - 10;
    if(number < 0) 
    {
      number = number + 1000;
    }
    number %= 1000; //Reset x after 999
  }

// リセットボタン(長押し リセット, ダブルタップ リストア)
  reset_button.update();
  if(reset_button.held() == true) //リセットボタン長押しでリセット
  {
    EEPROM.put(0xf0,number); //カウンター数字バックアップ
    number = 0;
    EEPROM.put(0x00,number);
  }
  if(reset_button.doubleTapped() == true) //リセットボタンダブルタップでリストア
  {
    EEPROM.get(0xf0,number); //カウンター数字リストア
    EEPROM.put(0x00,number);
  }

//  Serial.println(number);
  showNumber(number);
}

//Takes a number and displays 3 numbers. Displays absolute value (no negatives)
void showNumber(float value)
{
  segnumber = number ;
  int segnumber = abs(value); //Remove negative signs and any decimals
  Serial.print("number: ");
  Serial.println(segnumber);
  for (byte x = 0 ; x < 3 ; x++) //桁数決定</span>
  {
    if ((x > 0) && (segnumber == 0)) //下2桁目以上が0の場合スペース
    {
      postNumber(sp, false);
    }
    else
    {
      int remainder = segnumber % 10; //各桁の数字を抽出
      postNumber(remainder, false); //1桁ずつ送信
      segnumber /= 10;
    }
  }

  //Latch the current segment data
  digitalWrite(segmentLatch, LOW);
  digitalWrite(segmentLatch, HIGH); //Register moves storage register on the rising edge of RCK
}

//Given a number, or '-', shifts it out to the display
void postNumber(byte segnumber, boolean decimal)
{
  //    -  A
  //   / / F/B
  //    -  G
  //   / / E/C
  //    -. D/DP

#define a  1<<0
#define b  1<<6
#define c  1<<5
#define d  1<<4
#define e  1<<3
#define f  1<<1
#define g  1<<2
#define dp 1<<7

  byte segments;

  switch (segnumber)
  {
    case 1: segments = b | c; break;
    case 2: segments = a | b | d | e | g; break;
    case 3: segments = a | b | c | d | g; break;
    case 4: segments = f | g | b | c; break;
    case 5: segments = a | f | g | c | d; break;
    case 6: segments = a | f | g | e | c | d; break;
    case 7: segments = a | b | c; break;
    case 8: segments = a | b | c | d | e | f | g; break;
    case 9: segments = a | b | c | d | f | g; break;
    case 0: segments = a | b | c | d | e | f; break;
    case ' ': segments = 0; break;
    case 'c': segments = g | e | d; break;
    case '-': segments = g; break;
  }

  if (decimal) segments |= dp;

  //Clock these bits out to the drivers
  for (byte x = 0 ; x < 8 ; x++)
  {
    digitalWrite(segmentClock, LOW);
    digitalWrite(segmentData, segments & 1 << (7 - x));
    digitalWrite(segmentClock, HIGH); //Data transfers to the register on the rising edge of SRCK
  }
}


参考というか、ほぼコピペさせて頂いたサンプルプログラムはsparkfunのLarge Digit Driver Hookup Guideにある「Example:Two Large Digits
使用させて頂いたライブラリは
ButtonEvents
とそれに付随する
Bounce2
というわけで、これらをとりあえずブレッドボードで接続して動作させた処、問題無く動作したので、実装を進めていく。

ちなみに、ATtiny88TPIC6C596はamazonで購入すると、安かったり高かったりとなかなか値段が安定しないので、aliexpressで売られている価格と比較すれば良いと思う。ATtiny88はAliexpressに近い値段で売られている事が多いが、TPIC6C596は値差が大きい気がする。

 

 

 

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

LANケーブルのコードリール作成

2022-06-17 12:45:26 | 工作

随分前からLANケーブルのリールを作ろうと考えていたのだけれど、微妙に面倒くさくて放置していたのだが、ひょんなことから屋外用のLANケーブルが数十メートル余ったので、重たい腰を上げてリールを作成する事にした。
とはいってもリールドラムとリールに取り付ける為のLANジャックが無かったので、それらも購入。

リールはハタヤのS-1。デザイン的には同メーカーのJ-1が良かったのだが、屋外用ケーブル程の太さになると、巻き取れる長さが短くなってしまうので、S-1を選ぶ事となった。

リールに取り付けるLANジャックはネジ止め式にした。爪で引掛けるタイプだと正確に四角穴を開けなければならないので面倒くさかったからだ。
物自体はamazonでも売られているが、デザイン的にAliexpressで売れらている物の方が好みだった為、そちらで購入した。

屋外用ケーブルは頂いた時点で無茶苦茶絡まっていた為、一旦ドラムに巻き取る事にした。

その後、リールの表面のプレートを取り外してLANジャックを取り付ける為の穴を開ける。

ネジ式の取付方法なので、あけるのは丸穴だが如何せんサイズが大きい為、所持しているドリルでは綺麗に開けるのが難しい。
そこで偶にしか使わず道具箱の奥底に眠っているHOZANの「CHASSIS PUNCH SET」を取り出してきた。

前に使ったのは、シグナスにUSBコネクターを取り付けた時だったかな…
兎に角、これを使う為に、まずは10mmの穴をリールの側面プレートに開ける。

ちゃんと測らずに適当に開けたのだが、本来はちゃんと穴を開ける場所を測って、パンチベースがきちんとプレートに掛かる場所に開けなければならない。

穴明後に実際にパンチを当ててみると結構ギリギリの場所だった。

この道具で開けた丸穴は綺麗な切り口でバリ取りも必要なく削りカスも出ないから、この手の薄手の鉄板等に少し大きめの穴を開けたい時に便利だ。

穴が開いたらそこにLANジャックを取り付けて(ナットは27mmだった)、ケーブルの末端にLANコネクターを取り付けて、ジャックと繋いだら、側面プレートを元に戻してリールの加工終了。

作業的にはケーブルを巻きとる前にしたほうが、ドラムの中も見えるし作業がしやすい。 今回はケーブルの絡みを取る為に巻いてから作業を実施したので、側面プレートを取付る作業が非常にやりにくかった。

今後の課題としては、この手のリールドラムにありがちなのだが、ブレーキが存在しない為、勢いよくケーブルを引き出すとドラムが慣性で回り続けてしまう為、必要以上にケーブルが出てしまい絡まってしまう事がある。
そこでドラムの回転を適度に制限してくれるようなブレーキを取付ようと考えている。まぁ、また面倒になって何年も放置する可能性が高いけど…

 

 

 

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

スマート電球が壊れた

2022-01-27 13:00:00 | 工作

スマート家電の中でも最も安価に購入できるアイテムとして電球がある。 我が家にも数か所設置しているのだが、その内の一つが1週間もしないうちに反応しなくなった。

amazonで購入したので売主に連絡した処、新しい電球を送るから古い物は此方で処分してくれとの事だったので、処分するついでに分解してみた。
レンズ部分は樹脂なのでカットして切り落とした。構造自体は普通のLED電球と同じだが、WiFiのアンテナ部がLED基板の間から突き出している。

LED基板やボディー部分が放熱の為にアルミでできている為、アンテナ部分をボディー内に入れてしまうと、電波が全く飛ばなくなってしまうからだろう。
このスマート電球は調色できるタイプなので、白と黄色のLEDが同数並んでいる。これらを各色調光して色味を変える訳だ。よく見ると、白色LEDの一つが焼損しているようだ。
LED基板はネジを3つ外せば取り外す事ができる。 アルミ基板の裏面は放熱用のグリスが塗られていて、ボディに熱を逃がすようになっている。

ボディー内にはLEDドライバーと制御基板が一体になった物が入っていて、狭い空間に押し込む為に無茶な設計になっているような気がする。
1次側とボディー間の絶縁は謎の黄色いテープを一巻する事で確保している。絶縁というよりは、コンデンサ等の部品が振動で動いてボディーに当たらないようにする為の措置だろうか? ものすごく不安感のある作りだ。

1次側のコンデンサは一つでは容量が足りなかったのか、無理矢理もう一つ並列に増設。

コントローラー部は当初ESPシリーズの何かかと思ってたのだが、何か別の物かもしれない。シールを捲ってみても2次元コードが刻印されているだけで、よく分からなかった。

で、壊れた原因は2次側の電解コンデンサのパンクかと思われる。何が原因でパンクしたのかは分からない。

はんだ付けが全体的に怪しいので何もかも信用できない。これを自宅で使っていて、火事にならないか心配になるレベルだ。

最近はそれなりに品質管理された中国製品ばかり見ていたので、久々に如何にも中国らしいロークォリティーな出来栄えを見た気がする。
次に購入する際には、多少高くても、もう少し信頼のおけるメーカーの物を買うようにしよう。

 

 

 

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

YAMAHA PJP-50Rの修理

2022-01-27 08:00:00 | 工作

会社の会議用のスピーカーマイクとしてPJP-50Rを使っている。此奴はIPでのダイレクト接続だけでなく、SIPにも対応しているので、外線や内線でも使用できてなかなか便利なのだ。
発売してから既に15年経過しているにも関わらず、会議用スピーカーマイクとしての性能は色褪せていない。
ただ、この機種固有の問題なのか、電源コネクターが非常に弱い。DC入力のジャックがJEITA(旧EIAJ)規格なのだが、抜き差しが少し固い。 で、頻繁に抜き差ししていると、電源が入らなくなってしまうのだ。
所有台数6台中3台、同様の現象が発生している。 で、DCプラグを挿入した状態でプラグ部分を上から軽く押してやると電源が入る事から、不具合の原因は電源ジャック側の半田クラックと予想がつく。
はんだクラックであれば、半田付けし直してやれば容易に直るので、電源の調子が悪いPJP-50Rを修理した。
裏蓋のネジを全て外して、基板が見えるところまで外装やシールドを外していく。

DCジャック部分のはんだ状態を確認すると、予想通りクラックによる断線が起きていた。

追い半田してクラックを修正する。
クラック補修が終わったら、元通りに組み付けて電源を投入して動作確認。 無事に電源が入って音声の入出力にも問題が無いので、これで修理完了。

あと10年ぐらい使えるだろうか…

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