자작 필름 현상기 제어 프로그램 운전 화면, C-41 컬러 현상 단계 교반 중 수조·약품·수세수 온도와 설비 개략도

필름 현상기 만들기 2편, 약품을 기계가 넣고 빼기로 했다

1편에서는 약품을 사람이 직접 붓고 비우는 현상기로 설계 초안을 잡았다. 그 뒤로 설계를 두 번 더 검토했다. 가장 크게 바뀐 건 약품을 기계가 넣고 빼는 방식으로 돌아선 것이다.

부품은 여전히 하나도 사지 않았다. 대신 프로그램을 만들어 컴퓨터 속 가상 설비(시뮬레이터)에서 C-41, E-6, 흑백 공정을 끝까지 돌려 봤다. 이번 글은 그 기록이다.

약품을 기계가 넣고 빼기로 했다

1편의 방식대로라면 E-6 한 번에 약품 병 6개를 차례로 붓고 비워야 한다. 두 번째 검토에서 이 전제를 버렸다. 약품을 병에서 탱크로 보내고, 단계가 끝나면 빼내는 일까지 기계가 한다. 이걸 자동 급·배액이라고 부르기로 했다.

참고한 JOBO ATL-1000도 이렇게 움직인다. 온도를 맞춘 약품을 공기 압력으로 병에서 드럼까지 보내고, 단계 시간에 맞춰 넣고 뺀다(ATL-1000 사용설명서 PDF 4쪽). 같은 검토에서 두 가지를 더 정했다.

  • 현상 탱크는 JOBO 1500 계열을 기준으로 한다. 1520 탱크는 로터리 현상에 약품 240 ml가 든다.
  • 히터는 가정용 교류(AC) 전원을 쓰는 고출력 히터로 한다. 대신 누전차단기(30 mA 이하)와 기계식 과열 차단 스위치를 반드시 함께 단다.

다른 자동 현상기는 어떻게 하나

약품을 넣고 빼는 방법이 기계마다 달랐다. 웹에서 찾은 내용을 표로 정리했다. 제조사 자료, 언론 기사, 포럼 글이 섞여 있어서 원문과 다시 대조해 볼 필요가 있다.

기기약품 넣고 빼기회전·온도
Osiris F1자동 펌핑, 약품 분류, 약액 회수, 자동 세척(언론 기사). 펌프 형식은 공개 자료에서 찾지 못함2세대에 회전 속도 조절 추가. 20 °C 물이면 가열에 수 시간 걸린다는 사용자 글
Filmomat Classic탱크를 고정하고 커넥터로 약품이 드나듦. 쓴 약품은 저장 튜브로 되돌림릴만 20~50 rpm, 15초마다 반전, 650 W, 센서 2개
JOBO ATL 계열압축 공기로 드럼에 이송, 리프트 암이 올라가면 배액2500·2800 계열 75 rpm, 방향 전환 5초 이내, 제어 ±0.1 °C
JOBO CPA-2·CPP-2 + Lift깔때기로 붓고 레버를 돌려 호스로 배출. 회전 중에도 주입 가능약 75 rpm, 2바퀴마다 반전, 수조 18 L
OpenAutoLab (공개 자작)양방향 기어펌프와 밸브 6개, 약품은 병으로 되돌림, 무게로 양 측정드럼 대신 필름을 움직임, 기기 전체를 수조에 넣음
출처: JOBO ATL-1000·ATL-2 plus 설명서, JOBO CPA-2/CPP-2 사용설명서, 각 제조사·프로젝트 공개 자료, PetaPixel(2016), 사용자 포럼. 2026년 9월 26일 조사.

1편에서 풀지 못한 숫자가 여기서 나왔다. CPA-2/CPP-2 사용설명서에 회전 속도 ‘P’가 약 75 rpm이고 2바퀴마다 방향을 바꾼다고 적혀 있었다. 1500·2500·2800 계열 탱크에 쓰는 값이다. 이 값을 기본값으로 넣었다.

약품은 공기로 밀어 넣는다

병에서 탱크로 약품을 보내는 방법은 네 가지를 비교했다.

방식약품이 닿는 곳양 맞추기판단
공기 압력 이송(JOBO ATL 방식)병, 뚜껑, 튜브, 주입구만병에 미리 필요한 양만 담고 전부 보냄채택 후보
튜브 펌프(연동 펌프) 6개튜브만회전수보류. 완성품에 쓴 사례를 찾지 못함
양방향 기어펌프 + 밸브펌프, 밸브무게, 시간보류. 약품에 견디는 재질 부담
다이어프램 액체 펌프펌프, 밸브시간제외

공기 이송은 약품 병 뚜껑을 밀폐하고, 공기펌프로 병 안에 바람을 넣어 약품을 튜브로 밀어내는 방식이다. 약품이 펌프나 밸브를 지나지 않는다. 병마다 공기 밸브를 하나씩 달아 어느 병을 밀지 고른다. 병이 비었는지, 새는지, 막혔는지는 공기 압력으로 판단한다. 예를 들어 펌프를 켠 뒤 5초 안에 1.5 kPa까지 오르지 않으면 뚜껑이 새거나 병이 빈 것으로 본다. 이 숫자들은 설계 제안이고, 실제 부품으로 재서 다시 정해야 한다.

빼는 쪽은 탱크를 올려놓은 받침(틸트 크래들)을 기울여 쏟는 방식으로 잡았다. ATL은 리프트 암을 올리면 배액되고, CPP-2용 Jobo Lift도 레버를 돌려 약품을 쏟는다. JOBO 1520 탱크를 그대로 쓰면서 자동으로 넣고 빼는 방법으로는 조사한 범위에서 이 형태만 확인됐다.

쏟은 액체는 세 갈래로 나눈다. 수세 물은 하수로, 일반 폐액과 은이 섞인 폐액(정착액, 표백정착액)은 각각 다른 통으로 간다. 전동 볼밸브 두 개로 길을 바꾸는데, 제어 신호가 끊기면 은 폐액 통 쪽이 기본 길이 되게 했다. 하수로는 밸브에 전원이 들어갈 때만 열린다.

관 굵기도 계산해 봤다. 약품 관을 안지름 4 mm로 하면 초당 40 ml 보낼 때 저항이 약 52 kPa로 너무 커서 8 mm로 바꿨다. 배액 관도 8 mm로는 초당 60~73 ml 정도라 12 mm로 키웠다.

한 단계는 이렇게 흘러간다

  1. 배액 밸브를 이번 단계의 목적지로 먼저 돌려 둔다
  2. 탱크를 75 rpm, 2바퀴마다 방향을 바꾸며 돌린다
  3. 공기로 해당 병의 약품을 밀어 넣는다(약 10초)
  4. 정해진 시간 동안 계속 돌린다
  5. 배액에 걸리는 시간만큼 먼저 멈추고, 탱크를 기울여 쏟은 뒤 되돌린다(약 14초)
  6. 다음 단계로 넘어간다

단계 시간은 약품을 넣기 시작한 때부터 다 빼낸 때까지로 잡았다. 수세는 물을 넣고 15초 돌린 뒤 빼는 것을 반복한다. 약품 주입구로 매번 수세 물이 지나가서 주입구가 저절로 헹궈진다.

수조는 22 L, 히터는 1,200 W

1편은 “수조 크기부터 정해야 한다”로 끝났다. 병 6개, 탱크, 수세 물 통이 들어가도록 치수를 가정하고 계산하니 수조는 22.0 L가 나왔다. 이 물을 45분 안에 15 °C에서 41 °C까지 올리려면 1,123~1,270 W가 필요했다. 그래서 1,200 W 히터를 제안했다. 1편에서 처음 생각한 80 W의 열다섯 배다.

다만 45분이라는 목표 자체는 근거 문서가 없는 설계 가정이다. 비교하자면 CPA-2/CPP-2는 수조 18 L, 기기 전체 소비전력 480 W이고, 물을 20 °C에서 38 °C로 올리는 데 1시간 15분에서 1시간 30분이 걸린다고 적혀 있다.

C-41 냉간 시동 시뮬레이션 그래프, 수조·약품 기준 병·수세수 온도가 20 °C에서 38 °C로 오르는 과정
20 °C 물에서 출발한 C-41 예열. 약품이 36.0 °C보다 차가우면 수조를 41 °C까지 올리는 1편의 부스트 규칙이 들어가 있다. 가상 설비 값은 가정이라 실제 예열 시간 예측은 아니다.

그래프에서 수조(빨간 선)가 먼저 41 °C 가까이 올라가 약품 병(파란 선)을 끌어올린다. 약품이 목표 근처에 오면 수조 목표를 38 °C로 내린다. 약품과 수조가 둘 다 범위에 들어온 50.9분에 준비 완료가 떴다. 시작 조건을 두 온도 모두로 잡은 건 JOBO 설명서를 따른 것이다.

흑백은 여전히 숙제다. 컬러 현상 직후 38 °C 물로 흑백을 시작하면, 식히는 장치 없이는 120분이 지나도 수조 25.8 °C, 약품 26.4 °C에 머물렀다. 목표는 24.0 °C다. 수조 22 L, 실온 22 °C, 뚜껑 없음이라는 가정 아래 결과라 실제와는 다를 수 있지만, 냉각 수단은 따로 정해야 한다.

제어를 둘로 나눴다

1편은 ESP32 보드 하나로 모든 걸 하려 했다. 약품 병 6개와 밸브, 펌프가 붙으니 레시피 편집, 온도 보정, 기록 화면까지 작은 보드와 20×4 문자 LCD로 감당하기 어려웠다. 그래서 역할을 나눴다.

  • ESP32: 히터 온도 제어, 모터 펄스, 밸브, 안전 감시처럼 한순간도 늦으면 안 되는 일
  • 라즈베리파이 5: 레시피, 공정 순서, 화면, 기록. 프로그램은 파이썬과 PySide6로 만든다

라즈베리파이가 멈춰도 ESP32가 3초 안에 히터와 약품 이송을 끈다. 처음 시험할 때는 라즈베리파이 대신 맥을 연결해서 쓴다.

자작 필름 현상기 제어 프로그램 운전 화면, C-41 컬러 현상 단계 교반 중 수조·약품·수세수 온도와 설비 개략도
운전 화면. 왼쪽은 수조·약품·수세수 온도, 가운데는 병과 밸브, 탱크 상태, 오른쪽은 단계별 남은 시간이다. 시뮬레이터로 돌린 화면이다.
자작 필름 현상기 제어 프로그램 경보 화면, 보틀 2 공기 압력 미달로 재시도·건너뛰기·중단 선택 요청
2번 병 뚜껑이 새는 상황을 일부러 넣어 본 화면. 한 번 자동으로 다시 시도한 뒤, 계속할지 멈출지 사람에게 묻는다.

가상 설비로 돌려 본 결과

시뮬레이터는 열, 공기 압력, 배액, 밸브가 움직이는 시간, 탱크 속 약품 농도까지 흉내 내게 만들었다. 약품 240 ml, 예열은 생략한 조건이다.

레시피프로그램 시간실제 걸린 시간하수로 간 약품
C-41 2욕 표준18분 15초18분 14초0 ml
C-41 3욕20분 15초20분 13초0 ml
E-6 6욕 표준32분 30초32분 26초0 ml
흑백 5분 현상27분26분 56초0 ml
레시피 시간은 JOBO ATL-1000 표준 프로그램(#1, #6, #7, #9)을 가져왔다. 단계별 오차는 최대 0.8초였다.

일부러 고장도 14가지 넣어 봤다. 뚜껑 누설, 튜브 막힘, 빈 병, 탱크 기울이는 장치 고착, 통신 끊김, 비상정지, 히터 단선, 폐액 통 가득 참 같은 것들이다. 전부 안전하게 멈추거나 스스로 복구했고, 약품이 하수로 간 경우는 없었다. 탱크에 약품이 남은 채 멈춘 경우는 손으로 빼내는 절차를 설명서에 적었다.

프로그램 검사는 자동 시험 79개를 모두 통과했다. ESP32 코드는 이번에도 컴파일까지만 확인했다. 실제 보드에서는 아직 돌려 보지 않았다.

따로 검토받고 고친 것

설계를 만든 쪽과 별개로 처음부터 다시 훑어보는 검토를 한 번 거쳤다. 지적이 26건 나왔고, 그중 셋은 치명적이었다.

  • 약품이 하수로 가는 길: 배액 목적지를 비워 둔 레시피가 현상액 243 ml를 하수로 보냈다. 이제는 공정을 시작할 때 막히고, 약품이 탱크에 들어간 뒤에는 하수 배액을 거부한다.
  • 보드가 멈췄을 때: ESP32 프로그램이 멈추면 2초 안에 보드가 재부팅되고 히터 신호가 꺼지도록 감시 장치(워치독)를 넣었다.
  • 방향 바꾸는 시간: 모터 가속을 약하게 잡아서 방향 전환에 5.81초가 걸렸다. JOBO 설명서의 5초 이내 조건을 넘는다. 가속을 올려 2.28초로 줄였다. 이 가속에서 롤러가 미끄러지지 않는지는 실물로 확인해야 한다.

26건 중 16건은 고쳤고, 3건은 문서에 반영했고, 7건은 실측이나 부품 확인이 남아 있다.

예산

시험용 부품을 알리익스프레스 기준으로 골라 가격을 뽑았다(2026년 9월 26일 표시가).

구분금액
전장234,009원
유체(약품·물 이송)318,172원
기구71,851원
화면(라즈베리파이 포함)411,920원
예비비 15 %155,400원
합계1,191,352원
1차 시험(맥 사용, 화면 제외)717,600원
가격을 찾지 못한 8개 품목과 국내에서 살 8개 품목(수조 용기, 기준 온도계, 차단기 등)은 빠져 있다. 실제로는 이보다 더 든다.

화면 쪽 금액의 66 %가 라즈베리파이 5(4 GB) 한 대 값이다. 맥으로 먼저 시험하는 이유이기도 하다. 1편에서 적었던 JOBO CPP-3 중고가가 100만 원 안팎이었으니, 부품값만으로 그 근처까지 온 셈이다.

아직 정하지 못한 것

  • JOBO 1520 탱크 실제 치수(받침과 롤러 설계가 여기에 달려 있다)
  • 약품이 닿는 재질을 약품에 담가 보는 시험
  • 전동 볼밸브가 전원이 끊기면 원래 자리로 돌아가는 종류인지
  • 공기 압력 판정 기준값과 압력 센서 보정
  • 흑백용 냉각 수단
  • 예열 목표를 45분으로 둘지(히터 용량의 전제)
  • 빠른 방향 전환에서 롤러가 미끄러지거나 모터가 헛도는지

다음은 1차 시험 부품을 주문하는 일이다. 약품 대신 물로 공기 이송부터 재 보고, 탱크를 기울여 빼는 시간, 히터 예열 순서로 하나씩 확인할 생각이다.

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다