Zgrzewarka Punktowa Do Ogniw

monitory, nagrywarki, itp

Moderatorzy: moderatorzy2014, moderatorzy

Awatar użytkownika
PiotrSz
Posty: 3518
Rejestracja: środa 21 sie 2013, 22:04
Lokalizacja: Olsztyn

Re: Zgrzewarka Punktowa Do Ogniw

Post 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 4190 razy
Więcej zdjęć wrzucę jak zrobię w trakie składania.
wojtekr
Posty: 339
Rejestracja: czwartek 01 sty 2015, 18:43
Lokalizacja: W-wa

Re: Zgrzewarka Punktowa Do Ogniw

Post 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 :)

Załączniki
welder.jpg
welder.jpg (55.21 KiB) Przejrzano 4150 razy
Helikoptery
grzesiekcichy
Posty: 83
Rejestracja: sobota 26 wrz 2015, 18:29
Lokalizacja: Włoszczowa

Re: Zgrzewarka Punktowa Do Ogniw

Post 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.
Awatar użytkownika
pawelsky
Posty: 9749
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Zgrzewarka Punktowa Do Ogniw

Post 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..
grzesiekcichy
Posty: 83
Rejestracja: sobota 26 wrz 2015, 18:29
Lokalizacja: Włoszczowa

Re: Zgrzewarka Punktowa Do Ogniw

Post 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 :(
Awatar użytkownika
pawelsky
Posty: 9749
Rejestracja: środa 19 mar 2014, 02:03
Lokalizacja: Polska
Kontakt:

Re: Zgrzewarka Punktowa Do Ogniw

Post 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);
grzesiekcichy
Posty: 83
Rejestracja: sobota 26 wrz 2015, 18:29
Lokalizacja: Włoszczowa

Re: Zgrzewarka Punktowa Do Ogniw

Post 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.
Awatar użytkownika
Avatar
Posty: 127
Rejestracja: środa 12 sie 2015, 19:46
Lokalizacja: Ruda Śląska

Re: Zgrzewarka Punktowa Do Ogniw

Post 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.
Ostatnio zmieniony niedziela 15 sie 2021, 17:40 przez Avatar, łącznie zmieniany 1 raz.
Aparatura: Taranis 9XD + pulpit
Modele: MPX Easy Glider 4; dronik 5" na ramie KHXC5 GEPRC
Awatar użytkownika
pma_
Posty: 4651
Rejestracja: sobota 08 maja 2010, 09:43
Lokalizacja: Gliwice/Katowice

Re: Zgrzewarka Punktowa Do Ogniw

Post autor: pma_ »

a możesz dorzucić schemat? bo w pliku jest tylko widok elementów z góry
samolot max 4579/1293 analog, DJI do końca zasięgu :)
coper max 1729(na 5.8)
Awatar użytkownika
Avatar
Posty: 127
Rejestracja: środa 12 sie 2015, 19:46
Lokalizacja: Ruda Śląska

Re: Zgrzewarka Punktowa Do Ogniw

Post autor: Avatar »

Poprawiłem spakowany plik, już jest schemat.
Aparatura: Taranis 9XD + pulpit
Modele: MPX Easy Glider 4; dronik 5" na ramie KHXC5 GEPRC
Awatar użytkownika
TorFPV
Posty: 3632
Rejestracja: wtorek 26 lip 2011, 20:03
Lokalizacja: Strefa G

Re: Zgrzewarka Punktowa Do Ogniw

Post 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 ?
Pozdrawiam Damian :-)

YouTube
Awatar użytkownika
Avatar
Posty: 127
Rejestracja: środa 12 sie 2015, 19:46
Lokalizacja: Ruda Śląska

Re: Zgrzewarka Punktowa Do Ogniw

Post 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.
Aparatura: Taranis 9XD + pulpit
Modele: MPX Easy Glider 4; dronik 5" na ramie KHXC5 GEPRC
Awatar użytkownika
TorFPV
Posty: 3632
Rejestracja: wtorek 26 lip 2011, 20:03
Lokalizacja: Strefa G

Re: Zgrzewarka Punktowa Do Ogniw

Post 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ź :)
Pozdrawiam Damian :-)

YouTube
Awatar użytkownika
miś
Posty: 9241
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Re: Zgrzewarka Punktowa Do Ogniw

Post 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.
Pzdr. -----MIŚ-----
Awatar użytkownika
pma_
Posty: 4651
Rejestracja: sobota 08 maja 2010, 09:43
Lokalizacja: Gliwice/Katowice

Re: Zgrzewarka Punktowa Do Ogniw

Post 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.
samolot max 4579/1293 analog, DJI do końca zasięgu :)
coper max 1729(na 5.8)
ODPOWIEDZ