Documente Academic
Documente Profesional
Documente Cultură
Senzorul ACS755xCB-050
Senzorul este constituit dintr-un circuit Hall liniar de precizie, cu decalaj redus, cu o
cale de conducție de cupru situată în apropierea chip-ului. Curentul aplicat care curge prin
această cale de conducție de cupru generează un câmp magnetic pe care circuitul Hall IC
transformă într-o tensiune proporțională. Precizia senzorului este optimizată prin
apropierea semnalului magnetic de traductorul Hall. O tensiune precisă, proporțională este
furnizată de IC-ul BiCMOS Hall cu offset scăzut, stabilizat cu chopper, care este programat
pentru precizie din fabrică. Ieșirea senzorului va fi activată atunci când un curent trece prin
calea de conducție primară de cupru de la borna 4 la borna 5, care este calea utilizată
pentru eșantionarea curentului. Rezistența internă a acestei căi conductive este tipică de
100 μΩ, determinând pierderi de putere reduse. [1]
1
Circuitul de condiţionare
2
Figura 4 Caracteristica senzorului ACS755xCB-050
3
De verificat cu osciloscopul parametrii dinamici din fisa tehnică;
#include <xc.h>
#include <string.h>
__PROG_CONFIG(1,0x3FE4); // config. uC (WDT=dis|OSC=int)
__PROG_CONFIG(2,0x3EFF); // config. uC (PLL (OSC*4)=off) pag. 130 pdf. PIC16LF1937
unsigned char a, b=0, rec_var;
unsigned char v[10] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
char *logo = (char *) "\r\n Counter = ";
void init (void);
void interrupt ia2(void); // interrupts function
void send_string(const char *buffer, int size);
unsigned int read_adc(void);
void send_char (char);
char rez_ADC;
char rez_ADC_H, rez_ADC_L;
void main(void)
{
init();
while (1) // infinite loop
{
send_char(rez_ADC);
}
}
}
void init (void)
{
OSCCON=0x73; //
ANSELA = 0xF0; // RA0-RA3=output; RA3-RA7 = analog
TRISA = 0x00; //
PORTA = 0x00; //
ANSELB = 0x00; //
TRISB = 0x00; //
PORTB = 0x00; //
TRISC = 0b10111111; // RC7=RX=in || RC6=TX=out
PORTC = 0x00; //
/*start UART initialization, without INTERRUPT*/
SPBRG = 12; // Baud Rate
4
TXEN = 1; // Serial Trasmit Enable
BRGH = 0; // High Baud Rate Transmission
SPEN = 1; // Serial Port Enabled
CREN = 1; // Continuous Receive Enable bit
BRG16 = 0; // 16-bit Baud Rate Generator bit
SYNC = 0; // EUSART Mode Select bit [0=Asynchronous mode]
/*end UART initialization*/
T1CON = 0x11; // initializarea Timer T1
// (Fosc/4); prescaler 1:2 => Fosc_timer1=1MHz(T=1us)
TMR1IE = 1; //
PEIE = 1; //
GIE = 1; //
}
void interrupt ia2(void) // every 50ms !!!
{ //
if(TMR1IF) // timerul T1 a generat intreruperea ?
{
TMR1IF = 0; //
TMR1H = 0x3C; // 65535us-50000us=15535us=3CAF
TMR1L = 0xAF; // (50000us=50ms)
a++; //
}
}
if(char_H <= 9)
char_H|=0x30;
else
char_H=(char_H-9)|0x40;
5
else
char_L=(char_L-9)|0x40;
TXREG = char_H;
while(!TXIF);
TXREG = char_L;
while(!TXIF);
TXREG = 0x0D;
while(!TXIF);
REFERINŢE
1. http://www.allegromicro.com/~/media/Files/Datasheets/ACS755-050-Datasheet.ashx