題:
Arduino直流電動機引起干擾。是什麼原因造成的?
Vince verhoeven
2015-12-21 05:32:23 UTC
view on stackexchange narkive permalink

我試圖在整個週末內解決此問題,但沒有成功,我決定將其發佈在這裡。真的很感謝您。

問題

Wi-Fi模塊會激活直流電動機並使它運行3秒鐘,但是當3秒後直流電動機停止,Wi-Fi模塊和顯示屏不再響應。它只能工作一次。 (按下重置按鈕後,會發生同樣的事情。)

問題

是什麼原因導致這種干擾?對電路有什麼建議嗎?(由於我不擅長繪製原理圖,因此包含了Fritzing圖)

Fritzing Diagram

  #include <SoftwareSerial.h>#include <LiquidCrystal.h>LiquidCrystal lcd(12,11,5,4,3,2); SoftwareSerial ESP8266(9,8); // RX = 8 zh TX = 9#define DEBUG trueboolean FAIL_8266 = false; int LED = 13; // led op 13int secondeAan = 3000; String my_AP_SSID =“ myID”; String my_AP_Pass =“ myPass”; void setup(){//-stel引入-pinMode(LED,OUTPUT); //-LCD scherm-lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,1);做{ESP8266.begin(115200); //開始通信esp8266 //等待串行監視器啟動while(!Serial); lcd.clear(); lcd.print(“ --- Start ---”); ESP8266.print(“ AT \ r \ n”);延遲(500);如果(ESP8266.find(“ OK”)){FAIL_8266 = false; sendData(“ AT + RST \ r \ n”,4000,DEBUG); sendData(“ AT + CWMODE = 3 \ r \ n”,2000,調試); sendData(“ AT + CWJAP = \”“ + my_AP_SSID +” \“,\”“ + my_AP_Pass +” \“,9,4 \ r \ n”,2000,調試); sendData(“ AT + CIFSR \ r \ n”,2000,DEBUG); sendData(“ AT + CIPMUX = 1 \ r \ n”,2000,調試); sendData(“ AT + CIPSERVER = 1,80 \ r \ n”,2000,DEBUG); }其他{lcd.clear(); lcd.setCursor(0,1); lcd.print(“模塊無響應。”);延遲(500); FAIL_8266 = true; }} while(FAIL_8266);} void loop(){//如果(ESP8266.find(“ + IPD,”)){,獲取可從串行端口讀取的字節(字符)數
lcd.clear(); lcd.print(“ Nieuwe connectie”); //-sluit connectie-motorToggle(); sendData(“ AT + CIPCLOSE = 0 \ r \ n”,100,調試); sendData(“ AT + CIPCLOSE = 1 \ r \ n”,100,調試); sendData(“ AT + CIPCLOSE = 2 \ r \ n”,100,調試); }} void motorToggle(){digitalWrite(LED,HIGH); lcd.clear(); lcd.print(“ eten gegeven”);延遲(secondeAan); digitalWrite(LED,LOW); delay(200);}字符串sendData(字符串命令,const int超時,布爾調試){字符串響應=“”; ESP8266.print(命令); //將讀取的字符發送給esp8266 long int time = millis(); while((time + timeout)> millis()){而(ESP8266.available()){char c = ESP8266.read();響應+ = c;如果(調試){lcd.clear(); lcd.print(response); }返迴響應;}  
Uno可以為esp8266提供3.3V電源嗎?應該從5V開始使用3.3V穩壓器。和一些非常大的電容器。該參考可能會有所幫助:http://iot-playground.com/2-uncategorised/17-esp8266-wifi-module-and-5v-arduino-connection。乾杯!
@MikaelPatel感謝您的評論!您認為這會引起干擾嗎? esp8266在直流電動機不運行的情況下正常工作
是的,超出3.3v穩壓器功能可能是一個問題。您還可以在電動機端子之間或在每個端子與罐之間放置一個小的陶瓷圓盤電容器。過去認為抑制低頻模擬RC齒輪的干擾是必要的,但在2.4 GHz時可能要小一些,但仍然不是一個壞主意。
您確定這是硬件問題而不是軟件問題嗎?您可以發布一些示例代碼嗎?根據提供的信息,不可能知道導致問題的電動機是否確實存在。
由於電動機是開環運行的,因此只要在假設仍然存在的軟件運行時斷開電動機的連接,就應該弄清是硬件還是軟件問題。
@ChrisStratton MattClark我猜這是硬件問題,因為當我斷開為直流電動機供電的電池時,一切正常。我將arduino代碼添加到我的帖子中
電池接線在圖中看起來很奇怪,是否正確?用開路或虛設電阻器更換電動機,以消除這種情況。 FET和電阻是否按預期工作?可以用DMM檢出嗎? 2k2電阻應將UNO的消耗限制為〜2mA。
二 答案:
Vince verhoeven
2015-12-22 21:09:36 UTC
view on stackexchange narkive permalink

感謝大家的幫助。我使用電容器修復了它。它們抑制了直流電動機產生的噪聲。我在此處

enter image description here

找到了我的信息
dlu
2015-12-21 12:19:19 UTC
view on stackexchange narkive permalink

有幾件事可能會引起您的問題:

  • 電動機的電流消耗,尤其是在啟動時。電動機可能消耗了足夠的功率以拉低處理器上的電壓,導致其崩潰,或者

  • 您可能會在電動機啟動和/或停止時看到瞬態現象導致處理器崩潰。

您可以檢測到此類問題的一種方法是將板載LED用作心跳或運行指示器。您可以在 loop()中將其閃爍,或執行類似操作,例如在啟動或停止電動機之前將其關閉,然後再重新啟動。如果閃爍停止或LED熄滅,則說明處理器已停止運行。

一般來說,除了最微小的電動機外,我建議使用Arduino控制晶體管它通過自己的電源線控制電機(它的電源可以與為Arduino供電的電源相同,只是不要通過Arduino運行電機電源)。那和評論中的建議將大大有助於將Arduino與它將引起的電機和電源干擾隔離開來。

請注意,海報已經“使用了可通過自身電源控制電機的晶體管”
阿克,錯過了……


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...