출처: https://mindeater.tistory.com/2327 [MindEater™ - Life Sketch]
1차 권선을 이용한 오토스폿 회로도
- LED는 생략해도 되지만 케이블로 연장하여 케이스에 부착하면 스폿동작을 가시적으로 알 수 있다.
- BTA41은 600B 이상을 사용하고 스폿시간이 매우 짧기때문에 굳이 방열판을 달아줄 필요는 없다. 다만 다량의 스폿시 칩 온도가 참고가 되기에 온도체크를 위한 NTC(10K)를 BTA41 방열핀 뒤쪽에 고정해준다.
- PCB로 검증된 이 회로도를 최종으로 한다.
↓ ↓ ↓
PCB UPDATE
2023년 10월 진행중!!
PCB Version 3.0
지금까지의 아두이노 스폿회로의 컨트롤 방식과의 차별화 및 안정성 출력향상를 위한 HW의 수정사항!!
이 회로에 맞게 펌웨어 V4.0이 검증은 완료된 상태로 2023년 10월 중순쯤 릴리즈 예정
MCU Atmega328P U 기반
MOC3021 컨트롤 방식 변경 (Sink IO 방식 채택)
부저 보호용 다이오드 추가
업그레이드 핀추가
부품 리스트 및 구입처
저항과 부품은 국내 디바이스마트를 추천하며 OLED/LCD/HLK-PM01은 가격이 있어 알리익스프레스를 추천한다.
특히 BTA41, MOC3021, PC814, PC817 등은 중국(알리익스프레스)에서 구입하면 99% 페이크 제품으로 무조건 정품을 사용해야한다. BTA41의 경우 가격때문에 중국에서 구입하고 대신 2개를 병렬로 사용하기도 하지만 추천하지는 않는다.
PCB에 위 부품을 실장 후 조립한 스폿 회로 (초기버전)
오토스폿 개발 배경
최근(2019년 8월)까지 수동 스폿만을 지원하는 회로와 버그는 있더라도 동작은 가능한 소스는 DIY카페에 공유되어 있지만 자동 스폿과 관련한 내용이 거의 없어 인터넷에서 정보를 수집하고 있었다.
이런저런 자료를 검토해 본 결과 스너버회로에 의해 2차 권선에 유도된 전압을 이용하는 방법이 구현 가능성이 가장 높아보였다. 이 스너버 회로가 출력라인에 병렬로 연결되어 있어 스위치가 OFF상태인 대기상태에서도 미세전류가 출력쪽에 공급되는 상태가 된다. 포토커플러를 이용하여 이 전압의 변화를 감지하는 방식이다. 락시꾼님은 이 값을 주기적으로 센싱 후 평균값을 내어 의미있는 결과를 도출한 바 있다.
오토스폿의 원리
<PC814 Function Diagram, 내부 회로>
1번과 2번에 전류가 흘러(다이악, 방향성없음) LED가 발광하면 4번에서 3번 핀으로 전류가 흐르는 구조다.
스너버 회로의 미세 전류가 포토커플러가 동작하고 스폿용접 하기 위해 동봉이 쇼트상태가 되면 포토커플러가 꺼지게 된다. 이를 아두이노가 탐지하여 자동으로 스폿을 진행하면 된다.
락시꾼님 아이디어를 소스에 적용 후 테스트를 해 본 결과 기본 동작은 확인했다. 다만 대기 상태에서 헛 데이타가 종종 읽혀 동봉 숏트가 아닌데도 오토스폿이 진행되는 문제가 매우 빈번하게 발생해 실제 사용은 조금 힘들어보였다.
이 문제는 간단히 SW 디바운스 코드를 넣어 해결했고 피드백 차원에서 카페에 공유를 했는데 고맙게도 이홈의 맹지동님께서 포토커플러의 수광부인 4번에 5V, 3번은 GND와 풀다운저항을 연결했을 때, 대기 5V 동봉 쇼트시 0V가 읽힌다는 실험 결과를 공유해주었다. 직접 테스트해보니 전압의 수치를 센싱하여 평균값을 활용하는 락시꾼님의 방법보다 맹지동님의 HIGH/LOW만 읽는이 방식이 좀더 깔끔한 듯 싶어 이 방식을 토대로 구현하기로 했다.
추가 작업
- 스너버회로의 커패시터 용량 추가 -
사진에 보이는 녹색의 저항(120Ω)과 빨강색의 0.1uf 커패시터로 이루어진 RC스너버 회로다. 전원 ON시 치솟는 서지 노이즈를 커패시터가 빨아들이고 저항으로 태워서 스위치 소자를 보호하는 기능이다.
220v 인가시 6v가 유도되는 링코어에서 이 회로에 의해 2차 측에 대략 2V정도의 전압이 나오는데 전류가 미세하기때문에 포토커플러를 지속적으로 동작시키기 어렵다. 이를 위해 커패시터 용량을 0.2uf 로 달아주니 튀는 증상이 현저히 줄어들었다.
따라서 오토스폿을 위한 스너버회로의 커패시티 용량은 0.2uf로 결정했다. 0.2uF를 초과하면 트라이악 Turn-Off 제어가 오동작할 수 있으니 주의를 요한다.
풀다운 저항으로 220옴을 3번 핀 사이에 구성하여 테스트 해보았지만, 플로팅 증상이 너무 심했다. 핀모드를 INPUT으로 두고 테스트 꾸민 회로에서 풀다운저항이 제대로 동작을 안하는 걸로 추측된다.
자료를 찾아보다 아두이노 내부에 풀업저항(PULLUP)이 구현되어 있다는 걸 알게 되었고, 결국 포토커플러 3번핀은 GND, 4번 핀은 아두이노의 10번 핀에 저항없이 직결하여 성공했다. 이 경우 핀모드를 INPUT_PULLUP으로 설정해야한다.
지금까지 2차 측에서 오토센싱을 하는 경우이고, 1차로 사용할 경우 플로팅 증상이 더 줄어드는 것을 확인했고 제작에도 더 간단하여 이렇게 오토스폿 구현을 마무리한다.
AC 스폿 출력타임 컨트롤의 방법
- 220V 60Hz -
AC에서 스팟 타임 컨트롤 방법을 간단히 그려보았다.
스폿시간은 반(1/2)주기 8.33ms 단위로 총 몇 번의 반주기가 필요한지 계산을 하게 된다. 실제 스폿 액션이 실행되면 제로크로싱 포인트까지 기다렸다 그 시점부터 첫번째 반파 구간의 ZeroCrossing 포인트를 찾아 그 시점부터 역산한다. 이유는 사용된 소자 트라이악 BTA41의 STOP 시점이 ZeroCrossing 포인트 이기 때문이다. 몰라도 되지만 알아두면 스폿 타임 설정에 도움이 된다.
타임계산에 관련된 자세한 내용은 위 페이지에 기술되어 있다.
매뉴얼
V4.0
V3.0
V2.9G
V2.9F
펌웨어 업로드 프로그램
1. 아래에서 최신 펌웨어 이미지를 다운로드 한 후 압축해제
2. Hex file에서 해당 파일을 선택
3. Device는 사진처럼 Nano(Atmega328) 선택 (V2.X버전 아두이노 나노의 경우)
Atmega328P U는 DIY8Mhz(ATmega328) 를 선택
3. USB 케이블을 연결후 나오는 COM port를 설정
4. Upload를 누르고 맨 오른쪽 처럼 "xxxxx bytes uploaded" 라고 나오면 성공
%% USB 연결이 안되면 아래 파일 설치하시고 USB를 다시 연결하시면 됩니다.
최신 펌웨어
Version 4.0 (2023-10-05)
1. 듀얼펄스(이중, 더블펄스) 지원
2. 리뉴얼 PCB 스폿컨트롤방식 (Sink IO Control) 지원
3. 수동모드 Spot Beep 설정 추가
4. HW 변경타입 설정 시간 변경 (15초->25초) - 사용자 실수로 초기화 대신 HW 타입 변경을 막기 위함
5. 최대 멀티스폿 조절 (6회 -> 4회)
6. 메뉴 인터페이스 변경
Atmega328P (P)U
신버전은 부저 옆에 다이오드가 있습니다.
다음은 이전 버전 - 구입시 펌웨어 버전 V3.0 이하 PCB에 적용가능한 펌웨어입니다.
Atmega328P (P)U - OLD PCB(V2.0이하)
Arduino Nano - OLD PCB (V2.0 이하)
Fine Name : AcSpotWelder_HooneyPaPa_V4.0.Na no_PCB_V2.0.hex (17,524 bytes)
Version 3.0 (2023-04-07)
[2023-04-08] AC 오토 스폿용접기 컨트롤러 회로 - 펌웨어 V3.0 릴리즈!!
1. 스폿강도 조절 방식에 전력균등분할 방식인 PWR(파워) 모드 추가, 기존 방식인 Time 과 선택할 수 있도록 함
2. 조절분해능 X2 기능, 50ms 이하에서 0.5step 단위로 조정
3. 초기화시 Default 값 일부 조정
4. LCD/Encoder Type 변경하는 메뉴 시간 조절 (초기화 하려다 HW 타입이 변경되는 실수 방지 목적)
5. 8ms 이하 스폿시 안정화 패치 (V2.9F MCU 센싱 오류패치와 이번패치로 불균형은 99%해소된것으로 기대됨!!)
아두이노 Nano 버전
---
Atmega328P (P)U
Version 2.9G (2023-03-18)
> LowTR Mode를 Yes/No에서 0-9까지 미세조절하는 방식으로 교체
Version 2.9F (2022-06-23)
> 국내전용버전으로 Fix (AC 60Hz만 지원)
> CLCD I2C 칩 (PCF8574T/PCF8574AT)을 모두 지원하도록 함
Time 1ms에서 15초 이상 누르고 있으면 로터리 엔코더 방향전환
그 외 시간은 CLCD 타입 전환
> Atmega168P U 칩 사용할 수 있도록 코드 슬림화
---- OLD History ----
※ Version 2.9d (2022-01-08)
1. 로터리 엔코드가 HW 마다 좌우 회전이 반대일 경우에 대하여 SW적으로 선택할 수 있도록 함
> 12초 동안 엔코더를 누르면 좌우 회전시의 동작이 토글됨
2. 엔코더 누르는 시간 일부 조정
> 8~10초 사이는 초기화, 12초 이상은 로터리 엔코더 방향 토글
> 이후 분양 버전은 2.9d로 진행합니다.
> 최근 언짢은 일들이 계속되어 소스코드는 일단 비공개하기로 하고 바이너리 파일로 대체합니다.
> 위에 첨부한 Xloader을 이용하면 업로드 하실 수 있습니다.
※ Version 2.9c (2021-11-28)
1. 1~8ms 구간 스폿불균형 문제 해결
2. 엔코더 조정시 AC Hz 튀는 현상 보완
3. 오토센싱 카운트 조정 ( 안정화 ) --> 일부 전자렌지 EI 코어도 저항 교체없이 잘 동작함!!
4. 수동 스폿시 간헐적으로 투스폿이 되는 회로가 있어(아두이노 모듈에 따라 간헐적으로 발생) --> SW 디바운싱 타임을 조정
※ Version 2.8 (2021-05-18) : Beta...
1. 매뉴얼모드 버튼 SW 디바운싱 보완
MANUAL_SW_DEBOUNCING_TIME(300ms) 안에 한 번만 가능 --> 최적화 완료!!
2. Default 값 조정 (A-Beep: Yes, Auto T: 6)
3. 패시브 부저를 사용할 경우 Hz 탐지 오동작 패치 --> 가급적 능동부저 사용을 추천!!
4. PinChangeInt 라이브러리를 소스에 추가 (초보자를 위한 작업복잡도 감소)
※ Version 2.7 (2021-04-09)
1. 오토모드 최소 대기시간 수정 3-->2 (좀 더 빠른 작업을 위한)
2. 총 스폿회수 즉시 저장을 스폿이 끝나고 idle시간에 저장 (EEPROM 수명연장을 위함)
※ Version 2.6 (2021-03-09) : 베타버전
1. 오토모드에서 환경설정 항목 추가
A-Beep : 오토센싱시 부저 On/Off
LowTR Mode : 전자렌지 변압기처럼 오토센싱이 오동작할 때 SW 샘플링 극대화 모드!!
2. 온도 표기를 한 자리로!!
※ Version 2.5 : 2020-02-28
전자렌지 EI 트랜스에서 오토센싱 지원
R9 저항을 91K --> 30~40K 교체가 필요함!!
※ Version 2.4 : 2020-02-28
1. LCD UI 수정 : ms -> MS 대문자로!!
※ Version 2.3 : 2020-02-16
1. Default 값 정리
-- 삭제 --
※ Version 2.2 : 2020-11-06
1. LCD1602 Display 적용
2. Loop에서 Delay를 없애고 Time 스케줄링으로 변경
3. AC 주파수 값에 Debounce 처리
4. Auto Sensing Beep음 활성화 Define으로 Disable 가능
--삭제--
※ Vresion 2.1 : 2020-11-06
수정내역 :
1. OLED 0.96/1.32, LCD1602 지원 -> 소스코드에서 선택
2. Total Spot Count를 표시
3. 소스코드 튜닝(delay() 방식에서 스케줄링 방식으로 조정
4. 버전 체계를 날짜방식에서 일반 메이저.마이너 방식으로 변경하고 2.1로 배포
--삭제--
LCD1602 Version
OLED 0.96inch Version
LCD와 조작방법은 동일
설정화면이 따로 없고 메인 화면에서 OLED 버전은 느낌표(!)로 LCD 버전은 깜빡거림으로 수정항목을 구분함.
OLED가 좀 더 깔끔한데 하우징이 조금 애매해서 서로 장단점이 있다.
% 스케치 파일 적용시 아래 DISPLAY와 부저타입과 핀맵 확인 요망!!
/////////////////////////////////////////////////////////////////////////////////////////////////
// 제작하는 부품 스펙에 따라 수정필요!!!!!
// ★★ 주석은 필히 확인
/////////////////////////////////////////////////////////////////////////////////////////////////
#define DISPLAY_TYPE_LCD1602 0 /* Crystal LCD 1602 */
#define DISPLAY_TYPE_OLED096 1 /* OLED 0.96 inch */
#define DISPLAY_TYPE_OLED132 2 /* OLED 1.32 inch */
#define DISPLAY_TYPE DISPLAY_TYPE_OLED096 /* ★★, 디스플레이 타입!! */
#define BUZZER_TYPE_ANALOG 0 /* 능동부저 */
#define BUZZER_TYPE_PASSIVE 1 /* 수동부저 */
#define BUZZER_TYPE BUZZER_TYPE_ANALOG /* ★★, 부저타입, 아날로그 타입 추천!! */
※ Updated Time : 2020-05-05
아래 1.5K 링코어에 사용된 버전으로, 대기모드에서 엔코더 조정시 타임이 조절되는 버전
핀배열 체크 필요!!
--삭제--
※ Updated Time : 2019-08-31
1. 엔코드 컨트롤 변경 :
> 대기상태에서만 오토모드와 수동모드를 변환하도록 함
> 설정모드일 경우 바로 대기상태로 변경, 특정 값을 수정후 순환하지 않고 바로 대기모드로 빠져나올 수 있게 함
2. 오토모드 실행시 cycle값이 60Hz 일 경우만 실행함
3. 프로그램 시작시 로고에 SW 버전 표시
--삭제--
※ 최초 배포: 20180813_01
--삭제--
.
.
.
AC 오토 스폿용접 회로 분양 페이지!!
참고글