프로그램 가능한 레드넷 제어기(PRC) Part.4

마인크래프트 1.6.2, 마인팩토리 리로디드 2.7.0B8 기준으로 작성되었습니다.

이번에는 파형 발생 회로에 대해 알아보겠습니다. 파형 발생 회로의 가장 유용한 용도로는 일정 시간마다 신호를 주기 위한 타이머 용도가 있습니다. 일정 시간마다 장비를 껐다가 켰다가 하는 상황이라면 유용하게 쓸 수 있습니다.

우선 PRC에서 제공하는 파형 발생 회로의 종류를 알아보겠습니다.

톱날(Sawtooth) – 톱날 모양의 파형을 발생합니다. 톱날 파형은 신호가 0에서 15까지 1씩 증가하다가 15가 되면 0으로 떨어지는 상향(Rising) 파형과 반대로 15로 올라갔다가 0까지 1씩 내려가는 하향(Falling) 파형이 있습니다.

삼각형(Triangle) – 톱날 모양의 상향과 하향을 붙인 삼각형 형태의 파형입니다. 0에서 15까지 1씩 증가하다가 15가 되면 반대로 1씩 감소하는 형태입니다.

사인(Sine) – 곡선 형태로 0부터 15까지 증가하고 감소하는 형태의 신호를 출력하지만 수치의 범위가 좁은 관계로 폭이 좁은 삼각형 파형처럼 보입니다.

사각형(Square) – 일정 시간마다 0과 15를 바꿔가면서 신호를 출력합니다.

mfr rednet historian

파형을 실제로 보고 싶으신 분은 PRC에 레드넷 파형 기록기(RedNet Historian)를 연결하면 눈으로 확인할 수 있습니다. 레드넷 파형 기록기는 매 틱마다 출력되는 레드스톤 신호의 세기를 보여주는 장비입니다. 스크린샷에 나온 파형은 삼각형 파형입니다.

PRC에서 제공하는 파형은 신호가 출력되는 간격을 조절할 수 없기에 타이머 용도로 쓰기엔 어렵지만 유일하게 사각형 파형만은 시간 간격을 조절할 수 있습니다. 그래서 이름에 따로 타이머라고 붙어 있기도 합니다. 이 사각형 파형 발생 회로를 이용해서 좀 더 다양한 환경에 대응할 수 있도록 해보겠습니다.

우선 사각형 파형의 제한 조건부터 알아보겠습니다. 우선 파형은 최대 255틱(약 13초)마다 0과 15가 바뀝니다. 그리고 일반적인 타이머처럼 매 시간마다 잠깐 신호가 출력되는게 아닌 일정 시간동안 신호가 계속 출력됩니다. 이런 제한 조건을 바꾸기 위한 회로들을 알아보겠습니다.

우선 파형이 일정 시간동안 계속 출력되는 대신 잠깐만 신호가 출력되게끔 하기 위해서 1회성 펄스(One-Shot Pulse)라는 회로를 쓸 수 있습니다. 1회성 펄스는 입력이 0에서 다른 값으로 바뀌는 순간에만 잠시 신호가 출력되고 입력이 계속 유지가 되어도 다시 0으로 돌아가기 전까지는 신호가 출력되지 않습니다.

사각형 파형의 출력을 1회성 펄스에 연결하면 0에서 15로 바뀌는 순간에만 잠시 신호가 출력되게끔 되는 것입니다. 다만, 사각형 파형의 출력 자체가 짧아지는건 아니기에 출력이 없는 시간이 2배 가까이 늘어나게 됩니다. 사각형 파형의 설정 시간이 10틱이라면 0에서 15로 올라가는 1틱만 신호가 출력되고, 나머지 15가 유지되는 9틱은 신호가 없습니다. 파형이 바뀌어서 0으로 바뀌어도 설정 시간 10틱간은 신호가 없기에 20틱마다 한번씩 신호가 나오게됩니다.

사각형 파형과 1회성 펄스를 조합해도 신호 간격은 최대 25.5초가 됩니다. 하지만 이보다 더 긴 시간 간격이 필요할 때도 있습니다. 이럴때는 지난 글에서 이야기한 계수(Counter) 회로를 쓰면 됩니다. 사각형 파형의 출력을 계수 회로의 증가나 감소에 연결하고 PRE 값에 적당한 지연 시간을 주면 됩니다. 참고로 계수 회로에는 1회성 펄스의 기능을 포함하고 있기에 1회성 펄스 회로를 추가로 연결할 필요는 없습니다.

사각형 파형과 계수 회로를 연결할 경우 사각형 파형의 지연 시간(설정 시간의 2배)와 PRE 값을 곱한 만큼 시간을 지연하게 됩니다. 간편하게 사용하려면 사각형 파형의 설정을 10(20틱 = 1초)으로 하시면 PRE 값이 그대로 초단위 설정이 됩니다. 사각형 펄스와 계수 회로를 연결하면 최대 약 6500초 정도까지 신호 발생 간격을 조절할 수 있고, 그 이상이 필요하다면 계수기를 추가로 연결하면 됩니다.

1회성 펄스나 계수 회로를 쓰면 신호가 1틱만 발생하게 됩니다. 하지만 경우에 따라서는 그보다는 긴 시간이 필요할수도 있습니다. 이럴때는 펄스 연장(Pulse Lengther) 회로를 쓰면 됩니다. I로 들어온 입력이 0이 아닐 경우 L에 설정된 틱 시간동안 15의 수치로 신호가 출력됩니다. 그리고 10틱을 설정했는데 25틱동안 신호가 들어왔다면 10의 배수로 계산해서 총 30틱동안 신호가 출력됩니다. 설정보다 입력이 길다고 해서 바로 신호를 끊어버리지는 않는 점은 기억해두시기 바랍니다.

마지막으로 조금 독특한 회로인 연속 펄스 생성(Multipulse) 회로를 알아보겠습니다. 연속 펄스 생성 회로는 신호가 들어올 경우 일정 횟수동안 신호의 출력을 켜고 끄는 동작을 하게 됩니다.

입력의 I의 값은 출력이 켜질때 출력의 Q 값으로 보내게 됩니다. 위에 이야기한 회로들의 출력은 0 또는 15만 뜨지만 연속 펄스 생성은 출력값의 세기를 조절하는게 가능합니다.

CLK값은 회로가 동작하기 위한 신호를 받는 곳입니다. CLK값이 0에서 다른 숫자로 바뀌면 연속 펄스 생성 회로는 동작하게 됩니다. 참고로 CLK 값은 1회성 펄스와 같이 0에서 다른 숫자로 바뀌는 순간에만 동작하고, 입력을 유지하고 있어도 연속 펄스 생성 회로는 정해진 횟수만큼만 동작합니다. 단, 동작하는 도중에 CLK 값이 다시 0에서 다른 숫자로 바뀐다면 처음부터 다시 회로가 동작합니다.

CNT 값은 펄스가 몇번 생성되는지를 설정하고, THi는 신호가 켜져있는 시간, TLo는 신호가 꺼져있는 시간을 의미합니다. CLK에 신호가 들어오면 CNT 횟수만큼 THi 틱동안 신호가 출력되고, TLo 틱동안 출력이 꺼지는 동작을 하는 회로입니다.

출력값의 DN은 모든 동작이 완료될 경우 신호가 출력됩니다. CNT에 정해진 횟수만큼 동작을 했다면 DN으로 신호가 출력됩니다.

연속 펄스 생성은 몬스터 트랩의 피스톤 공격처럼 버튼을 누르면 일정 횟수동안만 타이머 신호가 필요한 경우 유용하게 쓸 수 있겠습니다.

Advertisements

One thought on “프로그램 가능한 레드넷 제어기(PRC) Part.4

댓글이 닫혀있습니다.