RP2040 전용 제어 보드에 Senbrino로 올린 팝핑 머신 제어기입니다. 솔레노이드 5개와 모터를 정해진 순서로 반복 운전하고, 조작반 다이얼로 공정 시간을 조정합니다.

팝핑 머신이란
쌀이나 옥수수 같은 곡물을 뜨거운 금형 사이에 넣고 압력을 가했다가 순간적으로 열어 부풀리는 기계입니다. 금형이 열리는 순간 곡물 속 수분이 팽창하면서 얇고 바삭한 과자가 됩니다. 흔히 보는 둥근 쌀과자가 이 방식으로 만들어집니다.
한 장을 만드는 동안 금형 개폐, 가압, 개방, 배출, 곡물 공급이 정해진 순서와 시간으로 반복됩니다. 이 순서와 시간을 맡는 것이 제어기입니다.
프로젝트 개요
| 항목 | 내용 |
|---|---|
| 고객사 | 신영 ○○○○ |
| 제품 | Senbrino |
| 하드웨어 | RP2040 기반 전용 제어 보드 |
| 기능 | 자동 시퀀스 · 수동 운전 · 비상 정지와 재시작 잠금 · 솔레노이드 인터락 · 다이얼 시간 설정 |
하드웨어: RP2040 전용 제어 보드
고객사 보드입니다. Senbrino 보드 패키지로 등록해 썼습니다.
| 구성 | 용도 |
|---|---|
| 디지털 입력 11점 | 센서, 내부·외부 조작반 스위치, 비상 |
| 디지털 출력 10점 | 솔레노이드 5개, 모터, 부저, 표시 |
| 아날로그 입력 8점 | 멀티플렉서로 읽는 조작반 다이얼 |
보드 패키지의 드라이버가 입력 디바운스와 멀티플렉서 채널 전환·샘플링을 맡습니다. 래더는 확정된 입력값과 다이얼 값만 읽습니다.

입력 · 출력 · 아날로그 슬롯을 보드 패키지로 등록하고, 접점 극성이 반대인 입력은 핀 정의에서 반전으로 잡았습니다.
무엇을 하는 장치인가
자동 운전 — 자동 스위치를 켜면 금형과 배출, 공급 모터가 정해진 순서로 돌고 처음으로 돌아갑니다. 단계 전환은 센서와 타이머가 결정합니다.
수동 운전 — 자동이 꺼진 상태에서 수동 스위치로 솔레노이드를 직접 움직입니다.
조작반과 다이얼 — 내부와 외부 조작반 중 다이얼이 살아 있는 쪽을 자동으로 고릅니다. 다이얼 값이 공정 단계의 유지 시간과 펄스 시간이 됩니다.
안전 — 비상 입력이 들어오면 위험 방향 출력을 즉시 끄고 안전 방향 출력을 정해진 시간 유지합니다. 비상이 풀려도 자동 스위치를 껐다 켜기 전에는 다시 시작하지 않습니다.
Senbrino에서의 구성
제어는 래더로, 계산은 C++로
| 역할 | 구현 |
|---|---|
| 자동 시퀀스와 안전 정지 | 래더 상태기계 (단계마다 M비트 1개) |
| 솔레노이드 인터락 | 래더 (반대 출력 B접점 + 전환 지연 타이머) |
| 수동 운전, 조작반 선택 | 래더 |
| 다이얼 값을 시간으로 환산 | C++ 사용자 코드 함수 1개 |
래더는 region 4개입니다. 공통 신호 → 시퀀스 → 출력 명령 → 물리 코일 순서로 위에서 아래로 읽힙니다.

시퀀스 region의 전이 렁. 비상 전이가 맨 위에 있고, 그 아래로 단계 전이가 역순으로 놓여 한 스캔에 한 단계만 넘어갑니다.
출력은 한 곳에서만
솔레노이드 코일은 래더 맨 아래 출력부 region에만 있습니다. 자동 시퀀스와 수동 운전은 코일을 직접 건드리지 않고 명령 비트만 세우고, 출력부가 그 명령을 인터락과 비상 가드를 거쳐 코일로 내보냅니다.
서로 반대로 움직이는 솔레노이드는 쌍으로 묶었습니다. 명령이 꺼지면 코일은 즉시 꺼지고, 반대 코일이 꺼진 뒤 전환 지연이 지나야 켜집니다.

인터락 쌍의 코일 렁. 반대 코일의 B접점, 비상 B접점, 전환 지연 타이머 접점이 직렬입니다.
다이얼 값은 타이머 설정값으로
C++ 함수가 다이얼 원값을 타이머 단위로 바꿔 D 워드에 씁니다. 래더의 타이머는 그 워드를 설정값으로 그대로 받으므로, 다이얼을 돌리면 다음 단계부터 시간이 바뀝니다.
진행 방식
Senbrino의 AI 모드로 진행했습니다.
인터뷰 → 설계 → 계획 → 구현 → 검증
설계 문서와 계획 문서는 사람이 읽고 승인해야 다음 단계로 넘어갑니다. 마지막 검증은 구현을 맡지 않은 별도의 검수자가 설계 문서의 상태 전이, 출력 표, 안전 가드 표를 래더와 항목별로 대조했습니다.

Senbrino의 AI 진행 상태 화면. 체크리스트 내용은 가렸습니다.
개발 이슈
| 이슈 | 해결 |
|---|---|
| 모니터 셀이 255개를 넘자 모니터 값이 엉뚱한 셀에 표시됨 | Senbrino 0.9.4에서 모니터 슬롯 한계를 확장 |
| 인터락 지연 때문에 단계 타이머가 출력보다 먼저 시작됨 | 단계 타이머 조건에 실제 코일 접점을 직렬로 넣어 출력이 켜진 뒤부터 계수 |
모니터 셀 255개 한계
이 래더는 모니터링 대상 셀이 255개를 넘습니다. Senbrino 펌웨어의 모니터 테이블이 255개까지만 담도록 되어 있어, 빌드는 경고만 내고 통과했지만 에디터 모니터가 일부 값을 다른 셀에 보여줬습니다. 제어 동작과는 무관했고, Senbrino 0.9.4에서 테이블 크기와 인덱스를 16비트로 넓혀 해결했습니다.
출력이 실제로 켜진 뒤부터
인터락 때문에 명령을 세운 스캔과 코일이 켜지는 스캔이 다릅니다. 단계 타이머가 명령 시점부터 세면 지연만큼 단계 시간이 짧아지므로, 타이머 조건에 실제 코일 접점을 직렬로 넣었습니다.
문의
- Email : [email protected]
- Insta : https://www.instagram.com/going.sen/
- Website : https://intosen.com/kr/consult/
식품 기계를 비롯한 제어 장치 개발을 함께 검토하겠습니다.
댓글
닉네임만 입력하면 바로 댓글을 남길 수 있어요. Google/GitHub 로그인도 가능합니다.