当初、Arduino UNOに使われたのはATmega328P-PUと言う型名のマイコンで、28DIP形状のMCUでした。しかし今では、DIP形状のマイコンが量産で使われることは、ほとんどありません。量産に於いては、表面実装タイプのLSIが主流となっているためです。
代わりに使われるのは、同型のATmega328P-AUという、32TQFP形状(表面実装パッケージ)のMCUです。ATmega328P-AUを採用したUNO互換機も存在しています。
表面実装が主流となったことも、DIP形状LSIが使われなくなってきた理由の一つですが、もう一つ別な側面からの理由もあります。DIP形状は一般的にガタイが大きいので、レジンにせよ、リードフレームにせよ、大きくなって材料費がかさむパッケージなのです。
つまり、同じチップ(ダイ)を採用したATmega328Pであっても、一般的にDIP形状の方が、TQFP形状より、材料費が高くつきます。同じチップなので同じ機能なのに、販売価格に差がついてしまうのです。
さて、ATmega328Pの後継として、UARTやPWMタイマなどのIOユニットを増設し、32TQFP形状のパッケージに押し込んだのが、ATmega328PB-AUと言うマイコンです。
今回は、このマイコンを入手したので、開発環境を整備して行こうと思います。
紛らわしいですが、型名は、「ATmega328P」と、「ATmega328PB」と言う事で、最後に「B」が追加となっています。後ろに続く「−PU」はDIP形状、「−AU」はTQFP形状を示す、Atmel社の型名規則です。まずは、ATmega328PBのデータシートを検索しておきましょう。
ATmega328PBのデータシートを検索する(別ウインドウが開きます)
ATmega328PB-AUの外観図を以下に示します。
ATmega328Pデータシートと見比べて、以下比較表を作成して見ました。
ATmega328 | P−AU | PB−AU |
Package | 32TQFP | |
Power | 1.8V〜5.5V | |
fMAX | 20MHz(≧4.5V) | |
Flash | 32KB | |
RAM | 2KB | |
EEPROM | 1KB | |
8 bit timer | 2 | 2 |
16 bit timer | 1 | 3 |
PWM | 6 | 10 |
10 bit ADC | 8 | 8 |
USART | 1 | 2 |
SPI | 1 | 2 |
I2C | 1 | 2 |
PTC | 0 | 1 |
同じ32TQFPの「−AU」として比較した表です。ATmega328PBには、DIP形状(−PU)の展開が無く、存在しないためです。
Pと比べてPBは上表の通り、メモリ容量などの基本的仕様は共通で、タイマ/PWM/通信ユニットのチャンネル数が増設されています。
特に、USARTユニットという、シリアル通信ユニットが2チャンネルに増設されているので、UARTが2チャンネル使えるのは強みです。SPIやI2C通信ユニットも、2チャンネルに増設されているので、シリアル通信で困ることは、まず、無いでしょう。
とは言え……、TQFPですからねぇ……(下図)。
※ATmega328PBデータシートから引用。
上図の様な表面実装タイプのままでは、ブレッドボードでは使えないし、そもそも、ピンピッチ0.8mmは、狭すぎて扱い難い事、この上ありません。
以下図の様なピッチ変換基板と呼ばれる部品が販売されています。
中央のフットプリントに32TQFP形状のLSIをはんだ付けすると、長手方向のスルーホールによって2.54mmピッチの32DIP形状に変換できて、ブレッドボード等で使用できる様になる、という代物です。
ピッチ変換後ATmega328PBのピン配置図を以下に示します。
Port | DIP | ATmega328PB | DIP | Port |
D3(PD3/PTCXY/INT1/OC2B) | 1 | ● | 32 | D2(PD2/PTCXY/INT0/OC3B/OC4B) |
D4(PD4/PTCXY/T0/XCK0) | 2 | 31 | D1(PD1/PTCXY/OC4A/TXD0) | |
D23(PE0/PTCXY/ACO/ICP4/SDA1) | 3 | 30 | D0(PD0/PTCXY/OC3A/RXD0) | |
VCC | 4 | 29 | D22(PC6/RESET) | |
GND | 5 | 28 | D19[A5](PC5/ADC5/PTCY/SCL0) | |
D24(PE1/PTCXY/T4/SCL1) | 6 | 27 | D18[A4](PC4/ADC4/PTCY/SDA0) | |
D20(PB6/TOSC1/XTAL1) | 7 | 26 | D17[A3](PC3/ADC3/PTCY) | |
D21(PB7/TOSC2/XTAL2) | 8 | 25 | D16[A2](PC2/ADC2/PTCY) | |
D5(PD5/PTCXY/T1/OC0B) | 9 | 24 | D15[A1](PC1/ADC1/PTCY/SCK1) | |
D6(PD6/AIN0/PTCXY/OC0A) | 10 | 23 | D14[A0](PC0/ADC0/PTCY/MISO1) | |
D7(PD7/AIN1/PTCXY) | 11 | 22 | D26[A7](PE3/ADC7/PTCY/T3/MOSI1) | |
D8(PB0/PTCXY/CLKO/ICP1) | 12 | 21 | GND | |
D9(PB1/PTCXY/OC1A) | 13 | 20 | AREF | |
D10(PB2/PTCXY/OC1B/SS0) | 14 | 19 | D25[A6](PE2/ADC6/PTCY/ICP3/SS1) | |
D11(PB3/PTCXY/OC2A/TXD1/MOSI0) | 15 | 18 | AVCC | |
D12(PB4/PTCXY/RXD1/MISO0) | 16 | 17 | D13(PB5/PTCXY/XCK1/SCK0) |
D#はArduino IDEのデジタルポート番号(0〜26)、[A#]は同じくアナログポート番号(0〜7)です。
これが実現できれば、ブレッドボードなどで使い易くなります。ですが、何しろ32TQFPは、ピンピッチが0.8mmという細かさです。
筆者のはんだ付け技術で、実装できるものか??
ダメダメでした……。
ピンピッチが狭すぎます。筆者が使っていたはんだごてのこて先は、ピンピッチに対して太過ぎ、隣のピンまで熱してしまいます。そこへ、迂闊にはんだを流し込むと、はんだが隣のピンまで巻き込んで、ブリッジしてしまったのです(つまりショート!)。
大失敗。以上、報告終わり☔orz。
と、なって放置していたのですが、暫く放置していたところ再び心に火が灯り、「再挑戦」してみようと思い立ちました。
再挑戦に当たり、必要だと考えた資材は:
これらを入手して、再挑戦したところ、何とか、サルベージに成功する事ができました。以下に完成図を示します。
そんなことを聞かれましても……。何とか形には、なったものの、コツなんてレクチャできるような状態には、ありません。
何とかお伝えできるのは、この位です。そもそも、ピッチ変換基板のフットプリントと、32TQFPをずれないように合わせて、最初の1端子をはんだ付けするまでの間がめちゃくちゃ大変です。にもかかわらず、その様な重要な事象に対してアドバイスできる様な事は、当方には、ございませんm(1__)m。
無理やりアドバイスするなら、「気合」です。諦めないメンタルも必要になるかと思われます。
慣れた方なら、サクサクやってのけるのでしょうけれど、筆者には無理でした……。「もう一度、やって見ろ」と、言われても、土下座してご辞退申し上げますm(1x_x)m。
皆様も、安易に手を出さず、ご自身のはんだ付け技術とご相談の上、挑戦する事を推奨します。
世の中には、こちらの様な商品も御座いますのでご検討ください。
今回のお買い物は以下の通りです。再挑戦に当たって、追加購入しているので、いくつか違うお店が混じっています。
最初は、「ATmega328PBと変換基板だけで使える!」と思って購入(計350円)したのですが、再挑戦用の資材を含めると、何やかやと費用が増加してしまいました。
秋月電子通商の商品は、「#30-9 PICAXEというマイコン」と同時に購入したものです。
Amazonの商品は、他の買い物(≧3,500円)と同時購入したため送料無料でした。
オーディオファンの商品は、送料220円と、肝心な丸ピンヘッダ(154円)より高く支払わされてしまいましたが、丸ピンヘッダって意外に高価な部品なので、送料込み374円でも、割と安い方だったと思います。
こんな調子ですので、判り易くはんだブリッジ(ショート)と、までは言わないまでも、接触不良や、長時間熱を加え過ぎたことによるLSIの破壊などが有るかもしれません。次回、開発環境の立ち上げと、ピッチ変換(はんだ付け、実装)の検証を実行します。