Trabalhar com o chip chinês ADC Hx711

A razão para escrever este post é o desejo de lidar com o conversor ADC delta sigma de 24 bits do módulo, baseado no chip Hx711. O próprio conversor é montado na forma de um módulo pronto, de acordo com o circuito de comutação recomendado pelo fabricante (????). Existem comentários sobre a operação deste módulo neste site no blog de Andrey Gerasimenko, “ADC NX711 de 3.3V - não acredite na documentação chinesa e não apenas ...” .

Para testar este módulo, um circuito baseado no microcontrolador ATmega16, o módulo ADC, o LCD de duas linhas BC1602, com base no controlador HD44780, foram montados quatro botões. Como ambiente de desenvolvimento, usamos o programa Code Vision AVR, versão 1.25.9 professional, AVR Studio 4, versão 4.09.0.338, o programador AVR JTAG USB, que permite não apenas programar o cristal, mas também acompanhar passo a passo, se necessário, a execução do programa no microcontrolador, quase em tempo real.



Uma célula de carga fabricada na China com um limite máximo de peso de 40 kg foi escolhida como fonte de sinal para o ADC. e unidade de inserção de sensor padrão. Note-se que o uso de unidades de integração "nativas" permite obter todos os dados de saída postulados a partir de um extensômetro de ponto único, modelo CZL A6. Portanto, os strain gages do tipo Single Point, ao usar o tamanho especificado nas especificações técnicas da plataforma para a localização da carga pesada, são projetados para que o sinal de desequilíbrio do strain gage não dependa da posição da carga na plataforma. São as propriedades MECÂNICAS do corpo do sensor: as dimensões geométricas, a localização dos filmes colados do strain gage, especialmente o recorte "osso" no meio do corpo do sensor, o tamanho da plataforma que afeta o torque aplicado ao corpo do sensor determina essa independência.



Bem, a última fonte é "GOST 29329-92. Balanças para pesagem estática. Requisitos técnicos gerais. ” Este GOST define as propriedades dos instrumentos de medição de peso. Também é importante trabalhar com o programa de escritório EXCEL. Estou usando o Excel 2003 XP3. Isso permite que você processe os resultados rapidamente usando métodos prontos.

Espero que todas as informações necessárias para repetir meus experimentos sejam fornecidas totalmente.

Agora, o próprio programa que eu uso para trabalhar com o módulo. O programa está focado no CHECK, e dificilmente diretamente, ou seja, sem alterações, pode ser aplicado para algumas necessidades aplicadas. Embora, como se costuma dizer, "dependendo de onde aplicar".

O programa em si é uma estrutura de blocos. É composto por 4 rotinas e o quinto principal principal. A primeira sub-rotina: ReadCount, lê dados do módulo ADC e os gera na variável Count.

CreatInput, gera uma matriz de entrada de dados de conversão de 32 valores.

CreatOutput, gera uma matriz de saída de dados de conversão ADC organizando uma média móvel com um tamanho de janela de 16 dados.

Keys, um programa simples para responder às teclas digitadas.

Então é só isso. As variáveis ​​são basicamente globais, principalmente porque são permitidos mega recursos.



O programa principal inicia criando a matriz de entrada CreatInput e, em seguida, os dados de entrada são filtrados usando o método da média móvel. A seleção desse filtro é baseada no seguinte. Quando o programa está em execução, os dados no visor alteram seu valor em uma faixa bastante grande. Tomei os valores do ADC com zero esforço na plataforma e tabulado. Os valores foram obtidos usando o depurador JATAG USB no ambiente do AVR Studio.



No arquivo do Excel “Aquisição de dados”, na guia “Média móvel”, é mostrado o resultado da filtragem dos dados de entrada flutuantes InputBuff (intervalo de oscilação 436 unidades) com uma janela de média de intervalos de 3.12.16. O resultado é mostrado nas células A37-A40. A partir do qual se vê que o mais eficaz, nesse caso, é uma média móvel com uma janela de 16 amostras.

Os gráficos construídos mostram isso claramente. Os dados são obtidos de um controlador em funcionamento, parado no momento da transição para o procedimento de exibição de dados. Exemplos ilustrativos dessa captura de dados são mostrados nas figuras.



Nenhum método de filtragem de dados, através do uso de vários filtros digitais, poderia de alguma forma "domar" as flutuações de entrada. Se você olhar o gráfico dos dados de entrada, a distribuição gaussiana aqui nem sequer “cheira”. Conforme confirmado pelo usuário Nikopol_86 no blog "... não acredito na documentação chinesa"

Nikopol_86 5 de fevereiro de 2019 às 09:27 0


Para ser honesto, ele tem ruído suficiente em todas as proporções. Eu fiz algumas pesquisas sobre a distribuição de densidade dos códigos ADC emitidos com os circuitos de entrada em curto e, portanto, há uma propagação de até 1000 1_5V e nifiga não é uma lei de distribuição normal, o que sugere que a fiação da placa está com problemas ou com o ADC ou todos juntos. . Notei também que ele também não possui estabilização de temperatura e a faixa de temperatura operacional reivindicada não corresponde à realidade. Se apenas quando você conectar um extensômetro de 5 kg ao ADC, alterar a temperatura da sala em 1 grau terá leituras de 2 gramas, e se você aquecer o microcircuito com o dedo, as leituras voarão de 5 a 7 gramas. Em geral, tirei conclusões de que apenas um dispensador de comida de gato pode ser feito neste dispositivo,onde a precisão em uma parada de bonde será mais que suficiente. E, infelizmente, soluções normais não são baratas, porque você precisa usar ADCs de alta qualidade da AO ou T1.

Como você pode ver, as conclusões foram confirmadas. É verdade, o mesmo é verdade:
jushabrauser 4 de fevereiro de 2019 às 12:52
Com uma relação sinal-ruído <1, isso nunca ajudará.
Mesmo com um circuito de ponte.

Portanto, em condições normais (sem matemática e / ou circuitos especiais), pelo menos 8 bits de ordem inferior emitem disparates (provavelmente).

24 bits chineses honestos por 350 rublos? Não conte aos meus chinelos.
Se o ferro em si está "mentindo" - o que você pode fazer?
Aqui, mesmo um filtro não linear de terceira ordem não ajudará, porque os dados de origem não são um bolo.

Era desse lugar que eu queria ver o que esse módulo é capaz na composição das escalas. Pesquisando na rede por problemas com o jitter dos últimos bits do ADC, levou ao fórum kazus.ru/forums/showthread.php?t=105320&page=4. Aqui está toda uma discussão sobre a estabilização das leituras. No entanto, nenhum dos métodos matemáticos propostos "acalmou" os dados de entrada que eu recebo. A partir do próprio “hardware”, para estabilizar as leituras, foi introduzido: a conexão do terra digital e analógico, bem como o curto-circuito da entrada B no solo. Usamos blindagem total e alimentação do módulo a partir de uma bateria de 6V (seguida por um estabilizador 7805) separadamente dos circuitos do controlador. Não há resultado, os dados de entrada estão oscilando ...

Portanto, a 24ª categoria “limpa” não pode ser obtida e a razão aqui me parece ser um circuito m / de baixa qualidade. Portanto, você precisa cortar o intervalo de conversão resultante. Para isso, no programa ReadCount, uma linha foi introduzida com a divisão de dados por 100. 100 é um pouco menos de 2 a 8 graus. PARA. A conversão do AD vem em 16 bits. No entanto, mesmo essa limitação não tornou o testemunho confiável. E a razão aqui são as propriedades do extensômetro.

Portanto, depois de aplicar o processo de calibração (vinculando o valor do ADC e o peso na plataforma), o peso é exibido em gramas. Ele exibe 500 gramas como o número 500, um kg como 1000. O preço da divisão é de 1 grama. Essa. chegamos com sensor de 40 kg e 40.000 divisões. De acordo com os dados técnicos da célula de carga, podemos obter do sensor apenas 3.000 divisões (símbolo C3 no nome do sensor). Portanto, o preço da divisão deve ser (40000/3000) = 13,3 gramas. No entanto, de acordo com GOST 29329, a metrologia de peso não opera com o número 3. Dígitos devem ser usados:

2.1.3 O valor do valor da divisão de calibração (e), preço da divisão da balança (d) e resolução da leitura (dd) em unidades de massa deve ser selecionado dentre os seguintes: 1X10a; 2X10a; 5X10a, onde a é um número inteiro positivo, negativo ou zero.

PARA. o preço de divisão para este sensor, garantido pelo fabricante 10 gramas. Ou seja, o formato de saída deve ser 0,0x kg. onde x = 1,2,3, ... .0. Vamos tentar fazer o preço de divisão de 5 gramas. As ações programáticas relevantes estão listadas. Após essa restrição, “retiramos” do sensor 40.000 / 5 = 8.000 divisões, o que é 2,6 vezes mais do que o permitido. Após essas suposições, as escalas resultantes funcionam de maneira bastante constante.

A observação acima sobre a célula de carga aplicada e sua "resolução" não permite afirmar conclusivamente que este módulo não pode produzir uma conversão de 24 bits. No entanto, testei este sensor para operação com uma resolução de 1 grama, em outro dispositivo, com um conversor AD diferente. Neste dispositivo, a operação do sensor e a conversão podem ser consideradas satisfatórias, porque a flutuação de peso não foi superior a 3 gramas.

O que não permite o uso deste ADC no comércio? Bem, a primeira e mais importante é a dependência da medição em temperatura. Segundo, usando as operações de divisão e multiplicação incorporadas no ATMEGA, especialmente para 8 bits, é difícil calibrar as balanças em toda a faixa de peso sob essas condições. Deve-se ter em mente que o programa não reage de maneira alguma à sobrecarga do sensor.

Como superar esses inconvenientes. Primeiro, insira o sensor de temperatura e ajuste a leitura do peso a partir do valor da temperatura. O que é bem complicado. "Mais barato" é introduzir a opção de calibração, para cargas diferentes e, dependendo do erro causado pela temperatura, calibrar o peso usado no trabalho.

O segundo é mais difícil. Substitua o procedimento de multiplicação e divisão por operações tabulares e de cisalhamento. Eu acho que essa é a melhor maneira de usar este módulo na prática de construção de pesos.

Para completar a descrição dos requisitos para a criação de um programa para escalas, é necessário usar o "Programa de metrológica (certificação) calibração de escalas" ligados a cada balanço.

Conclusão:A criação de escalas com base em m / s Hx711 é possível, sujeita a todos os requisitos metrológicos para as escalas. A introdução de correções para a dependência de temperatura da conversão deve ser prevista em um procedimento separado. O uso de um módulo com uma resolução superior a 16 bits requer uma abordagem e controle separados.

Source: https://habr.com/ru/post/undefined/


All Articles