おもちゃラボ

Unityで遊びを作っていきます

Arduino IDEからAVRにスケッチを書き込む

f:id:nn_hokuson:20190220200250j:plain

Arduinoは回路の実験をするには便利なんですが、後々まで置いておきたいものに組み込むには、ちょっと大げさです。

組み込んで置いてても、いざ使おうとすると、ピン足が抜けててあれどこにさすんだっけ?みたいな。長期保存することを考えると、AVRにスケッチを書き込んでを半田付けしちゃうのが一番です。

ATTiny85なら秋月で100円程度なので、組み込む心理障壁もやや低め。ということで、前置きが長くなりましたが、ここではarduino で書いたスケッチをAVRに書き込む方法を紹介します。

ArduinoはAVRライターにしない!

既存のArduinoをAVRライターとして使う方法もあるっちゃぁ、あるのですけど、少しややこしい上に、 Arduino からAVRに書き込むタイミングで次のようなエラーが出て、どうしようもなくなることがあります。

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.

AVRのヒューズビットの問題のようですが、これを解決するためにヒューズリセッタを作って・・・なんてやってると終わらない。

AVRライター(USBASP V2.0)は買っても250円程度なので、エラーにハマる手間賃と思って、こっちを買うことをお勧めします。これとArduinoのスケッチさえあれば、確実にAVRにスケッチを書き込めます。

AVRライターとAVRの接続方法

AVRライターとAVRを接続します。ライター側のVCC、GND、MOSI、MISO、RST をそれぞれ、対応するピンに接続するだけです。

上記AVRライターの出力ピン配置は次のようになっています。

f:id:nn_hokuson:20190219202009p:plain:w300

Attiny85のピン配置は次のようになっているので、これをつなぎます。ほかのAVR(ATTiny2313など)でも同様です。ピン配置はデータシートを参照下さい。

f:id:nn_hokuson:20190219202356p:plain:w300

(番外編)アダプタを作る

ブレッドボードなどを使って接続しても良いのですが、いちいち組み立てるのが面倒なので、うちではTiny85用のアダプタを作りました。

f:id:nn_hokuson:20190219203241j:plain:w400

一応、マスクデータを置いておきますね。ご自由にお使いください(MOSIの配線だけはジャンプワイヤでつないでください)

f:id:nn_hokuson:20190219203615p:plain:w130

プリント基板を自作する方法は次の記事で説明しているので、参考にしてみてくださいね!

nn-hokuson.hatenablog.com

AVRにArduinoのスケッチを書き込む設定をする

次にArduino のスケッチをAVRに書き込むための設定をしていきます。Arduino IDEからAVRに書き込むにはATTinyCoreというミドルウェアを使用します。

Arduinoのメニューから環境設定を開き、メニューバーからArduino→Preferencesと進み、追加のボードマネージャのURLに http://drazzy.com/package_drazzy.com_index.json と入力してください。

f:id:nn_hokuson:20190219204319j:plain:w500

メニューバーから「ツール」→ 「ボード」→「ボードマネージャー」を選択して、ATTinyCore を選択してインストールしてください。

f:id:nn_hokuson:20190219204827j:plain:w500

次に書き込み設定を行います。メニューバーから「ツール」を選択して次のように設定してください。

ボード ATTinyCore/ATtiny85
Clock 8MHz(internal)
Chip ATtiny85
書き込み装置 USBasp

f:id:nn_hokuson:20190219205325j:plain:w300

Arduinoのスケッチを作成する

ここでは簡単にLチカのプログラムを作って・・・・と言いたいところですが、LEDを光らそうにもAVRのピン番号がわかりませんね。

AVRとArduinoのピン対応は次のサイトにまとまっているので、使用しているAVRを探してみてください。

github.com

上のサイトでArduinoとATTiny85の対応を確認したところ、次のようになっていました。

f:id:nn_hokuson:20190219211505p:plain

水色で書かれたARDUINO PINというのがピン番号です。「ディジタルピン/ アナログピン」の順番で並んでいます。ここでは3番ピンを使ってLチカするプログラムを作ってみましょう。

Arduino IDEに次のプログラムを作ってください。

void setup() {
     pinMode(3, OUTPUT);
}

void loop() {
    digitalWrite(3, HIGH);
    delay(100);
    digitalWrite(3, LOW);
    delay(100);
}

プログラムが作れたら、Arduinoの書き込みボタンを押してAVRに書き込みましょう。

f:id:nn_hokuson:20190220200455p:plain:w300

動作確認

AVRの書き込み装置から外して、3番ピン(Tiny85左側の上から2番目)にLEDと抵抗を接続してください。回路図は下のような感じになります。

f:id:nn_hokuson:20190220221839j:plain:w300

電源を入れると点滅することを確認しましょう!

f:id:nn_hokuson:20190220200927g:plain

(おまけ)プログラムのサイズを小さくする

Tiny85などの小さいAVRは、プログラムを配置するためのRAM容量も小さくなってしまいます。Arduinoに使われているATmega328はFlashが32KBなのに対して、Tiny85では8KBと1/4のサイズしかありません

コンパイル後のプログラムサイズはArduino IDEに表示されるので確認してみましょう。

最大8192バイトのフラッシュメモリのうち、スケッチが908バイト(11%)を使っています。
最大512バイトのRAMのうち、グローバル変数が9バイト(1%)を使っていて、ローカル変数で503バイト使うことができます。

Lチカだけで1KBちかく消費しています。なんとかプログラムのサイズを削りたい・・・そんなときの定石があります。digitalReadとdigitalWriteメソッド、あとpinModeメソットをそれぞれ次のプログラムに置き換えてみましょう。

置換前 置換後
digitalWrite(3, HIGH) PORTB |= _BV(3)
digitalWrite(3, LOW) PORTB &= ~_BV(3)
pinMode(3, OUTPUT) DDRB |= _BV(3)

置換後のプログラムは次のようになります。

void setup() {
     DDRB  |=  _BV(3);
}

void loop() {
    PORTB |=  _BV(3);
    delay(100);
    PORTB &= ~_BV(3);
    delay(100);
}

digitalWriteなどのメソッドは汎用性を考慮して、かなり大きなプログラムになっています。ここではマイコンらしくピンのオンオフだけをするように変更しました。コンパイルして容量を確認してみてください。

digitalWrite関数を使わないようにするだけで、プログラムサイズを500バイト程度減らせました。全部で8KBしかないことを考えると節約するに越したことはありません。

最大8192バイトのフラッシュメモリのうち、スケッチが490バイト(5%)を使っています。
最大512バイトのRAMのうち、グローバル変数が9バイト(1%)を使っていて、ローカル変数で503バイト使うことができます。

鉄道模型のパワーパックを自作する

鉄道模型を動かすときの電源装置はKATOやTOMIXなど各社から発売されています。呼び方も「パワーパック」だったり「パワーユニット」だったりとまちまちですが、とにかく電車の速度が変えられるあれです。

うちにも一台あったのですが、行方不明になってしまい・・・(なんでや)、せっかくなので自作してみることにしました。

f:id:nn_hokuson:20190204201415j:plain:w550

今回作るパワーパックの仕様

さて、今回作るパワーパックは機能を削ぎ落としたスリムパワーパック(なんか、モバイルバッテリーっぽい名前)にしようと思います。機能は次の通り。

  • 電源電圧は12V1A、過電流保護付き
  • ボリュームで速度調整ができる
  • 電源スイッチ付き

流石に過電流保護とボリュームがついていないと、もはや電源アダプタを直つなぎしたのとあまり変わらないので、こうなりました(笑)

パワーパックの回路図

今回作成するパワーパックの回路図は次のようになります。

f:id:nn_hokuson:20190204203220j:plain:w300

トランジスタ1石の超シンプル回路構成です。ボリュームによってトランジスタのベースの電圧(と流入する電流量)を調節し、トランジスタからの出力電圧を変化させます。

トランジスタには2SD1415Aを使っています。ダーリントントランジスタでないと出力する電流量が足らなくて、電車が動かない可能性があります。2019年2月現在、秋月で100円程度で販売されています。

akizukidenshi.com

あ、あとトランジスタの足ですが、平らな面からみて左から「エミッタ・コレクタ・ベース」の順番で並んでいます。ちょっとハマりポイントなので注意してください!

f:id:nn_hokuson:20190204203307j:plain:w100

あとの材料は、一般的なものなので何でも構いません。過電流保護用のポリスイッチは忘れずにつけてください。パワーパックは壊れても鉄道模型は壊さないでください。

一応使用した部品のリストを書いておきます。

あと、レールと電源はこちらを使用しました。

TOMIX Nゲージ スーパーミニレールセット エンドレスセット SAパターン 91080 鉄道模型用品

TOMIX Nゲージ スーパーミニレールセット エンドレスセット SAパターン 91080 鉄道模型用品

パワーパックの組み立て

今回自作するパワーパックの回路は非常に単純なので、ラグ板を使って組みました(渋い)
電源入力端子と出力端子(コネクタ)はホットボンドを使って固定しています。ええ邪道です。

f:id:nn_hokuson:20190204194932j:plain:w500

ラグ板に半田がうまく乗らないときは、フラックスを塗りたくりましょう(ってほど、塗っちゃだめです)ものすごくはんだ付けが捗ります。

完成したパワーパックがこちら。ちゃっちいですが、ちゃんと動きます。

パワーパック完成写真

試運転

ちゃんと動いてます。走っているのはEgger Bahn No5。小型の機関車がとても好きなのです。

パワーパック動作動画

ここまで読んでいただいてなんですが、
パワーパックぐらい自分で買うよ、という方はこちらからどうぞ(笑)

KATO Nゲージ パワーパックスタンダードSX (ACアダプター別売) 22-018 鉄道模型用品

KATO Nゲージ パワーパックスタンダードSX (ACアダプター別売) 22-018 鉄道模型用品

TOMIX Nゲージ TCS パワーユニットN-1001-CL 5506 鉄道模型用品

TOMIX Nゲージ TCS パワーユニットN-1001-CL 5506 鉄道模型用品

【EAGLE】プリント基板を自作する エッチング編

前回はEAGLEを使って配線パターンを作成しました。

nn-hokuson.hatenablog.com

今回はこれを実際のプリント基板上に実装するまでの流れを説明したいと思います。転写〜エッチングまでの流れは次のとおりです。

  1. 配線パターンを印刷する
  2. 配線パターンを転写する
  3. エッチングする

それではまず、配線パターンを印刷するところから見ていきましょう。

配線パターンを印刷する

配線パターンを転写するためにはレーザープリンタで印刷する必要があります。家にレーザープリンタがあるならそれでOKです。

brother レーザープリンター A4 モノクロ JUSTIO HL-L2365DW

brother レーザープリンター A4 モノクロ JUSTIO HL-L2365DW

レーザープリンタが無い人(普通?)は、インクジェットでプリントしてから、コンビニでコピーすればOKです。

コピーするのはセブン・イレブンがオススメです。セブイレの株主というわけではありませんが(笑)紙質とトナーの乗りが一番転写に向いていました。ローソンとファミリーマートでコピーしたものは、うまく転写できませんでした。

家にプリンタすら無い・・・という人は
ネットプリントなどを使えば良さそうです。

www.printing.ne.jp

印刷した配線パターンはこんな感じになりました。
失敗したとき用に多めに印刷しておくと楽です。

f:id:nn_hokuson:20190122212850j:plain:w450

プリント基板を切り出す

印刷したパターンサイズに合わせてプリント基板を切り出します。

プリント基板を着るにはPカッターを使います。両面からスジ彫りしてから折り曲げるとパキっときれいに割れます。片側だけスジ彫りすると、不格好に割れることがあります。

f:id:nn_hokuson:20190122213523j:plain:w300 f:id:nn_hokuson:20190122213534j:plain:w300

今回は2.5cm x 3.0cmのサイズにプリント基板を切り出しました。

f:id:nn_hokuson:20190122213834j:plain:w450

配線パターンを転写する

いよいよ山場の転写工程です。ここが一番ミスりやすくて、情報が錯綜している部分でもあります。

転写する方法として、次の3つが主に紹介されています。

  • 転写シートを使う方法
  • アセトンで転写する方法
  • アイロンで転写する方法

うちではアイロン転写が一番簡単で上手くいく(ただし結構シンドイ)方法でした。なので、この記事ではこれをオススメします。必要なものはヤスリとアイロンだけです。

まずはプリント基板の銅板面を200番程度のヤスリ(またはスチールウール)でヤスリます。これで表面についている油やサビなどの汚れを落として、転写しやすい状態になります。

f:id:nn_hokuson:20190122215148j:plain:w450

次にプリントした紙を水に濡らして銅板面に貼り付けます。

f:id:nn_hokuson:20190122215246j:plain:w450

このあと3分〜5分ぐらい思いっきり上からアイロンで押さえつけます。

f:id:nn_hokuson:20190124193303j:plain:w450

終わったら、プリント基板を水につけて紙をふやかします。アイロン台から基板を取るときに非常に熱くなっているので注意してください。

f:id:nn_hokuson:20190122215332j:plain:w450

ある程度紙がふやけてきたら、ゴリゴリこすりながら紙を剥がしていきます。ちゃんと転写できていれば、こすっても基板側のトナーは剥がれません。

f:id:nn_hokuson:20190122215534j:plain:w450

これで転写の工程が完了です。この時点で転写ミスが見つかったら・・・。一部分だけ修正したい場合は、油性ペンで塗りつぶせば大丈夫です。

全面的にやり直したいときはアセトン(ネイルの除光液)をかけることでトナーを洗い流せるので、再度アイロン転写をやり直してください。

エッチングする

次に転写したパターンを使ってエッチングしていきます。トナーが乗っている黒い部分はエッチングされず、銅版がのこります。一方マスクされていない部分はエッチングされ、絶縁領域になります。

まずはエッチング液をつくります。必要なものは次の3点です。

  • オキシドール
  • クエン酸
  • 食塩

【第3類医薬品】オキシドール 500mL

【第3類医薬品】オキシドール 500mL

暮らしのクエン酸? 330g

暮らしのクエン酸? 330g

今回の基板サイズ(6cm^2)くらいならクエン酸4g、食塩1gを紙コップに入れて、そこにオキシドールを入れていきます。時々かき混ぜながら、クエン酸と食塩が全部溶け切るくらいまでオキシドールを追加します。

温度が低いとエッチングが進みにくいので、お湯(50℃くらい)を張った容器を用意し、そこに紙コップを沈めてエッチングします。

f:id:nn_hokuson:20190122215749j:plain:w450

エッチング中の様子です。だんだん泡が出てきて、溶液がエメラルドグリーンに変化していきます。エッチング時間が長すぎると、トナーでマスクしたところまで侵食してしまうので、必要な部分がエッチングできたらすぐに引き上げるようにしてください。

f:id:nn_hokuson:20190122220003j:plain:w220 f:id:nn_hokuson:20190122220013j:plain:w220 f:id:nn_hokuson:20190122220023j:plain:w220

最後にプリント基板のトナーを洗い流します。トナーは水では流れないので、アセトン(ネイルの除光液)を使います。これをジャバジャバかけてトナーを流したあと、ヤスリで軽くこすります。

f:id:nn_hokuson:20190122220422j:plain:w300 f:id:nn_hokuson:20190122220431j:plain:w300

これでエッチングによる自作プリント基板の完成です。テスターで必要なところが導通しているか?不要なところが導通していないかの確認を行っておきましょう。

部品をはんだ付けする

作成したプリント基板に部品をはんだ付けします。まずはドリルで穴を開けます。

f:id:nn_hokuson:20190122220856j:plain:w450

あたかも、ハンドドリルで穴を開けたような写真ですが、手動は大変なのでルーターや電動ドリルを使いましょう(笑)ドリル径は0.8mmがちょうど良いです。

プロクソン(PROXXON) ミニルーター 回転数が調節可能 MM100 No.28525

プロクソン(PROXXON) ミニルーター 回転数が調節可能 MM100 No.28525

半田ののりを良くするため、プリント基板全体にフラックスを塗っておきます。これを塗らないと、半田が流れずに苦労します。

フラックスが塗れたら、最後に半田付けをします。無事ピカピカしています。長かったですね。。

f:id:nn_hokuson:20190122221641g:plain

エッチング液の捨て方

さて、最後に大切なことをもう一つ。

エッチング後の廃液には銅イオンが含まれているため、そのまま流してはいけません。絶対に駄目です。イタイイタイ病があなたの家から発生します(知りませんが)

エッチング液に溶け出した銅イオンを抽出する必要があります。そのためにはアルミホイルをエッチング液にちぎって入れます。一度に大量のアルミホイルを入れると、発熱やらなんやらで、すごいことになるので注意です!

銅イオンが抽出されると、溶液は黒くなり、下の方に銅が沈殿しているのがわかります。コーヒーフィルターなどでろ過してから捨てるようにしましょう。