読者への挨拶! 今日は、電子製品を実装するために間違った(最適でない)コンポーネントを選択した場合に発生する問題について考えさせられた奇妙な話をします。 また、「1日」デバイスの例を使用した見かけの単純さについても説明します。
物語は架空のものであり、偶然の一致はランダムであるか、ランダムではないことに同意しましょう。
Seryozhaになったら、プログラマーは、クルーズコントロール制御回路(Ford Focus 2)で1台の物理的な車を押すときに2つの仮想ボタンを順番に押すことをエミュレートするデバイスを自分の車に作成するよう要求しました。 標準制御ユニットのスキームは次のとおりです。
制御側では、これはADCを使用した古典的な押しボタン入力です。 デバイスのタスクは、ハードウェアボタンを押したときに、ONとSET +ボタンを連続して約0.2秒間押します。 デバイスの統合を容易にするために、分圧器の上部抵抗から電力を供給することが決定されました。 接続端子の電圧は、ボタン回路が接続されていない状態で4.6 Vです。 デバイスは夕方に作成される予定だったので、アセンブリテーブルにあるものから予備計算なしで図を作成しました。 「額」の解決策:
Serezhaがファームウェアを作成し、デバイスは自動車に完全に対応しました。 ボードをステアリングコラムスイッチハウジングに詰め込みたいと思ったときに、オフィスの後ろから誰かが叫びました。 詳細の半分は捨てることができます。実際、STM8はそのようなタスクの単なるものです。」 そして、それは始まりました...アイデアの作者は、レイアウトを「3つの部分から」はんだ付けすることを志願しました(簡単な勝利を見込んでいるようです)。 私(
プロのjeに関する記事を参考に)は、若い専門家の飛行を邪魔しないことを決めましたが、奇跡が起こっていないことに誰もが気付いた段階でのみつながりました。
私の同僚によって提案されたスキームは本当に簡単でしたが、テーブルでのみ機能しました:
エラーは一見でも見えましたが、回路をSTM8S001J3 MK専用に動作させることにしました。
回路をやり直す方法を理解するために、いくつかの測定を実行します。 ADC分圧器の上部抵抗の抵抗は約130オームで、負荷なしの電圧は4.6 Vです。
次に、ボタンノード図の形式は次のとおりです。
- ボタンを離すと、回路の電流は2 mA、ADC入力の電圧は4.33 Vです。
- ONボタンを押すと、3.7 mA、ADCの入力電圧は4.11 Vです。
- SETボタンを押した状態で+ 18.4 mAの場合、ADC入力の電圧は2.2 Vです。
この場合、STM8S001J3 MKの動作電圧範囲は2.95〜5.5 Vです。SET+ボタンを押すと、電圧降下が最小値を下回り、MKがリセットされることがわかります。
この時点で、私は気を散らして、このタスクに理想的なMKとは何か、そしてなぜ彼らがそれを選択しなかったのかを議論することを提案します。 通常、そのような工芸品には、開発者が作業方法を知っており、手元にあるものを使用します。 たとえば、マイクロチップのSOT23-6パッケージには、電圧範囲2(1.8)-5.5 VのPIC10F200またはATtiny10コントローラーがあります。これらのマイクロ回路には、電圧レギュレーター(STM32L031など)は必要ありませんが、SET +ボタンを押しても再起動しません(STM8S001J3など)。 ハーネスには、2つの抵抗と1つのコンデンサのみがあります。 美しさですが、この出力範囲を持つコントローラーのSTMicro範囲はそうではありません。 熱心な読者は、そのようなタスクのフレームワークでは、ほとんどすべてのコントローラーをマスターできることに気付くでしょうが、使い慣れたプログラミング環境とデバッグツールがないため、選択が決まります。
スキームに戻りましょう。 コントローラーのリセットに関する問題を解決するには、SET +ボタンが押されている間にコントローラーに電力を供給するエネルギーが必要です。 このエネルギーの量を推定するには、消費電流を測定する必要があります(またはドキュメントを参照してください)。
最高で約500μA。 これはたくさんありますが、明確にするために計算を行います。 エネルギーを保存するには、ダイオード(VD1)とコンデンサ(C1)が必要です。
VD1のドロップはそれぞれ0.2 Vです。C1ボタンを放すと、4.33-0.2 = 4.13 Vに充電されます。SET+ボタンを押すと、Vinの電圧が2.2 Vに低下し、VD1が閉じてMKになります。 C1を放電することにより給電されます。
(
エラーを修正してくれた
VT100と
DenisHWに感謝し
ます )
この式では、左側のコンデンサ(4.13から3.1 Vに放電されたとき)、右側のコンデンサに保存されたエネルギーは、t = 0.2 sの間にコントローラーが消費したエネルギーです。 次に、コンデンサの容量:
このタスクの100マイクロファラッドは許容範囲ですが、ボタンが押されている間にコントローラーを安楽死させてください。
これを行うために、STM8にはアクティブ停止モードがあります。
MVRとFlashを無効にすることで、〜40μAの消費電流を得ることができました(これは宣言された電流よりも大幅に高いですが、この電流はこのタスクに適しています)。 この場合、コントローラーの動作を保証するには、容量がわずか10マイクロファラッドのコンデンサが必要ですが、脚が固定されてから時間がかかるため、47マイクロファラッドのコンデンサが必要で十分でした。
すべての問題は解決されたようですが、もう1つあります。 SETボタンを押したときの電流+ 18.4 mAは出力の電流制限を下回りますが、ロジック0の電圧は0.7 Vの範囲になります。これにより、抵抗を流れる電流が低下し、抵抗を再計算するか、スキームに従って外部トランジスタを使用する必要がありますオープンドレイン付き。 2番目のオプションは、動作がより予測可能なものとして選択しました。 最終的なスキームは次の形式を取りました。
このフォームでは、正常に獲得し、今日まで稼働しています。
結論の代わりにこの記事では、単純な(一見)デバイスを開発するための過度に表面的または軽薄なアプローチに対して開発者がどのように罰せられるかという問題に注意を喚起したいと思います。 一方、2つの主な理由から、メイン要素ベース(この場合はMK)の最適でない選択が、開発プロセスと製品自体をどのように複雑にするかを示したかったのです。
- プログラマーのスキルに合わせて技術的ソリューションの選択を調整する必要性。
- タスクに適した可能なコンポーネントの全範囲を把握できず、それらの「最も」を選択できない。 これらの要因は、多くの場合、多くのデバイス(家庭用、商業用、特殊)が正常に機能するという事実を説明しますが、あなたがそうするようには作られていません。