Category Archives: 工作

Milk-V Duo256

昨年末のトラ技(2024年12月号)に載っていたMilk-V Duo256というマイコンボードが面白そうだったので衝動買いしました。動かしてみてハマった箇所もあったので覚え書き。

まずこんな箱に入ってきました。

本体。基板の色はランダムらしいですが届いたのはごく普通の基板色。
またピンヘッダが付属していそうな雰囲気ですが付いてませんでした。

こちらが開発ボード。本体基板を載せるとイーサーネット接続ができます。

そしてカメラ。フレキシブルケーブルが2本付属しているのは安心ですね。

動かしてみる。

トラ技の記事通りMicro-SDカードにシステムを書き込みました。
記事で分かりにくい部分は本家の説明ページを見ると良いです。

電源を入れる前にPCと接続しますが、基板に載っているUSB端子は良くあるUSB-Serial変換による接続ではありません。ここもトラ技記事に従って開発基板のシリアル端子に外付けUSB-Serial回路を接続しました。
写真のFRISKケースが外付けUSB-Serial回路で、中にFT-232RLが入っています。

※なお最新システムでは初期状態でUSB-NCMという仕組みが有効になっており、USBだけでも接続できる様になっています。下に記載の「ハマったところ」参照。

立ち上げると数秒でrootのプロンプトが出ました。

その後トラ技記事通りYOLO5の実行は問題なし。
そしてカメラとイーサネットケーブルを接続して顔認識を実行しようとした際、一瞬「camera-test.sh」がどこにあるんだろうと思いましたがパスが通してあったので、このまま実行すればOKでした。VLCで接続すると映像が表示され、顔を認識すると回りに四角枠が現れます。

ハマったところ

USB-NCM

最新システムだと初期状態でUSB-NCMが有効になっているので、PCとはUSBケーブル経由でTCP/IP接続できます。。。なのですが、なかなかうまくいかずハマりました。

まず開発ボードのUSB端子は電源入力だけなので本体ボード側のUSB端子にケーブルを挿す必要があります。
そしてWindowsのデバイスマネージャを見ながら本体にケーブルを挿しても「不明なUSBデバイス(デバイス記述子要求の失敗)」となって正しく認識されません。

分かったことは本体基板を開発ボードに載せているとごく稀にしか接続が成功せず、開発ボードは使わず本体基板だけの状態で接続すると成功する様になりました。

(この症状、ウチだけでしょうか?)


結局色々とイジる間はイーサーネットで接続するよりもUSBの方が便利なので開発基板無しで使っています。TCP/IPで接続するため、電源もSSHもVLCもUSBケーブル一本で済むのです。

rootパーティション拡張

32GBのSDカードを挿しているのにデフォルトではルートパーティションは752MBしか確保されておらず、残りの殆どが未使用状態になっていて、このままイジっていると直ぐに満杯になってしまいました。そこで本家のセットアップ説明に従いパーティションを拡張しました。
なお本家ページの説明ではパーティション番号3がルートパーティションでしたが、ウチのは2だったので読み替えて設定しました。
※説明通りにやれば既存のファイルは消えずにパーティションを拡張できています(でも責任は持てないです)。

という事で・・・

色々とイジくっています。

レーザー加工機Grbl(FluidNC)化 ~4~

また謎が発生

前回、CO2レーザーの出力を0にした時にもレーザーが漏れ出るという問題で、下図の47KΩを少し下げて対策したのでした。

この時、出力設定を17%程度にしたあたりからレーザーが出始める様になったので、もう少し調整して0%に近い所から出る様にしようと考えました。

前回の対策では47KΩを下げる為に220KΩを並列に接続した事で合成抵抗を38.7KΩにしていました。実はこの場合のざっくりした計算では5%程度からレーザーが出始めると見込んでいたのですが大きく違います。こうなるとカットアンドトライで並列抵抗を大きくしてみるしかありません。そこで510KΩとか1MΩを付けてみたのですが・・・出力開始点が少ししか下がってこないのです
なんか変です。そこで並列抵抗を外して元に戻したところ、これでも10%程度からしか出てきません

そもそも0%でもレーザーが出てしまうという問題だったのですが症状が消えてしまったのです。

なぜ?

やった事といえば電源をバラして下の写真の様に抵抗をハンダ付けしただけです。

この2点のハンダを溶かし直した事で何かが変わったのでしょうか?

そこで改造前の写真を丹念に拡大していくと・・・なんかこのハンダ付け怪しく見えませんか?

今となっては確かめる術がありませんが、ここが接続不良で数KΩ高くなっていたとしたら辻褄が合います。

本来47KΩのところが少し高めになり、そのため1IN+の電圧が僅かに下がります。するとアンプ1の出力が少し下がってレーザーをOFF出来なかったと。。。そこに抵抗を並列に付ける時にハンダを溶かし直したので接触が回復して本来の値に収まったと。。。

真相は分かりませんが現時点は元の抵抗値のままでレーザーをOFFにでき、出力開始点は10%程度になっており、多分これが本来の姿です。

うーん。何だったんだぁ?

レーザー加工機Grbl(FluidNC)化 ~3~

前回の続きです。
前回はレーザー加工機のコントローラーをLinuxCNCからFluidNCに変更したところ、ラスター描画が上手くいかないという状態でした。 LinuxCNCの時はレーザーパワーは固定し(ボリュームで手動設定)、出力のON/OFFのみスイッチングしていましたが、今回レーザーパワーをPWMで制御する方式に変更して写真の描画も目論んでいるのです。

ラスター描画の状態。

描画した結果が下の状態。縦線と三角形だけ描画したいのですが、絵が無い部分も焼けており、S0状態なのにレーザーが漏れ出ている様です。(S0は本来スピンドルの回転数を0にする命令ですが、ここではレーザーパワーを0にする意味となる)

ならばとS0の時にレーザー電源出力をOFFにする様「disable_with_s0」「true」に設定して同じGコードを実行したのが下の状態です。

こちらは往路と復路で位置が大きくずれています。

なおS0というのは下図レーザー電源のIN端子に入れる電圧を0Vにするという事で実際にはPWMにてDuty0%(常にL)を入れています。そして電源出力OFFとはK+、K-間を切断する事を意味します。

LasePS

まあ「disable_with_s0=true」で上手くいったとしても最小出力付近の制御が出来なくなるでしょうから、やはりS0時のレーザー漏れを無くすのが本来の道でしょう。

レーザーお漏らしの調査

なんでS0時にもレーザーが漏れ出てくるのか。まず疑ったのはPWM波形が綺麗なLになっていないんじゃないかという事。しかしオシロスコープで見たところはちゃんとLに見えます。でもLレベルが微妙に浮いていたりノイズが乗ってたりする可能性もありますよね。
そこでレーザー電源のIN端子をGNDに短絡して動作させてもやはり漏れ出ていました。ということでレーザー電源側の問題と思われます。

レーザー電源の調査

レーザー電源内部の問題っぽいですが20KV前後を出力する電源なので迂闊に触るのは危険です。

注意:ここから下はレーザー電源の蓋を開けていじくります。レーザー電源の内部はかなりの高電圧な部分があり危険です。これを参考にして同様の作業をされる場合には十分に注意してください。もし事故が起こってもこちらでは責任を負えません。

まずは情報収集から。ネット上で検索して同様な問題で困っている記事を探しましたが見当たりませんでした。
しかし「マーティの工房日誌」さんの所ではレーザー電源をバラして回路図まで描かれており、これが素晴らしく参考になります。
但し40WのCO2レーザー用という点は自分のと同じですが、中の基板は異なります。でも大体の構造は同じですね。

一応自分の電源についても見ながら、レーザーパワーの制御部分を回路図にしてみました。これには基板を裏と表から写真を撮り、下の様にPC上で裏面だけ反転表示にすれば配線を追いやすいのです。
なお部品面の配線は見えない部分もあり、実物を見ても分らない部分はマーティさんの資料に従いました。

制御ICはマーティさんの電源と同じTL494のSOP版で、周囲の回路もほぼ同じですね。

パワー制御の動作概略

TL494のデーターシートには下図の様なブロック図が掲載されています。
ざっくり言うとPWMコンパレータの出力がLになった時にレーザーが出ます。そしてPWMコンパレータは発振器のCT端子から来るのこぎり波とエラーアンプから来る信号を比較しています。

のこぎり波は反転入力なので、エラーアンプ信号よりものこぎり波が高い時にコンパレータ出力がになりレーザーが発射されます。
そしてデーターシートの記述によるとのこぎり波は0~3Vで変化しますが、図中に0.7Vが加えられているので0.7~3.7Vで変化する事になります。

図にするとこんな感じ。

今回はレーザーを全く出したくない時に少し出てしまうという問題なので、エラーアンプ出力が3.7Vよりも高くなっているべき所がどうなっているかを中心に見ていきます。

ではマーティさんの回路図と自分の実物を見比べながらエラーアンプ回りの要所のみ書き出したのが下の図です。

まず入力のPとINは両方共0Vの状態です。
エラーアンプは2個ありますが2側は使用していません(無効化するのに両入力とも0Vでいいのかという疑問はありますが動作しているので先に進みます)。
エラーアンプ1側はIN信号をゲイン1倍で反転増幅し、基準点は47Kと24Kの分割電圧となっています。
フォトカプラPC817も少しは電圧降下がある筈ですがデーターシートのグラフでは細かいところまで読み取れません。とりあえず0.1Vとしておきます。
するとIIN+は1.76VなのでINが0Vの時FBは3.52Vとなり、レーザーをOFFできる電圧3.7Vを超えていません
これが原因なのか???だとすれば経年劣化とかではなく自分以外の所でも同じ事が起こっていそうですが・・・

レーザー電源改造

とりあえず試してみましょう。それにはIIN+が現在1.76Vなのを1.85Vにしてやりたいです。その為には現在47KΩの抵抗を43KΩに交換すればよいのですが、手っ取り早くやるために手持ちの220KΩを並列に付けてみました。これだと合成抵抗38.7KΩでIIN+が1.97Vとなり、ちょっと上げ過ぎ感はありますがまずは試しです。

やってみたところ予想通りS0部分のレーザー漏れは無くなりました。

折角なので写真を描画してみます。(いつだかのHONDA-Jetの写真)
・・・中間色が全く出てませんね。

どれくらいのS値から出力が出るか調べていくと最大に対し17%程度からでした。もう少し抵抗値を詰めた方が良いかもしれませんがLaserWeb4の出力範囲を調整していくと・・・

結構写真っぽく描画できましたね。

そして・・・

抵抗値、どうしましょう?1~2%程度からレーザーが出る様に調整したいですが沼にハマりそうです。半固定抵抗になってれば良いのに。

またINへの入力は0~5VのPWMですがリニアに反応する範囲は3V幅という事になります。これ仕様なのかな?確かにボリュームで調整していた頃も70~80%付近から上は最大電流になってしまい変化しなかった様な(更には最小でもレーザーが出ていましたね)。
エラーアンプ1のゲインを下げて5V幅フルに反応する様にしてみたい気もします。。。

あと気になっているのは出力電流のリミッター的なフィードバックが1IN+に入っている様です(すみません、上の回路図では省略していますがマーティさんの回路図には載っており半固定抵抗DLで調整できる様です)。
この調整がずれてないかなというところを確認していませんでした。以前はほぼ20mAジャストが流れていたのでずれていたらDLを調整してみようと思います。

・・・という事でレーザー加工機のGRBL化はもう少し続きそうです。

レーザー加工機Grbl(FluidNC)化 ~2~

前回の投稿では「レーザー加工機のPCが立ち上がらなくなり、この機会に今までLinuxCNCで制御していたのをGRBLに変更しようと検討していたらPCが復活してしまった」件を書きました。
しかしGRBL化はその後も続けていて、途中色々とハマりながらも使える様になってきたのでその備忘録です。
なおGRBLといっても最近は32bitマイコン上で動作するものが多数リリースされているので、今回はESP32で動作するFluidNCを使う予定です。
※以下ではGRBLとFluidNCという単語は同じ意味で使っています。

まずは今までの制御回路を紹介

今までは古いPCにインストールしたLinuxCNCから、写真の基板にパラレルポート(プリンタポート)で接続していました。しかし今どきパラレルポートを備えたPCは見掛けないので、いつかはUSB化する必要があります。
なお「USB-パラレル変換ケーブル使えば?」と思われるかもしれませんが、これだとタイミングの問題があってダメなのです。

LaserCutterController

この基板は下の回路になっていて、左側の36ピンコネクタがパラレルポートです。
このパラレルポートにGRBL基板を繋いでやれば手っ取り早くできそうです。
なお変更点として、これまでレーザーのON/OFFはZ軸モーターの方向信号が下向きだったらON、上向きだったらOFFとし、レーザーパワーはレーザー電源にボリュームを接続した人力設定としていました(これだとCNCフライスで切削するGコードで済むのです)。
今後はGコードのM3,M4,M5命令でレーザーをON/OFFさせ、S値でパワーを決める様に変更しようと思います。

レーザーコントロール回路

FluidNC基板

FluidNCはESP32マイコン上で走るので下の様な回路を描きました。ESP32は先日3枚959円(送料無料)で買ったDevKitボードを載せることにします。
この図の36ピンパラレルコネクタを上図のパラレルコネクタに接続する訳です。
一応、水流センサーとドアオープンセンサーの端子も載せていますが、当面これらのセンサーは元の基板に接続した状態で使う予定です。

そして作った基板がこれ。
コネクタ付きフラットケーブル(45cm)はいつだったか10本入りのジャンクを買ったもの。これまで電線取り用途にしか使っていませんでしたが、今回はコネクタも含めて使用します。

こんな感じで元基板とGRBL基板とを接続しました。

元の基板を少し改造

なおESP32は3.3Vで動作しますが元基板R1~4のプルアップ電源は5Vです。抵抗が100KΩと大きいのでESP32の保護ダイオードが効いて3.3V+α程度に収まる事を期待していましたが、やってみたら5V近くまで上がっていました。たぶん壊す事はないと思いますが定格を超えているので念のため対策します。
これにはプルアップ電源をパラレルコネクタの18ピンに接続し、GRBL基板から3.3Vを貰う様に改造しました。

FluidNCをインストール

下記リンクページに書いてある通りにダウンロードしてバッチファイルを実行すればインストールできました。
http://wiki.fluidnc.com/en/installation
なお書き込むバイナリには3種類あり、「無線LANを使う」「Bluetoothを使う」「無線は全く使わない」に分かれていて、私は無線LAN版を書き込みました。

FluidNCの設定

インストールが終わったら設定です。
FluidNCの設定にはコンフィグファイルに書いて読み込ませる項目と、(WiFi設定の様に)コンフィグファイルに含まれない項目があります。
モーター制御やホーミングの情報設定はコンフィグファイルをconfig.yamlのファイル名で作成してWebインストーラーからアップロードします。
なおWebインストーラーは下の画面から入ります。Connctを押してCOM*番号を選び・・・

そして下の画面が出たら「File brouwer」を押してアップロードします・・・

実際のコンフィグファイルは夫々のマシン毎に違うでしょうけど、ウチのを参考に載せておきます。
config.yaml

なお無線LANの設定はコンフィグファイルには含まれてなくて、下図の様に直接Webインストーラーから設定します。

座標位置が表示されない問題対策

また実際に動作させてみたらレーザーヘッドの座標位置がLaserWeb4に表示されませんでした。どうやらFluidNCがレポートする情報がLaserWEB4が想定しているものと違うらしく、WebインストーラーのTerminalから次のコマンドで設定を変更する事で表示される様になりました。

$Report/Status=2

LaserWeb4をインストール

PC側のソフトはLaserWeb4を使う事にします。これはPCからGRBL基板にGコードを送るので「センダーソフト」と言われるものです。
またこれまでGコードはNCVCで作っていましたが、LaserWeb4はGコード生成もやってくれるので作業の手間が省けることを期待しています。
更にLaserWeb4とFluidNCの組み合わせなら、PC⇔ESP32間を無線LANで接続できるので、今まで使っていたLinuxマシンを使わず、少し離れたメインPCから接続できてとっても便利になる予感です。
LaserWeb4のインストールはインストーラーをダウンロードページから取ってきて実行するだけでした。

LaserWeb4の設定

まずは起動します。

ウィンドウ左側の「Settings」ボタンを押すと下図の様に幾つかのカテゴリに分かれたメニューが現れます。この中で今回書き換えたのはMachine ProfileMachineGcodeの3カ所です。

それぞれ次の様に設定しました。

〇Machine Profile
 Machine Id:HOIHOI-Laser ←装置名

〇Machine
MACHINE WIDTH:435mm ←X方向の最大値
MACHINE HEIGHT:350mm ←Y方向の最大値

〇Gcode
 GCODE END:
  M5 ; Disable Laser/Spindle
  G0Z1.0
  G0X0Y0
  G30
 TOOL ON:
  M4
 TOOL OFF:
  M5
 PWM MAX S VALUE:
  255

LaserWeb4とFluidNCの接続

ここまで来たらLaserWeb4とFluidNCを接続します。
といってもインストールの時点でPC-FluidNC間にはUSBケーブルを接続していましたよね。もしWebインストーラーとFluidNCが繋がったままなら切っておきます。
このままUSBで接続するにはLaserWeb4のCommsメニューを開きます。USB/SERIAL PORTのところは自分の環境のCOM*を選択して「Connect」ボタンを押すと・・・

右下に「接続したよ」っぽいメッセージが出て繋がった事が分かります。

でも折角なので無線LANで接続してみます。これには「MACHINE CONNECTION」をTelnetに変更してIPアドレスを設定しConnectを押します。

これで基本的には接続OKなのですが、我が家のレーザー加工機はWiFiアクセスポイントから少し距離があり、GRBL基板の前に人が経つと接続が切れたりしました。
これではマズいので工作室にWiFiアクセスポイントを増設する事にします。
という事で2ndSTREETに行って買ってきました(税込¥1210-)。これをアクセスポイントにすると安定して接続できる様になりました。

ベクターカットしてみる。

その他の色々とハマった部分は省略してベクターカットの実行です。ここからは順を追って・・・

まずjw-cadで下の様なテスト用の図を描きました。従来もそうでしたがカットする線と補助線とはレイヤーを分けておきます。
なおNCVCの場合だとレイヤー名に決まり(カットするレイヤーは”CAM01″等)がありましたがLaserWeb4の場合は後でカットするレイヤーを選択するので特に必要ありません(分かりやすいというメリットはあるけど)。
そしてdxf形式で保存し、念のためjww形式でも保存しておきます。

LaserWeb4の画面に戻り、Filesメニューから「Add Document」ボタンを押すとファイルセレクションが開くので、先ほどのdxfファイルを選択します。

この時点で画面上に図形が見える場合もありますが表示範囲を超えていて見えない場合もあります。そこでファイル名の部分(図では「テストカット.dxf」)をクリックすると、何やら数値を入れる小窓が開きます。ここでX-Min、Y-Minが図形を置く最小座標値なので5mm程度の小さめの値を入れると原点に近い場所に図形が移動します。
なお表示がシマシマ線なのは現在選択中の印です。

そしてカットしたいレイヤーだけを選択する為、ファイル名左側の「+」印を押すとファイルに含まれているレイヤーがそれぞれ表示されます。この中からカットしたいレイヤーをマウスでドラッグし、少し下にある「Drag document(s) here to add」にドロップしてやるとそのレイヤーがカット対象となり下に設定画面が開きます。

ここでレーザーパワーやカットレートを入れて・・・

「Generate」ボタンを押すとGコードを生成します。生成したコードを確認したい場合は目玉マークをクリックすると表示されます。

これで準備完了。
Control画面に戻って「Home all」を実行後、「run job」を押すと加工機が動作し・・

カット完了です。
だいぶお手軽に作業できる様になりましたね。

ESP32 Devkit基板への電源供給について

ここまでESP32基板へはUSBケーブルから給電していました。無線LAN化後も電源供給だけUSB電源を使っても良いのですが、スッキリさせるために加工機側から5Vを供給する端子を追加しました。

次、ラスター描画をしてみる。

みら太氏のブログによるとLaserWeb4によるラスター描画は動作が遅い上に上手く描画できなくてLightBurnに移行したという事が書かれています。LigutBurnはメチャ良いらしいですが有料ソフトなので、どちらにしても一旦LaserWeb4を試してから検討する事にします。我が家の用途では99%がベクターカットですしね。。。

という事で、とりあえずLaserWeb4でラスター描画をやってみました・・・が、案の定上手くいきません。

こういうテストパターンを描画したのですが・・・

結果がこれ。
レーザーOFFのところでも弱く漏れ出ている感じです。

レーザーの強弱はレーザー電源にPWMを入れる事で制御しており、この辺りが上手くいっていないのかも。。。

ならばとFluidNCの設定を「disable_with_s0=true」にしてみました。この設定をtrueにするとGコードの命令でS値を0にした際、(M5命令同様に)出力も止めるという意味になります。
なんか言葉では説明し辛いですね。下図のレーザー電源図でいうとINに入れるPWMを0に設定した時にK端子も一緒にOFFになるので完全にレーザーが出なくなる筈です。

LasePS
レーザー電源

この設定で同じGコードを実行したらこの様になりました。

不要なお漏らしは消えていますが、往路と復路でレーザー発射点がずれているっぽいです。上記みら太氏のブログでも往復でずれると言われているのはこの症状かもしれません。

この後色々とイジって現在は何とかなったのですが、そのあたりは次の投稿で・・・

電子負荷 PLZ72W ~その2~

ジャンクで貰った電子負荷のPLZ72W。先日の投稿でA設定側が動作しない旨を書きました
とりあえずはB側が使えれば望みの用途には使えるのですが、気になるので再びケースを開けてイジっているといつの間にか直ってしまいました

たぶんですが、電流値を決める多回転ボリュームが狭い所にあるので、どこかに接触していたのではないかと思います。電源スイッチを修理する時に前面パネルと共にボリュームも外したので、その時にやらかしたのかと。

ボリュームの取り付け角度によっては周囲の部品に当たるのです。
念のため、もう一度ボリュームを外して安心な角度で取り付け直しました。

A/B両方が正常になると電子負荷内部の発振器で負荷電流を交互に切替える事ができるので電源の追従性等も確認できます。

ためしに10V電源から5Ω抵抗を経由して1A⇔0.1Aを切替えた電圧を測定してみました。

予定通り9.5Vと5Vを交互に繰り返す波形が出てきます。
なおA/Bの保持時間を右下のツマミで変更できるので周波数やデューティーを設定できます。

ばっちりですね。次に電源を作るときには活用しようと思います。

電子負荷

息子がとある所からジャンクの電子負荷を貰ってきました(でかした!)。
電子負荷というのは電圧を入れてやると一定の電流が流れ続ける装置で、電源やバッテリーの動作を確認するのに便利なのです。

以前DC-DCコンバーターをいじくっていた時に電子負荷があったらいいなーとは思っていましたが、そう度々使う物でもなく、その時はセメント抵抗を並べて負荷にしていました。

で、今回入手したのはこれです。菊水電子のPLZ 72W。70Wまで喰わせる事ができます。
また設定電流をA/Bの2種類準備しておいて、手動及び内部発振器により交互切替えができる様です。

ではプラグをコンセントに挿し込んで電源スイッチを入れてみます。
・・・が、電源入りません。ち~~ん。
まあジャンクですからね。

とにかく開けてみました。

AC100V入力を辿っていくと一方は直接トランスに、もう一方はガラス管ヒューズを経由して前面パネルの電源スイッチに繋がっています。

という事で、一番怪しいヒューズをチェック・・・切れてないですねぇ。
この状態で電源を繋いだところ、電源スイッチまでは100Vが来ていますが、スイッチONにしてもその先には来ません。どうやらスイッチの問題みたいです。

このスイッチは3接点×2回路のスライドスイッチで、2回路を並列に接続してあります。
しかし2回路共接触不良になるのかな?
そこで暫定的にスイッチの接点をジャンパーで繋ぐと電源が入りました。やっぱりスイッチの異常ですね。

ではフロントパネルを外してスイッチを取り外してみます。テスターの抵抗レンジで測るとやはりON側が導通しません。
ならばスイッチをバラして接点を磨こうかと思いましたが、よく見るとこのスイッチは上下が完全に対象です。
今までOFF側の接点には何も配線されていませんがスイッチOFF時に抵抗レンジで測ると正常に導通しています。
という事は上下逆にしてやれば今まで使っていなかった方の接点をON側に使えそうです。・・・という事でスイッチを上下反転して配線し直したところ電源が入る様になりました


では安定化電源に繋いで動作させてみましょう。
電源はこの時購入したPAB70-1A(こちらも菊水電子製)です。

動作させた結果、負荷電流をA/Bの2種類設定できる内のA側は故障している様で、設定ツマミを回しても0Aのまま上がりません。
しかしB側はツマミの回転に応じて電流が上がっていき、安定化電源の電流表示とほぼ一致しています。B側は使えそうですね。

ダウンロードした取説を見ると次の様なブロック図が載っています。A側が動作しないのは中央付近の「アナログスイッチ」か「定電流/定抵抗切替回路」あたりが怪しいですが、とりあえずB側が使えれば欲しかった機能は使えるので、今回はここまでにしておきます。

CBF125T タコメーター故障&作成 ~その3 また壊れて修理~

ウチのバイク、中国は新大州本田製CBF125Tで、昨年タコメーターが壊れてステッピングモーターで作り直したのですが、先日猛暑日に走っていたら止まってしまいました。

これエンジン掛けてない状態です。

記録を見返すと最初にタコメーターが壊れたのが昨年の日本一周で東北町を走っていた頃、8月26日だったので丁度1年前ですね。その後ツーリングから帰り、11月にステッピングモーター化して使っていました。

バラして原因を調べる。

うーん1年で故障かぁ。とにかく開けてみます。

バイクから外してきて・・・


これが基板。Arduino-NANOを載せています。

半固定抵抗は以前液晶表示にした名残り

原因を調べる

電源に12Vを入れてみました。しかしArduino-NANOのLEDが点きません。
VIN端子まで12Vは来ていますが5V端子からは出てこないですね。
ソケットから外して裏を見ると・・・

コンデンサが弾けてパターンを切った様です。

コンデンサが弾け飛んでいて、その下を通っていたVIN配線パターンも切ってしまった様です。これではマイコンに電源が入りません。
猛暑に耐えられなかったんでしょうね。ケースの中で風も当たらないし・・確かに厳しい条件だったと思います。
またArduino-NANOと言っていますが中国製の互換品なのでどんなコンデンサを使っていたのかも分かりません。

ところでこのコンデンサ、VINとGNDとの間にありますが回路図には見当たりません。
レギュレーターへの入力なら普通は最短位置にコンデンサを付けますが・・回路図の抜けなのか互換品が気を利かせたのか?
値が分からないので手持ちにあった10μF/35Vのチップコンを取り付けました。
(安心の村田製作所製です。→https://akizukidenshi.com/catalog/g/g113161/
また切れた配線は前後のレジストを剥がしてメッキ線で接続し直しました。

これで動作は正常に戻ったのですが、よく見たらとなりのダイオードのモールドにもヒビ入ってますね。まぁ動作はしているのでヨシ!としましょう。

追記(2024-09-01):
ArduinoNANOに入れる電源電圧を下げる目的で、12V電源にシリコンダイオードを2本直列に入れてみました。多少は負担が減る筈。
更に2~3本入れるかツェナーダイオードで5V程落とせばもっと安心かもしれません。

ついでにソフトを見直す。

外したついでに今まで気になっていた下記の部分についてソフトを見直します。

  • まだ揺れが大きい。特にアクセルを開けた状態。
  • 長時間走っていると(恐らくモータが脱調して)指針がずれている。

という事でステップ時間を延ばし、移動平均フィルタのサイズも倍に増やしました。
また上昇/下降の変化点では1回休みの処理を入れてみました。

スケッチ→ https://www.hoihoido.com/data/tachometerX27_4.zip

取り付けて走ってみると・・・揺れはだいぶ納まった(まだ少しある)様です。
脱調の有無は長距離を走らないとわからないですが、揺れが減った時点で少なくともマシになっているものと期待しています。

カブ系エンジン用自動進角CDI ~その4~ 作り方ページ開設

先日投稿した カブ系エンジン用自動進角CDI ~その3~ シリアル接続で小型化する。を元にしたCDIの作り方ページを開設しました。→カブ系エンジン用自動進角CDIの作り方

今回は敷居を低くするため、切削で作る方式ではなくユニバーサル基板にArduinoNANOを載せる方式で作っています。

またこれまでは下の様なハードウェア的なコントローラーで動作を設定していましたが、これも同時に作ると結構大変なので第一段階はPCで設定する事にしています。

PCからの設定は、当初はコントローラーがやり取りする情報をArduinoIDEのシリアルモニターから手入力する方式で記載していましたが、これだと結構面倒です。

そこで急遽C#でGUIなツールを作成しました。このツールはコントローラーのエミュレータになっていて、ハードウェアコントローラーと同じ操作をPC上で実行できます。

ご興味がある方は下記リンクをご参照ください。

また、これまで投稿したCDI製作関係へのリンクです。

カブ系エンジン用自動進角CDI ~その3~ シリアル接続で小型化する。

カブ系エンジン用自動進角CDI自作の続きです。
先日の自動進角CDIですがサイズが大きくてカブに積み辛かったので小型化しました。
またコントローラーとの接続がパラレル接続だと線を伸ばし難かったので、シリアル接続に変更する事で扱いやすくします。

シリアル接続するにはコントローラ側にもマイコン(本体同様ATmega328p使用)を載せる必要がありますが、配線を伸ばせるとコントローラーをハンドル近くに設置してタコメーター代わりにも使えるのです。

回路図

まず本体側・・・
シリアル化によりコントローラーとの接続本数が減ってスッキリしています。

そしてコントローラー側。
こちらはマイコンを追加しています。また本体からケーブル経由で12Vを供給するので、コントローラー内に5Vを作り出すレギュレーターも載せています。
ケーブルを通す電源は5Vにしても良かったかな?LCDのバックライトに比較的大電流を流すのでレギュレーターを通す前の12Vを使ったんですが。。。

そして本体基板のパターンを設計。
なお図では両面基板ですが実際には片面基板に切削して表側(赤色)パターンはジャンパーで配線します。
シリアル接続にした事でコンパクトになり、ほぼ純正CDIと同じサイズにできました。
追記:前回はArduinoNANOの基板を載せていましたが今回はATmega328Pを直接実装したのでこれも小型化に効いていますね。

あ、レギュレーターの極性を間違っている!

基板はいつもの様にCNCで切削します。
ところで切削で使う刃物は以前からオリジナルマインドさんで売られている「土佐昌典VC」を使っていますが、だいぶ前から使っているので刃先が劣化して切り跡ががケバ立ってきました。
これ、最近オリジナルマインドのページで見つけられなかったので販売が終了したのかと思っていましたが実は探し切れていなかっただけで、またちゃんとあった事が判り、今回新たに購入しました(1本¥2980円。これ凄くイイんですがちょっとお高いんですよね)。

まあとにかく切削実行!・・・結果、下の写真の様に上下に2回切っていますが、下側は深さ0.15mmで切削したら深すぎたので上側の0.1mmでやり直しました。
使い古した刃物で0.1mmだと切れていない事があったので0.15mmにしたのですが、断線したところがあります。
やはり新しい刃物は切れ味が良く0.1mmでバッチリです。

今回は表面実装のマイコンを載せるのでピッチが細かく、また高圧部分もあるので短絡の心配を減らす為に不要パターンを手作業で剥がしました。

そして部品を搭載。レギュレーターの極性を間違っていた部分はパターンをカットしてジャンパーで修正しました。
その後ArduinoNANO用ブートローダーを書込み、そしてファームも書込みます。

部品搭載後の表側。
高圧用コンデンサは前回のと見た目が違いますが1μF,630Vの同等品です。
コントローラーとの接続用に4pinのXHコネクタを設けています。

そしてコントローラー側のパターンも作って・・・

切削!
こちらは実験的に不要銅箔もCNCで取り除いてみたところ、切削時間は大幅に伸びますが手作業で剥がすよりも楽です。刃物は半月刃を使っていました(土佐昌典VCは切れ幅が狭いし第一勿体ないので)。
切削直後はまだ細い銅箔が残っていますが、これは手作業で除去します。

そして実装(裏面)

本体に接続するケーブルは4芯接続なので古い電話線を使ってグルーガンで補強しています。
またコントローラーは前回と同じケース(MDF材で作成した)に収めています。
現状MDF材ですが、ずっと使うなら防水が必要ですね。

本体側は3Dプリントしたケースに収めます。
これも現状オープン状態ですが、十分にテストした後は樹脂で埋めて防水するつもり。

では前回と同じカブ(息子が50ccをボア/ストロークアップした107ccエンジン搭載車)に積んでみます。
CDI本体の小型化によりサイドカバーを閉めやすくなりました。

コントローラーは長めの4芯ケーブル(古い電話線)で接続。

ケーブルを1.5m程度に伸ばしたので見やすい場所にコントローラーを設置できる様になりました。

走った感触

点火部分はソフト、ハード共に前回から変わっていないので走った感触は前回のままです。

ファームウェア(Arduinoスケッチ)を掲載

試行錯誤の後が残ったままで汚いですが現状のファームウェアを掲載します。
マイコン(本体、コントローラー共)にはArduino NANOのブートローダーを書き込んだ上でこのスケッチを書いています。なのでもし追試される方はArduinoNANOをそのまま使う方が手っ取り早いかもしれません。

本体用→https://www.hoihoido.com/data/CDI-AC6.zip

コントローラー用→https://www.hoihoido.com/data/CDI-AC_Control.zip

なお前回の投稿ではコントローラーをパラレルで接続していました。今回の本体用ファームはシリアルコントローラー、パラレルコントローラー、どちらにも使用可能です(前回投稿の回路図で作ったCDIに書いても使える)。

回路図とファームウェアを使用される場合の注意

この回路図やファームウェアを参考にされる場合は事前に「免責・著作権・肖像権・リンク」のページを御一読願います(要は何か問題があっても責任持てませんよとか、自作するのは自由ですが販売とかを考えられるなら相談してねとか、そのあたりです)。

カブ系エンジン用自動進角CDI ~その2~ 107ccカブに積んでみる。

前回、自作の自動進角CDIを50ccカブに積んでみて効果が今ひとつ体感できなかった事を書きました。
その後、息子がもう一台ジャンクの50ccカブをボア、ストロークアップにより107cc化したので、そちらに積んでみたところ、効果が見られました。

107ccカブ(なお原付2種としてちゃんとナンバー取り直してます)
自動進角CDI

はっきり効果が見られたのは低速側です。
純正CDIの点火タミングは全回転域で上死点前27度(BTDC27°)に固定されているのに対し、自作CDIはアイドリング回転数付近は17°に設定しています。これにより、まずキックスタート時のケッチンが発生し難くなりました。また走り出しの加速もスムーズです。
一方高速側は最大37°程度にしてみましたが効果があるのか無いのか判りません。50cc程度なら急な上り坂で全開走行を試せるかもしれませんが107ccともなると公道で試す訳にいかず、多分サーキットとかシャーシダイナモで試さにゃハッキリしない気がします。

そして・・・

いずれにしても50cc用純正CDIよりは良くなるので107ccカブではこのCDIを使います。
という事でもうちょっと安心できる形にしたいと思います。現在の状態(上の写真)だと雨の日は心配ですもんね。

という事で純正CDIと同程度のサイズになる様、以下の点を踏まえて作り直そうと思います。
・ArduinoNANOを載せるのをやめてATmega328pを直接載せる。
・コントローラーとの接続をUARTに変更する事で、本体⇔コントローラー間の配線本数を減らす。
・最終的には樹脂で埋めて防水する。

では下記の基板パターンで試作してみます。まずは切削で基板を作る予定。
・・・なのですが切削用刃物がだいぶ劣化していて上手く削れなかったので刃物入荷待ちです。

まとめ

50ccエンジンだと効果が感じられなかったけど、107cc化したエンジンでは特に低回転側で効果がありました。
なお90ccカブの純正CDIが15°~28°の間で変化する様なので高回転側をあまり増やしても効果ないのかもしれません。実際はどうなんでしょうね?
どなたかこのCDIを試してみられますか?