AT89C51ED2 e CS5550

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

AT89C51ED2 e CS5550

Mensagempor zachary » 08 Dez 2006 13:05

Olá Pessoal!

Estou desenvolvendo um projetinho com o ADC CS5550 da Cyrrus http://www.cirrus.com/en/products/pro/detail/P1038.html mas estou com problemas para faze-lo funcionar corretamente.

Estou usando a referência interna dele, e nas Entradas AIN1+ e AIN1- estou ligando uma célula de carga (350 ohms) alimentada com 5Vdc e saida de 5mV/V.

As Rotinas de comunicação entre o AT89C51ED2 e CS5550 estão funcinando perfeitamente.

Código: Selecionar todos
;----------------------------------------------------------------
;
RSTADC  EQU     P1.0            ; RESET DO ADC
CSADC   EQU     P1.1            ; CHIP SELECT DA SPI DO ADC
SDI     EQU     P1.5            ; ENTRADA DE DADOS DA SPI DO ADC
SCLK    EQU     P1.6            ; CLOCK DO SPI
SDO     EQU     P1.7            ; DA DE DADOS DA SPI DO ADC
;
;----------------------------------------------------------------
;
; ENVIA 8 BITS (ACC) PARA CS5532
;
TX8ADC: MOV     R2,#008H        ; ENVIA 8 BITS
A101:   CLR     SCLK            ; SCLK = 0
        RLC     A               ;
        MOV     SDO,C           ; SDO = C (ENVIA 1 BIT)
        ETB     SCLK            ; SCLK = 1
        DJNZ    R2,A101         ;
        CLR     SCLK            ; SCLK = 0
        RET                     ;
;
;----------------------------------------------------------------
;
; RECEBE 8 BITS (ACC) DO CS5532 (ENVIA SYNC0 '1111 1110')
;
RX8ADC: MOV     R2,#007H        ; RECEBE 8 BITS
        SETB    SDO             ; -> SINC0
A102:   SETB    SCLK            ; SCLK = 1
        MOV     C,SDI           ; C = SDI (RECEBE BIT)
        RLC     A               ;
        CLR     SCLK            ; SCLK = 0
        DJNZ    R2,A102         ;
        CLR     SDO             ; -> SINC0
        SETB    SCLK            ; SCLK = 1
        MOV     C,SDI           ; C = SDI (RECEBE BIT)
        RLC     A               ;
        CLR     SCLK            ; SCLK = 0
        RET                     ;
;
;----------------------------------------------------------------
;
; ENVIA ENDEREÇO (R0) E 3 BYTES (R3,R4,R5) PARA O CS5550
; ESCREVE NO REGISTRADOR DO CS5550
;
TXRADC: CLR     CSADC           ; CS = 0
        CLR     SCLK            ; SCLK = 0
        MOV     A,R0            ;
        LCALL   TX8ADC          ; ENVIA R0
        MOV     A,R3            ;
        LCALL   TX8ADC          ; ENVIA R3
        MOV     A,R4            ;
        LCALL   TX8ADC          ; ENVIA R4
        MOV     A,R5            ;
        LCALL   TX8ADC          ; ENVIA R5
        SETB    CSADC           ; CS = 1
        CLR     SCLK            ; SCLK = 0
        RET                     ;
;
;----------------------------------------------------------------
;
; ENVIA ENDEREÇO (R0) E RECEBE 3 BYTES (R3,R4,R5) DO CS5550
; LE REGISTRADOR DO CS5550
;
RXRADC: CLR     CSADC           ; CS = 0
        CLR     SCLK            ; SCLK = 0
        MOV     A,R0            ;
        LCALL   TX8ADC          ; ENVIA R0
        LCALL   RX8ADC          ; RECEIVE R3
        MOV     R3,A            ;
        LCALL   RX8ADC          ; RECEIVE R4
        MOV     R4,A            ;
        LCALL   RX8ADC          ; RECEIVE R5
        MOV     R5,A            ;
        SETB    CSADC           ; CS = 1
        CLR     SCLK            ; SCLK = 0
        CLR     C               ;
        RET                     ;
;
;----------------------------------------------------------------
;
; RE-INICIALIZAÇÃO DA PORTA SERIAL DO CS5550
;
RSTSAD: CLR     CSADC           ; CS = 0
        CLR     SCLK            ; SCLK = 0
        MOV     R3,#00FH        ; ENVIA 15 VEZES
A104:   MOV     A,#0FFH         ;
        LCALL   TX8ADC          ; ENVIA 'FF' TO CS5550
        DJNZ    R3,A104         ;
        MOV     A,#0FEH         ;
        LCALL   TX8ADC          ; ENVIA 'FE' TO CS5550
        SETB    CSADC           ; CS = 1
        CLR     SCLK            ; SCLK = 0
        RET                     ;
;
;----------------------------------------------------------------


Meu problema é com a calibração do mesmo. O datashet é muito superficial e não achei nenhum exemplo de código para me basear.

Será que alguem que já trabalhou com esse CS5550 poderia me dar uma luz?

Obrigado,

Zac

ACERTEI A FORMATAÇÃO DO CÓGIGO
Editado pela última vez por zachary em 08 Jan 2007 15:36, em um total de 1 vez.
Avatar do usuário
zachary
Nibble
 
Mensagens: 87
Registrado em: 08 Dez 2006 12:22
Localização: Porto Alegre - RS

Re: AT89C51ED2 e CS5550

Mensagempor marcelo » 11 Dez 2006 07:25

Zachary,


Qual o problema que você esta tendo durante a calibração ?
marcelo
Bit
 
Mensagens: 42
Registrado em: 11 Out 2006 14:50
Localização: São Paulo

Mensagempor brasilma » 11 Dez 2006 08:21

Olá Zac,

Algumas das nossas balanças utilizam A/D desta familia, qual é o graú de precisão que procura para seu projeto - é profissional ou apenas ums experiência.

A calibração da balança é normalmente feita por soft, considerando a temperatura e a histerese da célula (calibração multi-point de carga e descarga) - é preciso uma rotina de regressão logarítmica e um sensor de temperatura.

Abraços,
MArcos.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Uso industrial

Mensagempor zachary » 22 Dez 2006 10:38

Obrigado pelo interesse pessoal!

O uso é industrial, na verdade estou fazendo a "digitalização" dos transdutores (células de carga), são células de carga HBM C16 para 30T e 40T, preciso de 10.000 divisões em 30% do range da célula. Sei que a Saturno utiliza o CS5532, mas a interface é diferente.

Meu problema é que não sei como verificar e tratar erros no processo de calibração. Outra coisa, quando altero os valores dos registradores de ganho, a indicação nos registradores de saida não varia de acordo. Também percebi que existem "buracos" na faixa de valores indicados, variando o sinal de entrada a indicação não passa por determinados valores.

Só para saber, montei 5 placas e o problema se repete em todas, já verifiquei possíves problemas nas fontes de alimentação.

Acredito que o problema seja mesmo no processo de calibração.

Obrigado e um FELIZ NATAL para TODOS!!!!

Zac
Avatar do usuário
zachary
Nibble
 
Mensagens: 87
Registrado em: 08 Dez 2006 12:22
Localização: Porto Alegre - RS


Voltar para 8051

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 1 visitante

x