ドアが開いたときに磁気スイッチでオンにしようとしているLEDストリップがあります。ドアを開くとLEDがフェードオンし、ドアを閉じるとフェードオフするようにします。これがArduinoの出番です。フェードにはPWMを使用しています。各コンポーネントを個別に動作させることができます。フェージングLEDは、スイッチなしでMOSFETで動作します。 Arduinoでシリアル出力を使用してスイッチをテストしたところ、MOSFETなしで単一のLEDがフェードアウトして動作します。
使用しているもの:
- Arduino Uno R3
- 磁気スイッチ
- NチャネルMOSFETIRLB3034
- 5メートルの白色LEDストリップ
- 12VDC30W電源
- 10kオーム抵抗
セットアップは次のようになります:
回路図:
コード(役立つ場合):
const int buttonPin = 2; // the number of the switch pin const int ledPin = 9; // the number of the LED pin // variables will change: int buttonState = 0; // variable for reading the switch status int brightness = 0; int fadeAmount = 5; void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop(){ // read the state of the switch value: buttonState = digitalRead(buttonPin); // check if the switch is ON. // if it is, the buttonState is LOW: if (buttonState == LOW) { // fade LED on: analogWrite(ledPin, brightness); if (brightness < 255) { brightness = brightness + fadeAmount; } } else { // fade LED off: analogWrite(ledPin, brightness); if (brightness > 0) { brightness = brightness - fadeAmount; } } delay(30); }
MOSFETとスイッチの共通グランドに問題があると感じています。解決策/提案をいただければ幸いです。
コメント
- ピンD9を介してFETを継続的にオンにすることはできますか? PWMなしで..D9が高い場合、NMOSFETのドレインとソースの両端の電圧を測定できますか?スイッチを開閉したときのD2の電圧を確認してください。 D9ピンの出力がハイのときのD9の電圧を測定します。 5メートルのLEDストリップの詳細を共有できますか? Arduinoの電源をどのようにオンにしていますか?問題は5メートルのストリップLEDにあると感じています…
- MOSFETの近くにあるR2は100オームのオーダーになると思います。それ以外の場合は、'熱くなります。また、最小テストと最大テストをそれぞれ255から変更します。 0から250および5。
- どのような問題があるかは言いません。それは何をするためのものか? | LEDストリップは12V近くの電圧範囲でパワーアップします。つまり、おそらく約9Vでオフになり、12Vでオンになります。したがって、ストリップのIF電圧がフィルタリングのためにアナログである場合、PWM範囲の端の部分で電源がオンになります。回路が図のようになっている場合、LEDストリップはPWM周波数でオンとオフを変調する必要があります。これは機能する必要があります。示されている回路は問題ないように見え、コードは問題ないように見えるので、あなたは自分が思っていることをしていないかもしれません。すべてを確認してください。 |そして、それは実際に何をするのでしょうか?
- @Jippieが言うように-MOSFETゲート抵抗は100オーム、さらには10オームでもOKです。示されている10kはおそらく問題の原因ではありませんが、大きすぎます。
- THat 'は素晴らしいFETです。 データシートはこちら
回答
R2抵抗を保持する必要があると思いますが、High-Zがあるときはいつでも、NMOS Cgate容量に蓄積された電荷が放電されるように、1kにしてその前に10kのプルダウン抵抗を配置します。ポートD9で。また、ダイオードの順方向電流を制限する抵抗(通常は20 mA)を忘れないでください。ただし、データシートで毎回確認する必要があります。 LEDストリップの場合、通常は内部抵抗がありますが、より高い電圧を使用している場合でも、電流を制限する必要があります。たとえば、積分器を備えた単純な出力ポートではなくPWMを使用している理由と、LEDをオン(フェードオンオフ)するときに正確に観察および測定するものについて詳しく教えてください。
図を少し小さくする方法
を使用して作成された回路図
コメント
- 'は、アナログソリューションではなくデジタルソリューションが必要なため、PWMを使用しています。
- @lalamer ESEで図を拡大縮小するには、図を広くする必要があります。これを行うには、ドット/セグメント/テキストを左または右、あるいはその両方に配置して、図全体を縮小し、うまく機能させます。
- @RussellMcMahonはい、そうです。これはLEDストリップであり、内部抵抗。回答を更新しました。コミットしていただきありがとうございます。
回答
10KOhmは必要ありません。 MOSFETは、制御電流を必要とするトランジスタとは異なり、電圧制御デバイスです。あなたの問題はスイッチのデバウンスにあるのではないかと思います。おそらく、ソフトウェアが機能しなくなる可能性のある誤検知が発生している可能性があります。小さなデバウンスルーチンを使用することをお勧めします。たとえば、3つの連続したポジティブが見つかった場合にのみ、スイッチを押すと真のポジティブと呼ばれます。
コメント
- スイッチがアクティブであると見なされると、1つのアクションを実行し、再テストする前に30 mS遅延するため、実質的に30mSのデバウンスが発生します。
- 突入電流を制限するために、ゲートと直列に抵抗を配置することをお勧めします。 MOSFETのゲートはコンデンサのように機能し、充電/放電する必要があることを忘れないでください。
- これを実現するには、MOSFETのゲートをgndに接続する必要があります(NMOSの場合)。これにより、MOSFETのゲート容量が急速に放電されます。 また、ゲートはノイズの影響を受けやすく、スイッチを入れると大きな損傷を引き起こす可能性があるため、ゲートをフローティングのままにしないでください。 常にNMOSゲートをプルダウンします。