工作の2S(Seiri/Seiton)

工作やプログラムでやったことをまとめていきます

コンデンサ溶接電源の自作 その2

その1の続きです。その1はすでにだいぶ前に行った作業のまとめのため写真が少ない内容になりました。

また、この記事は英雄伝説 空の軌跡FCのローディング時間を使用して作成しています。

●主要キャスト(登場部品)

コンデンサ10000uF, 50V 2個使用

大須のボントンで購入しました。

f:id:kt-marshal:20160505202444j:plain

Nch FET 2SK3271

職場で拾ったのでタダ!5V駆動できるのでちょうどよい。放電用のスイッチとして使用します。

f:id:kt-marshal:20160505203136j:plain

木の入れ物(雑貨)

セリアで購入。ケースに使います。側面の隙間にスイッチを並べられるかなと思ってこれにしました。

Now, At the top of happiness.というのは今がまさに最高にハッピーだぜ的な感じでしょうか。そいつはよかった。

そして、2というのも意味分かりませんね。

f:id:kt-marshal:20160505204342j:plain

プラスチックまないた

 これもセリアで購入。立派な樹脂板材料です。PPPは加工しにくいと聞いたことがありますがまあいっかという。今回は木に張り合わせるという用途なので肉用を選択。

f:id:kt-marshal:20160505205356j:plain

●基板をつくる

家にある基板やコネクタを総動員し基板を作成

電線出し作業はケースを買う前に行ったため短く、あとで電源スイッチの分を作り直すことになったり、押しスイッチの線がちぎれたりと大変でした。

奥のライターはスミチューブ用です。ドライヤーやはんだごての根っこより収縮しやすいのでオススメです。(火災の危険がありますので使用については充分注意してください)

f:id:kt-marshal:20160505205956j:plain

コンデンサは下記のように2sqKIVで配線。一点配線がいいような気もしますが、ブレッドボードでも問題ないレベルなので数配線にしました。

f:id:kt-marshal:20160505210417j:plain

はんだ面です。コの字の黒い線はコンデンサやFETのGND線で電源の近傍で落としています。

左上の2sq集中エリアでは線間0.5mmくらいのギャップではんだ付けされているため、ショートすると危ないのでホットボンドで充填しておきました。

f:id:kt-marshal:20160505210953j:plain

 

 動作確認しOKそうなのでケースに入れて配置を確認します

基板固定サポータもピッチが底の梁木とちょうどよくなりました。

コンデンサも2sqの強力なテンションで写真の位置で静止しました。このまま固定できそうです。電池は適当です。

f:id:kt-marshal:20160505211657j:plain

●スイッチパネルを作成する

ここでまないたの登場です。製造者もこんな使われ方をするとは思ってなかったでしょう。

まず、必要なサイズを切り出します

f:id:kt-marshal:20160505212222j:plain

角のRは隠れるので気にしません

f:id:kt-marshal:20160505212234j:plain

スイッチ用の穴をエンピツでけがきます。一般的に、メーカー資料に板金寸法として穴寸法が出ていますがめんどくさいので実測でいきます。

f:id:kt-marshal:20160505212405j:plain

角穴はカッターで切り抜きます。丸穴はカッターでは難しいので、ドリルでφ5を空け、リーマで広げます。

f:id:kt-marshal:20160505212605j:plain

最後にカッターを使用してバリ取りして完了。

 

やはりPPPはやすりの刃は立ちませんでした。おそらくリュータでも溶着すると気がします。(昔、職場のリューターをPPP削って目詰まりさせて放置したことがあるのは内緒)

ちなみに樹脂加工は目の粗い組やすりもしくは紙やすり、2番角のゆるいドリルがいいみたいですね。(そんなもんうちにはない)

 

●組み立てる

基板は貼り付けボスで固定しています。タカチの製品だと思います便利です。

その他もアクリルフォーム強力テープやホットボンドなどで固定しました。

黄色のスイッチの穴が大きかったのでホットボンドで固定しました。(仕事だったら怒られてましたね)

f:id:kt-marshal:20160505213242j:plain

f:id:kt-marshal:20160505213236j:plain

いろいろあって、30Vの線をマイコンの数ピンに接触させてしまい、マイコン1つおしゃかにしましたが、マイコンを交換し電源投入から放電までどうにか動いているようです。

 

●次回の計画

次は溶接電極を作る予定です。洗濯ばさみのように自動で閉まる機構にうまくクロム銅電極を取り付けれればと思います。

クロム銅電極はCMでおなじみミスミー!で買えます。ただしメーター単位だったと思いますが。

 

明日から仕事という暗黒の時代の幕開けなので、たいがいのことが滞りますが、時間を見つけて作っていこうと思います。

コンデンサ溶接電源の自作 その1

2016年5月14日 追記 この設計ではうまく溶接できないという内容をその4でまとめてあります。

●作ろうと思ったきっかけ

仕事の延長線上(遊び)で近藤テックのマイウェルダーを使って熱電対の抵抗溶接を堪能しました。

近藤テック*1マイウェルダー

f:id:kt-marshal:20160504132924j:plain

マイウェルダーは、単相交流をトランスを通して1周期流すというシンプルな構造でした。

今回はコンデンサ充放電式なので方式はマイウェルダーとは違いますが、熱電対の残りかすが家にあるので、溶接ができる電源を造ってみようと思った次第です。

 

ただ、溶接できたからといって日常生活で得することは全くないので、フリマとかで売りつけて、その金で焼肉でも食べれたらいいなと思っています。

 

●事例を調べる

ネットに結構事例がありますね。過去トランジスタ技術にも事例がありました。

Youtube動画だと実際に溶接する様子が見れてなかなか迫力あるマシンもありました。

人によって細かい違いはありますが、

 コンデンサに 充電して ドーン!

ということは共通しています。したがって、そこを念頭に適当に設計していくことにします。

●構成を練る

f:id:kt-marshal:20160504135743j:plain

昇圧DCDCでコンデンサに充電

フィードバック電圧をマイコンADで監視

充電完了で放電スイッチ点灯

放電スイッチ押下でFETオン!

 

昇圧DCDCには秋月電気のモジュールを使っています

最大30V出力 昇圧型スイッチング電源モジュール NJW4131使用: 組立キット 秋月電子通商 電子部品 ネット通販

●回路図

KiCADを使っての初作図です。

画像として出力する方法がわからず、svgpng → jpg(pngの背景透明がアウトっぽい)としたらギリギリ数字が読めるかなレベルになりました。f:id:kt-marshal:20160504144839j:plain

 

●プログラム

自作溶接1プログラム.zip - Google ドライブ

とってもシンプルになっています。(一言で言えば手抜き)

 ADC、Timer0、FVRの自作ライブラリも同梱しています

●検証してみる

ブレッドボードで検証をしました。(ブレッドボード写真はどっかいった)

放電すると電源電圧が瞬間持ち上がる問題

どうやらFETのソースを電源GND端子から遠いところに配置したせいで、急な放電電流により電位差がでていたようでした。根元に配線しなおすことでキレイに解決しました

また、波形右側のギザギザもコンデンサのGNDを同じく電源近くに配線しなおすことで直りました。

f:id:kt-marshal:20160504142825j:plain

 

実際に熱電対を交差させた状態で放電したところ、火花が散りくっつきました。

(画像があったはずがどっかいき、電対もどっかいった)

爆裂の一歩手前レベルのようでややもぎれ状態でした。レベル、加圧を管理できればきれいにつくのではないかと思います

 

次回は基板製作とケーシング、電極製作をめどにまとめる予定です

なんか画像がごっそり消えたような気がするのは気のせいかな

 

●溶接について思い出す

仕事の延長線(遊び)の中で溶接について簡単に勉強もしました。

  • 溶接電流
  • 加圧力*2
  • 時間

の3つを管理することが重要で、単純に I^2Rt[J] の発熱量Hの公式に当てはまります。(異金属であれば電流方向もペルチェ効果の影響を受け片側が溶け過ぎ、もう片側は溶け不足になるなどもある)

今回、時間と電流はコンデンサと電圧による成り行きで、ボリュームによる調整で決まりますが、加圧力は形式によってばらつくような気がします。

 

たぶん洗濯ばさみ的な物ではさめばいいんじゃないかなと思っています。

*1:参考リンク:http://www.kondo-tech.co.jp/kthlist.htm

*2:電極が溶接電流により溶けて軟らかくなるのに追従して電対を抑えることで空間を作らず一体化させる目的がある

PIC1823のTimer0モジュールまとめ

●Timer0モジュールを使う目的

  • ミリ秒のウェイト
  • メインループのFPS管理

ワタクシはTimer0の割り込みでカウンタをインクリメントしています

現在オーバーフロー対策がありません(そんなんでいいんかい!)

 

●Timer0モジュール

f:id:kt-marshal:20160502215516j:plain

f:id:kt-marshal:20160502220447j:plainFosc/4(左上)を青線のとおりに導いてクロック源とするために OPTION_REG を設定し、割り込みを有効化すればTMR0レジスタのカウントが始まります。オーバフローするたびに割り込みルーチンが呼び出されます。

TMR0レジスタ

TMR0レジスタは8bitなので255からインクリメントした時点でオーバフローし、割り込み処理が呼び出されます。つまり256クロック必要なことになり必然的に256分周されちゃうわけです。

そこで割り込み処理終了時にTMR0に意図的に数字をセットすることで細かいタイミング調整ができると思います。(なぜ断言しないかというと合ってるかどうかはわからないがそれっぽくなったから)

●プログラム

tim0Initなど関数はtim0_lib.cにまとめてあります

// ------------------------------------------------------------------------------------------------
// 割り込み
// ------------------------------------------------------------------------------------------------
void interrupt isr(void){
  // Timer0割り込み処理
  if (TMR0IF == 1){
    tim0_count++;
    TMR0IF = 0;
    TMR0 = tmr0_val;
  }
}

void main(void) {
  // 初期化処理
  // Oscillator Control Register
  // SPLLEN (1) : 4x PLL is enable.
  // IRCF (1101): Internal oscillator frequency [4MHz HF]
  // uninplemented (0) : Read as '0'
  // SCS (11) : System clock select [Internal oscillator block]
  OSCCON = 0b11101011;

  // Timer0初期化
  tim0Init(OPTION_PA_8, 131);

  // 割り込みの有効
  PEIE = 1;
  GIE = 1;

  while(1){
    tim0_Wait(1000);
  }

  return;
}

 

下記は参考プログラムファイル

tim0_lib.zip - Google ドライブ

 

●チョイ待ちWait談義

職場ではArduinoの普及とともに、続々とマイコンデビューするようになっています。しかも、Arduinoでは標準でdelay()が用意されておりWaitもお気軽です。

そして、よく見かけるのが「ここのWait10秒実行してる間、スイッチとか見れないからどうしようかなー」というマイコンWait All 無視状態への対策。特にフロー制御系で出てきます。

こういう処理の場合、ワタクシは個人的に500msec以上のWaitは使わないようにしています。

下記のように「入力処理」と「状態」に分離し一箇所で処理がクローズしないようにします

 

入力処理 --------------------------

現在の状態を設定する

スイッチ、完了信号を変数などに代入(制御、出力は行わない)

 

状態処理 --------------------------

状態により遷移と処理

mode変数を列挙対として用意する。case内で状態遷移と処理を行う

switch(mode){

  case state1:  // センサーONならstate2へ

  case state2:  // 処理1実行しstate3へ

  case state3:  // 処理1実行完了ならstate1へ

}

てきな?

switchを増やせば並列作業も一応できると思います。ポイントはwhileなどで一箇所で処理が停滞することのないプログラムにするところです。

これはPLCのラダーの概念を参考にしています

 

 

PIC1823のクロック出力を見る

●PIC16F1823のクロック出力

内部動作クロックを4MHz(工場で±1%に校正済み)に設定しCLKOUTピンから出力します。ただし、データシートには”実際出力されるのはFOSCの1/4の周波数”とあり、1MHzが出力されるはずです。また、CLKOUTENは優先度が高くONに設定すると問答無用でクロックを出力します

6.3.2 CLKOUT FUNCTION
The CLKOUT function has a higher priority than the reference clock module. Therefore, if the CLKOUT function is enabled by the CLKOUTEN bit in Configuration Word 1, FOSC/4 will always be output on the port pin.

●プログラム

#include <xc.h>

// CONFIG1
#pragma config FOSC = INTOSC 
#pragma config WDTE = OFF
#pragma config PWRTE = ON
#pragma config MCLRE = ON 
#pragma config CP = OFF
#pragma config CPD = OFF
#pragma config BOREN = OFF
#pragma config CLKOUTEN = ON
#pragma config IESO = ON
#pragma config FCMEN = ON

// CONFIG2
#pragma config WRT = OFF
#pragma config PLLEN = ON
#pragma config STVREN = ON
#pragma config BORV = LO
#pragma config LVP = OFF 


void main(void) {
  // Oscillator Control Register
  // SPLLEN (0) : 4x PLL is disable.
  // IRCF (1101): Internal oscillator frequency [4MHz HF]
  // uninplemented (0) : Read as '0'
  // SCS (11) : System clock select [Internal oscillator block]

  OSCCON = 0b01101011;
  TRISC = 0b11101111;
  while(1);
  return;
}

 OSCCON

マイコンのオシレータをコントロールするレジスタを設定しています

内蔵オシレータを4MHzに設定しています

8MHzに限り4倍のPLLを使用でき最大32MHzで使用できるようです

●CLKOUTの出力波形

1.001MHzとでました

 0.99MHz ~ 1.01MHzの間に収まれば仕様上OKなのでいい感じですね

f:id:kt-marshal:20160501111724j:plain

 

マイコンが自分の狙った周波数で動いてることが確認できました

8MHz, 16MHzと変更すればちゃんと変わりますが、ジッタが目立ち始めました

 

さーて、ラーメンでも食ってくるか

PIC1823の感想とMPLABXでの開発

●ミッドレンジ PIC16F1823 のいいところ

レジスタ、ブロック図、プログラムそのすべてがシンプルで勉強にとても向いている。だから教材に選ばれやすいのかもしれない

データシート1冊でさくさく開発を進めることができます(Arduinoはリファレンスだけでレジスタ操作なくあそべちゃいますがね)

ただし、PICは古い型番も現役。どれを使えばいいのだろうかという意見を1回聞いたことがあります。なぜ1回かというと回りにPICユーザーがいないからです

f:id:kt-marshal:20160430210835j:plain

・プログラムメモリ:2Kワード
・RAM:128バイト
・EEPROM:256バイト
・I/O:最大12本
・ADコンバータ:10ビットx8ch
・コンパレータ:2ch
・タッチセンサ入力(CapSense):8ch
・タイマー:8ビットx2,16ビットx1

PICマイコンPIC16F1823−I/P: マイコン関連 秋月電子通商 電子部品 ネット通販

●開発するぞう

PIC遊びで現在ワタクシが使用しているのは下記のものです

・PIC kit3

f:id:kt-marshal:20160430213859j:plain

 

・接続ハーネス(フラットケーブル)と電源

 PICkit3は供給電力が少ないため電源がほぼ必要になります(100uFの電源ラインコンデンサでアウトです)

 PICkit3は直挿しもOKですがハーネスがあれば

  あれ・・・w 完成品のスペース、狭くてささらないっすwww

 なんて事態になりにくくなるでしょう

f:id:kt-marshal:20160430213910j:plain

 

・MPLAB XとXC8コンパイラ

f:id:kt-marshal:20160430214338j:plain

 

PICkit3(3000円くらい?)さえ手に入れてしまえばPICマイコン自体は数100円ですので出費は少ないかもしれません