AD5933 ÀÓÇÇ´ø½º ÄÁ¹öÅÍ ³×Æ®¿öÅ© ºÐ¼®±â ¸ðµâ 1M »ùÇøµ ¼Óµµ 12bit ÇØ»óµµ ÃøÁ¤ ÀúÇ×
AD5933 ÀÓÇÇ´ø½º ÃøÁ¤ ±â±â
1 ¡¢ Á¦Ç° ¼³¸í
AD5933 Àº ÁÖÆļö ¹ß»ý±â¿Í 12 ºñÆ®, 1 MSPS ¾Æ³¯·Î±×-µðÁöÅÐ º¯È¯±â (ADC) ¸¦ Ĩ¿¡ ÅëÇÕÇÏ´Â °íÁ¤¹Ð ÀÓÇÇ´ø½º º¯È¯±â ½Ã½ºÅÛ ¼Ö·ç¼ÇÀÔ´Ï´Ù. ÁÖÆļö ¹ß»ý±â¿¡ ÀÇÇØ »ý¼º µÈ ½ÅÈ£´Â ¿ÜºÎ º¹ÇÕ ÀÓÇÇ´ø½º¸¦ ¿©±âÇϱâ À§ÇØ »ç¿ëµÇ¸ç, ¿ÜºÎ ÀÓÇÇ´ø½ºÀÇ ÀÀ´ä ½ÅÈ£´Â ¿Â Ĩ ADC¿¡ ÀÇÇØ »ùÇøµµÇ°í, ±×·± ´ÙÀ½ °³º° Ǫ¸®¿¡ º¯È¯ (DFT) À» À§ÇØ ¿Â Ĩ DSP¿¡ ÀÇÇØ Ã³¸®µË´Ï´Ù. DFT ¾Ë°í¸®ÁòÀº °¢ ÁÖÆļö¿¡¼ ÇϳªÀÇ ½ÇÁ¦ ºÎºÐ (R) µ¥ÀÌÅÍ ¿öµå¿Í ÇϳªÀÇ °¡»ó ºÎºÐ (I) µ¥ÀÌÅÍ ¿öµå¸¦ ¹ÝȯÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ½ÇÁ¦ ¹× °¡»ó µ¥ÀÌÅÍ ´Ü¾î¸¦ ±â¹ÝÀ¸·Î Å×½ºÆ® ÇÒ ÀåÄ¡ÀÇ ÀÓÇÇ´ø½º ¹× À§»ó °ªÀ» °è»êÇÒ ¼ö ÀÖ½À´Ï´Ù.
2 ¡¢ Á¦Ç° Ư¼º
ÃÖ´ë 100 kHzÀÇ Ãâ·Â ÁÖÆļö·Î ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ Ãâ·Â ÇÇÅ©¿¡¼ ÇÇÅ© ¿©ÀÚ Àü¾Ð
ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ ÁÖÆļö ½ºÄ³´× ±â´É ¹× Á÷·Ä I2C® ÀÎÅÍÆäÀ̽º
ÁÖÆļö ÇØ»óµµ: 27 ºñÆ® (<0.1Hz)
ÀÓÇÇ´ø½º ÃøÁ¤ ¹üÀ§: 1 k ¥Ø ~ 10 M ¥Ø
Ãß°¡ ȸ·Î¸¦ »ç¿ëÇÏ¿© 100 ¥Ø¿¡¼ 1 k ¥Ø±îÁöÀÇ ÀÓÇÇ´ø½º¸¦ ÃøÁ¤ ÇÒ ¼ö ÀÖ½À´Ï´Ù
³»ºÎ ¿Âµµ ¼¾¼ (± 2 ° C)
³»ºÎ ½Ã½ºÅÛ ½Ã°è ¿É¼Ç
3 ¡¢ Á¦Ç° ½Åû
-Àü±â ÈÇÐ ºÐ¼®
-»ýü Àü±â ÀÓÇÇ´ø½º ºÐ¼®
-ÀÓÇÇ´ø½º ½ºÆåÆ®·³ ºÐ¼®
-º¹ÀâÇÑ ÀÓÇÇ´ø½º ÃøÁ¤
-ºÎ½Ä ¸ð´ÏÅ͸µ ¹× º¸È£ Àåºñ
-»ý¹° ÀÇÇÐ ¹× ÀÚµ¿Â÷ ¼¾¼
-»ýü Àü±â ÀÓÇÇ´ø½º ºÐ¼®
-±ÙÁ¢ °¨Áö
-ºñÆı« Å×½ºÆ®
-Àç·á ¼Ó¼º ºÐ¼®
-¿¬·á/ÀüÁö »óÅ ¸ð´ÏÅ͸µ
4: ¸ðµå ±¸¼º
Á÷Á¢ ¸ðµå: J2 ¹× J6 ¿¬°á, J1, J3, J4 ¹× ¿¬°á ÇØÁ¦
J5, VIN ¹× VOUTÀÇ ¾çÂÊ ³¡¿¡¼ ¾Ë ¼ö¾ø´Â ÀÓÇÇ´ø½º¸¦ Á÷Á¢ ¿¬°á
µà¾ó ÀÛµ¿ ¾ÚÇÁ ¸ðµå: ¿¬°á J1, J3, J4, J5,
J2, J6 ¸¦ ºÐ¸®ÇÏ°í 8606 µà¾ó ÀÛµ¿ ÁõÆø±â ÃÖÀûÈ
½ÅÈ£ ¸µÅ©
5 ÇÁ·Î±×·¥
# Æ÷ÇÔ "sys.h"
# "Ad5933.h" Æ÷ÇÔ
# "Áö¿¬. h" Æ÷ÇÔ
# Æ÷ÇÔ <¼öÇÐ. h>
# Á¤ÀÇ AD5933_ADDRESS 0x1A // Á¤Ä¡ÈAD5933 Ql ÅäÁö »çÀ¯, ½Ä »çÀ¯
// 0001101(0x0D) , ¶¥
// À¯¾Æ(0x0D) ,
// ÈÆÀå(0x1A)
# POINTER_COMMAND 0xB0 Á¤ÀÇ // À¯´Ï À¯´Ï À§Ä¡(10110000)
# Á¤ÀÇ °ÔÀÎ _ ÆÑÅÍ 5.0725e-9
# PI 3.1415926536 Á¤ÀÇ
# Á¤ÀÇ ½Ã½ºÅÛ _ À§»ó 109.052767
# Rad_to_degree 180 / PI Á¤ÀÇ
´õºí
°ÔÀÎÆÑÅÍ [] = {5.1143e-9, 5.1146e-9, 5.1162e-9, 5.11645e-9,
5.11699e-9, 5.1175e-9, 5.11774e-9, 5.1189e-9, 5.11983e-9, 5.12105e-9};
´õºí SystemPhase[] = {290.994, 291.721, 292.452, 293.168, 293.870, 294.596, 295.336, 296.009, 296.750, 297.492};
Int Receive_byte[1]; // ? Àü
ªÀº int status_register; // Á¤Ä¡ ÀÌÀü ÀÌÀü
Int Re, Im; // ¸£¿ì, ¿À³× ÀÌÇÁ
ÀÌÁß Å©±â, ÀÓÇÇ´ø½º, À§»ó; // DFT Àü¾ð, ÇÇÀü Àü¼¼, ¼Ò¼± ¼±¹Ì
¹«È¿ AD5933_Init (¹«È¿)
{
Delay_ms (100); // ±âÁ¸
// ÁÖÆļö ·¹Áö½ºÅ͸¦ ½ÃÀÛÇϱâ À§ÇØ Àü¼Û
// ÇÁ·Î±×·¥ 30khz ½ÃÀÛ ÁÖÆļö 16.776 KhzÀÇ ³»ºÎ osc °¡Á¤
I2c_write (0x84, 0x45);
I2c_write (0x83, 0xA6);
I2c_write (0x82, 0x0E);
// ÁÖÆļö ÁõºÐ ·¹Áö½ºÅÍ·Î Àü¼Û
// ÇÁ·Î±×·¥ 1Khz ÁÖÆļö Áõ°¡ 16.776 KhzÀÇ ³»ºÎ osc °¡Á¤
I2c_write (0x87, 0x02);
I2c_write (0x86, 0x7D);
I2c_write (0x85, 0x00);
// ÁõºÐ ¼ö ·¹Áö½ºÅÍ·Î Àü¼Û
// ÇÁ·Î±×·¥ 10 ÁÖÆļö ÁõºÐ
I2c_write (0x89, 0x0A);
I2c_write (0x88, 0x00);
// Á¤Âø ½Ã°£Áֱ⠵î·ÏÀ¸·Î Àü¼Û
// Adc º¯È¯ Àü¿¡ °¢ ÁÖÆļö¿¡¼ ÇÁ·Î±×·¥ 15 Ãâ·ÂÁÖ±â
I2c_write (0x8B, 0x0F);
I2c_write (0x8A, 0x00);
// Á¦¾î ·¹Áö½ºÅÍ·Î Àü¼Û
// ´ë±â ¸ðµå¿¡¼ AD5933 ¹èÄ¡
I2c_write (0x80, 0xB0);
// ³»ºÎ ½Ã½ºÅÛ ½Ã°è ¼±ÅÃ
I2c_write (0x81, 0x00);
// ¹üÀ§ 1 (2vp-p, 1.6v) ÀÇ ½ÃÀÛ ÁÖÆļö ·¹Áö½ºÅÍÀÇ ³»¿ëÀ¸·Î ¼¾¼¸¦ ÃʱâÈ PGA = x1
I2c_write (0x80, 0x11);
Delay_ms (5); //
// ÁÖÆļö ½ºÀ¬ ½ÃÀÛ (2vp-p, 1.6v) PGA = x1
I2c_write (0x80, 0x21);
// ½ºÀ¬ ½ÃÄö½º ÃʱâÈ
}
º¸ÀÌµå ½ºÀ¬ (¹«È¿)
{
¼¸íµÇÁö ¾ÊÀº int real_byte_high;
¼¸íµÇÁö ¾ÊÀº int real_byte_low;
¼¸íµÇÁö ¾ÊÀº int imag_byte_high;
¼¸íµÇÁö ¾ÊÀº int imag_byte_low;
¼¸í µÈ ªÀº int imag_data;
¼¸í µÈ ªÀº int real_data;
Int m = 0; //
Printf ("ÁÖÆļö ½ºÀ¬ ½ÃÀÛ"); // printf ÇÔ¼ö È£Ãâ
Delay_ms (10);
(;)
// »óÅ reg D0 = À¯È¿ÇÑ ¿Âµµ, D1 = À¯È¿ÇÑ ½ÇÁ¦/imag µ¥ÀÌÅÍ, D2 = ÁÖÆļö ½ºÀ¬ ¿Ï·á
{
// D1 »óÅ reg ·çÇÁ
Status_register = AD5933_read(0x8F); // »óÅ ·¹Áö½ºÅÍ Àбâ
Status_register = (status_register & 0x2); // À¯È¿ÇÑ µ¥ÀÌÅÍ ºñÆ® ¸¶½ºÅ©
If ( ( ((status_register) 0xFD ) = 0xFF) // frequy ¸í·ÉÀ» ½ÃÀÛÇÑ ÈÄ¿¡ À¯È¿ÇÑ µ¥ÀÌÅÍ°¡ ÀÖ¾î¾ßÇÕ´Ï´Ù.
{
// D1 ½ÇÁ¦ Á¶°Ç
If (( (AD5933_read(0x8F) 0xFB )!= 0xFF) // D2 Å×½ºÆ® Á¶°Ç
{
Real_byte_high = AD5933_read(0x94);
Real_byte_low = AD5933_read(0x95);
Imag_byte_high = AD5933_read(0x96);
Imag_byte_low = AD5933_read(0x97);
Real_data = (((real_byte_high << 8) real_byte_low);
Imag_data = (((imag_byte_high << 8) imag_byte_low);
Re = (int) real_data;
Im = (int) imag_data;
Å©±â = sqrt(pow(Re,2) + pow(Im,2));
ÀÓÇÇ´ø½º = 1/(Å©±â * À̵æ ÀÎÀÚ [m]);
(Re>0 & & Im>0)
´Ü°è = (¾Æź (((´õºí) ÀÓ/(´õºí) Àç) * rad_to_degree) -½Ã½ºÅÛ ´Ü°è [m];
±×·¸Áö ¾ÊÀ¸¸é (Re>0 & Im<0)
À§»ó = (360 + ¾Æź ((´õºí) ÀÓ/(´õºí) Àç) * rad_to_degree) -½Ã½ºÅÛ »ó [m];
±âŸ
À§»ó = (180 + ¾Æź ((´õºí) ÀÓ/(´õºí) Àç) * rad_to_degree) -½Ã½ºÅÛ »ó [m];
Printf ("ÀÓÇÇ´ø½º´Â % f ohm", ÀÓÇÇ´ø½º);
Delay_ms (10);
Printf ("´Ü°è´Â % f Á¤µµÀÔ´Ï´Ù", ´Ü°è);
Delay_ms (10);
M ++;
I2c_write (0x80, 0x31); // ´ÙÀ½ ÁÖÆļö·Î Áõ°¡
} // D2 Å×½ºÆ® Á¶°ÇÀÇ ³¡
Else // ÁÖÆļö ½ºÀ¬ Á¾·á ·çÇÁ
{
ÈÞ½Ä;
}
} // D1 ½ÇÁ¦ Á¶°ÇÀÇ ³¡
} // ·çÇÁÀÇ ³¡
} // ½ºÀ¬ ±â´ÉÀÇ ³¡