電池半田ごてのボディを直す(Step2 STLファイルを作成し、gcodeに変換して3Dprintして評価してからFusion360へ戻す)

電池駆動半田ごてケースの修理の続報です。

底面の形状をスキャンしてBMPからInkscapeでトレースしてSVGにしてFusion360に取り込みました。ここまでは前回お知らせしました。


Inkscape上で取りこまれトレースした底面のカーブです

DSC_0590

実際のサイズは、WHD 37×24.7×6でした。

取り込んだSVGのスケッチを6mm厚で押し出してから、この実物のサイズとスケッチのサイズWHを測定して比率に基づいて拡大を行った。

現物を観つつ、ノギスで計測していきます。外観のカーブが取れているので、スケーリングで合わせます。残りはちまちまと合わせていきます。

レビューをしたつもりで、スライサーにSTLファイルを読み込ませました。

スライサーソフトに読み込ませた状態

種々パラメータ設定してスライス処理を実施

ほどなくスライスが進み

48分の所要時間を示して、gcodeファイルが生成されました。
これをUSBメモリに入れて3Dプリンタで印刷するのが現在の運用です。ちなみにプリンターにWifiも有るのでリモートでの印刷も可能です。

一見良さそうな試作設計段階でしたが・・・・

評価してみると・・・・

爪が折れた試作の写真

左側の付け根との間に溝があるのは作図不良と検証ミスで1mm厚みが薄くなっていた。

折れてしまいました。構造が不味かったですね、不正確な作図で薄くなっていました。気を取り直して修正して作成しました。まだ、サポートが付いている状態がこちらです。

DSC_0618

DSC_0617

サポートを取りました完成品

DSC_0601

装着した段階です。

無事に装着して嵌合も出来ました。

強度的にもよさそうです。

 

今年もオープンラボを開設します

2024年があけました、今年もよろしくお願いいたします。
ご利用いただいている方々の支援をしつつ、整備や学びをしています。
昨年問い合わせをいただいたRISC-Vのミニボードの評価作業でのお手伝いなどを通じてカードを用意したりしています。どうぞよろしくお願いいたします。

キット製作の補修いたします

メルカリなどでキットの頒布をしておりますが、こちらでお求めいただいて実際に作成してうまく動作しないというお話もあり中々説明資料だけでは難しい面があります。動作しない場合には、組み込みの里までお持ちいただければ、内容確認させていただきます。一件2000円で受付させていただきます。送付いただける場合には、返送送料込みで3000円で対応させていただきます。
・不具合箇所の特定、修理内容について明記して返送いたします。

問い合わせは以下のQRコードでメールしてください。

KX168

hx6b

電池半田ごてのボディを直す(Step1 Inkscapeで2DスキャンデータからSVGを作り、Fusion360へ渡して)

DSC_0591

大洋電機が出しているMSD20という電池式半田ごての本体ボディの作りがいまいちで元々電池蓋が取れがちだった。そしてやがてそれは折れてしまい使えなくなっていた。放置していたのだが3Dプリントで修理することにした。

DSC_0590

手順としては、まず折れた部品をコピー機にかけてスキャンする。

得られたbitmapファイルをInkscapeでインポートしてビットマップを
トレースしてパスを得る。

得られたパスはfillされている形なのでfillをなしにして
strokeをありにすると以下のようになる。

表示モードを変えると構成点で以下の様に表示される。

要らない外枠をctrlキー押しながら、選択していく。

削除すると2つのデータになる。

左のデータをマウスで領域選択する

削除すると目的の底板のアウトラインが得られる

ページサイズを選択オブジェクトに合わせる。

この状態でSVGファイルとして保存する。このSVGファイルをFusion360で取り込んでサイズの補間をする。

実際にノギスで測ったサイズとSVGデータのサイズをスケーリングするわけだ。
Fusion360では、計測機能があるのでSVGのサイズ(S)を求めて実際のサイズ(A)で縮尺処理をする。スケーリング指定では(A/S)の形で与えれば実際のサイズに変換できる。

下絵のベースが出来たら少しずつ実物をトレースしていき仕上げていく。
実際には、半分だけ仕上げてカットした形からミラーリングで作り上げる。

作り上げたファイルはSTLにして落として、プリント用にスライスしてgcodeファイルを生成して、プリンタに掛けるという手順だ。Thingiverseに登録しておいたが、まだ印刷前なのでinprogressとしている。
修理は実際には、その先で始まり爪がうまく止まるように調整していくことが必要ではある。

 

 

 

トイレのフロータンクがズレて水が溜まらなくなること(水が出っぱなし)を修理した

別宅は、普段は住んでいない週末の家なのだ。先日、水洗トイレが止まらなくなるという事態が発生して、フロータンクの中の部品(大小で流す水量を調整する可動式の弁?)がズレてしまうことが問題のようだ。写真での右中央にあるものが大小で動作する部品なのだが、これが収まる黒い樹脂部品容器がずれてしまうことで問題が起きるようだった。問題がおきたら、水栓を止めてから、この黒い容器を動かして調整をして様子を見てきた。トイレの水量が止まらなくなると水道代として漏水扱い(実際そうなのだが)として料金が跳ねあがるのだ。1週間あるいは2週間留守にすることもあるので実際に今回の水道料金は普段が2500円程度のものが12000円程度になっていて水道メーターの管理で来た人もたまらずベルを鳴らして訪ねてきた。普段は在宅していないので偶々休日にこられたのだが・・・。顛末は理解していたので、あの1件だとわかった。何かの拍子でずれることもあるだろうから、固定化する修理までは、留守にするときにトイレ内の水栓を止めるようにしていた。

本質的な修理をすべきと判断して黒い樹脂容器が収まっている位置にクリップできるような部品を3Dプリンタで作成することにしたのだが、測定するのがとても難しい、タンクの中に金属の巻き尺をまげていれて大まかなサイズを割り出して、手探りで構造を押さえてから部品を試作繰り返して左の写真にある緑の部品のような形が最終形として仕上がった。もともとの何かの不具合に至った理由はわからないのだが、たぶん何かの樹脂部品が破損したのではないかとは思う。

水道代の請求から修理することにしたのだが落ち着いてよかった,

トイレタンク修理部品

掃除機のズームパイプの調節リングが壊れた・・・

  1. SHARPの掃除機の所謂パイプ長さを調整するリングが壊れてしまったそうだ。
    壊れたところを見ると締め付けた後に樹脂の劣化が生じたのだろうか、この部品だけを売っていたりすることがないのがこのご時世だ。効率最優先で全交換でパイプ込み
    で3000円ほどするようだ。3Dプリンタでアプローチしようとするも肉厚を増したうえでABSで出力してみるしかないという所だろうか。

雰囲気としては、昔のアマチュア無線のノブを設計するのに似ているが、大きなネジ
自体は近いサイズのネジを作りこんでからスケーリングで合わせるしかなさそうだ。

回転体として設計するのが都合が良いので、断面をイメージして計測結果から作図をする。補助線で引いた中心線に基づいて回転させる。長さ方向は合わせて、直径は計測したものに近いねじ径とピッチで円柱を作りオネジで作り長さ方向以外でサイズを調整して作った。

ちなみにDMMで一番安い印刷は最近強度もありそうな試作プロレジンの割引で2537円ということだ。実際にプリントしてみてから頼んでみるかな。タフレジンだと5056円ということだから、試作は特別価格のようだ。

DSC_0560

なんだか、それなりのものが出来た。一番難しかったのは螺子の谷に埋め込まれたサポートの取り外しだったが、バリ取り工具のプラ用で取り去ることが出来た。

 

[解決しました] STM32のADCで嵌った( MultiChannel 非連続 循環バッファ DMA TIM3駆動 )

DMAでADC開始した後にさらにADC開始をしていたために一回チャネルがずれてしまうことになったようだった。

pUart = &huart1;
HAL_ADC_MspInit(&hadc1);
HAL_UART_Receive_DMA(pUart, RdBuff, RCV_BUFF_SIZE); /* 受信開始 */
HAL_ADC_Start_DMA(&hadc1, ADC_BUFF, ADC_BUFF_SIZE*6);
HAL_ADCEx_Calibration_Start(&hadc1);
HAL_ADC_Start(&hadc1);

修正にいたる過程では6chのうち一つだけを増やしてサンプリングしたいということなどの要望がありDMAを使うものと割り込み駆動をするものとでトライしたがままならずDMAのみでサンプルするチャネルを当該のみ10倍にすることにした。この際に、バッファ段数の動的切り替えなどをトライする過程でADCとDMAの停止・取り込み再開の検討をする中で上記の点について気づきなおすことでトリガ単位で一つのチャネルをADC取り込みがなされることを確認できた。

HAL_ADC_MspInit(&hadc1);
HAL_UART_Receive_DMA(pUart, RdBuff, RCV_BUFF_SIZE); /* 受信開始 */
HAL_TIM_Base_Start(&htim3);
HAL_ADCEx_Calibration_Start(&hadc1);
HAL_ADC_Start_DMA(&hadc1, ADC_BUFF, ADC_BUFF_SIZE*15);

 

I2Cメモリの連続アクセスと個別アクセスの問題に遭遇した

STM32を使った測定器開発案件で、i2Cデバイスで2つのメモリ領域を持つデバイスの対応で嵌った。I2Cで用いるHAL層は以下の関数なのだが、領域全体をアクセスする場合と個別をアクセスする場合とでズレるのだ。ちなみに個別アクセスした場合には正しくアクセスできるが、連続アクセスした場合には1番地ズレた形でアクセスされて、最終領域に先頭データが読み込まれた。

HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)

そう、HAL層に違いはないのだ。

この事例では0x50(0xA0)と0x51(0xA2)のI2Cアドレスを持ち、それぞれに256バイトの空間を持つデバイスでした。以下のAPIを変えて実行してみると結果が異なった。

HAL_I2C_Mem_Read(&hi2c1, 0xA0, 0, 0x100, BUF, 256, 100)
1番地から読み出されて最後に0番地の内容が得られる

for(i=0;i<256;i++){
HAL_I2C_Mem_Read(&hi2c1, 0xA0, i, 1, &BUF[i], 1 , 100)
}
正しく読みだされる

CubeMXのバージョン違いを確認してHAL層のコードとしては違いはなかった。
i2Cの仕様として、メモリデバイスとそうでないものをMemAddSizeにて処理を分けている。今回のデバイスはどうも、メモリデバイスではあるもののそのプロトコルの実装に問題があるようだ。

I2Cの評価用ツールをお客様がお持ちだったのでその内容と検証して後者の実装で
逐一アドレス指定をする形での実装を行った。デバイスの検証は必要なステップだと改めて感じた。

STM32のADCで嵌った( MultiChannel 循環バッファ DMA TIM3駆動 )

STM32F103を用いてADCを複数チャネル使い、常時計測を行い計測要求があった時点で過去10mS間の64回のデータを移動平均を取って処理報告制御するという処理を組んでいたのだが、STM32の持つDiscontinuousモードを用いて各チャネルを一回ずつ分割して順次TIM3のイベント周期で計測していくという形で計測をした。TIM3で25uS毎にイベントを出してADCが1chずつ計測していきDMAがサーキュラーバッファに格納していく。PA0にNucleoのGND/3.3Vを接続してバッファにどの様に入るのかを確認した。この使い方をすると、3.3V result on PA0 discontinuous modeの様にバッファの先頭に入るべきが2つ目に入る結果となった。

150uS周期に全てのチャネルを一気に計測するContinuous modeにして計測した結果は、3.3V result on PA0 continuous modeのようにバッファ先頭に入る形となった。期待値は、こちらなのでこのモードを用いる形にした。なぜズレるのかは不明だ。

ちなみにCubeMXは6.5.0でIDEはTrueStudio9.3.0でのケースなのでCubeMXでの問題があるのかも知れない。納入先の指定で開発環境が指定されているのでその範囲で対応と対策を試みて納品に漕ぎつけた。