라디오 전자 및 전기 공학의 백과사전 간단한 데이터 수집 시스템인 COM 포트를 사용한 ADC 작동. 무선전자공학 및 전기공학 백과사전 이 글은 주로 초보자를 대상으로 작성되었습니다. 데이터 수집 시스템 구축, 아날로그 신호를 컴퓨터에 입력, 처리 등을 시도하기로 결정한 사람들을 위해. 이 기사에서는 이에 대해 논의할 것이며 모든 작업을 스스로 수행하려고 노력할 것입니다. 일반적으로 이 주제에 대한 정보는 인터넷과 문헌에 꽤 많이 있습니다. 특히 Visual Basic 언어를 사용하는 경우 더욱 그렇습니다. 그러므로 나는 이 격차를 적어도 부분적으로 메우려고 노력할 것이다. 시작하겠습니다... 목표가 무엇이든 먼저 실제 아날로그-디지털 변환기(ADC)를 구입해야 합니다. 또한 컴퓨터에 Visual Basic 6.0 개발 환경을 설치하십시오. 또한 이 개발 환경을 간단하게 탐색할 수 있어야 합니다... 왜냐하면... 이 기사는 독자가 Visual Basic 프로그래밍에 대한 최소한의 기본 지식을 갖고 있는지 확인하기 위해 작성되었습니다. 또한 문헌 [1], [3]을 읽어 보시기 바랍니다. ADC로 TLC549IP를 구입하는 것이 좋습니다. 간단한 통신 프로토콜을 갖춘 8비트 직렬 ADC입니다. 이에 대해서는 기사에서 논의할 것입니다. 물론 회로와 코드를 적절하게 변경하여 다른 ADC를 사용할 수도 있습니다. 이에 대한 자세한 내용은 [1]에서 확인할 수 있습니다. ADC를 찾은 후에는 데이터 수집 시스템의 하드웨어, 즉 그림 1에 표시된 회로를 조립해야 합니다. XNUMX. 이 계획은 약간의 변경을 거쳐 [1]에서 차용되었습니다. 다이오드 VD1, VD2, VD6 - KD521, 안정화 전압 3...5V용 모든 제너 다이오드. 78L05 대신 KREN5A를 사용할 수 있습니다. 허용 오차가 1%인 저항기 R2, R1 또는 저항 값이 가장 가까운 여러 개 중에서 선택합니다. 측정의 정확도는 측정값에 따라 달라집니다. 저항 R3은 다중 턴인 것이 바람직합니다. 조정: 보드에 전원을 공급하여 DA1 스태빌라이저의 Out 핀에서 전압을 측정합니다. 결과 전압 값을 소수점 이하 3자리까지 기록합니다. 나중에 필요합니다. DD1 마이크로 회로의 핀 1에서 저항 R3을 사용하여 전압을 Out 핀에서 측정된 안정기의 정확히 절반과 동일하게 설정합니다. 이제 실제 소프트웨어 부분으로 넘어 갑시다. 일반적으로 처음에는 RS-232, I2C, Micro Ware 등과 같은 통신 인터페이스를 사용합니다. 나는 그것이 부적절하다고 생각한다. 왜냐하면 프로그램 코드가 약간 복잡해지면 하드웨어가 훨씬 더 복잡해질 수 있습니다. 따라서 우리는 "데이터시트"에서 ADC로 가져온 가장 간단한 교환 프로토콜을 사용할 것입니다. 즉, 간단한 구현입니다. 물론 이러한 프로토콜을 사용하면 빠른 속도를 얻을 수 없습니다. 이 경우 Visual Basic 자체에 의해 제한이 적용되지만 최소한의 시간과 노력으로 첫 번째 결과를 얻고 상대적으로 느린 변화를 측정하는 데 매우 적합합니다. 프로세스. TLC549IP ADC의 통신 프로토콜은 그림 2에 나와 있습니다. XNUMX. 단일 상태 동안 실제 변환은 A/D 변환기의 CS(칩 선택) 핀에서 발생합니다. 데이터 출력은 각 펄스에 대해 8비트인 클록 펄스의 출현과 함께 낮은 CS 레벨에서 시작됩니다. 8비트 코드를 생성하려면 1개의 클럭 펄스가 필요합니다. 그 후 CS는 단일 상태로 전환될 수 있으며 다음과 같은 변환이 수행될 수 있습니다. ADC 작동에 대한 자세한 내용은 [XNUMX]에서 확인할 수 있습니다. 이 모든 것에서 우리는 적절한 시간에 필요한 펄스 시퀀스를 생성하는 드라이버 프로그램을 작성해야 한다는 결론을 내릴 수 있으며, 그 후에는 데이터만 수신할 수 있습니다. Visual Basic 개발 환경을 시작하고 표준 EXE 프로젝트를 만듭니다. MSComm 컨트롤을 추가합니다. 다음과 같이 구성 요소 패널에 추가할 수 있습니다. 프로젝트-->구성 요소-->목록에서 선택Microsoft 통신 6.0 제어. 2개의 라벨과 2개의 타이머와 함께 양식에 배치하세요. 이름은 기본값으로 둡니다. 이제 간단한 전압계용 코드 작성을 시작할 수 있습니다. 변수를 설정하자: Dim b1, b2, b3, b4, b5, b6, b7, b8, sum, Ud 단일로 양식 로드 절차에 다음 코드를 삽입합니다. 개인 하위 Form_Load () MSComm1.DTREnable = True '초기값 - 높은 CS 수준 Timer1.Interval = 100 ' 타이머 간격 1ms Timer2.Interval = 1 ' 타이머 간격 100ms MSComm1.Settings = "1200,N,8,1" ' 데이터 전송 설정 MSComm1.CommPort = 1 ' COM 포트 번호 MSComm1.PortOpen = True ' COM 포트 열기 최종 하위 절차 중 Timer1은 다음 코드를 입력합니다. 개인 서브 타이머1_Timer() MSComm1.DTREnable = False '낮은 CS 만들기 Label2.Caption = "" '초기 지연에 대한 쓰레기 MSComm1.RTSEnable = True '첫 번째 클럭 펄스 클럭 높음 If MSComm1.CDHolding = True Then b1 = 1 Else b1 = 0 'CD 입력(ADC 출력)에서 XNUMX 또는 XNUMX 값을 폴링합니다. MSComm1.RTSEnable = False '첫 번째 클럭 펄스 클럭 낮음 MSComm1.RTSEnable = 참 MSComm1.CDHolding = True이면 b2 = 1 그렇지 않으면 b2 = 0 MSComm1.RTSEnable = 거짓 MSComm1.RTSEnable = 참 MSComm1.CDHolding = True이면 b3 = 1 그렇지 않으면 b3 = 0 MSComm1.RTSEnable = 거짓 MSComm1.RTSEnable = 참 MSComm1.CDHolding = True이면 b4 = 1 그렇지 않으면 b4 = 0 MSComm1.RTSEnable = 거짓 MSComm1.RTSEnable = 참 MSComm1.CDHolding = True이면 b5 = 1 그렇지 않으면 b5 = 0 MSComm1.RTSEnable = 거짓 MSComm1.RTSEnable = 참 MSComm1.CDHolding = True이면 b6 = 1 그렇지 않으면 b6 = 0 MSComm1.RTSEnable = 거짓 MSComm1.RTSEnable = 참 MSComm1.CDHolding = True이면 b7 = 1 그렇지 않으면 b7 = 0 MSComm1.RTSEnable = 거짓 MSComm1.RTSEnable = 참 MSComm1.CDHolding = True이면 b8 = 1 그렇지 않으면 b8 = 0 MSComm1.DTREnable = True '높은 CS 만들기 MSComm1.RTSEnable = False '첫 번째 클럭 펄스 클럭 낮음 '확장 공식을 사용하여 비트를 XNUMX진수 형식으로 변환합니다. 합계 = (b1 * 2^7) + (b2 * 2^6) + (b3 * 2^5) + (b4 * 2^4) + (b5 * 2^3) + (b6 * 2^2) + (b7 * 2^1) + (b8 * 2^0) Ud = Format(sum * 5.083 / 255, "##0.000") '비례값 계산 Label1.Caption = CStr(Ud) & "Volt" '결과 값 표시 최종 하위 Timer1의 코드는 실제 드라이버입니다. 주기적으로 반복되어 클록 펄스를 생성하고 데이터 비트를 수신합니다. Ud는 ADC 입력 전압입니다. 10개의 12비트 ADC를 사용하는 경우 숫자 225는 각각 1024, 4096으로 대체됩니다. 10개의 12비트 ADC의 경우 누락된 비트를 코드에 추가해야 합니다. , "데이터 시트"에 따라 안내됩니다. 값 5.083은 스태빌라이저의 Out 출력에서 얻은 전압 값입니다. 여기에 값을 입력하세요. 보드에 전원을 공급하려면 별도의 소스를 사용하거나 COM 포트에서 직접 전원을 공급할 수 있습니다. 이를 위해 Timer2 프로시저에 다음 코드를 배치합니다. 개인 서브 타이머2_Timer() MSComm1.Output = Chr(0) & Chr(0) ' ADC 보드에 전원을 공급하기 위해 TX 핀(3)에 펄스를 생성합니다. 최종 하위 COM 포트에는 과부하가 걸릴 수 없다는 점을 기억해야 합니다. 믿을 수 있는 최대치는 20mA입니다. 작동 모드에서 회로는 5mA 이하의 전류를 소비합니다. 이제 보드를 COM 포트에 연결하고 프로젝트를 실행하십시오. DA1 스태빌라이저의 IN 핀에서 전압을 측정합니다. 6.5V 이상이어야 합니다. 그렇지 않은 경우 별도의 전원을 사용하십시오. ADC 입력의 전압을 변경하여 프로그램이 작동하고 화면에 전압이 표시되는지 확인하십시오. 8비트 ADC 사용 시 전압 판독 정확도는 20mV이고, 10비트 ADC 사용 시 - 5mV, 12-1.2mV입니다. Visual Basic에서 작업하고 COM 포트를 사용하여 만든 응용 프로그램에 대해 조금 이미 이해하셨겠지만, COM 포트로 작업하려면 구성 요소가 필요합니다.Microsoft 통신 Control 즉, Visual Basic을 설치한 후 C:\Windows\system32 디렉터리에 있는 MSCOMM32.ocx 파일입니다. 이것이 의미하는 바는 설치 프로그램을 만들지 않고 Visual Basic이 없는 다른 컴퓨터에 프로그램을 복사하면 작동하지 않는다는 것입니다. 또한 이 파일을 컴퓨터와 동일한 디렉터리에 복사해야 합니다. system32에서. 아니면 설치 프로그램을 만드세요. 이제 일부 명령에 대해 다음을 수행합니다. 데이터 교환율을 설정하는 명령: MSComm1.Settings = "1200,N,8,1" com 포트 번호를 나타내는 명령 MSComm1.CommPort = 1 COM 포트를 열고 닫는 명령 MSComm1.PortOpen = 참 MSComm1.PortOpen = 거짓 com 커넥터의 해당 핀에 +12V를 출력하는 명령: MSComm1.RTSEnable = True RTS (7) - 핀 이름 및 핀 번호 MSComm1.DTREnable = True DTR(4) -12V를 출력하는 명령 MSComm1.RTSEnable = 거짓 MSComm1.DTREnable = 거짓 단일 또는 1 상태가 있는지 핀 CD(8), CTS(6), DSR(XNUMX)을 폴링할 수 있습니다. If MSComm1.CDHolding = True Then(만약 그렇다면…) MSComm1.CDHolding = False Then(XNUMX이면...) 문자 또는 문자열의 ASCII 코드를 Tx(3) 출력으로 전송: MSComm1.Output = "A" 숫자 MSComm1.Output = Chr(10) 번호는 0~255에서 다양할 수 있습니다. 타이머에 이러한 명령을 작성하고 숫자나 기호를 변경하면 PWM 변조를 생성할 수 있습니다. 명령에 대한 자세한 내용은 컨트롤 설명을 다운로드하여 확인할 수 있습니다. Microsoft 통신 Control. 이제 이 코드를 사용하면 데이터 수집을 위한 여러 프로그램을 작성할 수 있습니다. 예: 전압계, 전류계, 온도계, 단순 오실로스코프, 데이터를 파일에 저장합니다. 측정은 1ms마다 한 번씩 또는 시간별, 하루에 한 번 수행할 수 있으므로 장기적인 프로세스를 모니터링할 수 있습니다. 교류 전압(0을 통과)으로 작업하고 측정 한계를 확장하려면 입력 증폭기가 필요하며 그 회로는 [1]에서 가져올 수 있습니다. 주전원 전압이나 네트워크에서 갈바닉 절연되지 않은 장치를 사용하려면 컴퓨터에서 회로를 광절연해야 합니다. 문학
작성자: =ShooRooP=, evei [개] mail.ru; 간행물: cxem.net 다른 기사 보기 섹션 컴퓨터. 읽고 쓰기 유용한 이 기사에 대한 의견. 과학 기술의 최신 뉴스, 새로운 전자 제품: 터치 에뮬레이션을 위한 인조 가죽
15.04.2024 펫구구 글로벌 고양이 모래
15.04.2024 배려심 많은 남자의 매력
14.04.2024
다른 흥미로운 소식:
무료 기술 라이브러리의 흥미로운 자료: ▪ 기사 약물 사용이 인체 건강에 미치는 영향. 안전한 생활의 기본 ▪ 기사 칼로리는 체중에 어떤 영향을 줍니까? 자세한 답변 ▪ 기사 알루미늄을 구리로 바꾸는 방법과 이유. 무선 전자 및 전기 공학 백과사전 이 페이지의 모든 언어 홈페이지 | 도서관 | 조항 | 사이트 맵 | 사이트 리뷰 www.diagram.com.ua |