体操ブーブーをラジコンに改造する(3)

(前回)

 毎週オタクイベントに行ったり板タブを買って絵をかいたり仕事がアホみたいに忙しかったりしたせいで間が開いてしまいました。トイレで気を失うのはもうコリゴリですよ。ちなみに仕事をする体力はありませんが遊ぶ体力はあります。
 ということで今回は回路設計をしていきます。

 一応リアルの進捗として、基板は殆ど出来上がっていて、ソフトの方も書いているんですけど、記事にするのはもう少し後にします。

本体回路図

(2026/7/19)一部修正

 元々付いていた基板は取っ払い、マイコンはESP32を使用します。豚に持たせる機能は以下です。

  • 音量調節
  • 音源の再生・選択(ラジオ体操第一の他10種類)
  • 前尾灯
  • 方向指示器
  • リチウムイオンポリマー電池による充電式
  • バッテリ電圧監視
  • USB Type-C充電
  • ラジコンカー

主な機能の解説

【音量調節】
 元の音量が大き過ぎて音割れラジオ体操になってるのでボリュームを挿入します。

【音源の再生・選択】
 DFPlayer Miniを使用します。これはマイクロSDカードに入れたMP3をスピーカから再生できるモジュールで、ESP32からUART制御を行い、音源選択スイッチで設定した音源を流します。ちなみにこのモジュールなら音量もデジタル制御可能ですが、直感的な操作を簡単な回路で実現したいので、単にボリュームを挿入するだけにしました。
 音源の選択はDIPロータリスイッチにより行い、最大10種類までとします。

【前尾灯】
 前照灯:5mm白色LED OSW57L5B61Yを2灯、尾灯:3mm赤色LED OSR7CA3131Aを1灯です。白色の方はIF=80mA, 35000mcdと超高輝度で、これ1個で目が眩む程の明るさが出せます。当初はこれでビカビカに光らせようとしたものの、後述の安全設計により10mAまでしか流せないことが分かったので妥協しました。

【方向指示器】
 OS5YKA3131Aを2灯使用します。これも前照灯に続き高輝度型でIF=50mA, 20000mcdまで行けます。が、同様に電流は絞ります。。

【リチウムイオンポリマー電池による充電式】
 元が乾電池駆動ですが、中に色々詰め込むのに邪魔だったのでリチウムイオンポリマー電池にしました。ネットでバズってるリポ使用の電子機器(バミューダトライアングルでしたっけ?そんな名前のメーカーが置時計を出してましたよね)に対してそんな燃えやすい物使ってんなよみたいな意見も見掛けますけど、個人的にはスマートウォッチとか腕に巻いたり無線イヤホンを耳に入れたりしてる人がそこら中歩いてるのに今更?って感じですね。まあ自分も、リポの過充電保護に頼ってUSBの5V直結充電みたいなトンデモ回路を見たときは流石にどうかと思いましたが。

 勿論今回は燃えないように注意しながら使います。

 電池はUSB-TypeC(USB Power Delivery対応)で充電できるようにします。実装スペースの都合上、USB通信で音源の差し替えやプログラムの書き込みはできないので、別途プログラム書込端子を付けます。

 因みに充電ICのMCP73831、これはいいですね。取扱いにビビってしまうリポもこれを使えば楽に充電できます。抵抗1本で充電電流を設定でき、充電中を示すLEDも接続できます。オープンコレクタなのでLED以外も比較的自由に接続可能。モジキがこのICに出会ったのは約7年前で、専用ICの便利さに気付いたきっかけでした。昔は秋月にこれしか置いてませんでしたが、今は他の型番が何個か出ているようです。

 今は消えてますが、昔秋月の通販サイトで「何でリチウムイオン電池を売らないんですか?(意訳)」というFAQがあり、その回答が「燃やす奴が居るから売りません」的な内容で若干面白かったのを覚えています。
 因みに今でも電池本体は置いておらず、18650電池(リチウムイオン電池としてよくある規格)の"""ケースだけ"""売ってます。「電池本体は置いてないです」は114514回位言ったものですねぇ。

【バッテリ電圧監視】
 電池が減ったら充電を促す機能を付けます。ESP32のIO21からデジタル出力のH(3.3V)を出し、それを2本の抵抗で分圧してIO34のADCに入れ、現在のバッテリ電圧を取得します。あくまで目安にしかしないので良いですが、この回路は平気でコンマ数Vずれる位精度が悪いです。

【モータ駆動(ラジコンカー)】
 Amazonで買ったギヤードモータを付けて、モータドライバDRV8835で制御します。モータはDC3Vで30RPMです。超信地旋回(戦車がその場で回転する動き)とか出来たらいいなと。別途リモコンを作って走らせられるようにする予定です。

USB Power Deliveryへの対応

 USB PDはUSB Type-Cに対応した給電規格の一つで、給電側と受電側とでネゴシエーションという通信を行い、最大240W(48V5A)を供給可能とするものです。が、そんな電力は豚に真珠(ここ笑うとこですよ)なので従来の規格通り5V給電とします。

 単に5Vが欲しいだけなら簡単で、受電側のCC1/CC2を5.1kでプルダウンします。これを忘れると電力が供給されません。もし抵抗がポロリしても48Vが出るとかそんなことは起こらないので安心できます。下図は秋月のUSBtype-CコネクターDIP化キットを用いた回路例です。

安全設計

 異常が起きても電池が燃えないようにします。自分で使う物ならその辺の対策はザルでもいいんですけど、今回は人に渡す物なので一応やっておきます。ガチるならIEC 61010-1(計測,制御及び試験所使用電気機器の安全要求事項-第1部:一般要求事項)等の規格に則り、可動部の指挟みとか対策すべきですが、まるで仕事してるようで鬱病になりそうですし一応ホビーでやってますので今回は電池に絞ります。

想定する異常と事故

 まず想定する異常は以下の4つです。

  • モータに異物が挟まってロックする
    中で部品が欠けてギヤに挟まったり、ふざけて車輪を手で止めたりすると、モータがロックする原因になります。
  • ボリューム最大時にスピーカに大電流が流れる
    スピーカに流れる電流がコントロールしにくく、リスクを排除し切れません。
    なおDFPlayer miniは3Wのアンプを備えているので1A位流せてしまいます。
  • 回路が短絡する
    部品がショートモードで故障したり、金属の異物が入ったりすると、回路が短絡する原因になります。
  • 電池が損傷する
    内部で折り畳まれている極板同士の短絡に繋がります。

 そして上の異常が起きると、このようなことが起きます。

  • 電池に過電流が流れる、或いは過熱し、発火する。

対策

  • 過電流が流れないようにする
  • 過電流保護回路を付ける
  • 電池を機械的な損傷から保護する

 安全設計としてはそもそも過電流が流れないようにするのが理想です。なので豚に流れる最大電流が、電池の定格(640mA)を下回るようにします。まずスピーカとモータのロックについて対策した結果が以下です。

  • スピーカに33Ωを挿入
    短絡時の電流は3.3V/33Ω=100mA。
  • モータに10Ωを挿入
    ロック時の電流(停動電流)は実測値で380mAになります。尚抵抗がないと700mA流れます💩。

 以上を踏まえて豚に流れる電流を見積もると最大625mAになり、スピーカとモータが原因で定格オーバーになるのを防げます。600mA未満ならもう少し安心できるのですが全ての故障が同時に発生する確率を考えればこの辺りで良いでしょう。

消費電流 (mA)
部品名通常時異常時
DFPlayer mini2020
スピーカ50100
方向指示器1010
前照灯1010
尾灯55
モータ (2個合計)150380
ESP32 (BLE受信時)100100
合計345625

 もし何Aも流れたような時はポリスイッチで対策します。後述の通りリチウムイオン電池にも保護機能はあるんですが、二重で対策する意図で付加しています。ただ余りトリップ電流を下げ過ぎると抵抗分が大きくなり、損失が増えて電池持ちが悪くなってしまうので要注意です。まあトリップ電流を超えたら綺麗に遮断してくれる訳ではないので、あくまでリチウムイオン電池側の保護のバックアップという位置付けになります。

 今回使用するのはMF-R050です。リチウムイオンポリマー電池(DTP443442(PHR) 640mAh)の内部抵抗は180mΩ以下、最低電圧は3Vなので短絡時17A以上は流れる→データシート上は17A時0.03秒でトリップします。よって一応付ける意味はあります。

 機械的な保護は電池自体にプラ板を貼り、膨張を考慮して他の部品との間隔も空けます。

電池にも保護機能はある

 使用する電池(DTP443442(PHR) 640mAh)自体にも過電流保護は付いていて、上図のカプトンテープで覆われた基板に載っています。電流を遮断するまでの時間は以下の通りです(データシートより)。他に過充電保護等も付いていますが、こういう部品そのものの保護に頼り切らないで自前で設計した保護回路も付加する風潮があるの、分かる方いますか?

  • 1.5A~3.5A:9ms
  • 短絡:≤320us

 もしこの豚が自分用だったら?多分リポの保護回路だけに頼っていたと思います(男気電子工作)。

(続き)

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