ENCICLOPÉDIA DE RÁDIO ELETRÔNICA E ENGENHARIA ELÉTRICA Operação ADC com porta COM, sistema de aquisição de dados simples. Enciclopédia de rádio eletrônica e engenharia elétrica Enciclopédia de eletrônica de rádio e engenharia elétrica / informática Este artigo destina-se principalmente a iniciantes. Para quem decidiu tentar criar um sistema de aquisição de dados, inserir sinais analógicos em um computador, processá-los, etc. Isso será discutido neste artigo e tentaremos fazer tudo sozinhos. Em geral, existe bastante informação sobre este assunto na Internet e na literatura... Principalmente se você usar a linguagem Visual Basic. Portanto, tentarei preencher, pelo menos parcialmente, esta lacuna. Então, vamos começar… Seja qual for o seu objetivo, primeiro você precisa adquirir o conversor analógico-digital (ADC) real. E também instale o ambiente de desenvolvimento do Visual Basic 6.0 em seu computador. Você também precisa simplesmente navegar neste ambiente de desenvolvimento... porque... O artigo foi elaborado para garantir que o leitor tenha pelo menos conhecimentos básicos de programação em Visual Basic. Também recomendo a leitura da literatura [1], [3]. Recomendo comprar o TLC549IP como ADC. Este é um ADC serial de 8 bits com um protocolo de comunicação simples. Isso será discutido no artigo. Claro, você pode usar outros ADCs com alterações apropriadas no circuito e no código. Você pode ler mais sobre isso em [1]. Depois de encontrar o ADC, é necessário montar o hardware do nosso sistema de aquisição de dados, nomeadamente o circuito mostrado na Fig. 1. O esquema foi emprestado de [1] com pequenas alterações. Diodos VD1, VD2, VD6 - KD521, quaisquer diodos zener para tensão de estabilização 3...5 V. Em vez de 78L05, você pode usar KREN5A. Resistores R1, R2 com tolerância de 1% ou seleção entre vários com valor de resistência mais próximo. A precisão das medições dependerá deles. O resistor R3 é preferencialmente multivoltas. Fixação: aplicando energia à placa, medimos a tensão no pino Out do estabilizador DA1. Anotamos o valor da tensão resultante com 3 casas decimais, precisaremos dele mais tarde. No pino 1 do microcircuito DD1, usando o resistor R3, ajustamos a tensão igual a exatamente metade do estabilizador medido no pino Out. Agora vamos passar para a parte real do software. De modo geral, a princípio, utilize interfaces de comunicação como RS-232, I2C, Micro Ware, etc. Considero isso inapropriado, porque Com uma ligeira complicação do código do programa, o hardware pode tornar-se seriamente mais complicado. Portanto, utilizaremos o protocolo de troca mais simples retirado da “folha de dados” para o ADC. Ou seja, sua implementação simples. É claro que com tal protocolo você não pode alcançar alta velocidade; neste caso, as limitações são impostas pelo próprio Visual Basic, mas para obter os primeiros resultados com um mínimo de tempo e esforço, bem como para medir processos que mudam relativamente lentamente, é bastante adequado. O protocolo de comunicação do ADC TLC549IP é mostrado na Fig. 2. Durante o estado único, a conversão real ocorre no pino CS (seleção de chip) do conversor A/D. A saída de dados começa em um nível CS baixo com o aparecimento de um pulso de clock, um bit para cada pulso. Para produzir um código de 8 bits, são necessários 8 pulsos de clock. Após o qual o CS pode ser transferido para um único estado e a seguinte transformação pode ser realizada. Mais detalhes sobre o funcionamento do ADC podem ser encontrados em [1]. De tudo isso podemos concluir que é necessário escrever um programa driver que gere as sequências de pulsos necessárias nos momentos certos, após o qual só poderemos receber os dados. Inicie o ambiente de desenvolvimento do Visual Basic e crie um projeto EXE padrão. Adicione o controle MSComm. Você pode adicioná-lo ao painel de componentes da seguinte maneira: Projeto-->Componentes-->selecione na listaMicrosoft Comm Controle 6.0. Coloque-o no formulário, junto com 2 etiquetas e 2 temporizadores. Deixe os nomes como padrão. Agora você pode começar a escrever código para um voltímetro simples. Vamos definir variáveis: Dim b1, b2, b3, b4, b5, b6, b7, b8, soma, Ud como único Coloque o seguinte código no procedimento de carregamento do formulário: Private Sub Form_Load () MSComm1.DTREnable = True 'valor inicial - alto nível de CS Timer1.Interval = 100 'intervalo do temporizador 1ms Timer2.Interval = 1 'intervalo do temporizador 100ms MSComm1.Settings = "1200,N,8,1" 'configurações de transferência de dados MSComm1.CommPort = 1 ' número da porta COM MSComm1.PortOpen = True ' abre porta com End Sub Em procedimento Timer1 coloque o código: Subtemporizador privado1_Timer() MSComm1.DTREnable = False 'Cria CS baixo Label2.Caption = "" 'lixo para atraso inicial MSComm1.RTSEnable = True '1st clock pulse clock high Se MSComm1.CDHolding = True Então b1 = 1 Caso contrário b1 = 0 'pesquisa um ou zero valor na entrada CD (saída ADC) MSComm1.RTSEnable = False '1st clock pulso clock baixo MSComm1.RTSEnable = Verdadeiro Se MSComm1.CDHolding = True Então b2 = 1 Caso contrário, b2 = 0 MSComm1.RTSEnable = Falso MSComm1.RTSEnable = Verdadeiro Se MSComm1.CDHolding = True Então b3 = 1 Caso contrário, b3 = 0 MSComm1.RTSEnable = Falso MSComm1.RTSEnable = Verdadeiro Se MSComm1.CDHolding = True Então b4 = 1 Caso contrário, b4 = 0 MSComm1.RTSEnable = Falso MSComm1.RTSEnable = Verdadeiro Se MSComm1.CDHolding = True Então b5 = 1 Caso contrário, b5 = 0 MSComm1.RTSEnable = Falso MSComm1.RTSEnable = Verdadeiro Se MSComm1.CDHolding = True Então b6 = 1 Caso contrário, b6 = 0 MSComm1.RTSEnable = Falso MSComm1.RTSEnable = Verdadeiro Se MSComm1.CDHolding = True Então b7 = 1 Caso contrário, b7 = 0 MSComm1.RTSEnable = Falso MSComm1.RTSEnable = Verdadeiro Se MSComm1.CDHolding = True Então b8 = 1 Caso contrário, b8 = 0 MSComm1.DTREnable = True 'Cria alta CS MSComm1.RTSEnable = False '8st clock pulso clock baixo 'converte os bits para o formato decimal usando a fórmula de expansão soma = (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(soma * 5.083/255, "##0.000") 'calcula o valor proporcional Label1.Caption = CStr(Ud) & "Volt" 'exibe o valor resultante End Sub O código em Timer1 é o driver real. Que, repetindo-se periodicamente, gera pulsos de clock e recebe bits de dados. Ud é a tensão na entrada do ADC; se você usar ADCs de 10 e 12 bits, o número 225 será substituído por 1024, 4096, respectivamente. Para ADCs de 10 e 12 bits, você precisa adicionar os bits ausentes ao código , guiados por suas “fichas técnicas”. O valor 5.083 é o valor da tensão que obtive na saída Out do estabilizador. Insira seu valor aqui. Para alimentar a placa, você pode usar uma fonte separada ou ligá-la diretamente da porta COM. Para fazer isso, colocamos o seguinte código no procedimento Timer2: Subtemporizador privado2_Timer() MSComm1.Output = Chr(0) & Chr(0) 'cria pulsos no pino TX (3) para alimentar a placa ADC End Sub Deve ser lembrado que a porta COM não pode estar muito carregada... o máximo com que você pode contar é 20 mA. No modo de operação, o circuito consome uma corrente não superior a 5 mA. Agora conecte a placa à porta COM e execute o projeto. Meça a tensão no pino IN do estabilizador DA1, ela não deve ser inferior a 6.5 V. Caso contrário, use uma fonte de alimentação separada. Ao alterar a tensão na entrada ADC, certifique-se de que o programa funcione e mostre a tensão na tela. A precisão da leitura de tensão ao usar um ADC de 8 bits é de 20 mV, com um ADC de 10 bits - 5 mV, 12-1.2 mV Um pouco sobre como trabalhar em Visual Basic e o aplicativo criado com uma porta com Como você provavelmente já entendeu, para trabalhar com uma porta de comunicação você precisa de um componenteMicrosoft Comm Control ou seja, o arquivo MSCOMM32.ocx que, após a instalação do Visual Basic, está localizado no diretório C:\Windows\system32. O que quero dizer com isso é que se você copiar seu programa, sem criar um instalador, para outro computador que não tenha Visual Basic, ele não funcionará. Você também deve copiar este arquivo para o mesmo diretório do seu computador, ou seja, no sistema32. Ou crie um instalador. Agora alguns comandos: Comando para definir a taxa de troca de dados: MSComm1.Settings = "1200,N,8,1" Comando indicando o número da porta COM MSComm1.CommPort = 1 Comandos para abrir e fechar a porta de comunicação MSComm1.PortOpen = Verdadeiro MSComm1.PortOpen = Falso Comandos que enviam +12V para o pino correspondente do conector COM: MSComm1.RTSEnable = True RTS (7) - nome e número do pino MSComm1.DTREnable = True DTR(4) Comandos de saída -12V MSComm1.RTSEnable = Falso MSComm1.DTREnable = Falso Você pode pesquisar os pinos CD (1), CTS (8), DSR (6) quanto à presença de um estado único ou zero. Se MSComm1.CDHolding = True Então (se for um então…) Se MSComm1.CDHolding = False Então (se zero então…) Transmitindo o código ASCII de um caractere ou string para a saída Tx(3): MSComm1.Output = "A" Números MSComm1.Output = número de Chr(10) pode variar de 0 a 255 Ao escrever tal comando em um temporizador e alterar o número ou símbolo, você pode criar modulação PWM. Mais detalhes sobre os comandos podem ser encontrados baixando a descrição do controle Microsoft Comm Control. Agora, com esse código, você pode escrever vários programas para coletar dados. Por exemplo: voltímetro, amperímetro, medidor de temperatura, osciloscópio simples, salva dados em um arquivo. As medições podem ser realizadas uma vez a cada 1 ms ou uma vez por hora e dia, monitorando assim processos de longo prazo. Para trabalhar com tensões alternadas (passando por 0), bem como para ampliar os limites de medição, é necessário um amplificador de entrada, cujo circuito pode ser retirado de [1]. Para trabalhar com tensão de rede ou com dispositivos que não estejam isolados galvanicamente da rede, é necessário isolar opticamente o circuito do computador. Baixe os códigos-fonte de programas de exemplo (8 kB) Literatura
Autor: =ShooRooP=, evei [cão] mail.ru; Publicação: cxem.net Veja outros artigos seção informática. Leia e escreva útil comentários sobre este artigo. Últimas notícias de ciência e tecnologia, nova eletrônica: Máquina para desbastar flores em jardins
02.05.2024 Microscópio infravermelho avançado
02.05.2024 Armadilha de ar para insetos
01.05.2024
Outras notícias interessantes: ▪ O motorista não vai adormecer na estrada ▪ Estação de carregamento rápido 300 kW ▪ Nova aplicação para o motor a hidrogênio ▪ amplificador de potência estéreo soulution 511 ▪ O Galaxy Note é controlado com uma mão Feed de notícias de ciência e tecnologia, nova eletrônica
Materiais interessantes da Biblioteca Técnica Gratuita: ▪ seção do site Suas histórias. Seleção de artigos ▪ Artigo Pressão atmosférica. História e essência da descoberta científica ▪ Como um camaleão pega sua presa? Resposta detalhada ▪ artigo Organização do controle sobre o estado da proteção do trabalho na organização ▪ artigo Aplicação de ADC KR572PV5. Enciclopédia de rádio eletrônica e engenharia elétrica ▪ artigo Bocal e cigarro. Segredo do foco
Deixe seu comentário neste artigo: Todos os idiomas desta página Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site www.diagrama.com.ua |