Boa tarde,

Estou trabalhando em um TCC usando o CI CS5463 para medir o fator de potência e outras grandezas também, minha ideia é desenvolver um controlador de FP que acione bancos de capacitores, mas que seja um projeto aberto que possa ser montado facilmente, tendo em vista que os controladores comerciais são caríssimos.

Já montei o circuito com o CS e agora estou partindo para a comunicação SPI com o Arduino, preciso escrever em alguns registradores do CS e também ler alguns. Já li bastante coisa na internet sobre SPI e estou estudando o exemplo de código que vem na IDE do arduino mas ainda está um pouco difícil de entender a sintaxe do código.

Se alguém puder me dar uma ajuda ou sugerir algum material para eu estudar agradeceria bastante.

Exibições: 11356

Anexos

Responder esta

Respostas a este tópico

Alan, estou tentando entender a notação dos registradores do CS5463. 

E tá russo ! Vou precisar de mais tempo para entender. 

Dá uma lida no datasheet e veja se entende. 

Veja como é feita a conversão de complemento de dois ( com 24 bits) para decimal ! 

Estou focando agora na leitura de temperatura, já que não depende da entrada de tensão e nem da de corrente.

Abraços, 

Gustavo. 

Vou dar uma olhada, mais uma para eu aprender, achei que o arduino fazia isso sozinho, vou ver o que consigo entender aqui.

esse CS5463 é muito **ástico ..... :|

Se  esse chip CS5463 cumprir tudo que promete, realmente é ***ástico ..... ! 

E mais ***ástico .....  é conseguir usá-lo. Tem inúmeros recursos. 

Estou aprendendo muito com ele. Esta valendo à pena por enquanto.. 

- Instantaneous Voltage, Current, and Power
- IRMS and VRMS, Apparent, Reactive, and Active (Real) Power
- Active Fundamental and Harmonic Power
- Reactive Fundamental, Power Factor, and Line Frequency
- Energy-to-pulse Conversion
- System Calibrations and Phase Compensation
- Temperature Sensor

mas, já esta lendo tudo isso com ele ?

José, vc faz parte da lab de garagem fisica ?

Bom dia Allan David, 

Já conseguimos ler e gravar os registradores do CS5463 . Vide CS5463_SPI_V5.0.ino.

Mas as leituras de tensão e corrente estão incorretas. O programa esta incorreto. 

Nisso que estou estudando no momento. 

Acho que não existe mais o  Lab de Garagem físico.

Infelizmente não tive oportunidade de conhecê-lo.

Moro em Belo Horizonte. 

Achei na WEB esse medidor de Potência com Raspberry Pi e CS5463:

https://libraries.io/github/crjens/PiPowerMeter

Eu montei um plaquinha para fazer os testes, estou usando capacitores cerâmicos e consegui uma tensão boa no pino 11, montei a fonte usando um Trafo de 12 + 12 e um regulador 7805. Estou também usando um outro Trafo de 3 + 3 para medir a tensão e um sensor SCT-013-000 (o cabo pp na foto vem deste sensor). Estou usando o uno mesmo por enquanto pois para o projeto final vou ter que usar apenas o atmega (fazer um arduino stand alone) na mesma placa do resto do circuito.

Esta é placa que montei.

Modifiquei o código (em anexo) e consegui realizar algumas leituras, esses foram os resultados, quando salvei estes valores ainda não tinha ajustado os multiplicadores da tensão e corrente, consegui valores mais próximos depois. O código está feio ainda, tem algumas gambiarras para corrigir os valores mas é um começo, não estou aproveitando o 3º byte pois os valores estavam oscilando muito.

Tensao: 125.73
Corrente: 2.82
Pot. Ativa: 229.00

Tensao: 125.73
Corrente: 2.82
Pot. Ativa: 229.00

Tensao: 124.74
Corrente: 2.82
Pot. Ativa: 227.00

Tensao: 125.23
Corrente: 2.82
Pot. Ativa: 229.00

Tensao: 124.74
Corrente: 2.82
Pot. Ativa: 226.00

Tensao: 124.74
Corrente: 2.82
Pot. Ativa: 226.00

Tensao: 125.23
Corrente: 2.82
Pot. Ativa: 228.00

Alguns valores medidos no CI

Pinos VD e VA (está dando 4.97, esqueci de desativar o menu antes de salvar a imagem)

Pino VREFOUT

Pinos Xout e Xin

Pino 2 CPUCLK, não entendi pois no código deixei desativado igual ao código original, achei que era para ter 0 V neste pino

Vou montar uma bancada com alguns motores para servir de teste, estou pensando em colocar um potenciômetro (um para cada grandeza) ligado em uma porta analógica e fazer a leitura desta porta, o valor lido seria o multiplicador da tensão, corrente W, e VA assim teria uma espécie de ajuste de calibração do aparelho.

Anexos

Alan , já descobri como converter alguns registradores em valores decimais. 

Assim que der uma folga,  eu postarei como fazer as conversões . 

Os engenheiros da CIRRUS não facilitaram em nada o entendimento. 

Tem uns quatro tipos de conversões ! Cada um de um jeito. 

Mas isso é a primeira parte. Já viu que cada valor de tensão de corrente e Potência tem que ser calculado a partir dos valores dos registradores em notação decimal ??

Não é brincadeira, não ! Tem muito trabalho  pela frente. 

Será necessário criar um Biblioteca para Arduino para a gente poder programar com o CS5463. 

Senão o programa ficará imenso e complexo para  entender. 

Sabe desenvolver uma Biblioteca ? Tá na hora de aprender... Será um desafio para mim. 

CS5463 -  convertendo os valores dos registradores 

Quase todos os registradores do chip CS5463 possuem 24 bits ou 3 bytes.  Mas alguns são configurados de forma diferente dos outros. Existem alguns tipos de registradores , cada um com função específica. 

Irei citar os procedimentos de conversão dos bits em valores decimais . Veja as variações minima e máxima  que os valores podem ter. 

Quando tiver convertido o valor decimal do registrador , ainda precisará de fazer mais alguns cálculos para encontrar o valor real da leitura. 

No datasheet do CS5463, não encontrei nenhuma fórmula de conversão . Desse modo, procurei no site da Cirrus, outros chips similares e mais recentes. Felizmente com as fórmulas encontradas, consegui desvendar o mistério. 

https://www.cirrus.com/cn/pubs/appNote/AN366REV2.pdf

==================================================

1) Fórmula de conversão :

Explicando melhor essa fórmula :  

   2^23 = 8.388.608

-1.0 <= Valor Decimal  < 1.0 ( isto é, o valor mínimo é -1,0 e o valor máximo é 1,0) 

Se o bit MSB for = 1 , o valor decimal será negativo. 

Se o bit MSB for = 0 , o valor decimal será positivo. 

OBS : na formula acima , o correto é subtrair o bit MSB no final (veja abaixo) 

Valor decimal = { [ 1 / ( 2^23 - 1) ] x Hexto Dec ( Valor Hexadecimal) } - (MSB) 


Para converter o número hexadecimal para decimal acesse esse link :

http://www.binaryhexconverter.com/hex-to-decimal-converter

Exemplos : 

a)  Convertendo  0x2E147B em decimal  0,36 

0x2E147B = 3019899  ( usando o link de conversão HEX para DEC ) 

Valor Dec = {[ 1 / (8388608 -1) ] x 3019899 } - (0) 

Valor Dec = { 3019899 / 8388607} = 0,3600 !! 

b)  Convertendo  0xF3D35A em decimal  -0.0951126 

Veja que o MSB = 1 , então o valor é negativo. E o bit MSB tem que ser excluído do HEXA . Então  0x73D35A.

0x73D35A = 7590746  ( usando o link de conversão HEX para DEC ) 

Valor Dec = {[ 1 / (8388608 -1) ] x 7590746 } - (1) 

Valor Dec = { 7590746 / 8388607} -1  = 0,904887 - 1 = - 0,09511245 

Esses são os registradores do CS5463 que usam esse procedimento de conversão ( veja no Datasheet do CS5463) : 

6.1.2 Current and Voltage DC Offset Register ( IDCoff , VDCoff )
Address: 1 (Current DC Offset); 3 (Voltage DC Offset)

6.1.5 PulseRateE Register ( PulseRateE )
Address: 6

6.1.6 Instantaneous Current, Voltage, and Power Registers ( I , V , P )

Address: 7 (Instantaneous Current); 8 (Instantaneous Voltage); 9 (Instantaneous Power)

6.1.7 Active (Real) Power Register ( PActive )
Address: 10 (Active Power)

6.1.9 Epsilon Register 
Address: 13

6.1.10 Power Offset Register ( Poff )
Address: 14

6.1.12 Current and Voltage AC Offset Register ( VACoff , IACoff )
Address: 16 (Current AC Offset); 17 (Voltage AC Offset)

6.1.15 Average and Instantaneous Reactive Power Register ( QAVG , Q )
Address: 20 (Average Reactive Power) and 21 (Instantaneous Reactive Power)

6.1.16 Peak Current and Peak Voltage Register ( Ipeak , Vpeak )
Address: 22 (Peak Currect) and 23 (Peak Voltage)

6.1.18 Power Factor Register ( PF )
Address: 25

6.1.21 Harmonic Active Power Register ( PH )
Address: 29

6.1.22 Fundamental Active Power Register ( PF )
Address: 30

6.1.23 Fundamental Reactive Power Register ( QH )
Address: 31 (read only)

6.2.2 No Load Threshold ( LoadMin )
Address: 1  Page 1 

6.2.4 Temperature Offset Register ( TOff )
Address: 3  Page 1 

Amanhã , explicarei outros tipos de registradores e os métodos de conversão para valores decimais. 

Rapaz ... ou vc esta muito empolgado ou esta muito feliz ou os dois .... kkkk .... Obg por ajudar tanto !

Estou aposentado !

Esse tipo de projeto me faz pensar, estudar e pesquisar. Tudo o que gosto de fazer !

Abraços.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço