/*CS5460_Note_3*/

/*Chapter 3*/--Calibration

1、 对于电压和电流通道,都有AC和DC校准。不管哪种校准都有两种模式:系统偏移量校准和系统增益校准。During the calibration sequences, proper input calibration signals to the “+” and “-“ pins of the voltage-/current- channel inputs must be supplied. These input calibration signals represent full-scale levels (for gain calibrations) and ground input levels (for offset calibration).其中AC和DC校准不同。

2、 5460有一系列的校准寄存器,当某一校准命令执行后相应的寄存器会保留校准产生的修正值,用户可以读取这些校准寄存器,并将其保存到外部非易失性存储器(如EEPROM)里,在系统重新上电启动时,可以从NV里读取存入的值并写入相应的校准寄存器,不必重新执行校准。

3、 总共六个校准寄存器:

   1>DC直流电压偏置寄存器(0xD1)

   2>DC直流电流偏置寄存器(0xC9)

   3>电压增益寄存器(—)

   4>电流增益寄存器(—)

   5>AC交流电压偏置寄存器(0xD5)

  6>AC交流电流偏置寄存器(0xDD)

4、 AC偏移量寄存器用于存储进行加法运算的校正值。由Data Flow图可以看出,直流偏移量的值在信号通道的更前端就加入电压/电流信号,因此DC偏移量寄存器的值将影响5460的所有结果。对于交流偏移量校正则并非如此。AC偏移量寄存器的值只影响电压有效值和电流有效值的计算结果。

5、 AC和DC的增益校准寄存器是一个!因次用户在校准前就必须决定是执行AC增益校准还是DC增益校准。因此AC和DC增益校准只能取其一。

6、 由于电压和电流通道具有各自的偏移量和增益寄存器,系统偏移量和系统增益校准可分别进行,互不影响。

image

7、 校准顺序

  1>在校准之前,必须使得5460处于活动状态,同时使其准备接收有效命令并清除DRDY位;

  2>将合适的校准信号加到电压电流通道的输入端。一般来说,在执行偏置校准时,应加入零信号,在执行增益校准时应加入设定的满度信号;

  3>写校准控制命令字;

  4>检查状态寄存器的DRDY位,直到置1后才读相应的校准寄存器,并将其保存在NV里以防日后再用。

注意:当用户发送校准命令到5460时,5460不能处于A/D转换状态,加入在转换状态,用户必须发送一个Powe_halt/*在上电/暂停命令寄存器里*/t命令以终止A/D转换,之后才能发送校准命令,一下举例一个完整的交流校准过程,其直流校准过程与之雷同

步骤1、输入电压电流为零,电路连接图如下图:

image

步骤2、清除DRDY位,发送Power_Halt命令:

Void Clear_DRDY()

{

    unsigned char buf[4];

    buf[0]=0x5e;

    Buf[0]=0xff;

    Buf[0]=0xff;

    Buf[0]=0xff;

    Write_CS5460A(buf,4); //写状态寄存器

}

void wait_DRDY_High()

{

    unsigned char buf[4];

    while(1)

    {

        Read_CS5460A(buf,0x1e);

        If(buf[3]&0x80)break;

    }

}

Clear_DRDY();

buf[0]=0xa0;

Write_CS5460A(buf,1); //发送power_halt命令

步骤3、交流电流偏置校准:

Clear_DRDY();

buf[0]=0xcd;

Write_CS5460A(buf,1);//写校准命令寄存器

Wait_DRDY_HIGH(); //等待校准完成

Read_CS5460A(buf,0x20);//读校准寄存器的值

Write_AT24C01(buf,addr,len);//将值存入NV中

步骤4、交流电压偏置校准:

Clear_DRDY();

buf[0]=0xd5;

Write_CS5460A(buf,1);//写校准命令

Wait_DRDY_HIGH(); //等待校准完成

步骤5、使输入电压电流为满量程。假如设置的满度电压为220V,满度电流为12A,则在电压输入端加入AC220V电压信号,在电流输入端加入AC-12A电流信号。接线图如下:

image

image

步骤6、交流电流增益校准:

Clear_DRDY();

buf[0]=0xce;

Write_CS5460A(buf,1);

Wait_DRDY_HIGH();

步骤7、交流电压增益校准

Clear_DRDY();

buf[0]=0xd6;

Write_CS5460A(buf,1);

Wait_DRDY_HIGH();

/*交流校准完成*/

以下为各种校准的总结:

//AC-OFF Calibration

    1> AC电流偏移校准时将IIN±接地,AC电压偏移校准时将VIN±接地。

    2> 发0xA0命令(停止计算,中止A/D转换)

    3> 把电压通道与电流AC偏移寄存器值写为默认值:0x000000

    4> 发0xDD命令(电压/电流通道AC偏移校准命令)

    5> 发0x1E命令,读状态寄存器DRDY位直到为1,置位后表示校准已完成,不为1则等待。或者不读DRDY位直接等待8秒

    6> 校准完成,发0x22命令,去读电压通道AC偏移寄存器值并存储到NV中;发0x20,读取电流通道AC偏移值,并把值存入NV中

//AC-Gain Calibration

    1> 在指定电压范围内输入交流信号到芯片的VIN±、IIN±。如:电压通道最大输入电压为±250mv,是176mv(RMS),为使电压变大时不超出此值,则输入交流信号一般取110mv(RMS);电流通道亦然。

    2> 发0xA0命令(停在计算,中止A/D转换)

    3> 把电压通道与电流通道AC增益寄存器值写为默认值:0x000000

    4> 发0x1E命令,读状态寄存器DRDY位直到为1,置位后表示校准已完成,不为1则等待。或者不读DRDY位直接等待8秒

    5> 校准完成后,(这时Vrms和Irms寄存器值近似等于0x999999,即0.6),发0x08命令,去读取电压通道AC增益寄存器值并存储在NV中;发0x04命令,去读取电流通道AC增益寄存器值并把它存到NV中

注意:偏移量校准中,交直流校准信号是一样的,只是将电压/电流通道的正负引脚接地。使用时不应同时进行偏移量和增益校准,否则会引起不符合要求的计算结果。If both gain and offset calibration are required, is to run offset calibration before gain calibration; and if both AC and DC offset calibration are required, DC offset should be calibrated first.

交流电压增益校准算法的出发点是调整电压通道增益寄存器的值,意识的对应输入端校准参考信号电平的电压有效值寄存器的值为0.6。校准信号加在通道的正负引脚上,电平由用户决定。在交流电压增益校准时,电压有效值寄存器的值被调整成0.6,存放于电压通道增益寄存器。看懂下图差不多就明白了:

image

换算关系的建立:(对上图的解释)

解释:第一个是未校准AC电压增益的情况,电压增益默认的是1.0(0.999……):250mV满度对应的是1.0,输入是电平是230mv的幅值,对应的瞬态电压寄存器的值是230/250=0.92,有效电压的还得除以一个根号2即0.92除以根号2后是0.65054,这个值将保存在电压有效值寄存器中。。同理,反过来。你可以通过读取有效值寄存器的值来算出最后测量的实际电压。。。。

第二个是经过校准后的AC电压增益,目的是使得电压有效寄存器的值为0.6(这样做是为了适应更大电压范围,预防数值超量程?),{但这个0.6到底要不要写进有效值寄存器中呢?,5460在校准的时候没有自动写进有效值寄存器中}0.6乘以根号2就是电压瞬时值寄存器里的值了即0.84853,然后由于输入的是230mv,满度是250mv,所以增益值就可以算出了即0.92231。这个时候把0.9223存入电压增益寄存器中。。这样就可以建立起换算关系了。

校准所需要时间:周期计数寄存器的N确定了在给定校准过程内的A/D转换数。对于直流偏移量/增益校准,校准过程至少需要N+30个转换周期完成。对于交流偏移量/增益校准,校准过程至少需要6N+30个A/D转换周期完成(约6个计算周期)。增加N可提高校准结果的精度。

最终换算关系总结:

1> 互感器的作用就是将电流和电压转换成交流电压使得IINVIN在最大250mv(5460最大可以测得的数据)以下。所以互感器的匝比是不需要在计算中体现的。

2> 假设您的电路上流过的最大电流是10A(这就是所谓的最大满度负载),然后写校准命令后,5460电流有效值寄存器的值应该是0.6(0x99,0x99,0x99如果是0x99,0x[][],0x[][]也就差不多了)左右。这个值可以用来检查是否校准好。同时公式也就建立起来了:

其中 是在接 负载时5460测的有效值寄存器的值,这个时候 就可以求出来了 ,这是程序代码里需要写进的等式。

3> 电压校准也如上述一样,假设您的满度负载是220V交流电。写校准命令后220V对应的5460电压有效值寄存器的值应该是0.6,然后等式:

原文地址:https://www.cnblogs.com/Double0Seven/p/2176521.html