制御部の製作

制御部の評価ができたので、プリント基板の製作に取りかかります。まずは、KiCadで回路を作成します。Arduino nano電源とモーター電源は別々にしたかったので、コネクタを別にしました。
自作卓球マシン製作のArduinoマイコン回路図

 

次に、プリントパターンの設計をします。基板サイズは、100mm × 70mmとしました。
自作卓球マシン製作のArduinoマイコン基板

 

プリントパターンをPress-n-Peel ブルー Transfer Filmという転写シートに印刷します。基板はサンハヤト社製のカット基板、片面紙フェノール100mm×100mm×1.6tを使います。
自作卓球マシン製作で使うプリント基板の作り方

 

カット基板を丸のこで切断して100mm×70mmにします。
自作卓球マシン製作で使うプリント基板の作り方

 

切断したカット基板は、スチールウォールを使って磨きます。
自作卓球マシン製作で使うプリント基板の作り方

 

パターンを印刷した転写シートと、カット基板
自作卓球マシン製作で使うプリント基板の作り方

 

カット基板に転写シートを耐熱テープで貼り付けます。以前は普通のセロハンテープを使っていましたが、耐熱性ではないのでネチャネチャになり、はがすときに苦労しました。
自作卓球マシン製作で使うプリント基板の作り方

 

ラミネーターに通します。回数は8回としました。熱いです。
自作卓球マシン製作で使うプリント基板の作り方

 

くっきりとパターンが見えてきます。ネットで調べると水で冷やす人もいるようですが、私は自然冷却しています。
自作卓球マシン製作で使うプリント基板の作り方

 

ペロッとゆっくりとめくっていきます。この瞬間が緊張します。ちゃんと転写してね!
自作卓球マシン製作で使うプリント基板の作り方

 

ちょっとパターンを油性マジックで修正して、いよいよエッチングをします。腐食液(塩化第二鉄液)を用意します。
自作卓球マシン製作で使うプリント基板の作り方

 

サーモヒーターの上にバットを載せて、腐食液(塩化第二鉄液)を200cc入れ、時々、かき混ぜながら温度が約40℃になるまで待ちます。
自作卓球マシン製作で使うプリント基板の作り方

 

バットの中に基板を入れます。
自作卓球マシン製作で使うプリント基板の作り方

 

時々、ゆすりながら確認します。もういいかな?
自作卓球マシン製作で使うプリント基板の作り方

 

極力、エッチング液はバットに戻し、基板はティッシュで拭いて水で洗います。
自作卓球マシン製作で使うプリント基板の作り方

 

残ったパターンは転写シートが付いているので、スチールウォールを使って落とすか、アセトンで拭いていきます。銅箔が見えたらパターンにあらかじめ、フラックスを塗布します。
自作卓球マシン製作で使うプリント基板の作り方

 

次に基板に穴をあけていきます。この作業は基板くずが出るので掃除機をかけながら根気のいる作業です。
自作卓球マシン製作で使うプリント基板の作り方

 

基板に部品を実装していきます。世界にひとつしかない基板完成!
自作卓球マシン製作で使うプリント基板の作り方

 

はんだ面です。共晶はんだですが、鉛フリーの練習も兼ねて、次回の製作分から変更しようと考えています。
自作卓球マシン製作で使うプリント基板の作り方

 

プログラムを載せておきます。
アナログ入力は最大1024で、それを1/4、1/6、1/8などと調整して、ボールの発射間隔、スピードを見ています。

 

//--------------------------------------------------
// Table Tennis Machine Control for Arduino nano
//--------------------------------------------------

 

void setup()
{
#define DM1P 3   //dc motor1 P hasshabu
#define DM1N 11  //dc motor1 N hasshabu
#define DM2P 9   //dc motor2 P kakimazebu
#define DM2N 10  //dc motor2 N kakimazebu
#define VR1 0    //dc motor1 control hasshabu
#define VR2 1    //dc motor2 control kakimazebu

 

  pinMode(DM1P, OUTPUT);
  pinMode(DM1N, OUTPUT);
  pinMode(DM2P, OUTPUT);
  pinMode(DM2N, OUTPUT);
}

 

void loop()
{
  int v1 = analogRead(VR1);
  int v2 = analogRead(VR2);

 

  digitalWrite(DM1N, LOW);
  analogWrite(DM1P, v1 / 4);
//  analogWrite(DM1P, v1 / 6);
//  analogWrite(DM1P, v1 / 8);

 

  digitalWrite(DM2N, LOW);
  analogWrite(DM2P, v2 / 4);
//  analogWrite(DM2P, v2 / 6);
// analogWrite(DM2P, v2 / 8);
}