O zgrzewarkach...

Czyli wszystko co potrzebne prawdziwemu DIY'owi;) Porady, pytania i opisy używanego przez nas sprzętu.
Awatar użytkownika
Pyra
Site Admin
Posty: 8522
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

Witam

Kod: Zaznacz cały

 //zgrzew2
  while (pozwoleniePracy2 == 1) {
    zeroCrossState = digitalRead(zeroCrossPin);
    if (zeroCrossState != lastZeroCrossState) {
      if (zeroCrossState == HIGH) {
        delay(100);
        digitalWrite(3, HIGH);
        delay(czasZgrzewaniaTriak2);
        digitalWrite(3, LOW);
        krokCyklu++;
        lastZeroCrossState = zeroCrossState;
>>    pozwoleniePracy = 0;
        delay(timeMidWeld);
        lcd.clear();
      } 
Zdaje się, że powinno tu być:

Kod: Zaznacz cały

        pozwoleniePracy2 = 0;
Pozdrawiam
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
ProLight
Posty: 1142
Rejestracja: wtorek 06 gru 2011, 01:16
Lokalizacja: Śląsk

Post autor: ProLight »

Niestety dalej to samo. [/code]
Główny spammer tego Forum ;)
Awatar użytkownika
maciex93
Posty: 2886
Rejestracja: sobota 14 sty 2012, 18:59
Lokalizacja: Śląsk

Post autor: maciex93 »

Pisząc drugi strzał masz na myśli drugi puls, czy drugie wyzwolenie zgrzewania?
Nie wyrażam zgody na wykorzystywanie moich zdjęć w jakiejkolwiek formie bez mojej wiedzy, szczególnie nie życzę sobie czerpania za ich pomocą korzyści finansowych przez osoby trzecie.
ProLight
Posty: 1142
Rejestracja: wtorek 06 gru 2011, 01:16
Lokalizacja: Śląsk

Post autor: ProLight »

Drugie wyzwolenie.

Ustawiam na pojedyńcze impuls, robię jeden zgrzew.
Po chwili chce zrobić drugie pojedyncze wyzwolenie i niestety zawiesza się.
Główny spammer tego Forum ;)
Awatar użytkownika
Pyra
Site Admin
Posty: 8522
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

Witam

Spróbuj tak:

Kod: Zaznacz cały

  krokCyklu = 1;
  //zgrzew właściwy
  while (pozwoleniePracy == 1) {
    zeroCrossState = digitalRead(zeroCrossPin);
    if (zeroCrossState != lastZeroCrossState) {
      if (zeroCrossState == HIGH) {
        delay(100);
        digitalWrite(3, HIGH);
        delay(czasZgrzewaniaTriak);
        digitalWrite(3, LOW);
        krokCyklu++;

      }
  }
        lastZeroCrossState = zeroCrossState;
        pozwoleniePracy = 0;
        delay(timeMidWeld);
        lcd.clear();
  }


  
  krokCyklu = 1;
  //zgrzew2
  while (pozwoleniePracy2 == 1) {
    zeroCrossState = digitalRead(zeroCrossPin);
    if (zeroCrossState != lastZeroCrossState) {
      if (zeroCrossState == HIGH) {
        delay(100);
        digitalWrite(3, HIGH);
        delay(czasZgrzewaniaTriak2);
        digitalWrite(3, LOW);
        krokCyklu++;

      }
  }
        lastZeroCrossState = zeroCrossState;
        pozwoleniePracy = 0;
        delay(timeMidWeld);
        lcd.clear();
  
  }
Wydaje mi się, że w poprawionej wersji, poprzedni stan przycisku, był zapisywany tylko wtedy, kiedy stan przycisku był wysoki, a powinien zawsze, czyli powinien być poza "ifem" który to sprawdza. W związku z tym, tylko raz widzi zmianę stanu pinów z 0 na 1.

Pozdrawiam
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
Awatar użytkownika
maciex93
Posty: 2886
Rejestracja: sobota 14 sty 2012, 18:59
Lokalizacja: Śląsk

Post autor: maciex93 »

Nom,powinno działać 😀
Nie wyrażam zgody na wykorzystywanie moich zdjęć w jakiejkolwiek formie bez mojej wiedzy, szczególnie nie życzę sobie czerpania za ich pomocą korzyści finansowych przez osoby trzecie.
ProLight
Posty: 1142
Rejestracja: wtorek 06 gru 2011, 01:16
Lokalizacja: Śląsk

Post autor: ProLight »

Teraz jest coś dziwnego.

Ustawiłem czas 900ms
Klikam na wyzwolenie i nie za każdym razem jest uruchomione trafo.
Nie ma reguły, raz uruchomi trafo dopiero po 3 kliknięciu wyzwolenia, a czasami po 5 kliknięciu.
Przy tym jeśli nie ma uruchomienia trafa to na LCD też widzę że szybciej wraca do menu.

Jeśli nie ma zgrzewu to szybko wraca na LCD do menu, ale jeśli jest zgrzew to jest informacja na LCD tak długo jak trwa praca.

Program się nie zawiesza.

Nie wiem czy udało mi się to jasno przekazać.
Główny spammer tego Forum ;)
Awatar użytkownika
maciex93
Posty: 2886
Rejestracja: sobota 14 sty 2012, 18:59
Lokalizacja: Śląsk

Post autor: maciex93 »

Co masz podpięte pod pin 2?.
Nie wyrażam zgody na wykorzystywanie moich zdjęć w jakiejkolwiek formie bez mojej wiedzy, szczególnie nie życzę sobie czerpania za ich pomocą korzyści finansowych przez osoby trzecie.
ProLight
Posty: 1142
Rejestracja: wtorek 06 gru 2011, 01:16
Lokalizacja: Śląsk

Post autor: ProLight »

Jeśli dobrze zaznaczyłem to na 2 pinie nie ma nic.
Obrazek

Z lewej strony, 6 od góry, oznaczenie na PCB A2
Główny spammer tego Forum ;)
Awatar użytkownika
Pyra
Site Admin
Posty: 8522
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

Witam
Czy masz na pewno dobrze podłączone...

Tu jest prawidłowa numeracja pinów:
Obrazek

Pozdrawiam
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
ProLight
Posty: 1142
Rejestracja: wtorek 06 gru 2011, 01:16
Lokalizacja: Śląsk

Post autor: ProLight »

Raczej nie ma możliwości podłączyć inaczej:

Obrazek

Obrazek

Kabelki idą do płytki z przyciskami i LCD

Jeśli dobrze zaznaczyłem PIN2 we wcześniejszym poście, to na płytce PCB zgrzewarki do tego pinu nie ma żadnej ścieżki

Obrazek
Główny spammer tego Forum ;)
Awatar użytkownika
maciex93
Posty: 2886
Rejestracja: sobota 14 sty 2012, 18:59
Lokalizacja: Śląsk

Post autor: maciex93 »

Jeżeli nie ma nic na pinie 2 (D2) , to kolejny warunek w kodzie można wywalić, a jeżeli coś jest, to jest to prawdopodobnie detektor przejścia napięcia w sieci przez zero. Dlatego też może nie zawsze dać się wyzwolić impuls prądu. To zależy jak się "wstrzelisz" wciśnięciem guzika w przebieg sieci. Można by to inaczej zrealizować, ale ja nie mam czasu siedzieć w tym kodzie.
krokCyklu = 1;
//zgrzew właściwy
while (pozwoleniePracy == 1) {
delay(100);
digitalWrite(3, HIGH);
delay(czasZgrzewaniaTriak);
digitalWrite(3, LOW);
krokCyklu++;
pozwoleniePracy = 0;
delay(timeMidWeld);
lcd.clear();
}



krokCyklu = 1;
//zgrzew2
while (pozwoleniePracy2 == 1) {
delay(100);
digitalWrite(3, HIGH);
delay(czasZgrzewaniaTriak2);
digitalWrite(3, LOW);
krokCyklu++;
pozwoleniePracy = 0;
delay(timeMidWeld);
lcd.clear();

}
Nie wyrażam zgody na wykorzystywanie moich zdjęć w jakiejkolwiek formie bez mojej wiedzy, szczególnie nie życzę sobie czerpania za ich pomocą korzyści finansowych przez osoby trzecie.
ProLight
Posty: 1142
Rejestracja: wtorek 06 gru 2011, 01:16
Lokalizacja: Śląsk

Post autor: ProLight »

No właśnie o tym pomyślałem że chodzi o wstrzelenie się w sinusa.

Prześledziłem dokładnie płytkę i z pinu2 D2 idzie na transoptor 4N25

Bez przejścia przez 0 zgrzewy będą nie równomierne? Raz wyjdzie mocniejszy raz słabszy.
Główny spammer tego Forum ;)
Awatar użytkownika
maciex93
Posty: 2886
Rejestracja: sobota 14 sty 2012, 18:59
Lokalizacja: Śląsk

Post autor: maciex93 »

Tak, mogą być nierówne.
Nie wyrażam zgody na wykorzystywanie moich zdjęć w jakiejkolwiek formie bez mojej wiedzy, szczególnie nie życzę sobie czerpania za ich pomocą korzyści finansowych przez osoby trzecie.
Awatar użytkownika
Pyra
Site Admin
Posty: 8522
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

Witam

Teraz dopiero zaskoczyłem, o co chodzi z tymi 10ms.
1s = 1000ms,
50Hz * 2 = 100 (bo okres ma dwie połówki),
1000ms / 100 = 10ms

Ponieważ triak nie potrafi się wyłączyć, o ile płynie przez niego prąd, a załączenie jest w czasie przejścia przez zero, to minimalny czas zgrzewu to 10ms, no około, bo trochę czasu na włączenie a wyłączenie nastąpi chwilę przed przejściem przez zero. Z drugiej strony, prąd zdolny do zgrzewania, płynie przez około 75% czasu.
Jedyną więc metodą do zejścia czasem zgrzewu o wartość mniejszą niż krotność 10ms, jest sterowanie fazowe, czyli opóźnione załączanie triaka, względem przejścia przez zero.

Można by z tego wybrnąć stosując jako element wykonawczy tranzystor w układzie z mostkiem Graetza. Niestety, trudno przewidzieć, jak wtedy zachowa się transformator.

Pozdrawiam
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
ODPOWIEDZ