- RP2040-Zero
- RP2350-Zero
- XIAO RP2040
- XIAO RP2350
は、5VピンがUSBのVBUSピンと直結されていて、外部電源で5Vピンに5Vを与えて動かそうとするとUSBケーブルからPCに逆流する危険性がある
僕が最近作ってる回路は全部、24VをAJ38 CN3903 DCDCモジュールで5Vに降圧してRP2040-Zeroの5Vピンから入れているので、PCのUSBのVBUS電圧がDCDCの5Vよりも少しでも低い場合に逆流する
PCのUSBの電圧は割と電圧降下して4.7Vとか普通になるので心配
僕はUSBアイソレータを絶対に使うようにしてる📄マイコン工作におけるUSBアイソレータのすゝめ
Raspberry Pi PicoはVBUS-VSYS間にショットキーバリアダイオードがあるのでVSYSに入れれば安全
- RP2040-Zero
- RP2350-Zero
はこのような回路がないので外部電源とUSBケーブルを共存させないか、USBアイソレータでPCを保護してやりたくなる
RP2040-Zeroはコスト面で最強(220円とか)なので、逆流が許容できるならこれ、そうでなければXIAOを使うのがいい
でもXIAOはちょっとピンの並びが気持ち悪い
- XIAO RP2040
は裏面VINがVSYS相当なので逆流しない
- XIAO RP2350
は裏面BATT+から入れれば逆流しない
XIAO RP2350は↑が既に実装されてるので、USBから優先的に供給される(バッテリーとUSB共存時に少しでもバッテリーを温存できる)
ただし、BATT+に5Vを入力しても5Vピンから5V出力されるわけではないので注意(一敗)
AJ38 CN3903 DCDCモジュールはこれでこれで逆流するので、PwrCANケーブルでデイジーチェーンしてるとマズいことがある
24Vを供給してないけどPwrCANケーブルでデイジーチェーンして、1個にだけUSBを繋げると、5V(VBUS)がDCDCを逆流してPwrCANの+に達し、デイジーチェーンで他の基板のDCDCを順方向に流れ、それが各基板のマイコン全部同時に電源供給をするのでUSBにマイコンN個分の負荷が発生する
24VをDCDCのINに繋げるところでダイオードを挟むとこれが防げる
5Vにしてからダイオード挟むと順方向電圧で電圧降下するのでIN側がいい
24Vだと5Vのときの5/24の電流に耐えるだけなのでダイオードもショボいやつでいい
回路図↓
前作った時はINA226を使ったけど、足が細いからかICが小さいからか手実装のときに壊れまくったのでINA219の大きいパッケージにした
↑の2つのモジュールから移植すればできあがるようになってる
10kΩの抵抗はINA219のアドレス選択用のプルダウン抵抗を流用してユーザーボタンとLED用にした
ピンの制約
- PicoEncoderは連続した2ピンを使う
- RP2040PIO_CANはピンに指定なし 連続してなくてもいい
- I²Cは対応するピンにする
- PWMを使うときは、PWMスライス番号が被らないようにする
https://picow.pinout.xyz ここで確認すると便利
RP2040だとPIOが2つまでしか使えず、エンコーダを読むのとCAN通信をするので終わってしまう。
RP2350だとPIOが3つになり、I²Cで電流をひたすら読み続けてDMAで最新を反映させ続けるみたいなことができてQDDっぽい制御をより行いやすくなりそう
電流読む用じゃなくても、NeoPixelをPIOから快適に操作できるのでやっぱりRP2350がいい
RP2350を使うんだったらXIAO RP2350か、RP2354でやりたい
XIAO RP2350のBOOT, RESETボタンは物凄く押しにくいのでもし載せるのであればそのボタンは自分で別でつけるべき
定電流制御のデモの書き散らかし

