• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zakłócenia w działaniu układu
#1
Witam

Mam kłopot z nietypowymi zakłóceniami w działaniu układu. Mianowicie układ składa się z arduino mini + przepływomierz + mosfet + elektrozawór + zasilacz i regulator napięcia.
W uproszczeniu układ działa tak że jak wykrywa przepływ wody otwiera elektrozawór. I program działa prawidłowo.
Problemem jest samoczynne włączanie się na chwilę elektrozaworu (otwieranie elektrozaworu). Momenty w których się otwiera to: odłożenie czajnika elektrycznego na podstawkę (tylko jak jest wyłączony, jak odłoże z wciśniętym przyciskiem "ON" to nie ma tego problemu - układ Arduino jest wpięty na tej samej lini zasilającej co czajnik), kolejnym momentem zakłuceń jest gdy podpiąłem woltomierz za zasilaczem a przed regulator napięcia (wystarczy że podpiąłem tylko kabelek od minusa), to samo było jak podłączyłem sam kabelek od plusa z woltomierza do wyjścia na MOSFETa.
Czy potrzebuję jakieś filtry na zasilaniu aby wyciąć zakłócenia które się pojawiają? 




zastosowany MOSFET:
https://pl.aliexpress.com/item/100500490...pt=glo2pol

regulator napięcia:
https://pl.aliexpress.com/item/328005303...pt=glo2pol
 
Odpowiedź
#2
A masz kondensatorki filtrujące zasilanie? Jaki masz zasilacz? Najlepiej byłoby gdybyś podał schemat elektryczny urządzenia. Program też jest pewnie winny bo normalnie pojedyncze zakłócenie nie trwa na tyle długo by włączyć elektrozawór, musi coś "wyzwolić" w programie.
 
Odpowiedź
#3
Podstawą przy takim pytaniu jest pokazanie kodu i schematu.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#4
(03-02-2024, 01:14)kaczakat napisał(a): Podstawą przy takim pytaniu jest pokazanie kodu i schematu.
Zasilacz jaki zastosowałem: zasilacz z dekodera Cyfrowy Polsat

Kod:
Kod:
const int flowPin = 2;  // przepływomierz podłączony do pinu 2
const int zawor = 5;

void(*resetFunc) (void) = 0;

volatile unsigned int flowCount = 0; // zmienna do przechowywania liczby impulsów (volatile oznacza, że zmienna jest modyfikowana w przerwaniu)
unsigned long flowMillis = 0; // zmienna do przechowywania czasu
unsigned long aktualnyCzas = 0;
unsigned long opuznienie = 0;
const unsigned long czasReset = 604800000UL;
unsigned long czasRReset = 0;


void setup() {
//  Serial.begin(9600);
  pinMode(flowPin, INPUT_PULLUP); // ustawienie pinu 2 jako wejście
  pinMode(zawor, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(flowPin), flowISR, RISING); // dodanie przerwania do pinu 2 na stan wysoki
  digitalWrite(zawor, LOW);
  czasRReset = millis();
  opuznienie = millis();
  pinMode(13, OUTPUT);

}
void loop() {
        aktualnyCzas = millis();
    if (aktualnyCzas - opuznienie >=200UL){
        opuznienie = aktualnyCzas;
    if (flowCount >2){
      digitalWrite (zawor, HIGH);
      digitalWrite (13,HIGH);
      flowCount = 0;
    }
   
    else {
      digitalWrite (zawor,LOW);
      digitalWrite (13, LOW);
    }
  }

     if (aktualnyCzas - czasRReset >= czasReset) {
        resetFunc();
}

}

void flowISR() {
  flowCount++; // zwiększ liczbę impulsów o 1
}

Schemat podłączenia:
[Obrazek: LVAktE4]
 
Odpowiedź
#5
Mam problem ze wstawieniem obrazka, proszę o pomoc.

Tutaj zamieszczam link do obrazka:
https://imgur.com/a/LVAktE4
 
Odpowiedź
#6
Jak tak podłączasz, jak rysujesz schematy, to może nie działać, przecież tu nawet nie widać, czy mosfet jest podłączony do GND, czy do 12V.
Sprawdź czy wyzwala się mosfet, czy Arduino, np. w Setup można dodać pętle 5s szybkiego migania wbudowanego led, widać będzie, że Arduino się zrestartowało. Na schematach w internetach widać rezystor podciągający do GND.
Co do zasady to nie jest dobry pomysł by zasilać elektrozawór z tego samego źródła co Arduino, dobrze jest dodać optoizolację.
Poczytaj też ten wątek, często korzystam z jego rozwiązań: https://www.gammon.com.au/motors , zwróć uwagę na różnice podłączenia Mosfeta N i P.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#7
To prawda że schemat nie jest pierwszej klasy. 
W pierwszym poście dałem link do zastosowanego MOSFETa i jest on podłączony do GND.
Dodam pętlę w Setup o której mówisz, choć z tego co zaobserwowałem to na 95% wyzwala się MOSFET.
Jak chciałem podpiąć analogowy woltomierz na wejście do MOSFETa aby sprawdzić czy Arduino wystawia błędny "sygnał" wyjścia to powodowało to jednokrotne wyzwolenie MOSFETa. Także mam nad czym myśleć.
Wcześniej również znajomy wspomniał że może potrzeba jest dołożyć rezystor podciągający do GND, Ty również o tym wspominasz. Więc zacznę od niego a jak nie pomoże to kolejne żeczy będę wykluczał.
Dzięki i kawa leci do Ciebie Wink
 
Odpowiedź
#8
(03-02-2024, 22:06)Arpl napisał(a): To prawda że schemat nie jest pierwszej klasy. 

Problemy z zakłóceniami mogą powstać nie tylko przez błędny układ, ale także przez sam montarz - długie, nieekranowane kable, pętle masy itp. Jeśli zakłócenie powoduje wyzwolenie procka to pewnie dostajesz fałszywy sygnał z przepływomierza. Tam jest pewnie słaby sygnał, łatwy do zakłócenia. Masz do tego jakąś dokumentacje, datasheety itp? Zaznacz może które przewody są długie.
 
Odpowiedź
#9
To OK, z mosfetem N powinien być on podłączony od strony GND, sterowany obiekt od strony V.
Są specjalne mosfety Logic Level i one charakteryzują się niskim napięciem sterowania, tak by to robił bezpośrednio uC, ale czasami lepiej jest użyć zwykłego, skoro i tak tam masz napięcie 12V, a sterować tym przez dodatkowy tranzystor bipolarny. Masz schemat przykładowy dla P w poprzednim linku, tu dla N i optoizolacją: https://www.bristolwatch.com/ele/opto_isolated.htm.
Można się domyślać, że skoro Ci to działa, to jest to Logic Level, ale w sumie to Chińczyk nic nie napisał jaki to mosfet, a nawet jeśli by napisał to i tak nie można im wierzyć i trzeba sprawdzać pdf z datasheet.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#10
Zastosowałem rezystor podciągający do GND o wartość 13k (taki miałem pod ręką) i jest taka różnica że samoczynne wyzwolenie następuje rzadziej.
Raczej wykluczam zakłcenia powstające na przewodach gdyż nie mam dłuższych przewodów niż 20 cm  do przepływomierza.
Gdyby samowyzwolenie następowało zawsze to było by to łatwiejsze do zdiagnozowania. A na złość robi tak że tylko czasem tak się dzieje.
 
Odpowiedź
  


Skocz do:


Przeglądający: 2 gości