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

 

https://youtu.be/3dY9H8E4f8o?si=RmyZZ0ADNQICMg_b&t=18

 

간신히 돌아가다 말다 합니다.

여기까지도 한참 걸렸는데 여전히 수정할 부분이 많네요. 

스프링의 장력 조절과 무게추 조정, 공차 수정과 설계 수정 등등등..

수직잡고 구멍뚫는것도 꽤나 어려워서 미니어처 베어링도 새로 구매했습니다.

도착하면 두번째 버전을 새로 만들어볼 계획입니다.

 

 

 

 

 

 

노즐을 0.2mm 로 교체했습니다.

 

 

 

 

 

 

 

계속 수정과 테스트 반복.

 

 

 

 

 

설계를 어느정도 잡은 후 출력물

 

 

 

 

 

 

드릴도 0.1mm 단위로 새로 샀습니다. 

 

 

 

 

 

 

핸드 핀바이스로 뚫으니 수직 잡기가 어렵더군요.

 

 

 

 

 

 

 

 

 

소형 드릴링머신도 하나 샀습니다.

좀 더 작은게 있으면 좋겠는데 못찾겠더군요.

 

 

 

 

 

 

 

 

 

괜히 한번 금색 마카펜으로 칠해봤습니다.

 

금방 될 줄 알았는데 시간을 오래 잡고 진행해야 할 것 같습니다.

728x90

'Making > 탈진기 설계와 제작' 카테고리의 다른 글

포크와 롤러 설계  (0) 2024.02.25
팔레트 설계  (0) 2024.02.25
이스케이프 휠 설계  (0) 2024.02.25
728x90

책에서는 갑자기 170mm 간격으로 점 D를 배치하라고 하는데 왜 그 수치가 나오는지에 대한 설명이 없습니다. 

앞뒤내용을 열심히 살펴보고 비례에 맞춰 적당한 간격을 설정해 주었습니다. 

 

4.5도와 13.5도를 이루는 삼각형은 변의 길이가 1:3 인데 이 비율을 맞춰 적당히 그려주었습니다. 

이 부분의 세세한 수치는 변화될 수 있을 것 같습니다. 

 

삼각형의 왼쪽 점이 롤러 쥬얼의 중심점이 됩니다. 

 

 

 

 

롤러 쥬얼의 지름은 점 B와 점 D의 거리 를 21로 나눈 값입니다. 

 

 

 

 

 

 

 

 

롤러 쥬얼의 바깥쪽을 이루는 원의 지름은.. 책에서 지정한 수치는 있지만 왜 그렇게 되는지에 대한 설명은 없군요.

그냥 보기에 적당한 사이즈로 안쪽 원의 1.05배가 되는 크기로 그렸습니다. 

 

 

 

 

 

 

포크 슬롯의 측면이 될 선을 그려줍니다. 

롤러 쥬얼의 중심선과 평행이 되면서 롤러 주얼에 접하는 선(19, 20)을 양쪽으로 그려줍니다. 

그리고 그 선과 수직의 선(21)을 적당한 간격으로 그려줍니다. 이 선은 포크 슬롯의 바닥이 됩니다. 

 

 

 

 

 

 

 

포크 슬롯의 바닥과 롤러 쥬얼 원과의 간격은 롤러 쥬얼의 1/3으로 정했습니다. 

 

 

 

 

 

 

 

 

선 18과 선22의 교차점을 중심으로 롤러 주얼 지름의 3배가 되는 원을 긋습니다. 

 

 

 

 

 

 

 

 

 

 

 

빨간색으로 그어진 부분은 포크 혼의 왼쪽 부분이 됩니다. 

반대쪽 선을 긋기 위해 점 C를 중심으로 점 D를 통과하는 호를 긋습니다. 

 

 

 

 

 

 

 

 

반대쪽 호를 그리기 위해 선 12을 연장하여 위에서 그린 호와 교차되는 점을 중심으로 점 D를 통과하는 작은 원을 그립니다. 

그러면 그 원과 호가 교차하는 좌측 점(붉은색)을 그릴 수 있습니다. 

 

 

 

 

 

 

이제 이 점을 중심으로 원 18과 같은 지름의 원을 그립니다. 이 원의 일부가 오른쪽 포크 혼이 됩니다. 

 

 

 

 

 

 

불필요한 선들을 한번 정리합니다.

 

 

 

 

 

 

안전 롤러를 그립니다. 점D를 중심으로 원 15의 1/3 지름으로 그려줍니다. 

이를 원 25라 합니다. 

 

 

 

 

 

 

 

 

안전 롤러와 점D 와 쥬얼 롤러를 잇는 선의 교차점(붉은색)을 중심으로 통과 구멍을 그립니다. 

지름은 쥬얼 롤러의 1.3배로 했습니다. 

 

 

 

 

 

 

 

선 12와 원 25의 교차점(붉은색)을 찾습니다.

 

 

 

 

 

 

 

 

이 점에서 시작하고 선 12와 25도 각도가 되는 화살표를 그립니다.

이것이 가드 핀이 됩니다. 

 

 

 

여기까지 했다면 기본적인 설계는 모두 끝났습니다. 

 

728x90

'Making > 탈진기 설계와 제작' 카테고리의 다른 글

탈진기 첫 테스트.  (0) 2024.03.01
팔레트 설계  (0) 2024.02.25
이스케이프 휠 설계  (0) 2024.02.25
728x90

앞서 그린 이스케이프 휠의 스케치를 그대로 사용합니다. 

 

 

 

 

첫번째 스케치에서 사용했던 원과 선들을 전사해서 세번째 스케치를 그렸습니다. 

이제 글자의 색으로 선과 점, 원을 구분하지 않습니다. 별로 도움되지 않더군요.

                                                                

 

 

 

 

 

 

 

 

원 Q, 원 J가 교차하는 점을 통과하는 선 1을 그리고

원 G, 원 P가 교차하는 점을 통과하는 선 2를 그립니다. 

 

 

 

 

 

C에서 출발하여 같은 점을 통과하는 선 3,4를 그립니다.

 

 

 

 

 

선 4에서 4도 위로 선5를 그립니다. 

원 Q와 선 5의 교차점과 원G와 선 4의 교차점을 선으로 잇습니다.

 

이 선이 배출 스톤의 임펄스면이 됩니다. 

 

 

 

 

 

 

 

선 L과 원 G의 교차점과 선 M과 원 Q의 교차점을 선으로 잇습니다. 

이 선이 진입 스톤의 임펄스면이 됩니다. 

 

 

 

 

 

임펄스면의 뒤쪽 선을 시작으로 선 L과 수직하는 선을 긋습니다.

 

 

 

 

 

 

 

이 직각선에서 14도를 이루는 선을 긋고 스톤을 이루는 선을 마무리합니다. 

14도는 스톤의 잠금각입니다. 

 

 

 

 

 

마찬가지로 반대쪽에서도 직각을 이루는 선을 그리고 14도를 이루는 선으로 스톤을 그립니다. 

 

 

 

 

728x90

'Making > 탈진기 설계와 제작' 카테고리의 다른 글

탈진기 첫 테스트.  (0) 2024.03.01
포크와 롤러 설계  (0) 2024.02.25
이스케이프 휠 설계  (0) 2024.02.25
728x90

개인기록용.
https://www.amazon.com/gp/product/B0CL19RG2P/ref=ppx_yo_dt_b_d_asin_title_o01?ie=UTF8&psc=1

위 책의 내용을 참조로 함.

 

 

 

 

 

 

직선은 파란색, 점은 빨간색으로 표기

 

점 B를 중심으로 하는 선 AA를 그리고, 위쪽 점 C를 찍습니다

B를 중심으로 시계 반대 방향으로 30도를 지나는 선을 그리고 끝점을 E로 정합니다.

다시 E에서 3도를 지나는 선을 그리고 끝점을 F로 정합니다.

 

30도인 이유는 책의 SEC 432-433에 설명되어 있습니다

3도인 이유는 SEC 434에 설명되어 있습니다. 

 

 

 

 

 

 

점C를 중심으로 선 FB에 접하는 원 G를 그립니다. 

C에서 원 G와 선 F의 교차점에 선 H를 그립니다. 

이 선은 자동적으로 선 F와 직각을 이룹니다. 

B를 중심으로 이 교차점을 통과하는 원 J를 그립니다. 

 

 

 

 

점 F에서 좌측으로 4.5도(SEC.432)에 선 K를 그립니다. 

이제 잠금의 양을 결정할 것인데, 안전과 일관되게 가능한 한 가벼워야 하며 3/4도(0.75도) 정도가 적당합니다.

선 H의 아래로 0.75도에 선 L을 그립니다. 

이 선이 F선과 교차하는 지점(사진상의 붉은 점)이 팔레트 스톤의 잠금 모서리를 표시합니다.

 

 

 

 

 

선 L 보다 5도 아래에 M선을 그리고 H 선보다 3.5도 위에 N 선을 그립니다. 

선 F 보다 6도 오른쪽으로 선 O를 그립니다. 

점 B를 중심으로 선 N과 선 O를 교차하는 점을 통과하는 원 P를 그립니다. 

 

 

 

 

 

 

치아의 임펄스 면(붉은색 선)은 원 P와 선 K의 교차점에서 선 H와 선 F의 교차점까지 선을 그려서 형성합니다. 

이 선이 치아의 임펄스 면이 됩니다.

 

 

 

 

 

 

편의를 위해 스케치를 마무리하고 새 스케치를 그립니다.

 

 

 

 

 

 

 

앞서 그린 임펄스 면을 형성한 선을 새 스케치에 따라 그립니다. 

 

 

 

 

 

중심점 B를 중심으로 스케치 패턴을 15회 반복합니다.

 

 

 

 

임펄스 면을 이은 선과 직선이 되는 선을 몇개 그리고 그 선의 내접원 S를 그립니다.

 

 

 

 

 

임펄스 면의 오른쪽 점에서 시작하고 선 FB 와 28도 각도를 이루는 선을 긋습니다. 

휠 톱니의 잠금 각도입니다. 

 

 

 

 

 

 

휠 외부 테두리를 그립니다. 휠 지름의 80% 수준으로 잡았습니다. 

 

 

 

 

 

앞서 그린 선을 원형 패턴하여 복사합니다. 

 

 

 

 

 

 

첫번째 스케치에서 그렸던 원 J 와 원 P 의 중간에 원 W를 그립니다. 

 

 

 

 

 

 

점 B에서 출발해서 임펄스 면의 뒤쪽을 통과하는 방사선을 긋습니다. 

원  W 의 바깥쪽으로 그어진 선 부분(빨간색)이 치아의 발가락 부분이 됩니다. 

이 선도 점 B를 중심으로 패턴합니다. 

 

 

 

 

 

 

앞서 그어진 선에서 연장되는 선을 긋습니다. 

 

 

 

 

 

 

 

이 선을 원형 패턴합니다.

 

 

 

 

내접원을 그립니다. 원 V 라 합니다. 

 

 

 

 

 

 

 

이스케이프 휠 지름의 1.3배인 원을 그리고 원 DD 라 합니다. 

이스케이프 지름의 0.95배인 원을 그리고  원 Y 라 합니다. 

 

 

 

 

 

 

 

톱니의 아래쪽 모서리에서 원 V에 접하는 선을 긋습니다. 이 선이 톱니의 아래쪽을 만드는 선이 됩니다. 

 

 

 

 

 

원 Y와의 교차점을 중심으로 , 원DD와 휠 림 바깥쪽의 차이만큼의 거리(그림에서 7.5mm)를 반지름으로 하는 호를 긋고 원 DD와의 교차점을 표시합니다. 

 

 

 

 

7.5mm 를 설명하는 거리

 

 

 

 

 

위의 교차점에서 같은 거리(7.5mm)를 반지름으로 하는 호를 톱니의 뒤쪽에서 휠의 바깥쪽을 접하도록 그립니다. 

 

 

 

 

선을 정리하고 패턴하여 마무리합니다. 

 

 

 

 

 

728x90

'Making > 탈진기 설계와 제작' 카테고리의 다른 글

탈진기 첫 테스트.  (0) 2024.03.01
포크와 롤러 설계  (0) 2024.02.25
팔레트 설계  (0) 2024.02.25
728x90

태엽으로 돌아가는 작은 기구를 유튜브에서 보게 되었습니다. 

https://www.youtube.com/watch?v=NiyUUhnBaiI&t=589s

 

그 아이디어에 반해서 한번 만들어 보고 싶어졌습니다. 

태엽 구동에 관한 자료를 보고 있자니 속도 제어를 위한 기구가 필요하더군요.

여러 방법이 있지만 '탈진기' 라고 불리는 흔히 기계식 시계에 들어가는 구조를 써보고 싶었습니다. 

 

 

 

 

 

 

시계에 들어가는 탈진기의 종류는 여러 가지가 있지만 최근의 시계에는 거의 스위스식 레버 탈진기가 들어갑니다. 

이 설계를 바탕으로 제조사마다 조금씩 업그레이드시킨 다른 설계가 들어가기도 합니다. 

 

 

문제는 이 설계에 관한 자료를 찾기가 거의 불가능에 가까웠단 것입니다. 

기본적으로 이런 기계설계에 관한 이론은 인터넷이 발명되기 수십 년 전에 대부분 완성되어 있습니다.

그렇다 보니 기본적으로는 인터넷에 올라와 있지 않습니다. 

그래도 사람들이 많이 찾는 자료라면 정리된 자료가 인터넷에 올라올 수 있습니다만 이건 그런 자료도 아니죠.

 

 

 

 

 

 

그나마 찾은 자료는 이런 식이었습니다. 1884년에 출간된 책의 스캔본.

 

 

 

 

 

꽤 괜찮은 자료가 있는, 유일하게 인터넷에서 찾을 수 있었던 사이트.

https://www.abbeyclock.com/TToc.htm

 

Book: Clock and Watch Escapement Mechanics

 

www.abbeyclock.com

3D 프린터로 탈진기를 제작한 사람들은 이 사이트를 참조한 경우가 많더군요.

 

 

그럭저럭 괜찮았지만 이론적 배경을 중심으로 설명하는 자세한 내용이 없고 그냥 수치를 정해놓은 경우가 많아 좀 아쉬웠습니다. 

 

 

 

그래서 아마존을 뒤지기 시작했습니다. 

 

 

오래된 자료들이라 당연히 전자책도 아닙니다.

책 내용을 알 수 없어 대충 목차와 리뷰만 보고 구입할 수 밖에 없었습니다. 

책값도 비싸지만 배송비도 비싸서 타격이 컸습니다.

 

 

 

 

 

 

 

복불복이긴 했지만 2권은 실패.. 내용이 있긴 한데 엄청 자세하진 않습니다. 

한권은 설계보다는 수리와 정비에 관한 내용이 더 많았고요.

 

 

 

 

 

제일 괜찮았던 건 이 책입니다. 

시계학교의 학생들을 위한 교본이라 이론적 배경부터 설계에 관한 내용이 자세히 들어 있습니다.

하지만 전자책 버전이긴 한데 스캔본이라 보기가 매우 불편합니다. 

 

 

그래서 지난번 포스팅 https://pashiran.tistory.com/1336

 

아마존의 영문 책을 빠르게 번역해서 보기.

https://www.amazon.com/b/ref=sxts_snpl_2_1_8ff1fd52-a1ba-4875-b6ef-624553f0f5b8?node=16571048011&pf_rd_p=8ff1fd52-a1ba-4875-b6ef-624553f0f5b8&pf_rd_r=WFHA2CTYGS2R73CZGNAD&pd_rd_wg=uIFOZ&pd_rd_w=4pJu7&content-id=amzn1.sym.8ff1fd52-a1ba-4875-b6ef-624553f0f5b

pashiran.tistory.com

에 있던 내용내로 DRM을 해제해서 PDF로 변환한 뒤 출력해서 사용했습니다. 

 

 

 

 

 

 

 

 

영문 그대로 읽는 건 불가능하진 않지만 내용이 많아서 번역기를 사용했습니다. 

요즘은 이미지 인식 OCR 과 AI 번역 툴이 매우 훌륭해져서 좋네요.

OCR은 일일이 스크린샷을 떠서 ChatGPT에 OCR 인식을 시켰고 deepL 번역기를 사용했습니다. 

 

728x90
728x90

이제 완성도를 높이기 위한 작업중입니다. 

시제품에서 완제품 단계로 넘어간다고나 할까요. 

 

OLED 모듈이 튀어나와 있기 때문에 설계시 걸리는 부분이 있는데요. 

이걸 어떻게 할 수 없을까 하고 검색하다 보니 드라이버 회로가 보이더군요.

 

 

 

생각보다 간단한 구성회로에 온보드로 넣기로 합니다. 

 

 

 

 

 

 

기존 회로는 부품이 전부 전면 배치였기 때문에 일부를 뒷면으로 옮기고 잘 정리하니 기존 PCB 사이즈에서 전부 집어넣을 수 있었습니다. 

 

 

 

PCB와 부품들 주문하고 기다리는 중입니다. 

도착하면 납땜하고 테스트하고 다시 3D 설계 수정하고 프로그램 마무리할 계획이고요

메이커페어 나가느라 서둘러 급하게 마감했던 물건들 처리하는데만 몇달은 걸리겠네요

 

 

 

 

728x90
728x90

https://jlcpcb.com/KOR

 

SMT PCB어셈블리 3D프린팅 - JLCPCB

JLCPCB, 더 빠른 PCB & SMT 어셈블리를 위한 것이다 모든 단계에서 시간과 비용 절감한다. 클릭하시면 동영상을 볼 수 있습니다.

jlcpcb.com

이 포스팅은 JLCPCB의 협조로 제작되었습니다. 

 

 

 

자석식 커넥터로 테스트한 모델이 잘 구현되었기에 본격적으로 PCB를 제작하기로 했습니다. 

EASYEDA 에서 PCB를 설계했습니다. 

 

 

부품 배치 시 CAD 프로그램처럼 편리하지는 않기 때문에 부품의 위치나 간격 등은 손으로 계산해서 입력해야 합니다. 

즉 XY 좌표 (50,0) 에 있는 부품을 60도 회전시켜 배치하고 싶으면 삼각함수를 써서 계산해야 합니다. 

하지만 CAD 프로그램에서 수치를 입력하고 그냥 결과를 따면 훨씬 편하죠. 

EASYEDA에서도 같은 작업을 할 수 있는 플러그인이 있을 것도 같긴 한데 저는 그냥 손에 잡히는 솔리드웍스를 썼습니다.

 

 

 

 

https://jlcpcb.com/KOR

 

SMT PCB어셈블리 3D프린팅 - JLCPCB

JLCPCB, 더 빠른 PCB & SMT 어셈블리를 위한 것이다 모든 단계에서 시간과 비용 절감한다. 클릭하시면 동영상을 볼 수 있습니다.

jlcpcb.com

이번에도 JLCPCB에 주문을 넣었습니다. 

 

 

다만 이렇게 생성된 거버 파일을 올려보면 미리보기에서 이상한 결과가 나옵니다. 

 

 

 

 

 

 

다시 확인해봤지만 뷰어의 문제인 것 같아 일단 제작은 하되 생산전에 컨펌해달라는 옵션을 넣었습니다. 

 

 

 

 

 

 

 

마찰이 계속되며 접점을 오래 유지해야 하므로 ENIG(electroless nickel immersion gold) 옵션을 넣었습니다. 

금도금이죠. 가격은 좀 많이 올라갑니다. 

 

 

 

 

 

 

 

주문 후 추가비용 결재와 관련해서 메일이 왔습니다.

위에 미리보기에서 이상하게 나온다고 했는데 엔지니어가 다 잘 맞게 수정했고 그에 따라 추가비용이 발생했으니 결재해야 한다는 내용이었습니다. 결재 후 컨펌하고 곧바로 제작이 시작되었습니다. 

 

 

 

 

 

 

똑같아 보이지만 앞뒷면입니다.

 

 

 

 

 

 

원래 배터리 접촉 용도로 쓰는 4핀 커넥터를 사용했습니다. 

 

 

 

 

 

 

 

 

접촉 후 저항 측정해보니 0.3옴 정도 나오는군요. 

접촉유지는 상당히 괜찮아서 구지 심하게 누르지 않아도 괜찮을 것 같네요

 

728x90

'Making > USB 오토릴' 카테고리의 다른 글

USB 오토릴 #1 - 구상.  (1) 2023.01.01
728x90

튜닝만 하면 마무리되는 물건이지만, 메이커페어에 들고나갈 생각을 하니 좀 더 손보고 싶어지더군요

달려있던 모터 하나가 축이 휘어져서 밸런스 돌릴때마다 이상하게 비틀거리기도 했고 자이로 휠도 바꾸고 싶어져서 

손보던 김에 전면 재설계에 들어갔습니다. 

 

 

 

원본의 조립방식을 바꿔본다고 손댔던 지난번 설계는 정작 조립해보니 별로 낫지도 않더군요. 

이번에는 모서리에서 45도 각도로 태핑나사로 조립하는 방식입니다. 훨씬 깔끔하고 편하군요.

 

 

 

 

 

 

 

모서리가 칼같이 잘 맞아들어갑니다. 

 

 

 

 

 

하는김에 PCB도 설계.

원래 EagleCad를 썼지만 Fusion360에 통합되고 나서는 업데이트도 잘 안되고 쓰기가 영 불편하더군요

그래서 EasyEDA로 바꿔봤습니다. 

JLCPCB / LCSC 회사의 소프트웨어인데 프로그램 자체는 이글보다 낫진 않습니다. 

하지만 일반적인 양면 PCB 설계하기엔 충분하고요.

무엇보다 LCSC에서 공급하는 부품을 전부 그대로 사용할 수 있어 라이브러리 면에서 대적할 자가 없네요. 

 

설계를 마치면 JLCPCB에서 주문하면서 LCSC에서 부품주문도 동시에 할 수 있는 시스템이라

몇만원에 납땜까지 완성된 PCB를 그대로 받아 볼 수 있습니다. 

조만간 다른 프로젝트 PCB 주문할때 같이 하려고 일단은 묵혀 두는 중입니다. 

 

 

------------------------------------추가--------------------------------------------------------
이번에 PCB주문하면서 부품주문도 같이 하려했더니 안되더군요. 
검색해보니 세금신고관련 문제로 합배송이 안되게 바뀌었다네요. 

 

728x90
728x90

메이커페어에 참가신청도 했겠다 이제 열심히 완성시키려고 하는 중입니다. 

그런데 이상하게 자꾸 아두이노 스케치 업로드가 안됩니다.

 

윈도우 11로 올린 지 얼마 되지 않았는데 이것때문인지 아니면 드라이버 문제인지 모르겠더군요.

드라이버를 계속 다시 재설치해보고 최신 드라이버 설치도 해보고 아두이노 나노와 프로 미니를 번갈아 가며 테스트해봤습니다. 

시리얼 칩 중 중국산 CH340은 드라이버 문제가 간간이 발생하기에 일부러 최신버전과 구버전도 다 테스트해봤습니다. 

그런데도 여전히 문제를 찾기 힘들어 시간내서 다시 Win10으로 다운그레이드도 했습니다. 

 

그래도 여전히 안됩니다.

 

 

 

 

 

컴퓨터를 포맷까지 했는데 안되길래 이제 아예 노트북을 써야 하나 고민하던 중에

혹시나 하고 시리얼 모니터를 꺼봤습니다. 

그랬더니 잘 되네요.....

 

 

Arduino IDE 1.8.0 이전 버전들은 시리얼 모니터와 상관없이 프로그램 업로드가 됐는데

오히려 최신 버전인 2.1.0에서 이런 황당한 문제가 있었네요.

덕분에 이틀간 시간만 날렸습니다. 

 

 

 

 

그리고 나서도 엔코더 로터리가 작동이 이상해서 체크해봤더니 B상(하늘색)이 안들어옵니다. 

 

 

 

 

 

회로를 점검해봤더니 메인보드와 스위치 보드에 둘다 풀업저항이 달려있었네요. 

이건 큰 문제는 아닌데 일단 한쪽을 제거했습니다. 

그리고 두번째로는 스위치 보드의 풀업저항이 연결이 안되어있었습니다. 

굉장히 오래전에 만든 회로인데 만들때 실수해놓고도 모르고 그냥 갖고 있었네요

 

 

 

 

 

 

하여간 납땜해서 풀업 연결하고 확인하니 제대로 작동하는군요

 

 

 

 

 

테스트 코드에도 문제없이 값을 출력합니다. 

728x90
728x90

어느날 집에 있는 지퍼백을 쓰는데 크기가 애매하게 커서 한쪽을 접착하고 잘라냈으면 좋겠더군요.

이럴 때 쓰는 물건이 비닐 실링기죠. 

 

 

이런 소형 실링기를 써 보신 분은 알겠지만 이 물건은 쓰레기입니다. 

 

 

 

 

 

 

이런 실링기는 성능도 좋고 비닐이 잘 접착되지만 덩치가 크고 접합하고자 하는 비닐이 기계보다 크면 쓰기가 애매하죠

 

 

 

 

차라리 열선을 바퀴처럼 둥글게 말아 굴리면서 쓰면 아무리 긴 비닐도 접착이 가능하지 않을까? 하는 생각이 들었습니다.

 

프로토타입을 만들어봤습니다. 

2T 내열 실리콘판과 0.1T 2mm 니크롬 리본입니다. 

 

 

 

 

 

 

니크롬 리본은 살짝 엇갈리게 배치해서 위와 같이 내부로 들어갑니다. 

 

 

 

 

 

 

 

 

 

 

내열성이 있는 PTFE 테이프로 위를 감싸줍니다. 

실제 실링기도 이런 구조로 되어 있습니다. 

 

 

 

 

 

 

니크롬선은 납땜이 되지 않기 때문에 스팟 용접이나 클램프로 연결해줘야 합니다. 

 

 

 

 

 

 

 

 

7~80도 쯤에서 비닐이 녹는 것 같아서 그정도 온도로 세팅해 봤더니 접합이 안 되더군요

 

 

 

 

 

 

 

 

110~120도 정도로 만들어 보니 접합이 잘 됩니다. 

 

 

 

프로토타입으로 성공 가능성을 체크해 봤으니 설계를 구체화해봐야겠습니다. 

 

728x90
728x90

https://youtu.be/tIuX01ikdrY

 

 

전원을 켜고 손으로 중심을 잡은 채로 유지하면 3축 순서대로 삐-삐-삐 소리가 3번 납니다.

이후 '삐삐' 소리가 나면 작동이 시작되고 손을 떼면 모터가 자동으로 움직이며 자세를 잡습니다. 

뾰족한 꼭지점을 대고 설 수 있지만 아직 완성이 되지 않은 관계로 그렇게 설 수는 없습니다.

부팅시 영상처럼 모서리를 대고 1축만 사용하면 자동으로 1축만 이용해서 자세를 잡도록 되어 있습니다. 

 

 

 

 

처음 조립시에는 거의 서질 못해서 현재는 각 휠의 무게를 늘려 놓은 상태입니다. 

18650* 3개로 조립을 했는데 전압도 좀 부족한 것 같아 전선을 연결해 15~16V 정도로 테스트했더니 그나마 위의 영상처럼 서기 시작했습니다.

튜닝을 좀 해야 하는데 생각같아서는 설계를 처음부터 다시 좀 다듬을까 싶기도 해서 약간 고민이네요. 

728x90
728x90

하드웨어 테스트는 끝났으니 이제 소프트웨어를 시작해 봅니다. 

조립하고 USB 케이블을 연결했습니다

 

 

 

 

 

 

https://www.youtube.com/watch?v=AJQZFHJzwt4 

제작자가 이 동영상 8:29 부터 코드에 대해 설명하고 있습니다

 

 

 

**맨 아래 [변경사항]을 확인하고 읽어주세요. **

동영상의 코드 설명은 여기에 있는 코드와 다른 부분이 있습니다.

 

 

보드 세팅은 ESP32 Dev Module로 하면 됩니다

 

 

 

 

 

1. 전압 세팅

 

처음은 전압 세팅을 조정하라는군요.

funtions.ino의 129번 라인의 Serial.print의 주석을 지워줍니다. 

 

 

 

 

 

 

그리고 코드를 업로드후 시리얼 모니터에서 115200보드레이트로 설정하면 전압 측정결과가 나옵니다. 

 

 

 

 

 

 

 

실제 측정결과는 11.68v 인데 15.45v 정도가 나왔으므로 오차가 심하군요.

 

 

기본값은 ESP32_cube.ino의 105번 라인에

battVoltage((double)analogRead(VBAT) / 207)

이렇게 207로 되어 있으므로 보정해 줘야 합니다. 

 

 

analogRead / 207 = 15.45 (시리얼 출력값)

analogRead / X = 11.68 (실제 출력값)

 

즉 analogRead = 15.45*207

15.45*207 / 11.68 = X 가 되겠네요

계산하면 X = 274 가 됩니다. 

 

이렇게 해도 낮은 전압에선 오차가 또 나게 되는데 저는 낮은 전압 기준으로 맞췄습니다. 

그래서 263 을 집어넣었습니다. 

 

 

 

 

 

2. 가속도계 튜닝

 

 

시작부터 제작자 설명과 다른 부분이 약간 있습니다. 

제가 받은 코드에는 SerialBT.print로 시작되는 두 줄 중에서 위쪽의 robot_angleX 를 출력하는 부분이 없더군요,.

해당 부분 코드를 작성해 주었습니다. 

그리고 아래쪽에도 주석을 추가합니다.

 

 

 

 

추가로 비프음이 그치지 않아 확인해 보니 BUZZER 의 HIGH/LOW가 반대로 되어 있어서 전부 고쳐주었습니다. 

 

 

 

 

 

 

동영상에서는 코드의 일부 주석을 제거 후 업로드 후 블루투스로 연결하라고 합니다

 

 

 

 

 

 

블루투스를 검색해 보면 ESP32-Cube-blue가 뜹니다.

 

 

 

 

 

블루투스를 추가하고 시리얼 포트를 보면 원래 연결되었던 COM16 외에도

COM17과 COM18이 추가된 것을 볼 수 있습니다. 

 

 

 

 

 

 

 

처음에는 꼭지점으로 균형을 잡도록 세워주고, 이때 터미널의 센서값을 확인했습니다.

근데 이러면 안 되더군요

무게중심을 잡은 채로의 센서값을 체크해야 합니다.

그냥 45도로 세워놓는다고 무게중심이 완벽하게 잡히진 않습니다.

때문에 손으로 세밀하게 잡고 움직이지 않도록 주의하면서 센서값을 체크합니다. 

 

 

 

 

 

 

 

 

 

 

되도록이면 평균값을 구하는 게 좋겠죠?

값을 전부 더한 다음 항목수로 나누면 되겠네요

 

 

 

 

 

 

 

 

 

 

인공지능의 힘을 빌려봅니다. 
자료를 너무 많이 넣으면 해석을 못 한다고 징징대길래 많이 줄였더니 금방 평균값을 알려주네요

하지만 수기로 다시 계산해보니 값이 틀렸더라고요;;

한 10개 이하로 줄였더니 정확하게 계산해 줍니다. 

 

 

 

 

 

동영상 대로ESP32.h에 offset값을 입력하려고 하니 아예 코드 자체가 다른 부분이 또 있네요

동영상을 만든 후 코드를 수정한 것 같은데 우측의 X1, Y1에 offsetX, offsetY를 입력했습니다. 

이후에도 약간식 다른 부분이 있어서 제대로 유튜브 설명을 따라하기 힘들었습니다. 

 

 

 

 

 

 

 

 

[변경사항]

 

코드를 계속 수정해 보다가 그냥 동영상에서 나왔던 코드를 찾기로 합니다. 

기존 커밋을 클릭해서 확인해 봤습니다. 

 

 

 

 

 

 

확인해 보니 2022년 7월 12일 이전 코드인 것 같더군요.

browse를 눌러 예전 소스를 다시 다운받고 이걸 사용하기로 했습니다. 

 

 

 

728x90
728x90

 

다시 한번 말하지만 저는 ESP8266 보드를 사용하는 관계로 
https://www.instructables.com/Get-Started-With-ESP8266-NodeMCU-Lolin-V3/

 

Get Started With ESP8266 (NodeMCU Lolin V3)

Get Started With ESP8266 (NodeMCU Lolin V3): Component Required: ESP8266 (NodeMCU Lolin V3) Micro USB Arduino IDE Internet connection NodeMCU lolin V3 Feature: Open-source Status LED MicroUSB port Interactive and Programmable Low cost ESP8266 with inbuilt

www.instructables.com

이 링크를 참조해 스케치를 업로드 해야 합니다 .

 

 

 

 

일단 핀 번호만 수정한 스케치를 올려 보면 위와 같이 BluetoothSerial.h 가 없다는 에러가 나옵니다. 

 

 

코드를 훑어보니 ESP32.h에서 블루투스시리얼로 기본튜닝을 하게 되어있더군요.

그리고 제가 사용한 ESP3266은 블루투스가 없습니다;;

결국 원본대로 다시 제작하기로 합니다. 

 

국내 판매가가 2배 가까이 비싸서 알리산으로 구매했습니다. 

도착하면 납땜부터 전부 다시 해야겠네요.

이런 뻘짓을 하지 않으려면 코드부터 잘 확인해야 겠습니다.

 

 

 

 

 

새 보드를 만듭니다. 

 

 

 

 

 

 

 

충동적으로 원작자 설계와 다르게 가속도계를 밑으로 넣어버렸는데요. 

확신없이 그냥 저질렀는데 괜찮을 지 모르겠습니다. 

 

 

 

 

 

 

일단은 납땜 완료. 

 

 

 

 

 

 

 

 

제작자는 친절하게도 모터 테스트 스케치를 준비해 뒀습니다.

올려보니 모터가 1개밖에 안 도는군요. 

 

 

 

 

 

제가 납땜 실수한 게 하나 있었고, 케이블 불량이 하나 있었습니다.  

 

 

 

 

 

 

 

수리하고 나니 잘 돌기 시작합니다. 

728x90
728x90

일단 제작자와 다른 보드를 사용했기 때문에 모든 선을 체크해가면서 조심히 납땜합니다. 

 

 

 

 

 

 

이 회로에서 제작자가 설명해 놓지 않은 부분이라 첨언을 하면
회로도에서 피에조 스피커는 '능동형 부저' 타잎입니다. 

전원만 인가하면 소리가 나는 물건이죠. 

스위치 회로로 PNP 트랜지스터를 사용하는데 일반 범용 PNP면 아무거나 가능합니다만

핀 순서가 맞는지 확인하고 납땜해야 합니다. 

제작자는 ECB 형식으로 회로도를 그려 놨습니다만

제가 사용한 2N2907은 EBC 순서라서 그에 맞춰 연결했습니다. 

 

 

 

 

배터리는 제작자가 3S 1P 리튬이온 배터리를 사용했다고 하니 

일반적인 리튬이온 배터리를 3직렬 연결해서 사용하면 됩니다. 

저는 18650 3개를 쓸 생각입니다.

 

 

 

 

 

바꾼 보드에 맞춰 코드도 수정을 해 줍니다. 

미리 잘 메모해두거나 미리미리 수정하지 않으면 나중에 낭패를 보게 됩니다. 

 

 

 

 

 

 

 

배선이 끝나면 배터리 홀더도 납땜해 줍니다. 

배터리 홀더가 배선을 덮어버리기에 차후 수정이 힘들어지므로 테스터로 일일이 연결을 확인해 두었습니다. 

 

 

 

 

 

 

 

 

생각해보니 전원 LED가 있어야 할 것 같아 추가했습니다. 

 

 

 

 

 

 

 

임시로 조립해봤습니다. 

설계할 때 실수했는지 조립하는 볼트 구멍 하나의 간격이 맞지 않아서 갈아내서 맞췄습니다. 

 

 

 

 

 

 

 

모터 커넥터와 간섭이 있어서 출력물도 일부 잘라냈습니다. 

 

 

 

 

 

 

 

실수가 있었네요.

모터 커넥터를 모터 반대쪽으로 납땜했습니다. 

그냥 연결해도 큰 문제는 없습니다. 

 

 

 

 

 

 

 

모터 커넥터 작업을 합니다. 

 

 

 

 

 

 

 

 

 

핀 번호는 왼쪽부터 1번입니다. 

 

 

 

 

 

 

 

 

 

 

 

커넥터를 반대면에 납땜하는 바람에 끼우기는 좀 불편하네요.

 

 

 

 

 

 

 

조립된 모습은 위와 같습니다. 한 변의 길이가 157mm 인 정육면체입니다. 

728x90
728x90

https://www.youtube.com/watch?v=AJQZFHJzwt4 

어느날 유튜브를 보다 보니 이런 게 보였습니다. 

 

 

 

 

 

 

https://github.com/remrc/Self-Balancing-Cube

 

GitHub - remrc/Self-Balancing-Cube

Contribute to remrc/Self-Balancing-Cube development by creating an account on GitHub.

github.com

소스 코드와 모든 설계 파일은 GitHub에 있습니다. 

코드와 파일을 보니 비교적 쉽게 따라할 수 있을 것 같더군요.

 

 

 

 

 

 

 

 

 

 

하지만 조립 방식은 마음에 들지 않아 Fusion360에서 다시 설계했습니다. 

한동안 Fusion360과 Solidworks를 계속 왔다갔다 했는데,

여전히 퓨전의 Joint 기능은 솔리드웍스의 메이트에 비해 사용하기 불편하고 직관적으로 이해가 가질 않네요. 

 

 

 

 

 

 

 

 

 

원래의 핀 배치도는 위와 같습니다

아두이노 나노 버전도 있지만 ESP32 보드를 사용하는 게 아무래도 더 안정적이지 않을까 합니다.

 

 

 

 

 

 

 

 

사놓고 쓰지 않아 악성재고가 되고 있는 ESP8266 (NodeMCU Lolin V3) 보드가 있으니 이걸 쓰기로 합니다. 

 

 

 

 

 

 

 

 

핀 갯수를 확인해서 ESP32 보드 대신 ESP3266 보드를 사용할 수 있을 지 체크해봅니다. 

제작자가 사용한 핀은 

Buzzer(27) - digital out

Vbat(34) - analogread

brake(26) - digital out
3개의 PWM 핀(32, 25, 18)

3개의 DIR 핀(4, 15, 5)

이외에 SDA(D21) / SCL(D22)

이상의 11개 핀이 필수로 필요합니다. 

 

추가로 7핀은 연결은 해 놓고 현재는 사용하지 않는 핀입니다. 

추후 업데이트 예정이라는군요.

 

 

 

 

 

 

핀의 갯수를 세어보니 정확하게 18개의 핀을 사용 가능합니다. 

 

 

 

 

 

https://www.instructables.com/Get-Started-With-ESP8266-NodeMCU-Lolin-V3/

 

Get Started With ESP8266 (NodeMCU Lolin V3)

Get Started With ESP8266 (NodeMCU Lolin V3): Component Required: ESP8266 (NodeMCU Lolin V3) Micro USB Arduino IDE Internet connection NodeMCU lolin V3 Feature: Open-source Status LED MicroUSB port Interactive and Programmable Low cost ESP8266 with inbuilt

www.instructables.com

오랫만이라 스케치 업로드를 어떻게 하는지 다시 한번 확인해 봤습니다. 

 

 

 

 

 

다른 건 없고 핀 번호 지정할 때 D4 식으로 정확하게 써야 하는군요. 

 

 

 

 

 

 

업로드&실행이 정상적으로 되는 것을 확인했습니다. 

 

 

 

 

 

 

728x90
728x90

각종 전원과 충전과 전자기기들을 항시 사용하다 보니 USB 케이블이 책상에 항상 굴러다닙니다

하나로 통일할 수도 없는 게 micro 단자와 mini B 단자와 C 단자를 모두 사용하는데다 가끔은 usb pd 충전도 해야 합니다. 

 

 

 

 

 

 

 

이런 걸 사서 정리해볼 시도를 해 봤습니다만 깔끔하게 선이 멈추질 않습니다. 

지멋대로 다시 끌어당기고 길이도 살짝 부족하고 해서 불편합니다. 

좀 더 비싼 제품을 마트에서 구매해 봤으나 크게 다를 게 없더군요.

 

뭔가 모터로 자동으로 선을 감아주는 그런 제품은 없을까 하고 한참 찾아봤으나 

산업용 제품에나 있을까 말까 하고 이런 작은 제품에는 적용되는 건 없었습니다. 

 

 

 

 

직접 만들어볼까 하고 구상을 한지가 한참 되었네요. 

가능은 할 것 같은데 아이디어만 대충 추려놓고 한참 시간이 지나니 슬슬 헷갈리기도 해서 

그림으로 좀 정리를 해 봤습니다. 

 

1.케이블 릴이 위쪽에 있을 때는 기어가 맞물리지 않아 그냥 케이블을 당길 수 있고

2.위쪽의 버튼을 누르면 아래로 내려오면서 모터 기어와 맞물리게 됩니다. 

이때 스프링의 힘으로 아래 기어에 걸리게 되죠. 

그리고 동시에 고정 암이 전기 스위치를 누릅니다. 

3.그러면 모터가 작동하고, 케이블을 당기게 됩니다. 

4.케이블이 다 당겨지면 모터가 케이블 릴 자체를 위로 밀어올리게 되어 스위치가 해제되고

 다시 케이블 릴은 자유 상태가 됩니다. 

 

세세한 치수를 조정하고 스프링의 힘과 기어비 등 삽질해야 할 부분이 엄청 많이 보이기 때문에 

금방 완성되지는 않을 것 같습니다. 

 

 

 

 

728x90

'Making > USB 오토릴' 카테고리의 다른 글

USB 오토릴 #4 - PCB 제작.  (0) 2023.08.24
728x90

최근 페북에서 모 제품을 추천하시길래 한번 보니 제가 단골로 구경하는 셀러의 제품이었습니다. 

https://ko.aliexpress.com/store/409890

 

https://ko.aliexpress.com/store/409890

 

ko.aliexpress.com

가끔씩 기회만 되면 추천하던 이 셀러에 대해 이야기를 해야겠네요. 

이 셀러는 약간 보통 모터와 센서 기타 전자 제품의 고물상이라고 할 수 있는 셀러입니다. 

대부분 물건이 정식 유통과정에서 나왔다기 보다는 속칭 "땡처리" 물품 같은 느낌인데요. 

그러다 보니 제품 질은 정상이면서 가격은 상당히 저렴한 편입니다. 

 

 

예를 들면 이 셀러가 소개하는 로봇청소기의 Lidar 부품을 보죠.

설명을 최대한 써 놓긴 하지만 중국어라 번역기의 도움을 받아야 합니다. 

2색 랜덤배송이라 하네요. 

 

 

상품 설명을 보면 사진도 굉장히 세밀하게 여러 장을 찍어 보여주고, 분해해서 내부 칩셋까지 전부 까줍니다. 

이 제품의 모델명은 LDS02RR 이군요. 

 

구글링을 해보니 로보락 S50시리즈에 사용하는 라이다 센서고요. 

알리 가격은 최저 6.2만에서 시작하는데요. 

이 판매자는 이 제품을 배송비 포함해서 1.3만에 팔고 있습니다. 

 

물론 새 제품과 가격 차이가 거의 없는 제품도 있고 많은 물건이 전용 제품이라 다른 데 사용하기가 애매하기도 합니다. 

셀러가 최대한 열심히 설명해놓긴 했지만 어떻게 사용해야 할 지 알기 어려운 제품도 많고요. 

 

그래도 가끔씩 보물을 발견하는 재미가 있고 이런 물건이 이 가격에?? 하게 되는 물건이 많으니 구경해보시길 추천드립니다. 

728x90
728x90

프로그램을 하다 보니 모터의 기어비를 정확하게 알아두는 게 좋겠더군요. 

하지만 알리의 N20모터 판매자들은 전부 기어비를 정확하게 명시하지 않고 RPM으로만 적어두고 있습니다. 

RPM 정도는 전압만 바꿔도 엄청 차이나겠죠. 

 

 

 

 

 

 

 

갖고 있는 N20 모터들이 많다보니 이걸 좀 깔끔하게 정리하고 싶다는 생각이 들더군요. 

 

 

 

 

 

 

 

생각해 보니 이 모터의 기어박스들은 전부 깔끔하게 떨어지고 서로 호환이 가능합니다. 

그러면 기어박스의 기어비만 따로 측정해서 분류하고

모터들은 모터들끼리 분류해 놓으면 원하는 스펙을 맞춰서 사용할 수 있겠다는 생각이 들었습니다. 

 

 

 

이렇게 기어끼리 따로 분리를 해 놓고 남은 모터들에 대해선데요

 

모터 분류가 좀 애매한데, 이것도 여러 회사에서 만드는 것인지 잘 뜯어보면 디테일이 약간씩 다릅니다. 

어쨋건 저항을 재 보면 

3V 모터는 18~20ohm

6V 모터는 7~10ohm

12V 모터는 23~32ohm 

정도로 나옵니다.

3v 모터와 12v 모터의 저항값이 겹치는 부분이 있는데

실제 전원을 연결해 보면 알 수 있기도 하고 라벨을 달아서 따로 보관하려고 합니다 .

 

 

 

 

그리고 이제 기어비를 측정하기 위한 장치를 만들어 줍니다. 

엔코더가 달린 N20 모터를 달아줬습니다. 모터의 1회전마다 엔코더는 12번의 신호를 발생시킵니다.

 

 

 

 

 

 

 

그리고 이렇게 기어축에 센서를 달아서 최종기어의 1회전시 모터가 몇 회전했는지를 체크하면 기어비를 알 수 있겠죠. 

728x90
728x90

지난번 포스팅에 이어 역시나 수정사항이 또 있었지만;

 

그래도 이번엔 최종완성본이라 할 만한 물건이 나왔습니다. 

 

 

 

 

아두이노에서 5V 전원을 따오려면 별도로 납땜을 해야 합니다

사진의 빨간 전선 부분이 그 부분이고요.

 

 

 

 

 

 

 

이렇게 조립을 하면 OLED 부분이 위로 튀어나오는데

조립시에 저 부분이 케이스 안으로 들어가도록 설계하는게 힘들었습니다. 

 

 

 

 

 

 

 

 

 

동작 모습입니다. 

 

 

728x90
728x90

 

 

 

 

 

 

 

메인 프린터를 프루사에서 자작 보론으로 바꿨더니 수정사항이 또 쏟아지는군요.

크게 수정할 부분은 없고 깨작깨작 0.2mm 바꿨다가 0.5mm 바꿨다가의 반복입니다. 

 

 

 

 

이 와중에 또 설계미스가 발견되어 새 PCB 주문..

그래도 정말 이번은 [정말_진짜_최종_수정]  이라 믿어봅니다. 

 

 

728x90
728x90

미세조정을 위해 가출력해봤습니다. 

중고로 저렴하게 산 필라멘트 들로 출력을 했더니 색깔이 알록달록 하네요

 

 

 

 

 

 

 

그립감은 괜찮은 듯 하군요

 

 

 

 

 

 

프로그램 업로드를 위해 임시로 옆면에 길게 슬롯을 내 줬습니다

 

 

 

 

 

 

 

출력물의 오차 때문에 수치를 어느 정도 감안해서 설계를 하는데,

작은 물체는 오차가 심해져서 딱 맞도록 조정하는 데 여러 번 수정해야 합니다. 

며칠 간의 수정 끝에 만족할 만 하게 나왔지만 크기는 다소 커졌습니다. 

 

 

 

 

 

 

큰 덩어리의 설계는 거의 다 된 것 같습니다. 나머지는 SW와 병행해서 진행해야 할 듯. 

 

 

 

728x90
728x90

지난번 포스팅 이후 2번의 수정이 있었습니다. PCB 주문만 몇 번을 하는지 모르겠네요

전면부의 스위치 보드와 후면의 컨트롤 보드가 연결되는 형식입니다. 

 

 

 

 

 

 

두께를 최대한 얇게 해야 손잡이 부분이 잡기 쉬울 것 같아서 아두이노를 온보드로 올렸습니다. 

업로드 핀을 잘못 지정해서 점퍼를 날렸습니다. 

 

 

 

 

 

 

 

최대한 얇게 다듬었더니 전보다는 좀 보기 좋군요. 
이제 출력해가면서 맞춰봐야겠습니다. 

 

 

728x90
728x90

https://pashiran.tistory.com/category/%5B%EC%99%84%EB%A3%8C%5DArduino%20Projects/Smart%20Fan%20Controller

 

'[완료]Arduino Projects/Smart Fan Controller' 카테고리의 글 목록

뭐든지 뜯고 만들고 수리하고 개조하고 업그레이드하고 공부합니다.

pashiran.tistory.com

예전에 만들었던 팬 컨트롤러를 마침 다 소비했더군요. 
PCB를 새로 주문하면서 스텐실도 같이 주문해서 테스트해보기로 했습니다. 

 

 

 

 

스텐실에 이름표를 붙여 두었습니다. 윗면을 표시하는 용도이기도 합니다. 

 

 

 

 

 

 

 

칩(Attiny85)마다 프로그램을 올리기 위한 준비를 합니다. 

 

 

 

 

 

 

 

1개만 손으로 납땜 후 정상동작하는지 확인해봤습니다. 

 

 

 

 

 

이제 나머지 칩들에도 업로드를 해줍니다.  

 

 

 

 

 

요렇게 크림납을 올립니다. 

 

 

 

 

 

 

 

스텐실을 떼어보니 예쁘게 잘 되었군요. 

 

 

 

 

 

 

이제 핀셋으로 부품들을 하나하나 올려줍니다.  다이오드는 따로 납땜 예정입니다. 

이것도 은근히 시간이 많이 걸리네요. 

 

 

 

 

 

 

 

 

원래 예열과정과 솔더 과정 등을 포함한 온도 프로파일을 작성해서 작동시켜야 합니다

그렇지만 그냥 200도 정도 세팅해놓고 올려놓아도 잘 되긴 하는군요. 

 

 

 

 

한동안은 재고가 충분할듯 합니다. 

728x90
728x90

리플로우 스테이션에 관한 지난 포스트가 2021년 4월 말이니 1년 2개월에 가까운 시간이 지났군요.

이렇게 오랜 시간이 지난 이유는 딱 하나, PID 세팅이 잡히지 않았기 때문인데요.

 

세팅값을 잡는 데 몇가지 문제가 있었습니다. 

일단 처음에는 아두이노 자체의 시리얼 플로터로 값을 확인하려 했지만

기능이 너무 단순해서 그래프를 제대로 보기 어려웠습니다.

 

찾아보니 PLX-DAQ 라는 액셀 기반 프로그램을 사용하면 시리얼로 들어온 값을 액셀에 기록하는 게 가능하더군요.

그리고 액셀의 차트 기능을 이용해서 그래프를 그렸습니다. 

 

 

그런데 아무리 튜닝을 해도 값이 잡히질 않더군요.

전체적으로 가열하는 시간과 온도값을 기록하는 시간과 식히는 시간까지 더해서 상당한 시간이 걸립니다. 

이걸 몇번만 하면 하루가 날아가고요. 

틈날 때마다 수십번을 튜닝해도 안되더군요.

 

 

그래서 다시 회로도를 훑었습니다. 

출력 핀을 PWM 으로 설정해 놓고는 연결은 A0 핀으로 해놨더군요.

몇달 간의  고생이 이걸로 끝나는구나 하고 신이 나서 수정후 다시 확인했습니다. 

 

 

 

 

 

 

여전히 안되네요.

 

 

결국 PID 컨트롤을 포기하고 온도차에 따라 PWM 값을 조절해서 근사값을 맞춰볼까 하는 생각을 했습니다. 

그래서 PWM 을 10 단위로 올려보면서 온도가 얼마나 상승하는지 측정을 해봤습니다. 

결과는 생각보다 PWM 값에 비례해서 온도 상승이 이뤄지질 않더군요.

 

혹시 SSR의 스위칭 속도가 PWM 주파수에 대응하지 못 하는 것이 아닐까? 하는 의문이 들었습니다.

https://www.electronicwings.com/users/sanketmallawat91/projects/215/frequency-changing-of-pwm-pins-of-arduino-uno#:~:text=in%20many%20applications.-,PWM%20is%20used%20by%20using%20function%20like%20%22analog%20Write%22.,a%20simple%20line%20of%20code%E2%80%9D.

 

Frequency changing of pwm pins of arduino uno | project

PWM is used by using function like "analog Write". With this function although width of the PWM cycle(Duty Cycle) can be changes but frequency remains constant. We can update this default Arduino PWM frequency to a value as high as 65Khz and as low as 30Hz

www.electronicwings.com

arduino pwm frequency change로 검색을 해 봤더니 오래전에 smart fan controller 를 만들었을 때 봤던 것들이 나오더군요.

그때는 스위칭 소음을 줄이느라 주파수를 높였는데 이번에는 반대로 주파수를 최대한 낮춰 30Hz로 설정해봤습니다. 

 

 

 

 

 

 

 

 

몇번의 튜닝끝에 환상적인 결과가 나왔네요.

이제 겨우 기본적인 작동만 성공했지만 1년동안 답답하게 진도가 안 나가던 문제를 해결하니 속이 시원하군요

 

 

 

 

 

728x90
728x90

엔코더가 달린 모터를 사용하고 있으므로 위치의 정밀 제어를 할 수 있습니다. 

모터는 기어드 DC 모터라서 모터가 정지할때 정위치에 정지하는게 아니라 관성회전하면서 멈추는 상황이죠. 

이를 PID 제어로 정확하게 정위치에 멈추도록 제어할 수 있습니다. 

 

 

 

 

 

 

하지만 게인값을 아무리 바꿔봐도 계속 왔다갔다 하면서 제어가 안되네요. 

게인값을 수정하면 좀 변화라도 있어야 하는데 전혀 변화가 없는 느낌입니다. 

 

 

 

 

 

 

 

 

 

정/역회전을 반복하면 리셋되는 문제가 있어서 테스트보드를 다시 만들어서 테스트해보는 중입니다. 

여러모로 확인해 본 결과 전원부와 모터 역기전력만 막아주면 괜찮을 듯 하네요. 

그리고 PID 제어는 빼고 ON-OFF 로만 해도 문제 없을 것 같습니다. 

주사기를 누르는 부하가 브레이크가 되는지라 오차값 이내에서 거의 정확하게 멈추네요. 

오히려 PID 제어를 넣을 경우 목표값 근처에서 pwm 출력을 줄이므로

목표값에 다다를 때쯤 모터 제어가 급하게 변경되면서 제자리를 찾기가 힘들어지는 것 같습니다. 

 

 

 

 

 

 

전체 구조가 너무 굵고 못생긴데다 손에 잡히는 느낌도 안 좋습니다. 

구조를 변경하면서 하드웨어를 전부 재설계하기로 하고 새 PCB를 주문했습니다. 

새 PCB가 오면 기구설계를 다시 진행하겠습니다. 

728x90
728x90

 

Aaron Kramer 라는 작가가 만든 Selfie Machine 이라는 작품입니다. 

2:15초에 보면 하나하나 점을 찍어서 캠을 설계하고 이후에도 수정한 부분이 매우 많은 것을 볼 수 있습니다.

이걸 보고 캠(cam)의 작동으로 동작을 만드는 구조에  대해 좀 고민을 하게 되더군요.

 

 

 

 

 

 

이런 오토마타를 만드는 경우 동작을 하나하나 역산해 캠을 설계한다는 것은 엄청 복잡합니다. 

그렇다면 애초에 동작이 그대로 캠에 그려지도록 하면 되지 않을까? 하는 생각이 들었습니다. 

 

 

 

 

고민을 좀 해봤습니다.

 

 

 

 

 

 

고민해도 답이 나오지 않아 테스트베드를 만들었습니다. 

 

 

 

 

 

 

 

 

첫번째 기본 설계안은 이렇습니다. 

링크 구조는 단순하지만 캠의 크기를 최대한 줄이려다 보니 고민할게 많더군요.

 

 

 

 

728x90
728x90

1번부터 복잡해지는 순서대로 4개의 모듈이 있습니다. 

현재 만들고 있는것은 2번 Mini Mechanica 입니다. 

그나마 간단하지만 색깔별로 나눠서 0.1mm layer로 쌓다보니 출력시간이 한참 걸리네요

 

 

 

 

 

 

 

PETG로 만든 태엽이 들어갑니다. 

 

 

 

 

 

 

 

 

 

금색 실크 PLA는 아무리 봐도 그냥 노란색입니다. 

전체적으로 색이 옅어서 마음에 좀 안듭니다만 이미 산 건 어쩔 수 없죠.

 

 

 

 

 

 

 

이 모듈을 3개 만들고 나서 다음 버전으로 넘어갈 생각입니다. 

 

 

728x90

'Making > 3D 출력 뚜르비옹' 카테고리의 다른 글

뚜르비옹 출력과 제작.  (0) 2021.06.01
728x90

제작과정 사진은 딱히 없습니다.

일단 테스트삼아 출력해보자 했는데 어쩌다보니 다 조립하게됐고 심지어 잘 돌아가는군요. 

0.3mm 노즐 권장이지만 0.4mm노즐에 0.1mm레이어로 출력했습니다. 

 

 

 

 

 

제일 손이 가는 부분은 철심 자르는 부분이 아닐까 싶습니다. 

 

 

 

 

 

잘 돌아갑니다. 재깍재깍 소리가 흥겨워서 계속 돌리게 되네요

 

 

728x90

'Making > 3D 출력 뚜르비옹' 카테고리의 다른 글

Mini Mechanica 뚜르비옹  (0) 2021.06.08
728x90

 

 

PID 세팅으로 대충 되겠지 하고 생각했는데 오산이었네요. (150도 세팅)

하루종일 삽질해서 저게 그나마 제일 편차가 적게 나온 그래프입니다. 

 

3D 프린터에서는 오토튜닝이 있어서 Kp,Ki,Kd 값을 쉽게 구할 수 있기 때문에 당연히 그럴 줄 알았는데

의외로 대부분의 PID 라이브러리에는 그런 기능이 없어 직접 튜닝을 해야 하더군요. 

 

 

 

 

 

큰 알루미늄 블럭을 가열하는거라 세팅하고 다시 식히고 세팅하고 식히는 시간이 오래걸려 얼음으로 온도를 내리는 중입니다. 

 

이 짓을 하루종일 했는데 도저히 튜닝값이 깔끔하게 안 잡히네요 

 

 

 

 

 

 

 

void PID_autotune(float temp, int extruder, int ncycles)
{
  float input = 0.0;
  int cycles=0;
  bool heating = true;

  unsigned long temp_millis = millis();
  unsigned long t1=temp_millis;
  unsigned long t2=temp_millis;
  long t_high = 0;
  long t_low = 0;

  long bias, d;
  float Ku, Tu;
  float Kp, Ki, Kd;
  float max = 0, min = 10000;

#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
    (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
    (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
  unsigned long extruder_autofan_last_check = millis();
#endif

  if ((extruder >= EXTRUDERS)
  #if (TEMP_BED_PIN <= -1)
       ||(extruder < 0)
  #endif
       ){
          SERIAL_ECHOLN("PID Autotune failed. Bad extruder number.");
          return;
        }
	
  SERIAL_ECHOLN("PID Autotune start");
  
  disable_heater(); // switch off all heaters.

  if (extruder<0)
  {
     soft_pwm_bed = (MAX_BED_POWER)/2;
     bias = d = (MAX_BED_POWER)/2;
   }
   else
   {
     soft_pwm[extruder] = (PID_MAX)/2;
     bias = d = (PID_MAX)/2;
  }




 for(;;) {

    if(temp_meas_ready == true) { // temp sample ready
      updateTemperaturesFromRawValues();

      input = (extruder<0)?current_temperature_bed:current_temperature[extruder];

      max=max(max,input);
      min=min(min,input);

      #if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
          (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
          (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
      if(millis() - extruder_autofan_last_check > 2500) {
        checkExtruderAutoFans();
        extruder_autofan_last_check = millis();
      }
      #endif

      if(heating == true && input > temp) {
        if(millis() - t2 > 5000) { 
          heating=false;
          if (extruder<0)
            soft_pwm_bed = (bias - d) >> 1;
          else
            soft_pwm[extruder] = (bias - d) >> 1;
          t1=millis();
          t_high=t1 - t2;
          max=temp;
        }
      }
      if(heating == false && input < temp) {
        if(millis() - t1 > 5000) {
          heating=true;
          t2=millis();
          t_low=t2 - t1;
          if(cycles > 0) {
            bias += (d*(t_high - t_low))/(t_low + t_high);
            bias = constrain(bias, 20 ,(extruder<0?(MAX_BED_POWER):(PID_MAX))-20);
            if(bias > (extruder<0?(MAX_BED_POWER):(PID_MAX))/2) d = (extruder<0?(MAX_BED_POWER):(PID_MAX)) - 1 - bias;
            else d = bias;

            SERIAL_PROTOCOLPGM(" bias: "); SERIAL_PROTOCOL(bias);
            SERIAL_PROTOCOLPGM(" d: "); SERIAL_PROTOCOL(d);
            SERIAL_PROTOCOLPGM(" min: "); SERIAL_PROTOCOL(min);
            SERIAL_PROTOCOLPGM(" max: "); SERIAL_PROTOCOLLN(max);
            if(cycles > 2) {
              Ku = (4.0*d)/(3.14159*(max-min)/2.0);
              Tu = ((float)(t_low + t_high)/1000.0);
              SERIAL_PROTOCOLPGM(" Ku: "); SERIAL_PROTOCOL(Ku);
              SERIAL_PROTOCOLPGM(" Tu: "); SERIAL_PROTOCOLLN(Tu);
              Kp = 0.6*Ku;
              Ki = 2*Kp/Tu;
              Kd = Kp*Tu/8;
              SERIAL_PROTOCOLLNPGM(" Classic PID ");
              SERIAL_PROTOCOLPGM(" Kp: "); SERIAL_PROTOCOLLN(Kp);
              SERIAL_PROTOCOLPGM(" Ki: "); SERIAL_PROTOCOLLN(Ki);
              SERIAL_PROTOCOLPGM(" Kd: "); SERIAL_PROTOCOLLN(Kd);
              /*
              Kp = 0.33*Ku;
              Ki = Kp/Tu;
              Kd = Kp*Tu/3;
              SERIAL_PROTOCOLLNPGM(" Some overshoot ");
              SERIAL_PROTOCOLPGM(" Kp: "); SERIAL_PROTOCOLLN(Kp);
              SERIAL_PROTOCOLPGM(" Ki: "); SERIAL_PROTOCOLLN(Ki);
              SERIAL_PROTOCOLPGM(" Kd: "); SERIAL_PROTOCOLLN(Kd);
              Kp = 0.2*Ku;
              Ki = 2*Kp/Tu;
              Kd = Kp*Tu/3;
              SERIAL_PROTOCOLLNPGM(" No overshoot ");
              SERIAL_PROTOCOLPGM(" Kp: "); SERIAL_PROTOCOLLN(Kp);
              SERIAL_PROTOCOLPGM(" Ki: "); SERIAL_PROTOCOLLN(Ki);
              SERIAL_PROTOCOLPGM(" Kd: "); SERIAL_PROTOCOLLN(Kd);
              */
            }
          }
          if (extruder<0)
            soft_pwm_bed = (bias + d) >> 1;
          else
            soft_pwm[extruder] = (bias + d) >> 1;
          cycles++;
          min=temp;
        }
      } 
    }
    if(input > (temp + 20)) {
      SERIAL_PROTOCOLLNPGM("PID Autotune failed! Temperature too high");
      return;
    }
    if(millis() - temp_millis > 2000) {
      int p;
      if (extruder<0){
        p=soft_pwm_bed;       
        SERIAL_PROTOCOLPGM("ok B:");
      }else{
        p=soft_pwm[extruder];       
        SERIAL_PROTOCOLPGM("ok T:");
      }
			
      SERIAL_PROTOCOL(input);   
      SERIAL_PROTOCOLPGM(" @:");
      SERIAL_PROTOCOLLN(p);       

      temp_millis = millis();
    }
    if(((millis() - t1) + (millis() - t2)) > (10L*60L*1000L*2L)) {
      SERIAL_PROTOCOLLNPGM("PID Autotune failed! timeout");
      return;
    }
    if(cycles > ncycles) {
      SERIAL_PROTOCOLLNPGM("PID Autotune finished! Put the last Kp, Ki and Kd constants from above into Configuration.h");
      return;
    }
    lcd_update();
  }
}

Marlin 에서 PID autotuning 쪽 코드를 찾을 수 있지 않을까 싶어 뒤져보니 temperature.cpp 코드에 해당 부분이 있었습니다. 

이 코드를 분석해서 써먹을 수 있을지 공부해 봐야 겠습니다. 

728x90
728x90

이번 리플로우 스테이션 제작을 하면서 알게 된 것이지만 단순히 가열후 끝나는 것이 아니라 단계가 있더군요.

 

 

https://solder.tistory.com/135 

 

 

그래서 인터넷을 뒤져 기성품의 메뉴얼을 찾아봤습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

납의 성분비에 따라 여러가지 프로파일을 설정해 두고 쓸 수 있도록 되어 있네요. 

프로그래밍 할 때 참조해 두어야 할 것 같습니다. 

 

728x90

+ Recent posts