基板切削 Arduino ボードを完成させる

昨日、ハードウェアは出来上がったもののソフトの設定がうまくいかず困っていましたが、下記のようにしたところ動作できるようになりました。同様のことをされる方のためにまとめておきます。

1. ハードウェアの仕様
Arduino Severino (こちら)
片面基板でできる。注意点は、シールドを乗せるところに背の高い部品を実装しないことと、RS232C通信用の2個のトランジスタが日本でよく使われているピン配置と異なること。

CNCで基板を切削し、手持ちの部品を実装させました。AVR はATmega328P を乗せて、16MHz で動かします。

2. ブートローダーの書き込み
売っているArduinoと同様の使い心地にするために、ブートローダーを書き込む。
書き込みにはAtmel のISP AVRISP mkII を使用し、Atmel studio 6 で書き込みを行った。
AVRISP mkII のドライバがWindows8.1 ではちゃんとしたインストレーションが行われないという問題があったため、ドライバーを入れ直した。(Jungo Connection のWINDriverという設定とした)。

書き込んだブートローダーはArduino Unoと同様に、optiboot_atmega328.hex を使用した。
また、フューズ、ロックビットのセッティングも、Arduino Unoの設定と同様に、
 EXTENDED = 0xFD
HIGH = 0xD6
LOW = 0xFF
LOCKBIT = 0xCF
と設定して問題なく動作した。

3. スケッチのコンパイルとロード
スケッチはArduino IDEでコンパイルして、シリアルポート経由で、いつものようにボードに転送する。
ボードは、Arduino Unoを選択。(Duemilanove ではうまくいかなかった)
DSCN3216

基板切削 Arduino ボードの作成

CNCでの基板作成の練習をしている話の続き(といいつつ、仕事で1週間ほど出張に行っていたので前がどこまでやったか忘れちゃった!)です。

基板を切削してみたものの、一部Gコードになっていないパスができちゃったということで、そのまま半田づけをしても余計面倒なことになりそうなので、修正をしようと考えました。銅箔パターン図を見るとちゃんとArduinoのページにある通りの銅箔なので、Gコードの生成をしているULPに問題があるんだろうな、ってことで、他の方法でGコードを生成してみることにしました。

使ったのは、pcb-gcode というulpのセット。
これでG-CODEを生成させて、Optiという最適化ソフトで最適化します。

そのうえで、Gコードをチェックして前の切削がされていなかったパスを探してその部分だけを抜き出して追加の切削をしました。切削されていなかったパスは2本だけでしたが、探すのがかなりめんどくさかったです。また、前のGコードと座標が違うので、位置合わせをするために穴を一つ選んでG-CODEに追加、その場所を基準にすでに切削してあるパターンと追加切削のパターンを合わせこみました。

DSCN3215
追加切削をやり、基板部分を切り出せるよう切削をしたところ。

基板は両面テープで張っていますが、これをはがすのにえらい苦労した。みんなどうやっているのだろうか。。。
一部基板を痛めてしまったので補修をしつつ、パーツを載せてArduinoボードを作ってみました。

部品をひたすら半田づけをしていきますが、私はこの作業を「半田セラピー」と呼んでいます。ああ、癒されるひととき・・・
DSCN3217

DSCN3218
部品は、ジャンク箱の中から漁って拾い出したので28pin 幅狭DIP ICソケットやジャンパピンやら、1列ピンソケットなどぴったりくるのがなく、適当にあるのから切り出して作りました。

また、パーツを乗せて半田づけしてから、部品の背が高くてシールドと干渉しそうなことが分かり、部品の取り付け方を縦から横に変更したり、それなりにハマりました。あ、そうそう。このボード、RS232Cの通信にトランジスタをPNP,NPNそれぞれ1個ずつ使っているのだけど、イタリア(?)製の基板なので、使用しているトランジスタが2SC1815, 2SA1015とかじゃなくて謎のTRなのはいいけど、ECBの並びじゃなくてCBE というもっとも収めにくい順序になっていたため、2SC1815をツイストする羽目になってしまいました。

ハードもハマったのですが、ソフトもなかなかハマりまくり(まだハマっているところだけど、忘れたら困るのでメモとして書いておきます)。
まず、ATmega328PにArduinoのブートローダーを書き込もうと思ったら、Arduino IDE, Atmel Studioのどちらでも、AVRISP mkII が認識できてない。Atmel Studioでできないのは、OSがWindows8.1 になって、ドライバーに問題が出ているためのようで、デバイスマネージャのJungo Connectivityというところにあるデバイスのドライバ更新をやり、デバイスの一覧から、Jungo ConnectivityのWINDriverというのを選んだら、Atmel Studio からはAVRISP mkIIを使ってAtmega328pに接続できるようになった。

Arduino IDEから書き込みができないのは相変わらずで、ブートローダーの書き込みをしようとすると、avrdude: usbdev_open(): did not find any USB device “usb”
というエラーがでてしまう。
いろいろググってみたけど、いまだ問題解決せず。Atmel studio からブートローダーを書き込めばいいような気がするけど、まだやり方がわからないし、どのブートローダーが適切か調べないとなあ、と思ったところで、今日はおしまいにしました。
DSCN3219
こんな感じでつないでます。
とりあえず、LEDチカチカをやって動作確認までしたかったけど今日は挫折。

跳ね上げ棚をつくる (2)

跳ね上げ棚一応作って取り付けしたんですが、金具の一部に改善点を見つけたので、とりあえず今のところ半分だけ修正をして取り付けています。また、時間があるときに残りの修正をしないといけないのですが、金物の修正は結構手間なので、しばらくこのまま?かも。

DSCN3199
わーぁ。ごみごみした倉庫!まさに大きな子供の遊び場という感じです。

棚を取り付けて荷物をこんな感じでおいているのですが、最初は吊り金物の左右方向の拘束が全くなかったため、かなり左右に動けるようになっていてまずい感じでしたので、棚の後ろ側の吊り金物2本の間に1×4の板を渡して、4本のM6ねじで固定したところ、かなり剛性感が高まりました。これが、まず修正点の1.

もう一点は、吊り金物の軸受を最初は金物に最初からついている長穴をそのまま使うという横着をしていたのですが、吊っているときはいいものの跳ね上げたときに軸が定まらないということに気が付いたので、丸穴がついている2mm厚のフラットバーを共締めすることで、フラットバーの丸穴を軸受として使うようにしました。これが修正点の2.

3番目は、四角い吊り金物(L金具)を最初そのまま使っていたのですが、跳ね上げをするためには、コーナーを丸くしないと取り付けている梁に金物がぶつかって梁が削られることが分かったので、CNCルーターでRをとるようにしました。2mm厚のフラットバーを取り付けた状態で一緒にRをとる切削をしました。前回、一発でエンドミルをおしゃかにしたので、今回かなりおとなしい設定で切削をしてまあまあの結果でしたので、パラメターを忘備録として書いておきます。

6mmエンドミル(HSS)、フィードF=100 切り込み量 0.2mm Z方向はF=60 回転数8600rpm (まだ速すぎるかも)
切削にあたっては、ワークに手元にあったミシン油を注油して潤滑、冷却をしたところ、かなり音が小さくなったので効果はある様子。
(かなりべたべたになりますが気にしない)
4mm厚の切削をするので、かなりの回数往復をすることになりますが、エンドミルを損傷せずに最後まで加工ができましたのでいいでしょう。

基板切削 練習問題

今度ちょっと自分の回路を設計して、そいつの基板をCNCで作ってみようと考えているのですが、CNCルーターを導入して初めて基板切削をやるということで、まず練習問題として、基板CAD EAGLEの設計ファイルが公開されているArduinoのボードを切削してみることにしました。

公開されているArduinoのボードデザインはこちらのもの。片面基板のデザインはなかなかないので、手始めにはちょうどいいです。

基板切削をするにあたって、CNCルーターのテーブルの平面性が問題になるという話がありますので、こちらの面だしの記事に倣って、ジュラコン板を切削して基板用の捨て板のようなものを作りました。

DSCN3201
制作したジュラコンの上に基板を強力両面テープ(日東のはがせるタイプ)でつけたところ。
基板は、カッターの寿命を温存したいので、柔らかい紙フェノールの安物を選びました。

テーブルへの固定はM6の+ねじを使ってやっていますので、取り付け用の穴を11mm径で6.5mmほどざぐって、エンドミルやドリルと干渉しないようにしてみました。

ジュラコン板の面だしは、0.3mmほど縦横に1.5mmピッチで6mmのエンドミルでF=800程度で切削。Z軸方向のフィードはF=120程度と遅いですが、出来上がりを見るとまあ妥当なところでしょうか。かなりかったるいので、途中ほったらかして食事したりテレビ見に行ったりしました。戻ってくると切りくずが堆積していましたが、出来具合には問題がありませんでした。

基板切削のためのGコードの作成は、Eagle のCADファイルを開いて、キデッジさんのところの、こちらに書かれている通りに、ULPを適用して、G-codeを生成しました。

ULPで設定する切削条件ですが、今回、購入したCNCに付属してきた中華Vカッター(0.4mm?)を使いますので、線幅0.4mm に設定したほかは、深さはdefaultの0.1mm Z方向のF=25 フィードF=200に(これらもdefault)設定です。

DSCN3207
切削中の様子。

DSCN3208
切削のパスをCAMプログラムで表示されているところ。

かなりかったるいですが、まず、パターンをVカッターで切削、その後、ドリル位置をVカッターで切削、0.8mmと1.0mmのエンドミルでドリル穴開けをしました。3.2mmのドリル穴があるのですが、これは1mmであけておいて後でボール盤で自分であけることにします。

DSCN3214
カッターの設定は問題がなさそう。きれいに切れています。ちょっとこの見栄えには感動しました。

一応出来上がり、ってことになっていますが、パターンにバグがある様子。RS232Cのコネクターのところの配線が、へんてこりんになっていて謎です。ULPの動作に問題があるのか、もともとのEagleファイルがバグっているのかは謎ですが、このままではいけないので、後で手動でGコードを作成するかして追加パターンを切削した後で基板は外そうと思います。

とりあえず今日はここまで。

菜園 玉ねぎの苗を植える

今年の春は玉ねぎをたんまり収穫しましたが、いろんな方におすそ分けをしたんですが、いまだにその時収穫した玉ねぎが余っているような状態ですので、今年は、かなり量を抑えめに苗を植えることにしました。

淡路の品種のうち、収穫後の保存に有利なターザンという品種を選びました(記憶があいまい)・・・

25本の苗を購入して植えます。今回は比較的密に植えてみました。

それから、余った場所には、妻がいろんな球根を埋めたのと、私は手元にあるキャベツやブロッコリの種をぱらぱらと蒔いておきました。球根は忘れて耕うんしてしまったら困るので、メモとして。また、種の方は、季節がずれているのと、本来ポットで苗を育てるべきなので、まあ、ダメでしょうが、種の袋を見つけたので、ダメもとで。