[MyProject]/20072007. 9. 5. 06:22

[DisptVelMeter] 리니어 엔코더를 이용한 변위 및 속도 측정 장치 개발

[DisptVelMeter] 리니어 엔코더를 이용한 변위 및 속도 측정 장치 개발



정밀 리이어 엔코더를 이용하여 고속의 낙하 물체에 대한 변위와 속도를 측정하는 시스템을 개발 했다.



시스템의 요구 사항

 - 고속의 엔코더 입력 (15m/s -> 8Mhz)

 - 고속 DAC 출력 (변위를 DAC로 출력) +/- 10V

 - 순간 속도 및 가속도 위치 데이터 출력

 - 광파이버 센서 입력 (두개의 센서를 이용하여 특정 위에서의 속도 측정)



시도 해 보지 않은 일이라 보드는 테스트 하면서 수정 사항이 많이 발생할 것으로 예상하고 모두 모듈 형태로 제작 했다.

가장 큰 관건은 엔코더의 속도와 DAC의 출력 속도 였고 이를 위해 MCU도 바꾸고 엔코더 입력 칩셋도 추가 하였다.

DAC는 고속의 AD5791을 모듈보드로 제작해 테스트 하였다. 



트리거 입력용 광파이버 센서 2채널, 리니어엔코더 입력, 변위 출력, 센서 출력




리니어 엔코더의 위치 및 속도 출력

측정 장치가 외부에 설치 되므로 가독성이 높은 디스플레이로 VFD LCD를 이용 했다.




Posted by nexp

댓글을 달아 주세요

[MODULE]/AD/DA2007. 8. 10. 00:22

고정밀, 고속 DAC AD5791 모듈 보드 제작 및 테스트

고정밀, 고속 DAC AD5791 모듈 보드 제작 및 테스트


[DisptVelMeter] 리니어 엔코더를 이용한 변위 및 속도 측정 장치 개발 프로젝트 용으로 선정한 AD5791 를 AD/DA 모듈 핀맵에 호화되도록 제작해서 테스트해 보았다.


- 1 ppm 20-Bit, ±1 LSB INL, Voltage Output DAC

- 1MSPS Multi(±l2, +5An, +3Dig); Multi(±l2, +5An, +5Dig); Multi(±l5, +5An, +3Dig); Multi(±l5, +5An, +5Dig) 126.3mW

- AD5791 $64.58


최대 출력 속도 1MSPS 이고1ppm 20bit 해상도로 스펙은 화려하다. 그만큼 가격도 비사다. 과연 이정도의 성능이 나올까?


1 ppm resolution
1 ppm INL
7.5 nV/√Hz noise spectral density
0.19 LSB long term linearity stability
<0.05 ppm/°C temperature drift
1 μs settling time
1 nV-sec glitch impulse
Operating temperature range: ?40°C to +125°C
20-lead TSSOP package
Wide power supply range up to ±16.5 V
35 MHz Schmitt triggered digital interface
1.8 V compatible digital interface




AD5791 블록도



DAC5791 응용회로도




AD5791 타이밍도
/CS핀이 없지만 클럭출력할때 /SYNC를 Low로 해 주어야 한다. SYNC기능을 사용할 때만 필요한줄 알았는데... 클럭출력시 Low로 해 주어야 한다. DAC출력은 /LDAC 하강에지에서 동작한다. DAC출력 레지스터에 값을 써주면 된다.




DAC5971 사용시 주의사항
다른 DAC사용할때와 달리 몇가지 주의사항이 필요하다.

초기화시에 컨트롤 레지스터를 설정해 주어야 한다. 칩 디폴트로 DAC 출력이 Off로 설정되어 있기 때문에 DAC데이터 레지스터에 값을 쓰는것만으로 출력이 되지 않는다. 이부분때문에 좀 고생했다. 주의가 필요하다.


OPGND, DACTRI비트가 디폴트 값으로 1이므로 정상동작을 위해 초기화가 필요하다.





AD5791 DAC초기화 코드
컨트롤레지스터는 0x200000으로 시작하고 DAC가  Off되어 있는 디폴트 값을 0으로 초기화 해 주어야 한다.

void DacInit(void)
{
  :
    DAC_SPI_INIT();
   
    Delay(100);
    DAC_CS_LO();
    DAC5791_SYNC_LO();
 
    temp = 0x00200010;
    DAC_SPI_Write(temp>>16);
    DAC_SPI_Write(temp>>8);
    DAC_SPI_Write(temp);
    DAC5791_SYNC_HI();
}



DAC출력 레지스터


Posted by nexp

댓글을 달아 주세요