Strona 2 z 3

Re: Zgrzewarka Punktowa Do Ogniw

: środa 06 cze 2018, 17:29
autor: PiotrSz
Po wielu przymiarkach i długich rozmowach z zemanem dzisiaj budowa mojej zgrzewarki weszła w finalny etap.
Całą elektronikę mam zgromadzoną od dwóch miesięcy, trafo czeka już z pół roku. W dniu dzisiejszym kolega przyniósł mi wycięte na laserze ameliniowe elementy obudowy.
Miał mi zrobić zaginaną obudowę na cyfrowej giętarce ale mają w firmie tyle roboty że czekał bym do zimy więc zdecydowałem się na łączenie całej obudowy na kątowniczki ameliniowe.

Do weekendu pewnie poskładam całość do kupy i zrobię pierwszy zgrzew.
DSC_0499.JPG
DSC_0499.JPG (262.81 KiB) Przejrzano 4208 razy
Więcej zdjęć wrzucę jak zrobię w trakie składania.

Re: Zgrzewarka Punktowa Do Ogniw

: czwartek 07 cze 2018, 16:43
autor: wojtekr
Też zrobiłem, rzeczywiście fajny pomysł. Trochę się obawiałem sterowaniem uzwojeniem pierwotnym ale działa super.

W sumie zgrzałem co miałem więc pewnie wyląduje na giełdzie :)


Re: Zgrzewarka Punktowa Do Ogniw

: poniedziałek 09 sie 2021, 15:20
autor: grzesiekcichy
Witam wszystkich:
Odświeżę troszkę temat:)
Mam mały problem z programem arduino do sterowania zgrzewarką punktową.
Chodzi o to, że nie uzyskuję czasu deklarowanego przez program.
Program pochodzi z netu z małymi modyfikacjami z mojej strony.

Kod: Zaznacz cały

int odczytanaWartosc = 0;
int czas = 0;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // Ustawienie adresu ukladu na 0x27
 
 void setup() 
{
  lcd.init();                      // initialize the lcd
  lcd.begin(16,2);   // Inicjalizacja LCD 2x16
  lcd.clear();
  lcd.backlight(); // zalaczenie podswietlenia
     pinMode(8, OUTPUT); // zasilenie- przekaźnik
     pinMode(7, INPUT_PULLUP); // przycisk
}
void loop()
{
  lcd.setCursor(0,0);
  lcd.print("Czas impulsu:");
  lcd.setCursor(0,1);
  lcd.print("    ms");
  odczytanaWartosc = analogRead(A1); // odczyt ustawienia potencjometru
  lcd.setCursor(0,1); // Ustawienie kursora w pozycji
  czas = odczytanaWartosc * (100/1023.0) ;
  lcd.print(czas);
  delay(200);
 if (digitalRead(7) == LOW) {
  digitalWrite(8, HIGH); //zgrzewanie
  delay(czas);//czas trwania zgrzewania
  }
  else {
  digitalWrite(8, LOW); //Wyłączenie zgrzewania
  }
}
Do pomiaru czasu używam drugiego arduino z programem z sieci:

Kod: Zaznacz cały

int poziom_niski = 100;
int poziom_wysoki = 750;
int poziom_odciecia;
long pocz;
long koniec;
long dlug;


void setup()
{
  poziom_odciecia = (poziom_niski+poziom_wysoki)/2;
  Serial.begin(9600);
}

void loop()
{
  while (analogRead(A1) < poziom_odciecia);
  pocz = millis();
  while (analogRead(A1) > poziom_odciecia);
  koniec = millis();
  dlug = koniec-pocz;
  Serial.println(dlug);
}
Po ustawieniu wartości np 50ms w czasie pomiaru mam 288 ms dłuższe czasy też się nie zgadzają
Proszę o pomoc w poprawie programu.

Re: Zgrzewarka Punktowa Do Ogniw

: poniedziałek 09 sie 2021, 17:13
autor: pawelsky
grzesiekcichy pisze:Po ustawieniu wartości np 50ms w czasie pomiaru mam 288 ms dłuższe czasy też się nie zgadzają
No jak masz w petli miedzy wlaczeniem a wylaczeniem zgrzewania delay(200) i jeszcze kilka operacji po I2C na wyswietlaczu to nie dziwota ze masz czasy grubo powyzej 200ms..

Re: Zgrzewarka Punktowa Do Ogniw

: poniedziałek 09 sie 2021, 17:28
autor: grzesiekcichy
Nawet jak to delay (200 ) zmniejszę do 1ms lub wyłączę to też jest lipa.
Da się to jakoś prosto poprawić bo na programowaniu arduino to się tak średnio znam :(

Re: Zgrzewarka Punktowa Do Ogniw

: poniedziałek 09 sie 2021, 17:30
autor: pawelsky
grzesiekcichy pisze:Nawet jak to delay (200 ) zmniejszę do 1ms lub wyłączę to też jest lipa.
Tak jak pisalem, oprocz delay(200) masz jeszcze obsluge wysiwetlacza ktora rowniez zajmuje czas.
grzesiekcichy pisze:Da się to jakoś prosto poprawić bo na programowaniu arduino to się tak średnio znam :(
Da sie, wylaczajac zgrzewanie zaraz po delay(czas);

Re: Zgrzewarka Punktowa Do Ogniw

: poniedziałek 09 sie 2021, 17:45
autor: grzesiekcichy
Czy program ma wyglądać jakoś tak?

Kod: Zaznacz cały

    int odczytanaWartosc = 0;
int czas = 0;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // Ustawienie adresu ukladu na 0x27
 
 void setup()
{
  lcd.init();                      // initialize the lcd
  lcd.begin(16,2);   // Inicjalizacja LCD 2x16
  lcd.clear();
  lcd.backlight(); // zalaczenie podswietlenia
     pinMode(8, OUTPUT); // zasilenie- przekaźnik
     pinMode(7, INPUT_PULLUP); // przycisk
}
void loop()
{
  lcd.setCursor(0,0);
  lcd.print("Czas impulsu:");
  lcd.setCursor(0,1);
  lcd.print("    ms");
  odczytanaWartosc = analogRead(A1); // odczyt ustawienia potencjometru
  lcd.setCursor(0,1); // Ustawienie kursora w pozycji
  czas = odczytanaWartosc * (100/1023.0) ;
  lcd.print(czas);
 
 if (digitalRead(7) == LOW) {
  digitalWrite(8, HIGH); //zgrzewanie
  delay(czas);//czas trwania zgrzewania

  digitalWrite(8, LOW); //Wyłączenie zgrzewania
  }
} 

pawelsky mógłbyś mi to poprawić jeśli źle to zrobiłem.

Re: Zgrzewarka Punktowa Do Ogniw

: poniedziałek 09 sie 2021, 18:41
autor: Avatar
Witam,

Dorzucę kilka swoich doświadczeń z zgrzewarką na trafo którą popełniłem jakiś czas temu.
Co w niej siedzi:
- ATmega328p + 16MHZ kwarc
- LCD 2x16 na szynie 4bit
- encoder z przyciskiem - nastawy
- termometr DS1820 do pomiaru temperatury trafo, i działo jako termostat
- optotriak + triak 40A, nie przekaźnik SSR
- optoizolator do synchronizacji pracy programu do sieci
- wyjście optoizolatora podłączone do wejścia wbudowanego komparatora analogowego i wykorzystanie przerwania z niego

W zamian to uzyskałem:
- zgrzew zawsze wykonywany w tym samym momencie sinusoidy. Gdy tego nie miałem - przy tych samych czasach zgrzewu i opóźnienia leciały, lub nie leciały iskry. Trafo było włączane albo w zerze, albo w szczycie albo gdzie popadło
- dokładność odmierzania czasu z dokładnością do 1ms - sprawdzone na oscyloskopie. Wykorzystuje wbudowane przerwania, timery

To tak słowem wstępu.

Parę wskazówek:
grzesiekcichy pisze:Nawet jak to delay (200 ) zmniejszę do 1ms lub wyłączę to też jest lipa.
Da się to jakoś prosto poprawić bo na programowaniu arduino to się tak średnio znam :(
Jeśli chcesz mieć dokładny pomiar czasu, bez przerwań i timerów się nie da.
Odmierzanie czasu przy pomocy pętli delay nigdy nie da powtarzalnego efektu.

Proponuję na początek zaznajomić się z kilkoma filmami Pana Mirosława Kardasia, człowiek pasjonat programowania w C, nie jest to język wykorzystywany w środowisku ARDUINO.
Opowiada bardzo przystępnie oraz co z czym się je. Sporo przykładów itp.

Na koniec parę fotek.
- fotka z ustawionym czasem zgrzewu: 30ms
- wykres(górny) czasu zgrzewu, poniżej sinus sieci. Pionowe markery również pokazują moment włączenia
- widok płytki przed końcowym przycięciem
- strona lutowania. Trochę rezystorków SMD

Nie jest to super perfekcyjne wykonanie. Nie uniknąłem błędów - np. umieszczenie złącz śrubowych. Nie do końca działający kwarc SMD, zastąpiony sprawdzonym rozwiązaniem.
Kable widoczne na ostatnim zdjęciu - najprostszy debuger - port szeregowy.

Próby przeszła pozytywnie i leży w szafie czekając na lepsze czasy.

Uprzedzając pytania czy udostępnię kod źródłowy, schemat itp. - wrzucam schemat. Nie dam sobie głowy ściąć - nie wiem czy tranzystor BS170 nie musiał być obrócony o 180stopni finalnie na płytce.
- spakowany schemat i plik hex

Może będzie to inspiracją dla innych.

Pozdrawiam.

Re: Zgrzewarka Punktowa Do Ogniw

: sobota 14 sie 2021, 10:06
autor: pma_
a możesz dorzucić schemat? bo w pliku jest tylko widok elementów z góry

Re: Zgrzewarka Punktowa Do Ogniw

: niedziela 15 sie 2021, 17:41
autor: Avatar
Poprawiłem spakowany plik, już jest schemat.

Re: Zgrzewarka Punktowa Do Ogniw

: środa 10 lis 2021, 22:56
autor: TorFPV
Tak się przymierzam do budowy swojej zgrzewarki, nawet zgromadziłem kilka elementów ale kilka pytań mi się nasunęło.

Analizując to wszystko zastanawiam się jaki upływa czas, od wysterowania wyjścia mikrokontrolera do osiągnięcia przez transformator pełnej mocy po stronie wtórnej.

Tak trochę to pytanie kieruję do kolegi Avatar. Zgadzam się, że można wysterować wyjście mikrokontrolera które ma załączyć optotriak i po dokładnie 20ms je wyłączyć ale jaki czas mija od załączenia triaka przez optotriak do załączenia transformatora przez triak itd aż po same elektrody.

No chyba że ten czas od wysterowania wyjścia do pojawienia się napięcia i pełnej mocy na elektrodach jest pomijalny ?

Chce napisać program na arduino z użyciem przerwań i funkcji millis(), do tego wyświetlacz LCD TFT bo myślę, że taka forma budowy od podstaw da mi więcej frajdy.

Jak to jest z tym czasem ?

Re: Zgrzewarka Punktowa Do Ogniw

: piątek 12 lis 2021, 21:53
autor: Avatar
Witaj Toretto,

Opóźnienie jakie może być będzie zależne ile trzeba czekać na pojawienie się przejścia przez zero. Potem odmierzam czas do pojawieniu się szczytu sinusoidy. Włączam trafo i dostaje pełną moc praktycznie od razu. Nie mierzyłem ani się nie zastanawiałem jakie jest opóźnienie od pojawienia się napięcia na uzwojeniu wtórnym, do pojawienia się napięcia na uzwojeniu wtórnym. Po prostu działa, i zgrzewa powtarzalnie i to mi wystarcza.
Jeśli chodzi o czas od pojawienia się stanu na pinie mikrokontrolera -> optotriak -> triak - musiałbyś sprawdzić noty katalogowe zastosowanych elementów.
Jeśli oscyloskop pokazywał mi wyzwolenie zawsze w tym samym miejscu, to zapewne ten czas mierzony był w nano sekundach - czyli pomijalnie mały.

Co do użycia funkcji milis - możesz mieć problemy z uzyskaniem dokładności. Zapewne jest to najzwyklejsza pętla, a nie wykorzystanie timera i przerwań.
Co do obsługi wyświetlacza TFT - zapewne kolorowy - będziesz musiał dobrze poukładać kiedy ma wyświetlać dane. Na pewno nie w chwili gdy będziesz obsługiwał przerwanie.

Życzę powodzenia w budowie.

Re: Zgrzewarka Punktowa Do Ogniw

: piątek 12 lis 2021, 23:11
autor: TorFPV
Avatar pisze:Jeśli chodzi o czas od pojawienia się stanu na pinie mikrokontrolera -> optotriak -> triak - musiałbyś sprawdzić noty katalogowe zastosowanych elementów.
Jeśli oscyloskop pokazywał mi wyzwolenie zawsze w tym samym miejscu, to zapewne ten czas mierzony był w nano sekundach - czyli pomijalnie mały.
Bardzo mnie cieszy fakt, że Ty już wykonałeś taki test bo planuję użyć identycznych elementów (optotriak, triak). Pamiętasz może jakiego trafo używasz ?
Avatar pisze:Co do użycia funkcji milis - możesz mieć problemy z uzyskaniem dokładności. Zapewne jest to najzwyklejsza pętla, a nie wykorzystanie timera i przerwań.
Funkcja millis() odlicza czas jaki upłynął od wystartowania programu i sterowana jest przerwaniami. Jest jeszcze funkcja micros() która mierzy ten czas w μs z dokładnością 4μs i w takim projekcie jest to chyba wystarczająco dokładnie.
Avatar pisze:Co do obsługi wyświetlacza TFT - zapewne kolorowy - będziesz musiał dobrze poukładać kiedy ma wyświetlać dane. Na pewno nie w chwili gdy będziesz obsługiwał przerwanie.
Oczywiście od rozpoczęcia zgrzewu do zakończenia go żadne operacje z wyświetlaczem nie będą wykonywane. Wyświetlacz będzie martwy na czas zgrzewu gdzie przy liionach to będzie 20-50ms więc wydaje mi się, że w zupełności akceptowalnie.

Dzięki za odpowiedź :)

Re: Zgrzewarka Punktowa Do Ogniw

: sobota 13 lis 2021, 13:36
autor: miś
A jakie optotriaki stosujecie do sterowania ? Gotowe SSR czy zestaw triak+optotriak ?
Chyba wszystkie SSR i większość optortiaków ma wyzwalanie w zerze, tak więc włączenie sterowania w szczycie sinusoidy powoduje że optotriak załączy się dopiero w najbliższym "0" czyli po 5 milisekundach. Z tego samego powodu nie jest możliwe uzyskanie czasu zgrzewu poniżej 10ms (a i to jest niezdrowe bo 10ms to płówka sinusoidy), a czas zgrzewu jest wielokrotnością 10ms. Takie są zasady działania triaka i optotriaka. Wszelkie wydumane sterowniki umożliwiające regulację z dokładnością co do milisekundy to mrzonka i ściema.
A stosowanie triaków bez detekcji zera to proszenie się o silne zakłócenia i niebezpieczeństwo "wybijania" zabezpieczeń nadprądowych w instalacji.

Re: Zgrzewarka Punktowa Do Ogniw

: niedziela 14 lis 2021, 12:50
autor: pma_
Dlaczego twierdzisz, że się nie da?
Na schemacie Avatara jest transoptor, który wykrywa zero, więc powienien umożliwić precyzyjne odliczanie czasu bo wiemy kiedy triac się załaczył, a sterowanie jest klasycznie triac + drugi transoptor.