Arduinoで作った回路の小型化(Arduino互換機の製作)(6)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (2) (3) (4) (5) (6) (7) (8) (9) (10) 次のページへ
2017年02月14日 公開。

8.メモリ容量が少ないマイコンを使ってコストダウンする

8-1. ATmega88VとATmega168P

Arduino Unoを使って開発をする時に、32kBのフラッシュメモリをほとんど使い切る様な大きなスケッチを作る事って、あまりありませんよね。例えば、リスト1の電子サイコロのスケッチをArduino IDE 1.8.0でコンパイルすると、使用するのはたった1410バイトで、利用できるフラッシュメモリの4%しか使用しません。(図41参照)

図41、コンパイル時の使用メモリの表示
図41、コンパイル時の使用メモリの表示

この様にメモリの使用率が低い場合、Arduino Unoに使用されるATmega328Pよりも搭載メモリの少ないATmega88VやATmega168Pを使ってArduino互換機を作る事により、コストダウンをする事ができます。

写真29、ATmega88V(左)、ATmega168P(中)とATmega328P(右)
↑ 画像をクリックすると拡大
写真29、ATmega88V(左)、ATmega168P(中)とATmega328P(右)

全く同じ形状なので、型番の刻印を見なければ区別がつかない。メモリの使用量が少なければ、よりメモリ容量の小さなマイコンにスケッチを書き込んで載せかえる事で、コストダウンできる。

ATmega88VやATmega168Pは、搭載メモリが少ないこと以外は、ATmega328Pとほぼ同じ機能を搭載したAVRマイコンです。(ただし、ATmega88Vは、クロック周波数の上限が10MHzなので、注意が必要) 秋月電子では、ATmega88Vが150円、ATmega168Pが200円と、ATmega328Pの250円よりも安い価格で販売されています。(価格はいずれも2017年2月時点の物)

ATmega88VおよびATmega168Pと、ATmega328Pの相違点を表に示します。

表2、ATmega88V、ATmega168P、ATmega328Pの相違点
マイコン ATmega88V ATmega168P ATmega328P
フラッシュメモリの容量 8kB 16kB 32kB
EEPROMの容量 512B 512B 1kB
RAMの容量 1kB 1kB 2kB
電源電圧 1.8~5.5V 2.7~5.5V 2.8~5.5V
最大クロック周波数 4MHz(1.8~2.7V)
10MHz(2.7~5.5V)
10MHz(2.7~4.5V)
20MHz(4.5~5.5V)
4MHz(1.8~2.7V)
10MHz(2.7~4.5V)
20MHz(4.5~5.5V)
秋月電子での価格
(2017年2月時点)
150円 200円 250円

フラッシュメモリは、スケッチを書き込むメモリですから、ATmega328P、ATmega168P、ATmega88Vの順に大きなスケッチを書き込めることになります。

EEPROMは、電源を切っても消えないデータを記憶するためのメモリです。EEPROMライブラリを使ってEEPROMの読み書きをしない限りは、EEPROMの容量は問題になりません。

RAMは、変数などの、電源を切ると消えてしまう、書き換え可能なデータを記憶するためのメモリです。ATmega88VやATmega168Pは、ATmega328Pの半分のRAM容量しかありませんから、あまりたくさんの変数は使えない事になります。

最大クロック周波数はATmega168PとATmega328Pの場合20MHzですから、双方ともに16MHzでも8MHzでも動作させる事ができますが、ATmega88Vの場合、10MHzが上限ですから、16MHzでは動作させられない事になります。

広告

8-2.ATmega88VやATmega168Pにスケッチを書き込む方法

ATmega88VやATmega168Pを使う場合、ハードウェア的には図10(水晶振動子を使う場合)や図34(内蔵CR発振器を使う場合)の回路図において、ATmega328PをATmega88VやATmega168Pに乗せ換えるだけでOKです。

図10(再掲)、Arduino互換機を搭載した電子サイコロの回路図
↑ 画像をクリックするとPDFファイルで表示
図10(再掲)、Arduino互換機を搭載した電子サイコロの回路図
図34(再掲)、内蔵CR発振器を利用した場合の電子サイコロ
↑ 画像をクリックするとPDFファイルで表示
図34(再掲)、内蔵CR発振器を利用した場合の電子サイコロ

ただ、スケッチの書き込み方は、若干異なります。Arduino Uno用ブートローダライタシールドを使う場合とArduino用ブートローダ/スケッチライタを使う場合のスケッチの書き込み方を、順に説明します。

8-2-1.Arduino Uno用ブートローダライタシールドを使う場合のスケッチの書き込み

Aruino Uno用ブートローダライターシールドを使う場合のスケッチの書き込み方法について説明します。

Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1440円
販売店 スイッチサイエンス
サポートページ

まず、ATmega88/88V/168P/328PサポートファイルをArduino IDEにインストールしてください。インストール方法は、ATmega88/88V/168P/328PにArduinoのブートローダを書き込むの記事に説明があります。

次に、4ページで説明した8MHz水晶振動子・3V動作の場合のATmega328Pへのスケッチの書き込み方と、手順9以外は同様の方法でスケッチを書き込んでください。

Arduino IDE 1.0.Xをお使いの場合、手順9ではツール→マイコンボードメニューで使用するマイコンとクロックの組み合わせを選んでください。(図42参照)

図42、マイコンとクロックの組み合わせを選択(Arduino IDE 1.0.Xの場合)
図42、マイコンとクロックの組み合わせを選択(Arduino IDE 1.0.Xの場合)

注:ここでは"ATmega168P(8MHz/X'tal)"を選択していますが、実際には自分の使用するマイコンとクロックを選択して下さい。

ここで、マイコンの種類は表3を、クロックは表4を参照して選択肢を選択してください。

表3、使用するマイコンと選択肢上の表記
使用するマイコン 選択肢上の表記
ATmega88V ATmega88
ATmega168P ATmega168P
ATmega168P ATmega168P

注:使用するマイコンがATmega88Vの場合、"ATmega88"を選択してください。ATmega88VとATmega88は異なるマイコンですが、10MHz以下のクロック周波数で使う場合、両者には互換性があります。

表4、使用するクロックと選択肢上の表記
使用するクロック 選択肢上の表記
8MHzの水晶振動子(またはセラミック発振子) 8MHz/X'tal
16MHzの水晶振動子(またはセラミック発振子) 16MHz/X'tal
8MHzの内蔵CR発振器 8MHz/INT OSC

Arduino IDE 1.6.X、1.7.X、または1.8.Xをお使いの場合は、手順9でまずツール→ボードメニューで使用するマイコンを選び(図43参照)、次にツール→Clockメニューでクロックを選んでください(図44参照)。

図43、マイコンを選択(Arduino IDE 1.6.X、1.7.X、または1.8.Xの場合)
図43、マイコンを選択(Arduino IDE 1.6.X、1.7.X、または1.8.Xの場合)

注:この例では"ATmega168P"を選択していますが、実際には自分の使うマイコンを、表3を参考に選択してください。

図44、クロックを選択(Arduino IDE 1.6.X、1.7.X、または1.8.Xの場合)
図44、クロックを選択(Arduino IDE 1.6.X、1.7.X、または1.8.Xの場合)

注:この例では"8MHz/X'tal"を選択していますが、実際には自分の使うクロックを、表4を参考に選択してください。

8-2-2.Arduino用ブートローダ/スケッチライタを使う場合のスケッチの書き込み

Arduino用ブートローダ/スケッチライタを使う場合のスケッチの書き込み方法について説明します。

Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 3000円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタ(完成品) 商品名 Arduino用ブートローダ/スケッチライタ(完成品)
税抜き小売価格 3600円
販売店 スイッチサイエンス マルツ
サポートページ

まず、ATmega88/88V/168P/328PサポートファイルをArduino IDEにインストールしてください。インストール方法は、ATmega88/88V/168P/328PにArduinoのブートローダを書き込むの記事に説明があります。

次に、Arduino用ブートローダ/スケッチライタの製作(7)に書いてある説明に従って、スケッチを書き込んでください。

ただし手順8では、自分の使うマイコンとクロックを選択してください。

Arduino IDE 1.0.Xを使っている場合は、手順8でツール→マイコンボードメニューで使用するマイコンとクロックの組み合わせを選択します。

図45、マイコンとクロックの組み合わせを選択(Arduino IDE 1.0.Xの場合)
図45、マイコンとクロックの組み合わせを選択(Arduino IDE 1.0.Xの場合)

注:この例では"ATmega168P(8MHz/X'tal)"を選択していますが、実際には自分の使うマイコンとクロックを、表3表4を参考に選択してください。

Arduino IDE 1.6.X、1.7.Xまたは1.8.Xを使っている場合は、手順8で、まずツール→ボードメニューでマイコンを選び(図46参照)、次にツール→Clockメニューでクロックを選びます(図47参照)。

図46、マイコンを選択(Arduino IDE 1.6.X、1.7.X、または1.8.Xの場合)
図46、マイコンを選択(Arduino IDE 1.6.X、1.7.X、または1.8.Xの場合)

注:この例では"ATmega168P"を選択していますが、実際には自分の使うマイコンを、表3を参考に選択してください。

図47、クロックを選択(Arduino IDE 1.6.X、1.7.X、または1.8.Xの場合)
図47、クロックを選択(Arduino IDE 1.6.X、1.7.X、または1.8.Xの場合)

注:この例では"8MHz/X'tal"を選択していますが、実際には自分の使うクロックを、表4を参考に選択してください。

次のページでは、ICSP書き込みを使って、基板からマイコンを抜き差しする事なくスケッチを書き換える方法について説明します。

目次へ  前のページへ (2) (3) (4) (5) (6) (7) (8) (9) (10) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1440円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 3000円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタ(完成品) 商品名 Arduino用ブートローダ/スケッチライタ(完成品)
税抜き小売価格 3600円
販売店 スイッチサイエンス マルツ
サポートページ
Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。