Índice:
- Passo 1:
- Etapa 2: Registro de configuração
- Etapa 3: Registro de dados
- Etapa 4: Modo ADC de terminação única
- Etapa 5:
- Etapa 6: Modo ADC diferencial
Vídeo: Arduino e o TI ADS1110 ADC de 16 bits: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
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:
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
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:
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
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:
Arduino Nano - MMA8452Q 3 eixos 12 bits / 8 bits acelerômetro digital Tutorial: 4 etapas
Arduino Nano - MMA8452Q 3 eixos 12 bits / 8 bits Acelerômetro digital Tutorial: O MMA8452Q é um acelerômetro inteligente, de baixo consumo de energia, capacitivo, microusinado e de três eixos com 12 bits de resolução. Opções flexíveis programáveis pelo usuário são fornecidas com o auxílio de funções incorporadas no acelerômetro, configuráveis para duas interrupções
Raspberry Pi MMA8452Q 3 eixos 12 bits / 8 bits acelerômetro digital Python Tutorial: 4 etapas
Raspberry Pi MMA8452Q 3 eixos 12 bits / 8 bits Acelerômetro digital Python Tutorial: O MMA8452Q é um acelerômetro inteligente, de baixo consumo de energia, capacitivo, microusinado e de três eixos com 12 bits de resolução. Opções flexíveis programáveis pelo usuário são fornecidas com o auxílio de funções incorporadas no acelerômetro, configuráveis para duas interrupções
Nano Pixels de 26 bits usando Arduino: 4 etapas
Nano Pixels de 26 bits usando Arduino: Em meu artigo anterior, fiz um tutorial sobre como usar o LED WS2812 Nano Pixel. Nesse artigo, usei o 16 Bit Ring Nano Pixel WS2812. E neste artigo, vou mostrar como usar o anel de 26 bits Nano Pixels WS2812. Na seção de hardware
Contador binário Arduino de 8 bits: 6 etapas
Contador binário Arduino de 8 bits: Contador binário Arduino de 8 bits conta de 0 a 255. Este projeto é um contador com 8 LEDs para ser conectado ao pino 5, 3, 4, 7, 10, 11, 12 & 13 para que conte da direita para a esquerda, gerando códigos de zero a 255
Raspberry Pi MMA8452Q 3 eixos 12 bits / 8 bits acelerômetro digital Java Tutorial: 4 etapas
Raspberry Pi MMA8452Q Acelerômetro digital de 3 eixos, 12 bits / 8 bits, Java Tutorial: O MMA8452Q é um acelerômetro inteligente, de baixo consumo de energia, capacitivo, microusinado e de três eixos com 12 bits de resolução. Opções flexíveis programáveis pelo usuário são fornecidas com o auxílio de funções incorporadas no acelerômetro, configuráveis para duas interrupções