秋月ATMEGA328PB-AUと32ピンQFP変換基板で作る自作Arduino

ATmega328PB-AUを32ピンQFP変換基板に実装し、16MHzクリスタルオシレーターを使って構成した自作Arduinoのアイキャッチ画像秋月ATMEGA328PB-AUと32ピンQFP変換基板で作る自作Arduino
スポンサーリンク

秋月電子で販売されている ATMEGA328PB-AU(32ピンQFP) は、
Arduino UnoでおなじみのATmega328Pの改良版マイコンです。
今回はこの ATMEGA328PB-AU と32ピンQFP変換基板 を使って、
いわゆる「自作Arduino」を作ってみました。

結論から言うと、

  • 内部発振は非常に簡単
  • 外部発振は理論通りにいかないことがある
  • 外部発振を使うならクリスタルオシレーターが一番安定

という結果になりました。
この記事では、
実際に試してうまく動かなかった点・安定した構成を中心に、
ATMEGA328PB-AUをArduinoとして使う方法をまとめます。

スポンサーリンク

ATMEGA328PB-AUとは?

ATMEGA328PB-AUは、
Arduino Unoで使われている ATmega328P の改良版です。

主な特徴:

  • 32ピンQFPパッケージ
  • I/Oピン増加
  • USART / TWI / SPI などが強化
  • 基本的なArduino互換性あり

Arduino用としても十分実用になります。

ATmega328Pとの主な違い

項目328P328PB
UART12
I2C(TWI)12
タイマー標準増加
消費電力標準改良
Arduino IDE標準対応追加設定が必要

👉 注意点
Arduino IDE標準では328PBは完全対応していないため、
「MiniCore」などの外部ボード定義を使うのが一般的です。

使用した部品・構成

ATMEGA328PB-AU

32ピンQFP変換基板(秋月)

Arduino Uno(ISP用)

ブレッドボード or ユニバーサル基板

Arduino UNOをISPとして使う

Arduino UNO側の準備

  1. Arduino IDEで
    ファイル → スケッチ例 → ArduinoISP
  2. UNOに書き込み
  3. UNOの RESET–GND間に10µF(自動リセット防止)

UNO ISP と ATmega328PB の配線

配線表

Arduino UNOATmega328PB
D10RESET
D11MOSI (PB3)
D12MISO (PB4)
D13SCK (PB5)
5VVCC / AVCC
GNDGND

外部発信クリスタルオシレーターとの接続図

実験結果

外部発信(水晶振動子)

以下の構成を試しましたが、
動作が不安定、または正常に動かない。

  • 16MHz 水晶振動子 + 22pF セラミックコンデンサ ×2
  • セラロック(3ピンタイプ)

症状例:

  • ISP書き込みエラー
  • プログラムが動いたり動かなかったりする
  • クロックが不安定な挙動

理論上は正しい構成でも、
実際には安定しないと感じました。

クリスタルオシレーターを使った外部発振(推奨)

外部発振で一番安定したのは
**クリスタルオシレーター(発振回路内蔵)**でした。

  • 16MHz:問題なく一発で起動
  • 20MHz:問題なし
  • 書き込み・動作ともに安定

接続方法(例)

  • オシレーター OUT → XTAL1
  • VCC → VCC
  • GND → GND
  • OE/NC → 未接続またはVCC

コンデンサ不要で、
発振トラブルがほぼありません
ただクリスタルオシレーターは秋月電子で200円と水晶振動子と比べて少し高いのが欠点です。

ブートローダー書き込みとヒューズ設定

ボード定義(例:MiniCore)

  • Board: ATmega328PB
  • Clock: External 16MHz
  • BOD: Disabled(最初は)
  • Programmer: Arduino as ISP

手順

  1. ツール → 書込装置 → Arduino as ISP
  2. ブートローダーを書き込む

👉 この時点で

  • ヒューズビット
  • クロック設定
    が同時に書き換わります。

その後の通常スケッチ書き込み

動作確認用Lチカサンプルプログラム

PD2(物理32番ピン)を使用したLチカです。

void setup() {
  pinMode(2, OUTPUT);   // PD2 = Arduino D2
}

void loop() {
  digitalWrite(2, HIGH);
  delay(500);
  digitalWrite(2, LOW);
  delay(500);
}

方法1(ISP書き込み)

  • スケッチ → 書込装置を使って書き込む
  • ブートローダー不要
  • こちらの書き込み方法はArudinoの書き込みボタンを押しても書き込むことはできません。ctrl + shifi + u を押して書き込んでください、またepromにデータが入ってないという警告がでますが、正常なので無視してください。

方法2(USB-シリアル使用)

  • FT232 / CH340
  • TX/RX/RESET接続
  • Arduino UNOと同じ感覚で使用可能

まとめ

  • ATMEGA328PB-AUはArduinoとして十分使える
  • 内部発振は簡単で安定
  • 外部発振は工夫が必要
  • 水晶+コンデンサやセラロックよりも
    クリスタルオシレーターが圧倒的に安定
  • ISP書き込み後、USBシリアルを使えば普通のArduinoになる

実験してみて分かりましたが、
「確実に動かしたい」なら 内部発信の8Mか、外部発信の
クリスタルオシレーターという結論です。

タイトルとURLをコピーしました