', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); '[완료]Arduino Projects/Smart Glue Gun' 카테고리의 글 목록 :: MakerLee's Workspace
728x90

내부에 부품들을 고정하고 외부전원으로 테스트 해봤습니다. 

이상이 없으니 이제 배터리 결합으로 들어갑니다. 







내부의 전원스위치는 2단 6p 스위치라 약간 꼼수를 부렸습니다. 

전원을 켤 때는 배터리가 직렬로 연결되며 전원을 끄면 각 배터리가 병렬로 연결되면서 충전회로와 연결됩니다.

(**그림이 살짝 헷갈리는데 2번 배터리 (+)극의 파란색 전선은 스위치 2곳과 배터리 (+)극에 모두 연결되어있습니다)

1cell 충전회로로 충전이 가능하고 PCM이 없는 배터리를 사용해도 셀간 전압이 심하게 틀어질 가능성이 적습니다. 








아주 옛날에 만들었던 충전회로입니다. 여러개 만들었는데 이게 마지막이네요










1.부팅시 Hello 스크롤 후 배터리 전압 표시.

2.일정시간이 지나도록 손잡이를 잡지 않으면 슬립모드 변경(20초쯤)

3.전압이 낮으면 히터를 끄고 저전압 표시(bAt)




힘들었던 글루건 내부가 생각보다 매우 좁아서 엄청 갈아내야 했고 

PCB까지 두번이나 재작업해서 시간이 많이 걸린 부분이었네요


한편으로 LED 세그먼트와 쉬프트 레지스터 사용법을 더 잘 알게되어 배운 게 많은 작업이었습니다.

728x90
728x90

처음 만들었던 PCB는 조립해보니 글루건에 아슬아슬하게 들어가지가 않더군요..

여기저기 최대한 갈아내봤지만 불가능했습니다. 








새로 만들었습니다. 아두이노 보드와 결합식이 아니라 아예 원보드입니다. 

그리고도 더 작게 만드느라 전원부는 따로 만들었습니다. 







전체 면적은 비슷하지만 폭을 줄여서 글루건 내부에 잘 들어가도록 했습니다. 









기판을 하나로 줄여서 두께도 많이 줄었습니다.








ISP 핀까지 빼버렸기에 선을 따서 부트로더를 구워줍니다. 








스케치를 업로드해 보니 문제없이 잘 됩니다. 




728x90
728x90

글루건 안에 넣으려면 보드를 정말 최소화해야 하는데 우겨넣으려니 힘들더군요.

전원쪽 노이즈 컨덴서 두개는 결국 빼버렸네요. 



이번에는 CNC로 될 정밀도가 아니라서 인생 세번째로 PCB 주문을 넣어봤습니다. 

Seeed Studio만 쓰다가 firstPCB로 바꿔봤는데 어떨지 모르겠습니다. 

728x90
728x90

배터리 전압에 따른 LED 표시 적용을 마쳤습니다. 







온도에 따른 히터 ON/OFF 작동을 테스트하는 중입니다.

글루건 히터를 연결해도 되지만 테스트 편의성을 위해 그냥 LED로 연결했습니다.

스케치에서 30도를 기준으로 설정하고 

온도센서를 손으로 잡아보니 꺼졌다 켜졌다 잘 되는군요.

사실 PID 컨트롤을 고민해보긴 했습니다.

하지만 글루건이 영점 몇도 컨트롤에 크게 차이날 것 같진 않습니다.








오늘 추가된 부품입니다. CDS센서죠. 

들어오는 빛에 따라 저항값이 변하는 센서입니다.

이건 슬립 모드를 적용하기 위한 센서인데요.


손잡이 부분에 CDS 센서를 집어넣고 손으로 잡고 있을 땐 작동하다가,

손을 떼고 내려놓으면 시간을 측정합니다.

기준시간이 지날 때까지 손잡이를 잡지 않으면 슬립모드가 작동합니다.


슬립모드가 작동하면 히터가 완전히 꺼지지는 않고 적당한 온도를 유지하며 대기합니다.

이렇게 되면 글루가 흘러내리지 않습니다. 

손잡이를 잡으면 즉시 슬립모드가 해제됩니다.

온도는 이미 어느정도 올라가있는 상태라서 금방 사용가능한 상태가 됩니다.




손으로 빛을 가렸다 치웠다 하면 센서값이 변합니다.






슬립모드 적용시간을 1초로 설정하고 테스트해봤습니다.

오른쪽 LED가 1개시 히터 꺼짐, 2개시 슬립모드 상태, 3개는 히터 켜짐 상태입니다.

CDS를 손으로 가리면 슬립모드가 꺼져서 히터가 작동하는 것을 보실 수 있습니다.

슬립모드일때는 히터 ON/OFF가 표시되지 않으며 그냥 온도유지만 됩니다.


최종적으로 글루건 히터에 직접 연결해서 작동을 테스트하고 완성형 제작을 하려고 합니다.

728x90
728x90

http://pashiran.tistory.com/693 참조. 


리튬 배터리의 전압은 3.7~4.2V 정도로 계산할 것이므로

2셀 직렬시 7.4~8.4V 정도가 됩니다. 

1:1 저항 분배로 전압을 절반으로 나눈 후 AnalogRead로 측정합니다.

AnalogRead * 5V(기준전압) / 1024 를 하면 전압을 계산할 수 있습니다.


배터리 레벨 구간은 아래와 같이 정했습니다.

8.15V ~ 8.4V : 100%

7.9V ~ 8.15V : 75%

7.65V ~ 7.9V : 50%

7.4V ~ 7.65V : 25%

리튬 배터리는 전압 강하 특성이 비교적 선형이므로 큰 오차는 없을 것으로 생각됩니다. 


막상 테스트를 위해 파워 서플라이로 전압을 인가했더니 보드가 다운됩니다.

타거나 하는 것은 아니고 7V 이상 올리면 전원 입력이 쇼트가 나네요





며칠을 원인찾느라 고생했는데 알고보니 파워서플라이 세팅을 잘못해놨을뿐이었습니다.







전압 표시는 LED 표시로 합니다만, 부팅시에 전압을 한번 디스플레이하도록 만들었습니다.

오차가 약간 있지만 0.1V 이하라 그냥 사용하기로 합니다.


이 다음은 본격적으로 히터 가열과 관련 LED 표시가 되겠네요

728x90
728x90

부팅시 HELLO를 한번 띄우도록 했습니다. 





디스플레이를 구현했으니 이제 기능을 하나씩 덧붙여갑니다. 

처음에는 온도센서 값을 시리얼로 출력해보니 역시나! 제대로 작동하지 않는군요.

왜 아무리 간단하고 몇번씩 해본 것이라도 처음엔 꼭 버그를 낼까요?

확인해보니 100k 써미스터인데 같이 연결하는 저항을 10K 로 연결해놓았습니다.

거기다 스케치는 number[digitTemp[i]] 를 출력해야 하는데 digitTemp[i] 를 출력하도록 했더군요.


이제 온도는 잘 표시됩니다.





728x90
728x90

회로제작과 프로그래밍을 번갈아가면서 하다보니 혼란이 오네요.

정리할겸 조금 자세히 써봅니다



첫번째 74HC595가 글자 및 LED 표시를, 두번째 74HC595가 자리수 담당을 합니다.

Common Anode라서 표시해야 하는 위치의 세그먼트가 0이 됩니다. 




A3~A9까지의 LED와 B,C,D,E 4자리의 숫자 표시를 합니다.

F0,F14,A3 LED는 사용하지 않습니다. 

알파벳 핀이 공통 Anode 입니다. 







전체 연결은 다음과 같습니다. 






숫자가 한번에 표시되는게 아니고 각 자리의 신호가 순차적으로 들어가게 됩니다.

이를 위해서 숫자를 분리해서 표시하는 스케치를 간단하게 짜봤습니다. 






그랬더니 이상하게 나오는군요. 1000이 999로, 100이 99로 나옵니다.

for 문에서 증가하는 i를 이용해서 스케치 길이를 줄이려 했습니다.

pow() 함수에서 내부적으로 처리할 때 float로 처리되는건지 엉뚱한 결과값이 나오네요







수정했습니다. 정상적으로 나오는군요. 








이후 수정된 스케치를 아두이노에 업로드했더니 이상하게 나옵니다. 







원인을 찾는 중입니다. 





저는 74HC595를 연결할 때 첫번째 74HC595가 숫자를 담당하고 두번째가 자리수를 담당하도록 했습니다. 

shiftOut(dataPin, clockPin, LSBFIRST, A);  

shiftOut(dataPin, clockPin, LSBFIRST, A);  

그래서 위의 구문에서도 첫번째 ShiftOut이 숫자, 두번째가 자리수일줄 알았더니 아니더군요.

LSBFIRST / MSBFIRST 와 상관없이 첫번째 ShiftOut이 자리수를 표시하고 두번째가 숫자를 표시합니다.




수정이후 숫자가 제대로 표시됩니다. 

보기엔 동시에 전부 들어오는 것 같아 보이지만 실제로는 왼쪽부터 순서대로 빠르게 깜박이고 있는 상태입니다.








마지막으로 디스플레이될 LED의 데이터 처리를 합니다. 

왼쪽3개의 LED는 배터리 잔량표시용으로 오른쪽은 히터의 상태를 나타낼 예정입니다.

배터리 관련 변수나 히터 상태의 변수가 따로 쓰일 테니 스케치에선 따로 취급됩니다.

하지만 디스플레이될때는 하나의 Anode로 묶인 LED들이라 출력신호를 묶어야 합니다. 


별거 없고 그냥 논리합(and)을 하면 됩니다. 

SignalLED = BatLevel[i]&HeatLevel[j]; 

같은 식으로 사용하게 되겠죠







스케치를 올려보니 이제 LED까지 잘 나옵니다. 

왼쪽 끝의 LED들은 사용하지 않을 예정입니다. 

글루건인데 정보가 그리 많을 필요가 없죠






눈으로는 잘 구별가지 않지만 흔들어보면 이렇게 깜박임이 발생하는게 보입니다. 



728x90
728x90



하드웨어 스펙이 확실히 정해져 있어야 아두이노 스케치 작성이 편합니다.

이글캐드에서 그냥 패드로 연결하려다가 심볼이 확실히 있어야 보기 편할 것 같아서 라이브러리를 작성했습니다. 

라이브러리를 만들어도 이 FND 재고가 대여섯개 뿐이라 많이 쓸일은 없겠죠





74595(A)가 LED를 제어하고 74595(B)가 common anode를 담당해서 각 자리를 점등합니다.

다만 좌우로 있는 별개의 LED중 두어개는 74595(A)의 신호선이 모자라 연결하지 않기로 했습니다. 

74595(B)에서 담당할 수도 있지만 그러면 제어신호를 복잡하게 줘야 하네요.


이렇게 할 경우의 문제는 각 세그먼트를 모두 동시에 디스플레이하는건 힘들다는 것입니다.

4자리의 숫자를 다르게 디스플레이 하려면 각 자리를 순차적으로 표시해야 합니다.


각 자리를 켜서 표시하고 끈 후 다시 다음 자리를 켜서 표시하는 방식입니다

이걸 피하려면 각 자리마다 74595를 하나씩 배당해야 하죠.

그러면 4자리+표시 LED까지 최소5개의 74595칩을 넣어야 합니다.






원래 생각했던 것과 연결이 달라져서 출력신호를 다시 기록했습니다.

다 해놓고 보니 별도의 LED 신호는 생각 안한거라 또 추가해야 하네요;;








하드웨어가 없이는 스케치를 업로드해서 테스트해볼수가 없죠

브레드보드에 연결하는 방법도 없는 건 아닙니다.

하지만 그럴 경우 수정도 너무 정신없고 정신없어서 에러도 많이 납니다.

만드는 공이 더 들어도 아예 회로를 구성하는게 더 편하고 빨리 끝나는 것 같습니다. 







1차로 만든 회로는 글루건 내장용이라 너무 작아서 CNC로 잘 깎이지가 않더군요

부품을 DIP으로 바꾸고 테스트용으로 별도의 회로를 만들었습니다. 








이제 열심히 스케치를 짜야겠군요

728x90
728x90

만물상(링크) 에서 구매했던 미니 세그먼트 디스플레이입니다. 

이걸 보며 다시금 생각하니 전 복고형 디스플레이에 로망이 있는듯 합니다.

VFD 나 닉시 튜브같은거 참 좋아합니다. 

그래도 막상 쓰려면 일단 실용성이 좋아야 해서 닉시 튜브같은건 안쓰지만요.









개발을 위해 일단 납땜을 합니다. 


위 구매링크에 정보가 있었는데 그걸 보기 전이라 일일이 훑어가며 추적해서 기록했습니다.

이제 이걸 제어하기 위한 방법을 알아봐야 하겠군요.







바로 얼마전 구입해둔 MAX7219 칩을 사용해 드라이빙하려고 했습니다.

그런데 데이터쉬트를 읽어보니 MAX7219 는 common cathode 용이네요..

음극을 제어해 on/off 를 하기 때문에 제가 common anode 형 FND로는 맞지가 않습니다. 


http://marco-difeo.de/2013/02/21/drive-max7219max7221-with-common-anode-displays/

조금 검색해보니 MAX7219를 이용해 common anode를 제어하는 방법도 있는것 같습니다.

하지만 제가 전혀 이해할 수 없는 내용이라 다른 방법을 찾아봅니다.





http://www.hardcopyworld.com/ngine/aduino/index.php/archives/2826 

이 링크를 참조해서 74_595 쉬프트 레지스터를 사용하기로 합니다. 


https://www.lelong.com.my/8-digit-74hc595-segment-7-red-led-display-shift-ioline-150002647-2018-05-Sale-P.htm 

http://www.instructables.com/id/Arduino-powered-7-seg-LED-display-using-Shift-Regi/

이 링크도 읽어보며 공부합니다. 


간만에 카페에서 작업하며 정리해 봤습니다. 




출력을 위해선 데이터를 int형에서 char 형으로 변경할 필요가 있습니다.

https://www.instructables.com/id/Converting-integer-to-character/

이 방법을 사용합니다.



728x90
728x90

글루건은 별로 좋아하지 않는 공구입니다.

접착성이 아주 좋은것도 아니고 마무리가 깔끔하지도 않고

수정하거나 제거하는것이 어렵습니다. 

구조의 간단함에 비해 쓰기도 거추장스러운 편입니다. 

그래도 가끔 필요할때가 없지는 않은 그런 공구죠.


모 카페에서 우연히 이런 제품을 공구했던걸 보고 

사용상의 불편함을 어느정도 덜어줄 수 있을 것 같다는 생각이 들었습니다.

공구는 끝나서 알리익스프레스에서 구매했는데 9.57$ 였습니다. 








1.5V AA배터리가 4개 직렬로 들어갑니다. 








구조는 그냥 스위치 on/off 에 LED 하나가 연결된 구조입니다. 

심지어 납땜이 제대로 안되어 스위치에 전선이 연결되어있질 않네요






18650배터리를 넣을 생각이라서 내부를 갈아냅니다. 








내부를 잘 갈아내면 아슬아슬하게 18650이 2개 들어갑니다. 

직렬로 만들면 빠르게 예열되어 신속하게 사용할 수 있죠.

병렬로 만들면 작업시간이 길어져 오랫동안 작업할 수 있을겁니다. 

어느쪽이 나을지 테스트를 위해 자작 온도센서(링크)를 붙였습니다. 







5V 공급시 0.5A 정도를 소모합니다. 







20분이 넘어서야 간신히 90도를 넘더군요

나오는 글루도 덜 녹아서 뻣뻣합니다. 

배터리 1개로는 최대 4.2V 밖에 나오지 않으니 이대로는 쓸 수 없고 승압회로를 붙여야 합니다.







2개 직렬전압을 설정하면 빠르게 가열되어 3분안에 100도를 초과합니다. 









2배터리를 병렬로 잡고 승압회로를 연결해 봤습니다.

사용시간과 빠른 예열시간을 동시에 잡을 수 있지 않을까 하는 생각이었습니다.







이때 전류는 거의 1A 정도 됩니다.







이 경우 승압회로가 너무 뜨거워져 여기에도 온도센서를 붙여봤습니다.(만들자마자 잘 써먹는군요)

승압회로 부품중 인덕터의 온도(CH1)가 히터(CH3)보다 빠르게 올라가네요.


아두이노를 넣을 생각이었는데 제어를 모두 아두이노에 맡길 생각입니다.

2개 직렬로 하고 온도센서를 붙여 제어를 아두이노가 처리하도록 하면 배터리 관리와 빠른 가열의 두마리 토끼를 잡을 수 있을 것 같습니다. 



728x90

+ Recent posts