リレースイッチ後のArduino 16 x 2 LCD奇妙なシンボル

私は自動的に私の水槽の水を変えるために私のarduinoを使っています。プログラムは正常に動作し、ポンプ、ヒーター、バルブはリレーによって制御されます。私のラップトップに接続したとき、私はそれが機能し、プログラムを通してうまくいっているシリアルモニタを通して見ることができます。しかし、今私のLCDはリレーのオン/オフを切り替えた後に変なシンボルを出します。私はこれらの問題についてすでにかなりの質問と回答を読んだことがありますが、明確な答えはありません。

私の主な質問:外乱はまた、液晶からリレーまでの「物理的な」距離に起因するのでしょうか。

Let me include the picture of my setup so far (still in testing phase, and I'm not that good at electronics, so maybe you're going to laugh about my setup: Photo of my setup so far.

ご覧のとおり、arduinoはリレーの真上、バルブ用の24V DC電源の隣にあり、スイッチプラグはリレーに接続されています。リレーは2つのポンプ(30W)だけでなく300Wの発熱体も切り替えます。

私の質問:このトピックそれとも「物理的な」距離も問題を引き起こしますか?

また: これらのリレーは私がソリッドステートルレだと思っていましたが、同じウェブショップがソリッドステートルレと名付けられた8リレーボードを売っているのでおそらくそうではありません:p。 それは私に解決策を与えるのだろうか?ここで私が今使っているリレーの回路図へのリンク:回路図。 (上記のトピックでこのコメントを見て以来)

「リレー」のデータシートを見てください。リレーへの入力は実際には小さなSSRを駆動しており、これが実際の電力をリレー自体に切り替えます。リレー入力への入力はSSR入力なので、ダイオードが実際に何もしていないようです。

誰かがこの問題を解決するのを手伝うことができるならば、私はすでにこれらの問題についてかなりたくさん読んだが、それを解決する方法を理解していない。 コンデンサ、抵抗、スナバなどで固定できる場合は、なるべく小さな図面を添付してください。みんなありがとう!

0
あなたの分離はどこにありますか?
追加された 著者 Dan,
どうすればそれができますか。私は別の電源を介して液晶に電力を供給しようとしましたが、それからそれはすぐに奇妙なシンボルを与えました。
追加された 著者 charleswj81,
こんにちは、ええとわかりませんが、トランジスタの写真(私が使っているリレーの回路図)のD3ダイオードが答えるのではないでしょうか。
追加された 著者 charleswj81,
リレーコイルの両端にフライバックダイオードがありますか?この記事を参照し、フライバックを検索してください: electronics-tutorials.ws/io/io_5。 html オフにしないと、電源電圧にスパイクが発生してLCDを乱すことがあります。
追加された 著者 Bimpelrekkie,

5 答え

Given your setup it is likely that you have an issue similar to a customer of mine earlier this year. Under EMC testing, his apparatus did not pass the test for intense external emissions. The reason: the wires between the main board and the LCD board were long, unshielded and high impedance (>1 Ohm).

あなたの設定は以下のためのたくさんの機会を提供します。 a。切り替え時に「無線電力」を放射する。 b。 「ラジオの力」に邪魔されている。

電流ループをできるだけ小さくする必要があります。電源ワイヤを撚り合わせ、LCDにワイヤを撚り合わせます - 可能であればそれらをより小さくします。 LCDへの「クロック信号」を保護するだけで効果を減らすことができます。LCDのクロック入力の入力の近くにコンデンサを追加します(速度に応じて1〜100nF)。 私の顧客のために私はSWで問題を解決しました - さもなければ彼は彼の全体の生産を修正しなければなりませんでした。私はそれを解決しました: - 書き込まれていないときはいつでもLCDが読み取りモードになっていることを確認する。 - LCDの文字と設定を定期的に更新する(数秒ごとにすべてのパラメータと文字を書き換えます(たとえば、20ミリ秒ごとに1つのパラメータ)。

それ以前は、クロックとリード/ライトにフィルタコンデンサを追加して問題の原因を確認していました(ただし、クロックが最も重要でした)。

2
追加された
あなたの返事もありがとう!上記のとおり、現在のループを調整することはまだできませんでした。うまくいけば明日か週末に。コンデンサの置き方がよくわかりません。どちらが「クロック信号」であり、そのラインにコンデンサを直列にして、プラス側をarduinoに向けていますか。そして、0.1μFのコンデンサを使いますか? (同じ問題については、1 uF、および100 uFの他の記事を読んでください)私の基本的な知識をお寄せいただきありがとうございます。また、これから文字を更新しますが、書き込まれていないときに必ず読み取りモードになるようにするにはどうすればよいですか。御時間ありがとうございます!
追加された 著者 charleswj81,
私はあなたのスクリーンの仕様を知りません - あなたはドキュメンテーションからそれを得ることができるはずです。使用するコンデンサは、必要な速度とすでに存在するインピーダンスによって異なります。コンデンサはLCDの近くで並列になっています。信号の立ち上がり時間を1us以下にしたい場合、そしてライン上で1オームを仮定すると、1us/5 * F/s = 0.2uFが必要です。 LCDにR/W信号がある場合は、書き込みの最後にその信号が「読み取り」に設定されていることを確認してください。
追加された 著者 JoSt,

キャラクタLCDモジュールの1つの問題は、4ビットモードで使用されたときに、誤ってハーフバイトを受信するようなグリッチが、1バイトの後半部分と前半部分を使用して誤ってバイトを組み立てることです。次。これにより、次に8ビットモードに強制されてから4ビットモードに強制されるまで、ディスプレイが破損する可能性があります。意図的にスクロールを使用せず、カーソル位置をリセットしても構わない場合は、0、3、0、2のニブル値を送信することで実現できます。2バイト目と4バイト目の後に1.6ミリ秒(最小)の休止を取り入れます。 、および40us(最小)は各バイトの後に一時停止します。これらのコマンドに続いて、適切なコマンドを使用して表示モードを設定し、表示内容を書き換えます。

ディスプレイが4ビットモードで、バイトの前半を受信することが期待されている場合(期待どおり)、上記を0 + 3ホームコマンドおよび0 + 2ホームコマンドとして処理します。

ディスプレイが8ビットモードの場合は、NOPとして00、すでに8ビットモードに切り替えるためのコマンドとして30、NOPとして00、NOPとして切り替えるためのコマンドとして20を処理します。 4ビットモード表示は1/8デューティモードに切り替わるので、上記の同期シーケンスを使用した後でcodeが必要なデューティサイクルモードを設定する必要があります。

ディスプレイが4ビットモードで、バイトの後半を受信することを期待していた場合、何らかのコマンドとして?+ 0、8ビットモードに切り替えるためのコマンドとして3 + 0、および4ビットモードに切り替えるためのコマンド。

ディスプレイが1/16デューティサイクルを使用していて間違った状態にある場合、同期シーケンスによってディスプレイグリッチが発生する可能性がありますが、そのような状況では他にも問題がある可能性があります。ディスプレイが正しい状態であれば、グリッチは発生しないため、コードは定期的に上記のシーケンスを使用して、目に見える障害なしにディスプレイの内容を書き換えることができます。問題が発生した場合は、次回コードが再設定されて表示が書き直されるときに修正されます。

0
追加された

リレーをオンにしたときの突然の電流要求がArduinoとLCDへの5 V電源のグリッチを引き起こしている可能性があります。 Arduinoは動き続けていますが、LCDは壊れています。

enter image description here

図1. 5 Vリレーボード、シングルチャンネル

参考までに、ボードは通常次のように操作されます。

  • 絶縁型5V電源が必要な場合は、マイクロアイソレータがオプトアイソレータLEDに給電し、別のPSUがフォトトランジスタ、Q1、およびリレーコイルに電力を供給します。
  • ほとんどのアプリケーションにはPSUが1つしかないため、VccはJD-Vccに変更されています。
  • IN2がLowに引き下げられると、インジケータLEDとオプトLEDが点灯します。これにより、Q3を完全にオンにするのに十分な電流を流すオプトトランジスタがオンになります。これにより、5Vリレーコイルが励磁されます。 D3はスイッチオフ時にリレーコイルからの誘導エネルギーを吸収します。

あなたの問題に戻って:別の5 V電源を入手してください - USB電話充電器と 'B'コネクタカットオフの付いたUSBリードで十分でしょう。 VccからJDへのジャンパを取り外し、新しい電源からJD側のリレーボードに電力を供給します。「+」(赤)からJDへ、「 - 」(黒)からコモンへ。

これであなたの問題が解決したら私の理論は正しいです。あなたはそれから直接リレーボードまでそしてPSUからArduinoまで直接ワイヤーを走らせる限りあなたは1つの電源で走ることができるかもしれません。それらをデイジーチェーン接続しないでください。

あなたがどうやって乗るか教えてください。

0
追加された
こんにちはトランジスタ、あなたの明確な答え(そして時間)をありがとう。ジャンパーを取り外し、別のPSUを介して供給したところです。残念ながらこれはうまくいきませんでした、とにかく問題が起こりました。しかし多分le_top(私のワイヤーをひねってそれらを短くする)の発言と一緒なら私はそれが助けになるならば私は別のPSUと組み合わせて試すことができますが、そのために時間がありません:調整が完了したらお知らせします。
追加された 著者 charleswj81,

よくある問題は、2か月前、男性が私のところにやって来たときにありました。 ACモーターが実際には3KWの大型モーターであることが分かったのですぐにわかりました。それが作り出すのは磁場です。あなたの場合も同様です、それらのリレーはそれらの周りに巨大な磁場を作り出します、そして、あなたのケースでは、arduinoはわずか数センチメートル離れています。 1メートルほど離れた場所でケーブルでarduinoを与えてみてください。 arduinoを金属製のケースに入れて(Faradayケージを作成する)、ケーブルだけを出してみてください。問題も解決するはずです。 助けになれば幸いです。

0
追加された

私も同様の問題を抱えていましたが、切り替えが起こった直後にいくつかの行を追加することでそれを修正しました:

digitalWrite(xPin,LOW);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0, 0); 
lcd.print("Your Content...");

舞台裏で起こっているものは、あなたのLCDにはそれ自身の記憶があります。フラッシュメモリにはプログラムがほとんどありません。しかし、切り替えを行うと、一時的な電圧低下が起こります。その電圧低下の間にあなたのLCDは文字通りそれがその記憶に持っていたことすべてを忘れます。今ではどこから始めればいいのかわからず、それゆえ奇妙なメッセージを表示します。これらを追加すると、 /*lcd.begin(16,2); lcd.clear(); */以下のコード行が切り替わりました。今、LCDにその目標を思い出させています。

別の方法としては次のようなことが考えられます:全く異なるソースであなたのリレーを動かす。それはどういう意味ですか? NCまたはリレーのNOに接続されている電源は、あなたがあなたのマイクロコントローラシステムに与えている電源と共通であるべきではありません。

0
追加された