Arduino IDE vs MPLAB-X

マイコン制御プログラムの普及に大活躍したArduino IDE

Arduinoは元AtmelのCPUであるAVRを使って、Arduino IDEで数行のスケッチ(プログラム)を書けば、USBケーブルで接続したArduinoボードにプログラムを書き込んで動作するようにした、入門用マイコンです。

マイクロソフトを創業したビルゲイツは、最初に作ったパソコン用のBASICの大ヒットで成功への足がかりを作りました。

初期のPCでは複雑な準備をして、コンパイルに長い時間をかけないと動作するプログラムが作れませんでした。
「数行のプログラムを書けばプログラムが走り、結果が表示される。」ことが
BASICが大ヒットした理由ですが、Arduinoの大ヒットも「歴史は繰り返す」を見ているような気がします。

小学校プログラミング教育の教材としても最適なArduino

Arduinoはとにかく簡単にマイコン制御の勉強を始めることが出来るため、初心者向け入門用として優れているシステムです。
マイコンに関する予備知識が無い 小中学生でも、マイコンボードを使った制御プログラムを作って、動作を試してみることが出来ます。
文科省が推進している小学校プログラミング教育の教材としても、大いに活躍すると思います。

制御用マイコンとしてのArduinoの限界

Arduinoはマイコン入門用の教材として優れた特徴を備えていますし、数多くの拡張ボードが安価に提供されているため、Arduinoの機能が仕様を満たしているならば、Arduinoを使ってシステムを組むのは、開発効率においてもコスト面においても有利なので、検討する価値があります。

ただし、手軽に使えることを優先したBASICが開発のプロからは歓迎されなかったように、使い易さと性能にはトレードオフの関係があるため、Arduinoで高性能なシステムを組もうとすればMPLAB-Xを使うより多くの労力が必要となる分岐点があります。

Webを検索すると、Arduinoに使われているAVRCPUの性能を限界まで引き出すために、AVRのデータシートを調べて周辺機能レジスタを直接書き換えるなど、苦労している人が見つかります。

デジモノ覚書-Arduino Uno – PWM周波数を”自由に”変更する

万事、塞翁が馬- mega のタイマー割込みについて調べる

周辺機能レジスタを直接いじってAVRの性能を引き出すことが出来る能力と時間があれば、MPLAB-XとPICやSTMCubeMXとstm32マイコンの組み合わせを使えば、はるかに高度な制御をおこなうシステムを簡単に作れるのに、勿体ないと思ったりします。

高校生全国ものづくりコンテスト電子回路部門の課題を解くのが、ちょうどArduinoの限界点だと思います。
つまり、工夫してArduinoの割り込みを使いこなせるレベルの能力があれば、MPLAB-XとPICマイコンの使い方を覚えた方が幸せになれるのではないか、といったところでしょうか。

企業人から見れば、工業高校生レベルなら、Arduinoを卒業して、MPLAB-XでCPUの周辺機能レジスタを設定する技術を身につけて欲しい、という勝手な要望もあったりします。

それでもArduinoが使い易い理由

高度な制御になると加速度的に扱いが難しくなるArduinoですが、それでもArduinoを使いたい理由は、CPUボードと周辺ボードの豊富さと入手しやすさにあるのではないでしょうか。

例えばAmazonで検索すると、Arduino用超音波センサモジュールが、ひとつあたり200円以下で見つかります。

また、アリエクスプレスのサイトでArduinoをキーワードにして検索すると、100均レベルの価格で多数のパーツを見つける事が出来ます。

個人でPCB基板を設計製作することが難しかった少し前までは、既製のボードを買って組み合わせるしか手段が無かったため、とにかくArduinoでシステムを組むのが制御システム製作の近道でした。

今は個人が自由にPCB基板を作れる時代

ところが、PCB基板作りの環境はこの10年で大きく変わりました。

ひとつは、高機能なオープンソースのKiCadを使って個人で基板の設計が出来るようになったことで、もうひとつは格安基板メーカーの出現で1,000円以下で100㎜x100㎜の基板10枚を注文できるようになったことです。

個人が最初にPCB基板を設計して発注するには多少のハードルがあるのは事実です。
ただ、そのハードルは思ったほど高いものではありません。
上で紹介したように、Arduinoの限界を引き出すためにAVRのデータシートを読み込んで、試行錯誤に時間をかけてプログラムを作っている人ならば、簡単に乗り越えることの出来るハードルです。

マイCPUボードを使ってロボットコンテストに取り組んでみませんか

Arduino用周辺ボードはPICでも使えますから、目的にあったCPUボードを自作してセンサーはArduino用センサーボードを使うことで、高機能なシステムを安く製作することが出来ます。

ものづくりの楽しみは、何かを作り上げた時の達成感です。
購入したArduinoだけで制御システムを組み上げるより、自分で設計して作った
CPUボードでシステムを製作した方が、はるかに大きな達成感と喜びを感じられることを保証します。

マイコン制御に興味がある人には、是非、CPUボードの製作まで手掛けて頂きたいと思います。

ステッピングモータードライブ基板のKiCad5データ

モータドライブ基板のデータを公開します

PIC18F45K22CPUボードに重ねて使う、ステッピングモータやDCモータをドライブ出来るモータドライブ基板のKiCad5用データです。
ロボットコンテストで使うステッピングモータやDCモータのドライブ基板の参考として設計しました。
この基板は部品の配置までで、パターンは完成していませんので、御自分でドライブ基板を設計する時の参考データとしてお使いください。
githubの下記リンクに置いています。

KiCad5-StepMotorDriveType1

回路図PDF

StepMotorDriveType1-V10_sch

データとライセンス

ライセンスはオープンソースハードウェア扱いとし、オリジナル元の記載を忘れないようにしていただければ、使用上の制限は設けません。

モータドライブ基板 について

バイポーラステッピングモータ用として、秋月電子にあるドライブICの中から使い勝手の良さそうなL298NとパワーリレーEP2-3S3LAbをそれぞれ2個搭載した基板を設計してみました。

基板パターンの作り方

上図のように、部品のフットプリントを配置しただけでパターンは殆ど引いていません。
基板サイズは Fusion PCB の特価サービスが利用できる100㎜x100㎜に設定しています。

モータードライブ基板など、数アンペア以上の電流を流す基板で注意することは、バターンの太さを出来るだけ太くすることです。
パターンに流れる電流とパターン幅は、1ozの銅箔を使った時に1A/1mmと言われています。これは大電流を流した時にパターンの抵抗により発熱してパターンが焼損することを防ぐための目安です。

銅箔の厚みは面積当たりの重さ(単位oz)で表記されていて、標準が1ozで約35umです。信頼性が必要な時には2oz, 3ozの基板を指定することも出来ますが、特価サービスが使えないため値段が10倍以上になってしまいます。

L298Nの機能

L298Nには最大2Aの電流を制御できるフルブリッジドライバが2つ含まれていて、一個のバイポーラのステッピングモーター、または二つのDCモータの正逆転、回転数を制御することが出来ます。

L298Nの出力ピンとコネクタの間のパターン幅は出来るだけ広くとって下さい。
最大電流が2Aのモーター用のパターン幅が0.5㎜であっても、回路は動作しますし、いきなりパターンが焼けることはありませんが、大電流が流れる部分には可能な限り太いパターンを使うようにして下さい。

パワーリレー EP2-3S3LAbの機能

このリレーは自動車のパワーウィンドウに使われているモータ等を正逆転制御することが出来ます。
リレーですから電流の調整は出来ませんが、一つのリレーの中に2つのコイルが入っていて電流の向きを変えてモーターを駆動することが出来、最大25Aの電流をON/OFFすることが出来ます。

このリレーの最大定格は25Aですが、リレーとコネクタの間が短いですし、25Aを定常的に流すアプリケーションは殆ど無い思いますので杓子定規に25A=25㎜幅のパターンを引く必要はありません。
実際に使ってみてパターンが過熱するようなら、ジャンパ線で接続する対策を取ることも出来ます。
ちなみにリレーに接続されているコネクタは定格電流10Aなので、大電流が定常的に流す場合は、コネクタが過熱しないかをチェックして、必要であれば対策を考えて下さい。

PIC18F45K22CPUBrdのフットプリントと3Dデータ

このCPUボードのフットプリントには図のようにPIC18F45K22CPUボードから出力した3次元データを設定してあります。
このようにKiCadで作った基板の3Dデータを、フットプリントのデータとして使うことで、3Dデータ付きのフットプリントモジュールを作ることが出来るというサンプルです。

サンプルデータの使い方

このサンプルデータをKiCadで開いて編集する方法については KiCad5サンプルデータの使い方 を参照してください

KiCad5サンプルデータの使い方

KiCadの使い方についての参考リンク

KiCad 使い方―Google検索
KiCad ことはじめ – kicad.jp
kicadの使い方(回路図編) – KiCADで基板設計

KiCad用データの使い方

KiCad 5をインストールしたPCのフォルダに 、Githubからサブフォルダも含めてサンプルデータのファイル全体をダウンロードして下さい。

KiCad5のファイルメニュー → プロジェクトを開く で、メインフォルダのプロジェクトファイル xxxxx.proを開けば回路図と基板を開くことが出来ると思います。

KiCad事始め

KiCadで回路図を作成し、基板データを作るおおまかな流れは次のようになります。

  1. 回路図レイアウトエディタの「配置→シンボル」で部品を配置する
  2. 「配置→配線」で部品のピンを配線でつなぐ
  3. 「ツール→回路図をアノテーション」で各パーツに固有記号を割り振る
  4. 「ツール→フットプリントを関連付け」でシンボルにフットプリントを割り当てる
  5. 「ツール→ネットリストファイルを生成」で基板に渡すデータを生成する
  6. PCBレイアウトエディタで「ツール→ネットリストをロード」で部品と配線情報を読み込む
  7. 基板の外形を決め、部品を移動して配置する
  8. 「配線」を使ってピン間のネットをパターン化する
  9. 配線が終了したら「配置→ゾーン」で空いた部分をGNDパターンで塗りつぶす
  10. 「検査→デザインルールチェッカー」でパターンをチェックする
  11. 「ファイル→プロット」でガーバーデータを出力する

基板Cadを使ったことのない人にとって慣れない言葉が多いので、最初は戸惑うと思いますが、工程自体はそれほど複雑ではありません。
参考リンクやテキストを見ながらひとつひとつ進めていけば慣れることが出来ると思います。

回路図シンボルやフットプリントについて

インストールしたKiCadのライブラリにあるシンボルやフットプリントを使う場合は、チュートリアルに沿って進めていくだけで基板データを作るのはそれほど難しくないと思います。

また、ここで提供した回路や基板データにあるシンボルやフットプリントはプロジェクトに含まれているので、新たに部品を使わずに済む場合は回路図やパターンを変更するだけで済みます。

KiCadを使ってパターンの作成まで出来るようになり、次の段階で戸惑うのは、用意されていないシンボルやフットプリント及び3D表示で使うフットプリントに割り当てた3Dデータではないかと思います。

実は、シンボルエディターとフットプリントエディターを使えば 、回路図シンボルやフットプリントの作成も それほど難しくはありません。
KiCadのライブラリには、膨大なシンボルとフットプリントが用意されていて、色々な場所のライブラリを使えるようになっています。

「設定→シンボルライブラリの管理」、「設定→フットプリントライブラリの管理」でプロジェクトで使うライブラリを指定することになっています。

自分が作ったシンボルやフットプリントの置き場所を管理するためにも、「シンボルライブラリの管理」と「フットプリントライブラリの管理」を使い慣れておく必要があります。

3次元表示用データの置き場所

このページの上の図にあるようにPCBレイアウトエディタの3Dビューアを使えば基板の仕上がりを立体的に確認することができ、 基板の実装前に3Dビューア―で部品の干渉を確認すること出来ます。
3次元CADを使ってロボットの機構設計をしているならば、実装済み基板の3Dデータをロボットに読み込んで確認することも出来ます。

KiCad5では多くの部品メーカーや3Dデータ提供サイトが提供している標準フォーマットのステップデータ(.stp)も読み込めるようになったので、少し慣れれば自分が作ったフットプリントを3Dデータ付きで表示できるようになりました。

提供しているデータをGithubからダウンロードしてKiCad5で開いて、3Dビューアを見ても基板の形だけが表示されて部品は表示されないでしょう。
3次元表示用データはダウンロードしたデータに含まれていますが、プロジェクトの設定ではプロジェクトにある3Dデータを認識できないためです。

3次元表示データを認識させるための手順

3次元表示データをKiCad\から認識して3Dビューアで上図のように部品を表示するためにはプロジェクトからKiCadライブラリにデータをコピーする必要があります。

プロジェクトディレクトリ下の modules\packages3d\jsd.3dshapesの
jsd.3dshapes をディレクトリごとコピーし

KiCadをインストールしたディレクトリの下のshare\kicad\modules\packages3d\に貼り付けます。

KiCadをインストールしたディレクトリの下にshare\kicad\modules\packages3d\jsd.3dshapes が出来て、その中に.wrl と .step のファイルがたくさんあればOKです。