●経緯●
「導電ゴムに電極をあてた位置に比例した周波数を発生する回路。電極は同時に6個まで。作れますか?」というご依頼でした。問題なさそうなので、まずは「ご相談案件 5,000円」として受注しました。
やりとりをしながら、周波数の範囲、距離と周波数の関係式、設定条件、キャリブレーションの方法、などを決めていきました。
最終的に提出した仕様書はこちらです(一部伏せ字)……5,000円の成果物です。
長さ検知による音響発生装置(仮称)概略仕様書 ver 3.0
本仕様書は以下の仕様にて動作する装置の電子回路部分の構成および動作を定義します。この仕様書はココナラでのやりとりをまとめたもので、差異が生じた場合はココナラでの議論を優先します。また齟齬や未定義の仕様が発覚した際には双方協議の上円満に解決します。
作成者:倉橋浩一
作成日:2021年xx月xx日
●装置の動作
1つの導電ゴムに電極をあてるとその位置に応じた周波数の信号を発生する。電極から信号発生器までは6組を用意する。信号発生器からの6chの信号はオペアンプ加算回路により合成された後、D級アンプにより増幅され、スピーカーより出力される。D級アンプ手前には音量調節のためのボリュームを設ける。位置から算出される周波数と実際に発せられる信号周波数の誤差「ドであるべき距離のところでド♯の音が出るなどはしない程度」とする。
なお、この装置は導電ゴムの抵抗値が距離と比例していることを前提としている。ただ導電ゴムの性質上、比例していない可能性もある。そのような場合に備えて、距離ごとの抵抗値を直線補間するマップ機能の組み込みも検討しておくものとする。
発信する周波数範囲は「65.406 Hz(音階名C2)〜1046.502Hz(音階名C6)」とする。
●動作原理
導電ゴムを分圧抵抗体とみなし、左端にGND、右端にVccをあたえ、電極はGND間の電圧を取得する。
●使用部品
・Teensy 4.0
・方形波発生回路
「3ch出力プログラマブル周波数ジェネレーターモジュール」 x 2
・分周回路
・オペアンプ加算回路
・2W D級アンプ
・スピーカー
・導電ゴム接続端子(2端子)
・電極用ターミナル(6端子)
・プリント基板
・ACアダプタ
・その他、抵抗、コンデンサなど
●顧客資材
・導電ゴムとそれを支える電極、電極や全体を支える筐体などは顧客自身が用意する。
●使用方法
起動時に後述のキャリブレーションを行う。その後は、任意の電極を導電ゴムの任意の位置にあてることで計算した周波数の信号を発する。
●キャリブレーション機能
導電ゴムは空気中のオゾンや吸湿により劣化して抵抗値が変化する。変化した抵抗値は出力する信号周波数に影響するので、キャリブレート機能を設ける。キャリブレーションは6本の電極を導電ゴム中央にあてた状態で電源を投入することで自動的に行われる。
●スケジュール
上記6音仕様をxx月20日までに納品する。ただし余力があれば10音とするための追加ユニット(2台目)をxx月末までに製作する。なお、2台めの製造は義務としない(以下同じ)。
お取引の手順は以下の通り:
1. 受託者はxx月20日までに1台を発送する。
2. 発注者は到着後24時間以内に動作確認を行いフィードバックする
3. 受託者は対応可能であれば2台目を作りつつ最初の1台のフィードバックを待つ
4. 発注者と受託者はメッセージにてフィードバックについて相談する
5. 改良が必要な場合
→2台目に改良を加え送る。
1台目も送り返してもらって改良し送る
改良が不要な場合
→2台目を送って納品完了
発注確定後に仕様を変更する必要が生じた場合には、発注者・受注者相談の上、スケジュールおよび見積を調整すること。
●お見積り
<省略……豪華ディナーという感じです>円です。
10音として動作させるための2台目については成功報酬としてココナラの「おひねり」で<寿司1回分ぐらい>円を追加でお支払ください。
以上ご検討よろしくおねがいします。
6音でもギリギリなのに10音というご要望が出たときは脳みそが少し溶けました。そこはオプションにしていただいて、合意しました。相談案件はクローズとし、新たに上の仕様書を元に制作案件を発注していただきました。
●ほぼ順調
ええ、つねに「順調」では終わらないですね。
- いい感じのゴムが見つからない
- Teensyが入手できない
導電ゴムとして入手できるのは2種類ほどあります。良いやつと悪いやつだ……じゃなくて、静電気を防ぐ抵抗値の高いやつと、電卓やリモコンなどに使われているスイッチ用導電ゴムシートです。今回は後者なのですが……いい感じのものがなかなか手に入りません。とりあえず300x100mmのものが見つかったのでそれを使い、あとは依頼者側でも探し続けてもらうことに。最終的には3000x1000mmという巨大で比較的抵抗の小さいものが見つかりました。
デカイすぎる……
あとはTeensy。計画中は在庫があったんですが、さあ買いましょうとなったらどこもすっからかん。ということで手元にもあるESP32 DevKitCを使うことにしました。後にこの選択が大問題を引き起こします。
●試作1号
今回、最低限の動作確認をしてからスケール!という方針だったので、3音分の回路を作って顧客に送り、動作テストをしてもらいました。現状での問題は下記2点ありますが、機械部分とのマッチングを確認する必要があるので、とにかく音がでるやつを送る!という感じです。ご相談いただいてから2週間です(白髪)。
その間に6音分の基板を作ります。いろいろあって、1枚の6音分基板にはESP32 x 2、Si5351A x 2、分周回路 x 6が乗ります。
アンプ基板は6音基板からの6個の方形波を入力とし、1200hz, 6dB/octのローパスフィルタで少しでも方形波っぽさを減らしてから加算回路で合成してからD級アンプで増幅しています。あとDCアダプタのジャックも設けて、アンプ基板側から2枚の6音基板に給電する形式としました。加算回路とLPFは例によって表面実装抵抗を基板裏のランドに直接はんだ付けしています。12音出ることを確認してから梱包発送しました。
……半固定抵抗がまがってますが、ピンヘッダに刺しているだけですので……まっすぐ直して写真を取る時間がなかったんじゃよ……。ちなみに下の黒いのが導電ゴムシートです。
●大問題
入力の変動です。導電ゴムなんて面積のあるものを使うからある程度は覚悟していたのですが、ぜんぜんあきまへん。10HzのLCR LPFを入れても別スレッドでADCを読み込み1:1000の移動平均を使っても音がニョロニョロと振れます。
原因はESP32内蔵ADCのノイズでした……以前使ったときはここまでひどくなかったんですが、今回はもうグラフが折れ線になるレベルでした。基準電圧外から入れたい。
ということで、外部ADCとしてMCP3204を使ったところLPFと1:25の移動平均でも音がピタリと止まりました。ただ、この時点で6音基板はできていたので、MCP3204を乗せる場所がない。仕方なくESP32 DevKitCの下に突っ込みました(写真)。
まぁADCではESP32に大迷惑を被ったのですが、ESP32は簡単にFreeRTOSを使えるのでアナログ読み込みの処理を全部別スレッドに押し付けたりで楽できました。
●小問題
上で「ピタリと止まりました」とありますが、移動平均なので電極をあてた瞬間にはその音が出てくれません。押した時離した時にミョッミュッと音が上下します。
これの対策は簡単で……離した状態→押した時、押した状態→離した時に移動平均バッファをリセットするだけです。
●試作2号
ということで固まった回路仕様に基づいて2号機を作ります。前にも書きましたが、私はユニバーサル基板で作るときには基板上で部品がぶつからないか確認(←超大事)したあとで表計算シート上に表から見た配置図を作り、電源の色分けと布線を考えた後、左右反転した表を作ってこれをみながらはんだ付けします。IC資料はTop Viewなので裏側のはんだ付けをするときには裏返して考えないといけませんし、あちこち資料をみたり余計な脳みそを使う必要がなくなるので負担が激減します。
特に今回のように同じのを2枚作る場合には1枚送ってしまってもそのまま作業できますし、もとの図を履歴として残せるので改造プランも簡単です。
この辺のことを先輩ハードウェアエンジニアと話していたら「そのへんの発想はソフト屋さんやねえ」って笑われました。「裏表なんて考えなくてもできるやろ」って言われたんですが……ハード屋さんってみんなそういう生き物なんすか?!
●試作1号の改良
戻ってきた1号に2号機と同様の回路を組み込みます。配線の色分け大事よね……。
●納品
一発オーケーでした。良かったよかった……。最終的な成果物はこちらです。
落ち着いてきれいな写真を取っている時間がなかったんじゃよ……。
これでお仕事はおしまい。ココナラをクローズしました。追加の10音まで完了したのでおひねりで成功報酬も追加していただきました。
こんな装置も作れます(短納期はなるべくなら避けてくだせえ)。依頼者の方からお許しをいただいてますので、同じ装置を作ってくれという依頼にもお応えできます。
アイディアのある方、お気軽にご相談ください。
マイコン応用製品の開発相談受け付けます 事前相談で詳細見積作成+実際の開発製造のツーステップで対応!
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。