JC LAB


이번 포스팅에서 설명할 부분은 위 사진에서 펄스 제너레이터 부분입니다.




Xtal Oscillator ( 크리스탈 발진기 )


구글링을 하다 보면 크리스탈 소자를 X-tal 이라고 부르는데 Christ-Mas를 X-mas라고 부르는것과 같다는 말이 있습니다.

Christ와 Crystal은 글자가 다르지만 비슷한 발음이라 X를 쓰고 tal을 붙인것 같다고 합니다


시계의 제작에 있어서 시간을 만드는 Clock 신호는 수정발진기 혹은 크리스탈 발진기 라고 불리는 X-tal Oscillator를 사용하였습니다.


다른 조들은 대부분 555 Oscillator를 사용하더군요, 아마 인터넷에 쳤을 때 가장 잘 나와서인것 같습니다.


하지만 555 발진회로의 경우 캐패시터와 저항값으로 발진 주파수를 결정하게 되는데 이로인해 저항과 캐퍼시터의 오차값이 그대로 발진회로의 오차가 됩니다.


예를 들면 저항에서도 대체로 5% 이내의 저항을 사용하는데 이로인해 발진주파수가 변경될 수 있습니다. 


대부분 가변저항으로 발진회로를 맞춰서 쓰는것을 보았는데 정확도면에서 많이 부족하더군요.



반면에 크리스탈 발진회로의 경우 가격이 저렴하고 회로의 크기가 작고 정확도가 우수하여 아두이노와 같은 MCU, 혹은 많은 제품들의 클럭을 발진하는데에 사용됩니다. 실제 아날로그 시계의 경우도 크리스털이 안에 들어있습니다.


저도 처음에는 인터넷에 X-tal Oscillator를 검색할 시에 나오는 회로를 사용했습니다만 정상적인 발진이 나오지 않더군요.


PSpice를 통해서 시뮬레이셔을 돌렸을 때는 아래와 같이 발진되는 것을 확인하여 처음에는 이유를 몰랐으나,



PSpice의 경우 기본 런타임이 1000ns로 설정되어잇습니다. 이것을 100us로 변경하니 아래와 같은 파형이 발생했습니다.



100us 즉 0.0001초도 채 되기 전에 신호가 수렴하는 것을 볼 수 있습니다. 


그렇기 때문에 신호가 발생하지 않았던 것이죠.


문제는 회로의 원리와 74LS04 IC의 특성을 이해하지 않은채로 진행하였기 때문입니다.


회로의 원리는 아래와 같습니다.


본 발진기는 74 로직 IC를 통해 크리스털을 발진시키는 회로입니다. 위 회로에서 인버터와 수평방향의 저항(1M옴)은 자체로 발진을 하는 기능을 가집니다.


예를들어 인버터의 입력이 0일 경우 반대편에 1이 출력되고 다시 이는 저항을 통해 인버터의 입력으로 들어가고 반대편에 0으로 출력됩니다.


이러한 과정이 반복되며 발진을 하게됩니다. 하지만 이는 무작정 발진을 하며 정확한 주파수를 가지지 않습니다.


이때 회로에 크리스털을 달아주면, 크리스털의 특성(전기를 입력시 진동)으로 인해 크리스털의 주파수만 통과시켜 원하는 주파수를 출력합니다.


이때 회로에서 크리스털은 RLC 공진회로의 인버터와 같이 동작하고 공진 값을 맞추기 위해 캐패시터를 달아줍니다. 캐패시터 값은 크리스털 제조사에서 정해주며 대체로 20~30pF를 사용합니다.


회로의 수직방향에 걸린 저항(1k옴)은 얇은 크리스털 안의 수정에 과한 전합이 걸리는것을 막기 위해 걸어준 저항입니다.


위 회로에서 정상적인 동작을 하지 않았던 것은 IC에서의 LS, HC와 같은 IC의 계통을 고려하지 않았기 때문입니다.


74LSxx 시리즈는 TTL 계통이기 때문에 입력 임피던스가 낮습니다. 따라서 궤환저항(수평방향)은 수k옴이하로 해줘야 겨우 발진이 됩니다.



아래와 같이 저항값을 수정 한 후 시뮬레이션을 돌리니 정상적으로 발진하는 것을 확인할 수 있었습니다.



런타임을 크게 늘려도 발진이 수렴하지 않고 이어지는 것을 볼 수 있습니다.



아래의 사진을 보면 회로를 구성하고 오실로스코프로 측정한 화면입니다.



1Hz와 10Hz가 출력되는 것을 확인할 수 있습니다.

 10MHz가 아닌 이유는 향후 포스팅할 분주회로를 통해서 10MHz를 10Hz와 1Hz로 분주 한 후 찍었기 때문입니다.

주파수카운터가 더 정확하긴 하지만 오실로스코프 측정 결과를 보면 오차가 거의 없는 1Hz가 출력되는 것을 확인할 수 있습니다.