目次
つくばろぼっとサークルではNHK学生ロボコンに向けて統合型基板を製作しており、mainがNHK学生ロボコン2023において使用したバージョンです。 回路図の説明やブロック分けなどが出来ておらず、分かりにくい状態です。※修正中
修正中です。8/10程度を目途に進めています。
メインマイコンを搭載する基板です。メインマイコンには以下の理由からArduino nano 33 BLE(以下:AN33BLE)を採用しました。
- 32bitマイコン
- 浮動小数点演算ユニット搭載
- 書き込み環境の構築が容易
また、AN33BLEはIMUを搭載している点もメリットです。実際には用いていないため精度は不明ですが、基板面積という点では確実にプラスです。
センサとしては、8つのインクリメンタルエンコーダと8つのアブソリュートエンコーダを接続できるように設計しました。
インクリメントエンコーダに接続しているA相B相Z相をプルアップしています。
インクリメントエンコーダは、Z相の多くの範囲でLOWを返すため、NOT回路によりHIGHになり、LEDが光る仕組みです。Z相をプルアップしてるため、未接続の場合LEDは光りません。A相B相が断線してる場合、LEDは光りますが正常に認識されるとは限りません。何番のエンコーダに接続してるか簡易的に確認するための機能です。
インクリメントエンコーダの波形を整形するインバータ(バッファ)です。NOT回路と等価なので信号が反転します。A相B相は反転しても大きな影響はないですが、Z相はhighの時間が長くなります。長い信号線を介してセンシングするためチャタリング防止などの観点から挿入しました。また、5VトレラントのICを介することで5V信号を3.3Vで駆動するRP2040に入力できるようにしています。
インクリメントエンコーダを読み取り値を記録、メインマイコンの要求に応じて状態を返すためのマイコンです。インクリメントエンコーダの読み取りは割り込み処理を必要とするため、メインマイコンと分離したいと考え、この設計にしました。
ラッチ付かつサイズが小さいコネクタが望ましかったため、PAコネクタを採用しました。AMT102/103を接続することを想定して、ピンの順番を設定しています。
アブソリュートエンコーダとのSPI通信が確立した場合にRP2040がGPIOを操作しLEDを点灯させることが出来るようにしました。
アブソリュートエンコーダと通信をして値を記録、メインマイコンの要求に応じて状態を返すためのマイコンです。メインマイコンをmasterとしたSPIバスとは別に、absolute RP2040をmasterとしたエンコーダとの通信用のSPIバスを用意しています。
こちらもPAコネクタを採用しています。AMT223を接続することを想定して、ピンの順番を設定しています。
基板上のICなどのバイパスコンデンサです。配線を引き延ばすためエンコーダのコネクタ近くにも配置しました。
メインマイコンです。enableをHIGHにすることでシステムを起動することができます。RESETをLOWにすることでエンコーダ用のRP2040をリセットさせることできます。他はSPI通信用のGPIOです。
電源、SPI通信、シャットダウン信号を共有しています。
緊急停止スイッチ接続することでシステムを起動できます。LEDにより起動状態を表示しています。
SPI通信のslave側は通信していないときはMISOをオープンにする仕様ですが、RP2040はLOWを出力してしまい、複数slave運用がデフォルトで不可能であったため、3-state bufferを付加することで対策しました。
RZ-735クラスのDCモータを2基、RS-555クラスのDCモータを1基、24Vで駆動することが出来る基板です。以下ではRZ-735を想定したチャネルをメインチャネル、他方をサブチャネルと呼称します。
メインチャネルではICにA3921を採用しています。サブチャネルではICにBD63150を採用しています。データシートを参考に作成しました。データシートに載っている内容は説明を省略します。
サブチャネルはハーフブリッジ×2と見なすことで電磁弁を制御することも出来ます。
https://www.allegromicro.com/ja-jp/products/motor-drivers/brush-dc-motor-drivers/a3921
https://www.rohm.co.jp/products/motor-actuator-drivers/dc-brush-motor/bd63150afm-product
電流センサのアナログ値伝送用に4pin、信号・降圧電源用に14pin、VDDとGNDPWRに各14pinでMotherBoardと接続します。GNDは信号用と電源用で分離しています。
MotherBoardからの信号がない場合の誤動作防止のためにプルダウン抵抗を挿入しています。
Cissの大きいMOSFETを容易に駆動できる便利なICです。SR,PWMLにhighを入力、pwmhにPWM、phaseにhigh/lowを入力することで、SMB方式でモータを駆動できます。
メインチャネルを電流制御するために搭載した電流センサICです。コスト面からACS712を採用しましたが、動作を確認したところ、ノイズの影響で大きかったため、現状電流を用いた制御は実装していません。
MotherBoardに大容量の電解コンデンサを搭載していますが、ピンヘッダを経由するため補助として中容量の電解コンデンサを搭載しています。
$$ 50+\frac{7200}{1.2+(200/Rdead[kΩ])} $$ datasheet上の数式に従いdeadtimeが2300nsになるように抵抗値を設定しました。
RCスナバ回路と双方向ツェナーダイオードによる保護回路を搭載しています。RCスナバ回路の値は以下の式に基づいて決定しました。回路を解析して搭載したわけではなく、簡易的な計算から求めているため効果は薄いと思います。
$$ Iin:想定電流, Prsnb:スナバ抵抗の定格電力, f:MD動作周波数$$ ※想定電流は実際より小さめ、MD動作周波数は実際より大きめの値で計算されてます。設計初期の名残です。
モーターの逆起電力からMDを保護するために降伏電圧が28Vの双方向ツェナーダイオード(TVS)を採用しています。
注:現行基板では、逆起電力から保護しきれていないことが原因と思われるA3921の破壊が確認されています。
モーターに接続する端子です。
DCバイアスを考慮してコンデンサを配置しました。
モーターに接続している箇所にLEDを対面配置することで回転方向を表示しています。プログラム開発時に便利でした。ローサイドMOSFETのゲート端子にデバッグ用のLEDを配置しています。ICが壊れた場合に表示されなくなるのでデバッグに活用できました。
LEDの色 | 用途 |
---|---|
緑 | 常時点灯 |
青 | 電源ON&正常時点灯 |
赤 | 異常時点灯 |
黄 | 状態表示 |
白 | 状態表示 |
A3921に搭載されている5Vレギュレータを利用してA3921搭載のエラーLEDを配置しています。また、VDSTHに送る電圧を分圧で生成しています。
ブートストラップコンデンサの容量が大きく、A3921の挙動が不安定になることがあったので、10uFのコンデンサを搭載しました。
フルブリッジ回路です。前述のRCスナバ回路を搭載しています。MOSFETはRJ1L12BGNを採用しています。corestaffで購入すると比較的安価に購入可能です。ON抵抗は小さいですが、ゲート容量は大きいので気を付けてください。新規設計する場合はRS6L120BGがおすすめです。ゲート抵抗には27Ωを採用しました。この抵抗値にした理由は勘です。
簡易的ではありますが以下の式で計算可能です。 $$ \frac{Vg}{Imax} < Rg < \frac{Tdead}{3×Ciss}$$ $$ Rg:ゲート抵抗,Vg:ゲート駆動電圧,Imax:ICがゲートに流せる最大電流,Tdead:デッドタイム,Ciss:MOSFET入力容量 $$ ※条件によっては解なしになるかと思います。
MDへの入力信号をプルアップしています。
BD63150のエラー表示用のLEDです。
PowerSaveに繋いでる端子です。プルアップしています。
電圧制御・電流制限に対応したモータードライバICです。RFNには100mΩのシャント抵抗を搭載しています。3Aで電流制限をする計算でしたが、想定より厳しめに作動していました。恐らくGNDを信号とパワーで分離した弊害だと思われます。
メインチャネルと同様の構成です。
メインチャネルと同様の構成です。
電流の制限値をICに入力するピンです。3Aで制限するように設定したのですが、前述の通り思うように動きませんでした。
電磁弁を駆動できるように付加した回路です。セーフティとしてリセッタブルヒューズを載せています。また還流ダイオードも載せています。
Cubicでは以下の理由から組み込みマイコンにRP2040を採用しました。
- GPIOとPWMが多い
- cortex-M0(計算速度がそこそこ速い)
- 安価
- 書き込みが容易
システム内で3つ使い、容易に交換可能とするためにマイコンボードとして最小構成の基板を作成しました。
以下の公式リファレンスを参考に作成しました。公式リファレンスに載っている内容は説明を省略します。 https://datasheets.raspberrypi.com/rp2040/hardware-design-with-rp2040.pdf
RP2040と周辺の配線です。
マイコンの電力消費が多く動作が不安定になることがあったため、100uFのセラコンを追加しています。
システム内でモータドライバと絶縁せずにRP2040を用いている箇所があるため、サージ保護としてツェナーダイオードを電源に並列に繋いでいます。
基板サイズの制約の中でGPIOをフルに使う必要があり、1.27mmピッチのピンヘッダを採用しました。配線の最適化と差し込みの一意性を担保するために基板の3辺に沿うように配置しています。
基板内通信にSPIを利用しているのですが、SPI通信の状態を外部から容易に観測するためにslave側のSSに該当する箇所にLEDを付けています。以下は目視のLED状態とSSに注意したSPI通信の状況です。
LED | 状況 |
---|---|
点灯 | 通信異常 |
僅かに点灯 | 正常 |
点滅 | 通信速度低 |
消灯 | オフライン |
RP2040をリセットできます。接続先がMotherBoardの場合は、接続先もリセットされます。
RP2040にプログラムを書き込むmicroUSBです。基本的に動作中の電源は接続先の基板から受け取るため、RP2040に書き込む以外は使用しない想定です。
プログラムが書き込まれるメモリです。
RP2040動作のためのcrystalです。