Índice:

Arduino e o TI ADS1110 ADC de 16 bits: 6 etapas
Arduino e o TI ADS1110 ADC de 16 bits: 6 etapas

Vídeo: Arduino e o TI ADS1110 ADC de 16 bits: 6 etapas

Vídeo: Arduino e o TI ADS1110 ADC de 16 bits: 6 etapas
Vídeo: Conversor ADS1110 EVM TEXAS INSTRUMENTS 2024, Julho
Anonim
Arduino e o TI ADS1110 ADC de 16 bits
Arduino e o TI ADS1110 ADC de 16 bits

Neste tutorial, examinamos o uso do Arduino para trabalhar com o Texas Instruments ADS1110 - um IC conversor analógico-digital de 16 bits incrivelmente pequeno, mas útil.

Ele pode operar entre 2,7 e 5,5 V, então também é adequado para o Arduino Due e outras placas de desenvolvimento de baixa tensão. Antes de continuar, baixe a folha de dados (pdf), pois ela será útil e mencionada durante este tutorial. O ADS1110 oferece a opção de um ADC mais preciso do que o oferecido pelos ADCs de 10 bits do Arduino - e é relativamente fácil de usar. No entanto, ele está disponível apenas como uma peça bruta em SOT23-6.

Passo 1:

Imagem
Imagem

A boa notícia é que você pode solicitar o ADS1110 montado em uma placa de apoio muito conveniente. O ADS1110 usa o barramento I2C para comunicação. E como existem apenas seis pinos, você não pode definir o endereço de barramento - em vez disso, você pode selecionar entre seis variantes do ADS1110 - cada uma com seu próprio endereço (consulte a página dois da folha de dados).

Como você pode ver na foto acima, o nosso está marcado como “EDO” que corresponde ao endereço de barramento 1001000 ou 0x48h. E com os circuitos de exemplo, usamos resistores pull-up de 10kΩ no barramento I2C.

Você pode usar o ADS1110 como um ADC de terminação única ou diferencial - mas primeiro precisamos examinar o registro de configuração que é usado para controlar vários atributos e o registro de dados.

Etapa 2: Registro de configuração

Vá para a página onze da folha de dados. O registro de configuração tem um byte de tamanho e, como o ADS1110 é redefinido em um ciclo de energia, você precisa redefinir o registro se suas necessidades forem diferentes dos padrões. A planilha de dados explica tudo muito bem … os bits 0 e 1 determinam a configuração de ganho para o PGA (amplificador de ganho programável).

Se você estiver apenas medindo tensões ou experimentando, deixe-os como zero para um ganho de 1 V / V. Em seguida, a taxa de dados para o ADS1110 é controlada com os bits 2 e 3. Se a amostragem contínua estiver ativada, isso determina o número de amostras por segundo obtidas pelo ADC.

Depois de alguns experimentos com um Arduino Uno, descobrimos que os valores retornados do ADC estavam um pouco errados ao usar a taxa mais rápida, portanto, deixe-o como 15 SPS, a menos que seja necessário o contrário. O bit 4 define a amostragem contínua (0) ou a amostragem única (1). Ignore os bits 5 e 6, no entanto, eles são sempre definidos como 0.

Por fim, o bit 7 - se você estiver no modo de amostragem único, configurá-lo para 1 solicita uma amostra - e a leitura dirá se os dados retornados são novos (0) ou antigos (1). Você pode verificar se o valor medido é um novo valor - se o primeiro bit do byte de configuração que vem depois dos dados for 0, ele é novo. Se retornar 1, a conversão ADC não foi concluída.

Etapa 3: Registro de dados

Como o ADS1110 é um ADC de 16 bits, ele retorna os dados em dois bytes - e segue com o valor do registrador de configuração. Portanto, se você solicitar três bytes, todo o lote retorna. Os dados estão na forma de "complemento de dois", que é um método de usar números com sinais binários.

A conversão desses dois bytes é feita por uma matemática simples. Ao amostrar a 15 SPS, o valor retornado pelo ADS1110 (não a tensão) fica entre -32768 e 32767. O byte mais alto do valor é multiplicado por 256, então adicionado ao byte mais baixo - que é então multiplicado por 2,048 e finalmente dividido por 32768. Não entre em pânico, pois faremos isso no próximo esboço de exemplo.

Etapa 4: Modo ADC de terminação única

Modo ADC de terminação única
Modo ADC de terminação única

Neste modo, você pode ler uma tensão que cai entre zero e 2.048 V (que também é a tensão de referência embutida para o ADS1110). O circuito de exemplo é simples (da folha de dados).

Não se esqueça dos resistores pull-up de 10kΩ no barramento I2C. O esboço a seguir usa o ADS1110 no modo padrão e simplesmente retorna a tensão medida:

// Exemplo 53.1 - Voltímetro ADS1110 de um lado (0 ~ 2.048VDC) #include "Wire.h" # define ads1110 0x48 float voltage, data; byte byte alto, byte baixo, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // garantir que todos os dados cheguem em {highbyte = Wire.read (); // byte alto * B11111111 byte baixo = Wire.read (); // byte baixo configRegister = Wire.read (); }

dados = byte alto * 256;

dados = dados + byte inferior; Serial.print ("Dados >>"); Serial.println (dados, DEC); Serial.print ("Voltagem >>"); tensão = dados * 2.048; tensão = tensão / 32768,0; Serial.print (voltagem, DEC); Serial.println ("V"); atraso (1000); }

Etapa 5:

Imagem
Imagem

Depois de carregado, conecte o sinal para medir e abra o monitor serial - você verá algo semelhante à imagem do monitor serial mostrada nesta etapa.

Se você precisar alterar o ganho do amplificador de ganho programável interno do ADC - você precisará escrever um novo byte no registro de configuração usando:

Wire.beginTransmission (ads1110); Wire.write (byte de configuração); Wire.endTransmission ();

antes de solicitar os dados ADC. Isso seria 0x8D, 0x8E ou 0x8F para valores de ganho de 2, 4 e 8 respectivamente - e use 0x8C para redefinir o ADS1110 de volta ao padrão.

Etapa 6: Modo ADC diferencial

Modo ADC Diferencial
Modo ADC Diferencial

Neste modo, você pode ler a diferença entre duas tensões, cada uma caindo entre zero e 5 V. O circuito de exemplo é simples (da folha de dados).

Devemos observar aqui (e na folha de dados) que o ADS1110 não pode aceitar tensões negativas em nenhuma das entradas. Você pode usar o esboço anterior para os mesmos resultados - e a tensão resultante será o valor de Vin- subtraído de Vin +. Por exemplo, se você tivesse 2 V em Vin + e 1 V em Vin-, a tensão resultante seria 1 V (com o ganho definido como 1).

Mais uma vez, esperamos que você tenha achado isso interessante e possivelmente útil. Esta postagem foi trazida a você por pmdway.com - tudo para fabricantes e entusiastas de eletrônicos, com entrega gratuita em todo o mundo.

Recomendado: