Strona 22 z 25

: sobota 24 lis 2018, 20:59
autor: Robert_76_pl
pietros pisze:
Manekinen pisze:Też nie wiem jak to działa, 28A w zwarciu na bezpieczniku 10A. Może ma charakterystykę C że chwilę wytrzymuje. Ale powinno tam być standardowo B16A albo C16A skoro reszta instalacji też na 16A.
Przy tak krótkich impulsach B10 spokojnie wytrzyma 30-50A.
Panowie napisałem że test robiony bez sterownika a na sterowniku mam ten 10A bezpiecznik.
A w rozdzielce mam 16A

Cytat "Wszystkie testy robione bez sterownika ponieważ na czasie ponad 1s na sterowniku zrywa bezpiecznik 10A."

Jak mocno powinny być naostrzone elektrody ja mam niecały 1mm2

: poniedziałek 26 lis 2018, 12:08
autor: joon
Na sterowniku 10A może dlatego że triak jest na 13-16? :D Wsadź większy bezpiecznik w sterownik, triak to groszowe sprawy, a i tak powinien być z zapasem.

: sobota 09 mar 2019, 12:51
autor: ProLight
Panowie kupiłem sterownik gotowca na arduino, poskładałem sobie zaprogramowałem i zgrzewarka śmiga aż miło, ale niestety skok zgrzewu mam co 10ms i jest to trochę problematyczne bo czasem te 10ms to dużo za dużo, a czasem 10ms to za mało a 20ms to tragiczne za dużo.

Czy jak wstawię program to pomoże mi Ktoś w modyfikacji tego kroku?
Pisałem do producenta, obiecał pomóc w wolnym czasie ale trwa to już parę tygodni i od z tego nie wychodzi.

: sobota 09 mar 2019, 13:51
autor: marmez
Wstawiaj. Chętnie zobaczę, choć nie obiecuję, że będę umiał pomóc. Tylko nie wiem, czy w tym wątku, czy w nowym, a tutaj tylko link. Ale w sumie tutaj jest na temat, a najwyżej moderator wydzieli.

: sobota 09 mar 2019, 13:55
autor: ProLight

Kod: Zaznacz cały

#include <Wire.h>
// Get the LCD I2C Library here&#58;
// https&#58;//bitbucket.org/fmalpartida/new-liquidcrystal/downloads
#include <LiquidCrystal_I2C.h>
#include<EEPROM.h>


/*-----&#40; Declare Constants &#41;-----*/
/*-----&#40; Declare objects &#41;-----*/
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol//////0x20
LiquidCrystal_I2C lcd&#40;0x38, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE&#41;;  // Set the LCD I2C address

/*-----&#40; Declare Variables &#41;-----*/
// this constant won't change&#58;
//const int  zeroCrossPin = 2;
const int ledPin = 13;       // the pin that t      3-he LED is attached to
const int  zeroCrossPin = 2;    // the pin that the pushbutton is attached to


// Variables will change&#58;
int buttonPushCounter = 0;   // counter for the number of button presses
int zeroCrossState = 0;         // current state of the button
int lastZeroCrossState = 0;     // previous state of the button
boolean startButtonState = 0;
boolean lastStartButtonState = 0;
int czasZgrzewaniaTriak = 4;
int czasZgrzewaniaTriak2 = 1;//wartość razy 10ms
//int mocTriak = 100;       //moc w procentach
int mocAktualna = 50;
int timeMidWeld = 100;
int buttonValue1 = 0;
int buttonValue2 = 0;
int timeValue1 = 20;
int pozwoleniePracy = 0;
int pozwoleniePracy2 = 0;
int krokCyklu = 1;
int menu1 = 0;
int menu2 = 0;
int bufor1 = 0;
int bufor2 =0; //bool 
int opoznienieZalaczenia = 0;
boolean podwojnyZgrzew = 0;

/*adresy zmiennych eeprom
  0 - podwojny zgrzew
  1 - czas 1 zg
  2 - czas 2 zg
  3 - czas przerwy
  4- opoznienie zalaczenia
*/

void setup&#40;&#41;   /*----&#40; SETUP&#58; RUNS ONCE &#41;----*/
&#123;
  //attachInterrupt&#40;0, zero_crosss_int, RISING&#41;;
  pinMode&#40;3, OUTPUT&#41;;
   
  pinMode&#40;zeroCrossPin, INPUT&#41;;
  digitalWrite&#40;3, LOW&#41;;
  pinMode&#40;A7, INPUT_PULLUP&#41;;
  pinMode&#40;A6, INPUT_PULLUP&#41;;
  lcd.begin&#40;16, 2&#41;;  // initialize the lcd for 16 chars 2 lines, turn on backlight
  lcd.clear&#40;&#41;;
  lcd.setCursor&#40;0, 0&#41;; //Start at character 0 on line 0
  lcd.print&#40;"EMSI-Tech v.0.82a"&#41;;
  lcd.setCursor&#40;0, 1&#41;;
  lcd.print&#40;"#KREATOR"&#41;;
  delay&#40;2000&#41;;
  lcd.clear&#40;&#41;;
  podwojnyZgrzew = EEPROM.read&#40;0&#41;;
  if &#40;podwojnyZgrzew >1&#41;&#123;
        EEPROM.write&#40;0, 0&#41;;
        podwojnyZgrzew = EEPROM.read&#40;0&#41;;
  &#125;
  czasZgrzewaniaTriak = EEPROM.read&#40;1&#41;;
  czasZgrzewaniaTriak2 = EEPROM.read&#40;2&#41;;


&#125;/*--&#40;end setup &#41;---*/

//977 - start

//977 - esc
//935 - lewy
//896 - gora
//860 - dol
//827 - prawo
//779- ok    797???


void loop&#40;&#41;
&#123;
  buttonValue1 = analogRead&#40;A6&#41;;
  buttonValue2 = analogRead&#40;A7&#41;;
  //wyswietlanie menu
  lcd.setCursor&#40;0, 0&#41;;
  lcd.print&#40;"Zgrzew1&#58; "&#41;;
  lcd.print&#40;&#40;czasZgrzewaniaTriak * 10&#41;&#41;;
  lcd.print&#40;"ms"&#41;;

  lcd.setCursor&#40;0, 1&#41;;
  lcd.print&#40;"Zgrzew2&#58; "&#41;;
  if &#40;podwojnyZgrzew == 1&#41; &#123;
    //lcd.print&#40;"ON  "&#41;;
    lcd.print&#40;&#40;czasZgrzewaniaTriak2 * 10&#41;&#41;;
    lcd.print&#40;"ms"&#41;;

  &#125;
  else &#123;
    lcd.print&#40;"OFF "&#41;;
  &#125;

  //menu jakies ustalające parametry
  if &#40;analogRead&#40;A7&#41; >= 780 && analogRead&#40;A7&#41; <= 810&#41; &#123;
    lcd.clear&#40;&#41;;

    //ustawienie czasu bo tak sobie wymyśliłem jedząc ciastko i kawe pijąc
    menu1 = 1;
    bufor1 = czasZgrzewaniaTriak;
    while &#40;menu1 == 1&#41; &#123;
      lcd.setCursor&#40;0, 0&#41;;
      lcd.print&#40;"Zgrzew1&#58; "&#41;;
      lcd.print&#40;&#40;bufor1 * 10&#41;&#41;;
      lcd.print&#40;"ms"&#41;;
      lcd.setCursor&#40;0, 1&#41;;
      lcd.print&#40;"Ustawianie czasu"&#41;;
      //if &#40;analogRead&#40;A7&#41; >= 890 && analogRead&#40;A7&#41; <= 910&#41;
      if &#40;analogRead&#40;A7&#41; >= 850 && analogRead&#40;A7&#41; <= 870&#41; &#123;
        bufor1++;
      &#125;
      else if &#40;analogRead&#40;A7&#41; >= 890 && analogRead&#40;A7&#41; <= 910&#41; &#123;
        if &#40;bufor1 > 1&#41; &#123;
          bufor1--;
        &#125;
      &#125;
      if &#40;analogRead&#40;A7&#41; >= 820 && analogRead&#40;A7&#41; <= 840&#41; &#123;
        bufor1 = bufor1 + 10;
      &#125;
      else if &#40;analogRead&#40;A7&#41; >= 920 && analogRead&#40;A7&#41; <= 950&#41; &#123;
        if &#40;bufor1 >= 11&#41; &#123;
          bufor1 = bufor1 - 10;
        &#125;
        else &#123;
          bufor1 = 1;
        &#125;
      &#125;
      delay&#40;150&#41;;
      //wyjscie bez zapisu
      if &#40;analogRead&#40;A7&#41; >= 960&#41; &#123;
        menu1 = 0;
      &#125;
      else if &#40;analogRead&#40;A7&#41; >= 780 && analogRead&#40;A7&#41; <= 810&#41; &#123;
        czasZgrzewaniaTriak = bufor1;
        menu1 = 0;
        lcd.setCursor&#40;0, 1&#41;;
        lcd.print&#40;"Zapisuje"&#41;;
        EEPROM.write&#40;1, czasZgrzewaniaTriak&#41;;
        delay&#40;100&#41;;
        lcd.print&#40;"."&#41;;
        delay&#40;100&#41;;
        lcd.print&#40;"."&#41;;
        delay&#40;100&#41;;
        lcd.print&#40;"."&#41;;
        delay&#40;200&#41;;

      &#125;

      lcd.clear&#40;&#41;;
    &#125;

    //ustawienie podwojnego zgrzewu  tralalalala
    menu1 = 1;
    bufor2 = podwojnyZgrzew;
    while &#40;menu1 == 1&#41; &#123;
      lcd.setCursor&#40;0, 0&#41;;
      lcd.print&#40;"Zgrzew2&#58;"&#41;;
      lcd.setCursor&#40;0, 1&#41;;
      if &#40;bufor2 == true&#41; &#123;
        lcd.print&#40;"ON"&#41;;
      &#125;
      else &#123;
        lcd.print&#40;"OFF"&#41;;
      &#125;
      if &#40;analogRead&#40;A7&#41; >= 890 && analogRead&#40;A7&#41; <= 910&#41; &#123;
        if &#40;bufor2 == true&#41; &#123;
          bufor2--;
        &#125;
      &#125;
      else if &#40;analogRead&#40;A7&#41; >= 850 && analogRead&#40;A7&#41; <= 870&#41; &#123;
        if &#40;bufor2 == false&#41; &#123;
          bufor2++;
        &#125;
      &#125;

      delay&#40;150&#41;;
      //wyjscie bez zapisu
      if &#40;analogRead&#40;A7&#41; >= 960&#41; &#123;
        menu1 = 0;
      &#125;
      else if &#40;analogRead&#40;A7&#41; >= 780 && analogRead&#40;A7&#41; <= 810&#41; &#123;
        podwojnyZgrzew = bufor2;
        menu1 = 0;
        lcd.setCursor&#40;0, 1&#41;;
        lcd.print&#40;"Zapisuje"&#41;;
        EEPROM.write&#40;0, podwojnyZgrzew&#41;;
        delay&#40;50&#41;;
        lcd.print&#40;"."&#41;;
        delay&#40;50&#41;;
        lcd.print&#40;"."&#41;;
        delay&#40;50&#41;;
        lcd.print&#40;"."&#41;;
        delay&#40;100&#41;;

      &#125;

      lcd.clear&#40;&#41;;
    &#125;
    //koniec ustawienia włączenia zgrzewu2
    //ustawienie   czesci zgrzewu zgrzewu albo coś jakoś czymś gdzieś po coś
    //bredzisz...
    if &#40;podwojnyZgrzew == 1&#41; &#123;
      menu1 = 1;
      bufor1 = czasZgrzewaniaTriak2;
      while &#40;menu1 == 1&#41; &#123;
        lcd.setCursor&#40;0, 0&#41;;
        lcd.print&#40;"Zgrzew2&#58; "&#41;;
        lcd.print&#40;&#40;bufor1 * 10&#41;&#41;;
        lcd.print&#40;"ms"&#41;;
        lcd.setCursor&#40;0, 1&#41;;
        lcd.print&#40;"Ustawianie czasu"&#41;;
        if &#40;analogRead&#40;A7&#41; >= 850 && analogRead&#40;A7&#41; <= 870&#41; &#123;
          bufor1++;
        &#125;
        else if &#40;analogRead&#40;A7&#41; >= 890 && analogRead&#40;A7&#41; <= 910&#41; &#123;
          if &#40;bufor1 > 1&#41; &#123;
            bufor1--;
          &#125;
        &#125;
        if &#40;analogRead&#40;A7&#41; >= 820 && analogRead&#40;A7&#41; <= 840&#41; &#123;
          bufor1 = bufor1 + 10;
        &#125;
        else if &#40;analogRead&#40;A7&#41; >= 920 && analogRead&#40;A7&#41; <= 950&#41; &#123;
          if &#40;bufor1 >= 11&#41; &#123;
            bufor1 = bufor1 - 10;
          &#125;
          else &#123;
            bufor1 = 1;
          &#125;
        &#125;
        delay&#40;150&#41;;
        //wyjscie bez zapisu
        if &#40;analogRead&#40;A7&#41; >= 960&#41; &#123;
          menu1 = 0;
        &#125;
        else if &#40;analogRead&#40;A7&#41; >= 780 && analogRead&#40;A7&#41; <= 810&#41; &#123;
          czasZgrzewaniaTriak2 = bufor1;
          menu1 = 0;
          lcd.setCursor&#40;0, 1&#41;;
          lcd.print&#40;"Zapisuje"&#41;;
          EEPROM.write&#40;2, czasZgrzewaniaTriak2&#41;;
          delay&#40;100&#41;;
          lcd.print&#40;"."&#41;;
          delay&#40;100&#41;;
          lcd.print&#40;"."&#41;;
          delay&#40;100&#41;;
          lcd.print&#40;"."&#41;;
          delay&#40;200&#41;;

        &#125;

        lcd.clear&#40;&#41;;
      &#125;
    &#125;//chyba koniec ifa
  &#125;



   if &#40;analogRead&#40;A6&#41; > 500&#41; &#123;
   startButtonState = 1;&#125;
   else &#123;
   startButtonState = 0;
   
   &#125;
   
  //startButtonState = digitalRead&#40;3&#41;;
  if &#40;startButtonState != lastStartButtonState&#41; &#123;
    if &#40;startButtonState == HIGH&#41; &#123;
      lcd.setCursor&#40;0, 0&#41;;
      lcd.print&#40;"----------------"&#41;;

      lcd.setCursor&#40;0, 1&#41;;
      lcd.print&#40;"--**--------**--"&#41;;
      pozwoleniePracy = 1;
      if &#40;podwojnyZgrzew == 1&#41; &#123;
        pozwoleniePracy2 = 1;
      &#125;
    &#125;
  &#125;
  lastStartButtonState = startButtonState;



  krokCyklu = 1;
  //zgrzew właściwy
  while &#40;pozwoleniePracy == 1&#41; &#123;
    zeroCrossState = digitalRead&#40;zeroCrossPin&#41;;
    if &#40;zeroCrossState != lastZeroCrossState&#41; &#123;
      if &#40;zeroCrossState == HIGH&#41; &#123;
        delayMicroseconds&#40;6000&#41;;
        digitalWrite&#40;3, HIGH&#41;;
        delayMicroseconds&#40;100&#41;;
        krokCyklu++;
        lcd.setCursor&#40;0, 1&#41;;
        //lcd.print&#40;krokCyklu&#41;;
      &#125;
    &#125;
    lastZeroCrossState = zeroCrossState;
    if &#40;krokCyklu > czasZgrzewaniaTriak&#41; &#123;
      pozwoleniePracy = 0;
      digitalWrite&#40;3, LOW&#41;;
      delay&#40;timeMidWeld&#41;;
      lcd.clear&#40;&#41;;
    &#125;
  &#125;
  krokCyklu = 1;
  //zgrzew2
  while &#40;pozwoleniePracy2 == 1&#41; &#123;
    zeroCrossState = digitalRead&#40;zeroCrossPin&#41;;
    if &#40;zeroCrossState != lastZeroCrossState&#41; &#123;
      if &#40;zeroCrossState == HIGH&#41; &#123;
        delayMicroseconds&#40;6000&#41;;
        digitalWrite&#40;3, HIGH&#41;;
        delayMicroseconds&#40;100&#41;;
        krokCyklu++;
        lcd.setCursor&#40;0, 1&#41;;
        //lcd.print&#40;krokCyklu&#41;;
      &#125;
    &#125;
    lastZeroCrossState = zeroCrossState;
    if &#40;krokCyklu > czasZgrzewaniaTriak2&#41; &#123;
      pozwoleniePracy2 = 0;
      digitalWrite&#40;3, LOW&#41;;
      delay&#40;timeMidWeld&#41;;
      lcd.clear&#40;&#41;;
    &#125;
  &#125;



&#125;/* --&#40;end main loop &#41;-- */


/* &#40; THE END &#41; */

: sobota 09 mar 2019, 13:59
autor: ProLight
Jeszcze chciałem zapytać, bo widzę jak by 4 opcje w menu,
czas zgrzewu 1
Czas zgrzewu 2
Czas przerwy
Czas zwłoki

U mnie działa tylko
Czas zgrzewu 1
Czas zgrzewu 2

Pozostałych nie ma

Jak Ktoś ma jeszcze jakieś pomysły dodatki na udoskonalenie to chętnie.

Kod: Zaznacz cały

//int mocTriak = 100;       //moc w procentach 
int mocAktualna = 50; 
int timeMidWeld = 100; 
Przeglądam ten kod żeby coś samemu podziałać ale narazie jedyne co mi się udało to że na wyświetlaczu pokazuje mi się 1/2/3/4... ale czas zgrzewu dalej jest x10ms

Czy to co zaznaczyłem znaczy że zgrzewarka teraz działa na 50%?

: czwartek 14 mar 2019, 14:37
autor: ProLight
Możecie Panowie polecić jakiś gotowiec sterownik który będzie miał czas impulsu z krokiem co 1ms?
Bo ten sterownik co mam nie nadaje się chyba.

10ms jest okej ale jak Chce zgrać już dwie taśmy to za mało, a 20ms pali już wszystko, tak się męczyłem żeby mieć mocne trafo A teraz nie mogę wykorzystać potencjału.

: czwartek 14 mar 2019, 16:30
autor: Pyra
Witam

Z tego co zrozumiałem czytając kod, widzę taką metodę zmniejszenia czasu zgrzewu.

W sekcji:

Kod: Zaznacz cały

 krokCyklu = 1;
  //zgrzew właściwy
  while &#40;pozwoleniePracy == 1&#41; &#123;

Mamy taki fragment:

Kod: Zaznacz cały

       delayMicroseconds&#40;6000&#41;; 
To jest 6ms, dodając inne opóźnienia zawarte w pętli, powinno wyjść 10ms na jeden "obrót" cyklu. Zmniejszając do:

Kod: Zaznacz cały

       delayMicroseconds&#40;1000&#41;; 
Krok powinien zejść do 5ms, niżej może być trudno.

Pętla jest wykonywana, dopóki zmienna "krokcyklu" jest mniejsza od "czasZgrzewaniaTriak"

Przy drugim zgrzewie jest identycznie.

Pozdrawiam

PS: Oczywiście po tej zmianie, powinieneś zmienić w sekcji wyświetlania:

Kod: Zaznacz cały

 lcd.print&#40;&#40;czasZgrzewaniaTriak * 10&#41;&#41;; 
na:

Kod: Zaznacz cały

 lcd.print&#40;&#40;czasZgrzewaniaTriak * 5&#41;&#41;; 

: piątek 15 mar 2019, 11:38
autor: ProLight
Dziękuję,
Przetestuje zaraz po pracy.
Walczyłem z tym trochę z Kolegą który ogarnia arduino, ale nie ogarnia elektroniki i nie był stanie do końca mi pomóc w ulepszeniu tego sterownika. Przetestowałem kilka rozwiązań ale w końcu wywiesił białą flagę.

: piątek 15 mar 2019, 17:14
autor: ProLight
Dziękuję za chęci, ale przy ustawieniu 5ms nic się nie dzieje, trafo totalnie nie ma mocy, dopiero po ustawieniu krok wyżej 10ms zaczyna zgrzewach.

Nie mam chwilowo możliwości zmierzyć prądu ani napięcia na wyjściu z trafa.

: piątek 15 mar 2019, 17:32
autor: Pyra
Witam
ProLight pisze:Dziękuję za chęci, ale przy ustawieniu 5ms nic się nie dzieje, trafo totalnie nie ma mocy, dopiero po ustawieniu krok wyżej 10ms zaczyna zgrzewach.
Bo ta zmiana dotyczy kroku, a nie czasu. Po prostu dostajesz krok 5ms i z taką dokładnością możesz ustawić czas.
Pisałeś, że 10 to za mało, a 20 za dużo, więc teraz możesz ustawić 15.
Sądzę, że można by nawet ustawić krok 2ms, ale trzeba by głębiej pogrzebać w sofcie. Tam jest pętla, która m.in. wysyła dane na wyświetlacz, a to zajmuje relatywnie sporo czasu.

Niestety, teraz mam inne zajęcie i nie za bardzo mogę się w tym dogłębnie grzebać.

Pozdrawiam

: piątek 15 mar 2019, 19:29
autor: maciex93
Pod pinem 3 masz element wykonawczy?

: piątek 15 mar 2019, 19:43
autor: maciex93

Kod: Zaznacz cały

#include <Wire.h> 
// Get the LCD I2C Library here&#58; 
// https&#58;//bitbucket.org/fmalpartida/new-liquidcrystal/downloads 
#include <LiquidCrystal_I2C.h> 
#include<EEPROM.h> 


/*-----&#40; Declare Constants &#41;-----*/ 
/*-----&#40; Declare objects &#41;-----*/ 
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol//////0x20 
LiquidCrystal_I2C lcd&#40;0x38, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE&#41;;  // Set the LCD I2C address 

/*-----&#40; Declare Variables &#41;-----*/ 
// this constant won't change&#58; 
//const int  zeroCrossPin = 2; 
const int ledPin = 13;       // the pin that t      3-he LED is attached to 
const int  zeroCrossPin = 2;    // the pin that the pushbutton is attached to 


// Variables will change&#58; 
int buttonPushCounter = 0;   // counter for the number of button presses 
int zeroCrossState = 0;         // current state of the button 
int lastZeroCrossState = 0;     // previous state of the button 
boolean startButtonState = 0; 
boolean lastStartButtonState = 0; 
int czasZgrzewaniaTriak = 4; 
int czasZgrzewaniaTriak2 = 1;//wartość razy 10ms 
//int mocTriak = 100;       //moc w procentach 
int mocAktualna = 50; 
int timeMidWeld = 100; 
int buttonValue1 = 0; 
int buttonValue2 = 0; 
int timeValue1 = 20; 
int pozwoleniePracy = 0; 
int pozwoleniePracy2 = 0; 
int krokCyklu = 1; 
int menu1 = 0; 
int menu2 = 0; 
int bufor1 = 0; 
int bufor2 =0; //bool 
int opoznienieZalaczenia = 0; 
boolean podwojnyZgrzew = 0; 

/*adresy zmiennych eeprom 
  0 - podwojny zgrzew 
  1 - czas 1 zg 
  2 - czas 2 zg 
  3 - czas przerwy 
  4- opoznienie zalaczenia 
*/ 

void setup&#40;&#41;   /*----&#40; SETUP&#58; RUNS ONCE &#41;----*/ 
&#123; 
  //attachInterrupt&#40;0, zero_crosss_int, RISING&#41;; 
  pinMode&#40;3, OUTPUT&#41;; 
    
  pinMode&#40;zeroCrossPin, INPUT&#41;; 
  digitalWrite&#40;3, LOW&#41;; 
  pinMode&#40;A7, INPUT_PULLUP&#41;; 
  pinMode&#40;A6, INPUT_PULLUP&#41;; 
  lcd.begin&#40;16, 2&#41;;  // initialize the lcd for 16 chars 2 lines, turn on backlight 
  lcd.clear&#40;&#41;; 
  lcd.setCursor&#40;0, 0&#41;; //Start at character 0 on line 0 
  lcd.print&#40;"EMSI-Tech v.0.82a"&#41;; 
  lcd.setCursor&#40;0, 1&#41;; 
  lcd.print&#40;"#KREATOR"&#41;; 
  delay&#40;2000&#41;; 
  lcd.clear&#40;&#41;; 
  podwojnyZgrzew = EEPROM.read&#40;0&#41;; 
  if &#40;podwojnyZgrzew >1&#41;&#123; 
        EEPROM.write&#40;0, 0&#41;; 
        podwojnyZgrzew = EEPROM.read&#40;0&#41;; 
  &#125; 
  czasZgrzewaniaTriak = EEPROM.read&#40;1&#41;; 
  czasZgrzewaniaTriak2 = EEPROM.read&#40;2&#41;; 


&#125;/*--&#40;end setup &#41;---*/ 

//977 - start 

//977 - esc 
//935 - lewy 
//896 - gora 
//860 - dol 
//827 - prawo 
//779- ok    797??? 


void loop&#40;&#41; 
&#123; 
  buttonValue1 = analogRead&#40;A6&#41;; 
  buttonValue2 = analogRead&#40;A7&#41;; 
  //wyswietlanie menu 
  lcd.setCursor&#40;0, 0&#41;; 
  lcd.print&#40;"Zgrzew1&#58; "&#41;; 
  lcd.print&#40;&#40;czasZgrzewaniaTriak&#41;&#41;; 
  lcd.print&#40;"ms"&#41;; 

  lcd.setCursor&#40;0, 1&#41;; 
  lcd.print&#40;"Zgrzew2&#58; "&#41;; 
  if &#40;podwojnyZgrzew == 1&#41; &#123; 
    //lcd.print&#40;"ON  "&#41;; 
    lcd.print&#40;&#40;czasZgrzewaniaTriak2&#41;&#41;; 
    lcd.print&#40;"ms"&#41;; 

  &#125; 
  else &#123; 
    lcd.print&#40;"OFF "&#41;; 
  &#125; 

  //menu jakies ustalające parametry 
  if &#40;analogRead&#40;A7&#41; >= 780 && analogRead&#40;A7&#41; <= 810&#41; &#123; 
    lcd.clear&#40;&#41;; 

    //ustawienie czasu bo tak sobie wymyśliłem jedząc ciastko i kawe pijąc 
    menu1 = 1; 
    bufor1 = czasZgrzewaniaTriak; 
    while &#40;menu1 == 1&#41; &#123; 
      lcd.setCursor&#40;0, 0&#41;; 
      lcd.print&#40;"Zgrzew1&#58; "&#41;; 
      lcd.print&#40;&#40;bufor1&#41;&#41;; 
      lcd.print&#40;"ms"&#41;; 
      lcd.setCursor&#40;0, 1&#41;; 
      lcd.print&#40;"Ustawianie czasu"&#41;; 
      //if &#40;analogRead&#40;A7&#41; >= 890 && analogRead&#40;A7&#41; <= 910&#41; 
      if &#40;analogRead&#40;A7&#41; >= 850 && analogRead&#40;A7&#41; <= 870&#41; &#123; 
        bufor1++; 
      &#125; 
      else if &#40;analogRead&#40;A7&#41; >= 890 && analogRead&#40;A7&#41; <= 910&#41; &#123; 
        if &#40;bufor1 > 1&#41; &#123; 
          bufor1--; 
        &#125; 
      &#125; 
      if &#40;analogRead&#40;A7&#41; >= 820 && analogRead&#40;A7&#41; <= 840&#41; &#123; 
        bufor1 = bufor1 + 10; 
      &#125; 
      else if &#40;analogRead&#40;A7&#41; >= 920 && analogRead&#40;A7&#41; <= 950&#41; &#123; 
        if &#40;bufor1 >= 11&#41; &#123; 
          bufor1 = bufor1 - 10; 
        &#125; 
        else &#123; 
          bufor1 = 1; 
        &#125; 
      &#125; 
      delay&#40;150&#41;; 
      //wyjscie bez zapisu 
      if &#40;analogRead&#40;A7&#41; >= 960&#41; &#123; 
        menu1 = 0; 
      &#125; 
      else if &#40;analogRead&#40;A7&#41; >= 780 && analogRead&#40;A7&#41; <= 810&#41; &#123; 
        czasZgrzewaniaTriak = bufor1; 
        menu1 = 0; 
        lcd.setCursor&#40;0, 1&#41;; 
        lcd.print&#40;"Zapisuje"&#41;; 
        EEPROM.write&#40;1, czasZgrzewaniaTriak&#41;; 
        delay&#40;100&#41;; 
        lcd.print&#40;"."&#41;; 
        delay&#40;100&#41;; 
        lcd.print&#40;"."&#41;; 
        delay&#40;100&#41;; 
        lcd.print&#40;"."&#41;; 
        delay&#40;200&#41;; 

      &#125; 

      lcd.clear&#40;&#41;; 
    &#125; 

    //ustawienie podwojnego zgrzewu  tralalalala 
    menu1 = 1; 
    bufor2 = podwojnyZgrzew; 
    while &#40;menu1 == 1&#41; &#123; 
      lcd.setCursor&#40;0, 0&#41;; 
      lcd.print&#40;"Zgrzew2&#58;"&#41;; 
      lcd.setCursor&#40;0, 1&#41;; 
      if &#40;bufor2 == true&#41; &#123; 
        lcd.print&#40;"ON"&#41;; 
      &#125; 
      else &#123; 
        lcd.print&#40;"OFF"&#41;; 
      &#125; 
      if &#40;analogRead&#40;A7&#41; >= 890 && analogRead&#40;A7&#41; <= 910&#41; &#123; 
        if &#40;bufor2 == true&#41; &#123; 
          bufor2--; 
        &#125; 
      &#125; 
      else if &#40;analogRead&#40;A7&#41; >= 850 && analogRead&#40;A7&#41; <= 870&#41; &#123; 
        if &#40;bufor2 == false&#41; &#123; 
          bufor2++; 
        &#125; 
      &#125; 

      delay&#40;150&#41;; 
      //wyjscie bez zapisu 
      if &#40;analogRead&#40;A7&#41; >= 960&#41; &#123; 
        menu1 = 0; 
      &#125; 
      else if &#40;analogRead&#40;A7&#41; >= 780 && analogRead&#40;A7&#41; <= 810&#41; &#123; 
        podwojnyZgrzew = bufor2; 
        menu1 = 0; 
        lcd.setCursor&#40;0, 1&#41;; 
        lcd.print&#40;"Zapisuje"&#41;; 
        EEPROM.write&#40;0, podwojnyZgrzew&#41;; 
        delay&#40;50&#41;; 
        lcd.print&#40;"."&#41;; 
        delay&#40;50&#41;; 
        lcd.print&#40;"."&#41;; 
        delay&#40;50&#41;; 
        lcd.print&#40;"."&#41;; 
        delay&#40;100&#41;; 

      &#125; 

      lcd.clear&#40;&#41;; 
    &#125; 
    //koniec ustawienia włączenia zgrzewu2 
    //ustawienie   czesci zgrzewu zgrzewu albo coś jakoś czymś gdzieś po coś 
    //bredzisz... 
    if &#40;podwojnyZgrzew == 1&#41; &#123; 
      menu1 = 1; 
      bufor1 = czasZgrzewaniaTriak2; 
      while &#40;menu1 == 1&#41; &#123; 
        lcd.setCursor&#40;0, 0&#41;; 
        lcd.print&#40;"Zgrzew2&#58; "&#41;; 
        lcd.print&#40;&#40;bufor1&#41;&#41;; 
        lcd.print&#40;"ms"&#41;; 
        lcd.setCursor&#40;0, 1&#41;; 
        lcd.print&#40;"Ustawianie czasu"&#41;; 
        if &#40;analogRead&#40;A7&#41; >= 850 && analogRead&#40;A7&#41; <= 870&#41; &#123; 
          bufor1++; 
        &#125; 
        else if &#40;analogRead&#40;A7&#41; >= 890 && analogRead&#40;A7&#41; <= 910&#41; &#123; 
          if &#40;bufor1 > 1&#41; &#123; 
            bufor1--; 
          &#125; 
        &#125; 
        if &#40;analogRead&#40;A7&#41; >= 820 && analogRead&#40;A7&#41; <= 840&#41; &#123; 
          bufor1 = bufor1 + 10; 
        &#125; 
        else if &#40;analogRead&#40;A7&#41; >= 920 && analogRead&#40;A7&#41; <= 950&#41; &#123; 
          if &#40;bufor1 >= 11&#41; &#123; 
            bufor1 = bufor1 - 10; 
          &#125; 
          else &#123; 
            bufor1 = 1; 
          &#125; 
        &#125; 
        delay&#40;150&#41;; 
        //wyjscie bez zapisu 
        if &#40;analogRead&#40;A7&#41; >= 960&#41; &#123; 
          menu1 = 0; 
        &#125; 
        else if &#40;analogRead&#40;A7&#41; >= 780 && analogRead&#40;A7&#41; <= 810&#41; &#123; 
          czasZgrzewaniaTriak2 = bufor1; 
          menu1 = 0; 
          lcd.setCursor&#40;0, 1&#41;; 
          lcd.print&#40;"Zapisuje"&#41;; 
          EEPROM.write&#40;2, czasZgrzewaniaTriak2&#41;; 
          delay&#40;100&#41;; 
          lcd.print&#40;"."&#41;; 
          delay&#40;100&#41;; 
          lcd.print&#40;"."&#41;; 
          delay&#40;100&#41;; 
          lcd.print&#40;"."&#41;; 
          delay&#40;200&#41;; 

        &#125; 

        lcd.clear&#40;&#41;; 
      &#125; 
    &#125;//chyba koniec ifa 
  &#125; 



   if &#40;analogRead&#40;A6&#41; > 500&#41; &#123; 
   startButtonState = 1;&#125; 
   else &#123; 
   startButtonState = 0; 
    
   &#125; 
    
  //startButtonState = digitalRead&#40;3&#41;; 
  if &#40;startButtonState != lastStartButtonState&#41; &#123; 
    if &#40;startButtonState == HIGH&#41; &#123; 
      lcd.setCursor&#40;0, 0&#41;; 
      lcd.print&#40;"----------------"&#41;; 

      lcd.setCursor&#40;0, 1&#41;; 
      lcd.print&#40;"--**--------**--"&#41;; 
      pozwoleniePracy = 1; 
      if &#40;podwojnyZgrzew == 1&#41; &#123; 
        pozwoleniePracy2 = 1; 
      &#125; 
    &#125; 
  &#125; 
  lastStartButtonState = startButtonState; 



  krokCyklu = 1; 
  //zgrzew właściwy 
  while &#40;pozwoleniePracy == 1&#41; &#123; 
    zeroCrossState = digitalRead&#40;zeroCrossPin&#41;; 
    if &#40;zeroCrossState != lastZeroCrossState&#41; &#123; 
      if &#40;zeroCrossState == HIGH&#41; &#123; 
        delay&#40;100&#41;; 
        digitalWrite&#40;3, HIGH&#41;;
        delay&#40;czasZgrzewaniaTriak&#41;;
        digitalWrite&#40;3, LOW&#41;;
        krokCyklu++; 
        lastZeroCrossState = zeroCrossState;
        pozwoleniePracy = 0;
        delay&#40;timeMidWeld&#41;;
        lcd.clear&#40;&#41;; 
      &#125;
  &#125; 
  &#125;
  krokCyklu = 1; 
  //zgrzew2 
  while &#40;pozwoleniePracy2 == 1&#41; &#123; 
    zeroCrossState = digitalRead&#40;zeroCrossPin&#41;; 
    if &#40;zeroCrossState != lastZeroCrossState&#41; &#123; 
      if &#40;zeroCrossState == HIGH&#41; &#123; 
        delay&#40;100&#41;; 
        digitalWrite&#40;3, HIGH&#41;;
        delay&#40;czasZgrzewaniaTriak2&#41;;
        digitalWrite&#40;3, LOW&#41;;
        krokCyklu++; 
        lastZeroCrossState = zeroCrossState;
        pozwoleniePracy = 0;
        delay&#40;timeMidWeld&#41;;
        lcd.clear&#40;&#41;; 
      &#125;
  &#125; 
  &#125;



&#125;/* --&#40;end main loop &#41;-- */ 


/* &#40; THE END &#41; */
Zamiast czekać na całą pętlę, zrobiłem regulowane opóźnienie wyłączenie triaka, możesz teraz co 1ms ustawiać czas zgrzewu.

: piątek 15 mar 2019, 20:25
autor: ProLight
Uwaliłem triaka przez przypadkowe zwarcie, zaraz poszukam coś i będę próbował.

Niezmiernie dziękuję za zaangażowanie Panowie, lecę lutować

: piątek 15 mar 2019, 21:43
autor: ProLight
Pierwszy strzał wychodzi, przy drugim zgrzewarka się zawiesza.
Trzeba włączyć i wyłączyć, później można zrobić jeden zgrzew.

Wgrywałem 3x kod.