초음파센서를 이용한 거리측정기 키트를 사용해 제작하였다.
거리측정기의 목적은 차량의 후방감지시스템 뿐만 아니라 다양한 곳에도 사용 가능하다.
크게 송신부, 수신부, 시간을 이용한 거리측정부, 출력부로 나눌 수 있다.
작동과정
1. 송신할 초음파 신호 발생
2. 송신
3. 물체에 반사된 신호를 수신
4. 수신된 신호를 해석
5. 송신과 수신 신호의 시간간격에 따른 거리 측정
6. 출력
초음파센서의 center freq인 40kHz로 맞춘다. FFT simulation결과 40kHz를 확인할 수 있다. 최근에는 555timer 대신 x-tal이 주로 사용된다.
실제 측정 결과는 저항을 더 낮춰도 36kHz가 나왔다. 그 이유는 555timer 내부 회로구성의 차이 때문이다. 40kHz로 보상해주기 위해 190k//1M 병렬로 구성하였다.
40kHz의 ocsillator를 송신하는 시간간격을 조절하는 회로다. 여기서는 15.18Hz로 맞췄다. inverter에 hysteresis응답을 사용하여 noise에 안정적인 신호를 송출한다.
앞서 만든 40kHz의 주파수 신호와 15.18Hz의 신호를 NAND로 masking한다. AND가 아닌 NAND의 사용 이유는 tr수가 더 적어 속도적인 측면에서 이득을 볼 수 있다.
신호가 송신되고 공기중을 이동해 반사되어 돌아와 수신되는 신호는 크기가 매우 작아진다. 따라서 송신 시 큰 power로 송신해 주는 것이 필요하다.
큰 power를 만들기 위해서는 P=VI에서 전압과 전류를 크게하는 방법이 있다. 전류를 크게 만드는 방법은 inverter를 사용하는 것이다. Logic Gate를 만들 때 표준 size로 제작을 하면 NAND나 AND에 비해 NOT은 상대적으로 적은 tr이 사용된다. 따라서 같은 면적에 적은 수의 tr을 가지는 NOT은 큰 size의 gate를 만들 수 있다. 따라서 inverter는 더 큰 전류구동능력을 가질 수 있다. 그리고 전압을 크게 만드는 방법은 Voltage Doubler를 사용하는 것이다. 신호라인을 2개를 사용해 한개 라인을 반전 후 dc-blocking을 하고 양단의 차동 신호를 사용하면 2배의 전압크기를 가질 수 있다.
반사되어 수신되는 신호는 작은 크기를 가지고 있다. 그리고 다양한 기생C와 기생L에 의해 구형파의 신호는 무너진다. 따라서 수신단에서 신호를 제어하기 위해 증폭이 필요하다. 그림과 같이 inverting amp 2개를 이용해 앞단에 100배 뒷단에 1배를 해 100배 증폭을 만들 수 있지만 실제 측정결과 100배 증폭은 발생하지 않는다.
100배 증폭이 안되는 이유는 Unity Gain Bandwidth가 있다. OP-Amp의 치명적인 단점인 주파수가 제한된다는 것이다. 사용된 OP-Amp인 RC4558은 gain이 100배에서 30kHz의 Bandwidth를 가진다. 그리고 gain이 10배에서 300kHz의 Bandwidth를 가진다. 따라서 10배의 증폭을 선택하고 2-Stage로 구성하여 100배 증폭을 만들 수 있다. 물론 GBW가 더 큰 OP-Amp를 선택할 수도 있다.
C7 Cap은 OP-Amp의 Single Power에서 DC bias를 맞추기 위한 DC-blocking C이다. 그러나 이미 양단이 VCC/2로 bias되 있으므로 제거해도 무관하다.
증폭된 신호를 반파정류 후 평활하여 DC로 만들어주는 회로다. 이때 사용된 다이오드는 SBD이다. SBD를 사용하는 이유는 작은 VF를 가져 소신호에서 더 작은 Voltage Drop을 만들고, 작은 ttr(Reverse Recovery Time)에 의해 고속회로에서 더 빠른 on/off 속도를 가지기에 사용한다.
D2의 사용 이유는 +파형에 D1의 기생C에 충전된 전하를 -파형일때 D2를 통해 빠르게 Gnd로 방전시켜 더 빠른 고속 스위칭을 만들 수 있기 때문이다.
수신신호를 검출하는 회로다. 비교기를 이용하고 Reference Voltage에 따라 출력이 평소에 High에서 수신신호가 입력되면 Low로 떨어지는 Active Low로 동작한다.
초음파가 송신될 때 송신센서와 수신센서가 가까운 거리에 있으면 송신의 회절신호가 수신으로 들어와 noise를 발생시키는 문제가 생길 수 있다.
해결방법
1. 송신과 수신 센서의 거리를 이격이켜 회절신호에 영향을 덜 받도록 만든다. But 짧은 거리는 측정이 불가능하다는 단점이 발생한다.
2. Reference Voltage level을 올려 작은 크기의 noise 신호를 제거하는 방법이 있다. But 먼 거리 신호는 크기가 작아 측정이 불가능하다.
3. Software적으로 delay를 두어 회절noise를 제거한다. But cpu가 추가되는 비용적 문제가 발생한다.
4. D1 다이오드는 추가해 송신 시점에 Reference를 올려 회절noise를 방지할 수 있다. -> Good
여기서 사용한 비교기는 OP-Amp를 비교기로 사용했다. 이유는 비교속도는 전용 비교기에 비해 느리지만 stability를 확보할 수 있어 좀 더 안정적인 데이터를 얻을 수 있다.
Single Power로 사용하기 위해서는 input bias current path가 있어야한다. V+의 current path는 있지만, V-가 dc신호에서(수신값이 없을 때) current path가 없어 floating이 발생한다. 이때 출력은 VCC or VEE로 예상될 수 없으므로 R3(Pull-up 저항)을 만들어 수신데이터가 없을 때 VCC로 만들 수 있다. 그러나 이 회로에서는 Pull-up R이 있어도 출력이 VCC가 되지 않고 R3가 전압을 거의 다 가져가 해결되지 않았다.
따라서 근본적인 floating 상황을 없애기 위해 R4(Pull-down 저항)을 만들어 V-에서의 current path를 만들어 주었다. 이때 신호의 손실을 최소화하기 위해 Pull-down R은 큰 저항을 사용했다.
앞단의 Latch회로를 통해 송신과 수신신호를 만들고, Latch신호를 통해 Latch-enable과 reset신호로 분리해주는 회로다. DC blocking C를 통해 AC성분만 통과되고 각각 Pull-up과 Pull-down된 신호에서 다이오드를 통해 Clamping해주어 Latch-enable과 reset신호를 만들어준다.
카운터에서 사용되는 클럭을 만드는 회로다. 음파가 1m를 왕복하는데 걸리는 시간동안 100pulse를 만드는 주파수로 정했다. 이는 cm단위로 분해능을 만들었을때 사용되는 주파수다.
더욱 정밀한 system에서 Meta Stability Problem에 직면했을 때 주파수를 171.8kHz로 높여 mm단위의 분해능으로 만들수도 있다.
카운터를 통해 거리에 따라 측정되고 디코더를 통해 최종적으로 FND에 출력된다. 이 부분은 CPU로 대체 가능하며 하드웨어 비용이 추가되더라도 개발기간을 단축시킬 수 있고, 더욱 범용적으로 만들 수 있는 장점이 있다.
여기서 PNP BJT를 사용하는 이유는 Sinking 능력이 떨어져도 카운터의 Low Active작동에 의해 NPN을 사용할 경우 NOT gate가 추가되므로 PNP type이 더욱 적합하다.
FND를 제어하는 BJT에 base저항이 없어 갑작스러운 전류변화에 BJT에 무리가 생길 수 있으므로 base저항을 추가해 Stability를 확보한다.
포트에 ESD Protection회로를 추가해준다.
이외에도 개선사항으로는 Analog와 Digital의 Power와 Gnd를 분리해 noise를 방지한다, 모든 부품을 SMD-type으로 교체해 PCB실장면적을 줄인다, FND에 array저항을 사용해 실장면적을 줄인다, bare board에 Gnd동판을 만들어 noise완화와 방열대책을 만든다.
오차율 : 0~2% 발생
😧 아주 쌈@뽕한거 만드시네요! 🙊