SeatTubeの曲げひずみとクランクトルクの関係を測定するために、クランク用の基板を作っているのですが、採用CPUではまってしまいました。
サイズと2個在庫あるもののなかで、Pro microを選んだのですが、
なんと、Pro microは、Arduino公認でなく、SPIライブラリーを書き換えないとSPIが使えないことが判りました。つまり、マイクロSDカードにログしようとしたのですが、私のプログラム能力ではライブラリを書き換えるのは無理なので、実質的にPro microでは、SDカードを使えないということが判りました。基板を1日半かけていざプログラムを作ろうとして判明したので大痛手でした。
●Pro microのSPIのピン番号が違う
Arduinoでは、SPIのピンは11,12,13を
使うことが決まっています。それに従ってCPUもライブラリーも作られてます。ところが、Pro microのSPIは、14,15,16を使ってます。
この程度の違いでライブラリーが対応してくれていない点は、mbedユーザーである私には、驚きです。arduinoを使い慣れた人なら、ライブラリーを修正して使えるようにすることができるでしょうけど、検索しても
Pro microでSPIを使った事例は見つかりませんでした。
●クランクへ実装するためのサイズ目安
<左右で形状が全く異なる>
①右クランクの35mmx35mmが厳しい
②左クランクの厚さ15㎜以下が厳しい
左右とも全く違うサイズ要求があるので、基板設計部品選択も違ったものになってもしょうがないが、開発手間が2倍になってしまう
●手持ちのCPUで、選定
使い慣れたmbedで使えばいいのですがmbedでは、小さいCPUでよいものがありません。LPC824は小さいのですが、ピン定義が面倒で失敗すると死んでしまうので、怖くて使えません。
使い慣れたのは、NucleoL432KCですが、これなら万能で、なんでもござれなのですが、大きすぎる点でNGです。
面倒ですが、クランク基板に必要な仕様とCPUの対応性を並べて検討を進めていきます。
①電池駆動の容易さ
使用電池:コイン型CR2450(コインで最大電流30mA,610mAh)
システム電圧:3.3V(μSD,Xbeeなど無線モジュール)
Vin範囲:電池3V以上だと電池ダイレクト接続できる
手持ち CPU基板名 (チップ名) |
電源電圧 | Typical 電流 |
Vin範囲 | 備考 |
Nucleo L432KC (CorTex M4) |
3.3V
|
80MHz 10~20mA |
電池◎ 1.71V ~ 3.6V |
mbed IFが多彩 |
TY51822 (太陽誘電 EYSGCNZWY CorTexM0)LPC11U35互換 (CorTexM0) |
3.3V | 50MHz 6mA |
電池◎ 1.8V ~ 3.6v |
mbed BLE搭載 nrF51822 |
LPC824 (CorTexM0+) |
3.3V | 30MHz 3.3mA |
電池◎ 1.8V ~ 3.6v |
mbed SwitchMatrix定義しないと使えないのが面倒 品種無い高い |
Arduino Pro mini | 5V 16MHz or 3.3V8MHz |
16MHz 10mA 8MHz 3.3mA |
電池▲ 3.3V ~ 16V |
Arduino標準 対応でプログラムと事例多い |
Sparkfun Promicro互換 (ATMEGA32U4)DigiSpark互換 |
5V 16MHz or 3.3V8MHz |
16MHz 13mA 8MHz 5mA |
電池▲ 4.8V ~ 12V |
Arduino非公認 ピン配列が違うのでArduinoライブラリー使えないSPI,I2C |
ATMEGA328P 内部クロック |
3.3V 8MHz |
8MHz 3.3mA |
電池△ 2.7V ~ 5.5V |
電池電圧が厳しい |
1:消費電力と電池対応性でmbedのほうが圧倒的に良い
2:Arduinoのほうがサイズコストでメリットはあるが、電力供給面で
DC-DCなど別部品が必要であるが、ATMEGA328Pがベター
②サイズ
縦 | 横幅 | 厚さ | 右 クランク |
左 クランク |
|
Nucleo l432KC | 51mm | 21mm | 15mmpin | × | ▲ |
TY51822r3 | 45mm | 20mm | 14mmpin | × | ▲ |
LPC11U35 | 41mm | 20mm | 14mmpin | × | ▲ |
Arduino Pro mini | 48mmpin | 19mm | 14mmpin | × | ▲ |
Sparkfun Pro micro | 35mm | 18mm | 14mmpin | 〇 | 〇 |
LPC 824 | 34mm | 15mm | 12mmpin | 〇 | 〇 |
Digispark | 26mm | 20mm | 5mm | ◎ | ◎ |
ATMEGA328P | 35mm | 9mm | 9mmpin | 〇 | 〇 |
●右クランクは、Pro micro かLPC824かATMEGA328Pの3つのどれか
●左クランクは、どれでも可能
■Digisparkがサイズ的には理想だが、IFとソフト対応で課題がある
③IOとIFの対応性
SPIピン 対応 |
シリアル対応 | ADC対応 | USB使い勝手 | |
Nucleo l432KC | mbed | USRT2個 | 12bit | USB独立 |
TY51822r3 | mbed | UART1個 | 10bit | USBシリアル兼用 |
LPC11U35 | mbed | UART1個 | 10bit | 毎回Reset |
Arduino Pro mini | Arduino | UART1個 | 10bit | USBシリアル兼用 |
Sparkfun Pro micro | 非Arduino | UART1個 | 10bit | 毎回Reset |
LPC 824 | SwitchMatrix | SwitchMatrix | 12bit | SwitchMatrxi使にくい |
Digispark | 非Arduino | UART1個 | 10bit | USBシリアル兼用 |
ATMEGA328P | Arduino | UART1個 | 10bit | USB無 シリアル書き込み |
④プログラムが組めるか(自分の能力で)
SPI ライブラリ |
SDカード ライブラリ |
言語 | 備考 | |
Nucleo l432KC | mbed | mbed | C++ | 万能 |
TY51822r3 | mbed | mbed | C++ | USB兼用不便 |
LPC11U35 | mbed | mbed | C++ | 毎回Reset不便 |
Arduino Pro mini | Arduino | Arduino | Arduino | 普通 |
Sparkfun Pro micro | 非Arduino | 非Arduino | Arduino | 毎回Reset |
LPC 824 | mbed | mbed | C++ | SwitchMatrix困難 |
Digispark | 非Arduino | UART1個 | Arduino | USBのみ |
ATMEGA328P | Arduino | UART1個 | Arduino | Arduino シリアル書き込み |
●使い勝手は、NucleoL432KCがベストで次がArduino Pro mini
●Pro micro DigiSparkは、SPIライブラリー使えないのでNG
●サイズとソフトでは、ATMEGA328Pしかない
●LPC824のSwitchMatrixを使いこなせればサイズメリットがでるが
高価である点がデメリットとなってくる
●以後
検討の結果、右クランクに収まる可能性があるのがATMEGA329P
なので、動作確認してから基板を作り直す。