ATtiny44 마이크로 컨트롤러로 마스터 논문에 소형 센서 PCB를 설계했습니다 . 내 응용 프로그램에 약 200 개의 보드가 필요하며 16 개는 항상 컨트롤러 보드에 로컬로 연결되어 있습니다. 전체 네트워크는 다음과 같습니다.
컨트롤러와 센서 보드 사이에 통신하기 위해 1 핀 버스 (타이밍 기반)를 작성했습니다. 유일한 문제는 센서 보드에 데이터를 컨트롤러 보드에 보낼 때 센서 보드에 네트워크의 위치를 알 수있는 주소가 있어야한다는 것입니다.
ATtiny에 1 핀만 남았 기 때문에 4 개의 점퍼 설정에 따라 아날로그 전압을 생성해야하는 점퍼 기반 DAC 회로를 고안했습니다. 센서 회로가 값 (47, 470, 1k, 3k, 4k7, 10k, 100k 및 220k)을 사용하고 생산을 위해 최적화하고 싶기 때문에 DAC에 대해 아래 값을 사용했습니다 (기본적으로 100k, 50k, 20k 및 10k) ). 점퍼 설정에 따라 0V에서 760mV 사이의 멋진 값을 제공해야합니다. 정확히 ATtiny의 내부 1.1V 레퍼런스를 사용하여 아날로그 전압으로 읽어야했습니다. 시작시 ATtiny는이 전압을 읽고 그 위치를 알아야합니다.
이 회로 시뮬레이션 – CircuitLab을 사용하여 작성된 회로도
이론적으로 이것은 잘 작동합니다. 저항의 공차를 고려할 때 LTspice 에서 Monte Carlo 분석을 수행 하여 겹치는 영역이 없음을 확인했습니다 (모두 1 % BTW 임). 아래에서이 분석의 사진을 찾을 수 있습니다.
이제이 보드를 여러 개 (200 개가 아님) 생산했지만 일부는 주소에 대해 정확한 판독 값을 얻지 못했습니다 (특히 모든 공차가 한 번에 재생되는 높은 주소 영역에서). 가능한 모든 솔루션을 측정하고 마침내 내 문제를 알아 냈습니다. 필자의 원래 분석에는 각 컨트롤러 보드 의 MC7805 를 사용하여 12V에서 로컬로 생성되는 5V 공급 전압의 허용 오차가 포함되지 않았습니다 . 데이터 시트 당 MC7805의 출력 전압은 4.8 ~ 5.2V입니다.
이것을 알아 낸 후 Monte Carlo 분석을 수정했습니다. 이제 다음과 같이 보입니다 :
보시다시피 멋진 중첩 영역이 있습니다.이 전압 이이 주소만을 의미한다고 말할 수는 없습니다. 기본적으로 모든 주소는 no로 시작합니다. 8은 잘못된 판독 값을 얻을 수 있습니다 (더 높은 주소의 잘못된 판독 값이있을 가능성이 높음).
나는 것 아니 이미 (I 생산을위한 최적화 할 논문에 관해서는) 보드에 사용 된 것과 다른 저항 값을 추가 할 수있다.
I는 것이다 되지 는 DAC 저항 네트워크를 공급하기위한 기준 전압 (예를 들면, 제너 다이오드)를 추가 할.
내가 할 수없는 더 이상 컨트롤러 보드를 수정 (거기는보다 정확한 전압 레귤레이터 사용).
내가 할 수 여전히 PCB 디자인 / 센서 보드의 회로도를 수정!
프로그램에서 또는 회로를 변경하여 항상 주소를 정확하게 판독하려면 어떻게해야합니까?