๐Ÿ’ป My Work/โœจ Arduino

[์•„๋‘์ด๋…ธ] ์˜จ๋„ ์„ผ์„œ <TMP36>, analogReference

Jaeseo Kim 2022. 11. 27. 23:58

๐ŸŒก๏ธ ์˜จ๋„ ์„ผ์„œ


  • ํ‰ํ‰ํ•œ ๋ถ€๋ถ„์„ ๊ธฐ์ค€

  • ์•„๋‚ ๋กœ๊ทธ ์„ผ์„œ๋Š” ์•„๋‘์ด๋…ธ์˜ ์•„๋‚ ๋กœ๊ทธ ํ•€์œผ๋กœ 0~1023 ๊นŒ์ง€ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜
    • 0~1023 ์€ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜๋œ ๊ฐ’์ด๋‹ค.
    • ๋”ฐ๋ผ์„œ, V๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— V๋กœ ๋ณ€ํ™˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค.
      • ์ตœ๋Œ€ 1023์ผ ๋•Œ, 5V ์—ฌ์•ผ ํ•จ
      • (5/1023)* ์•„๋‚ ๋กœ๊ทธ ์„ผ์„œ ๋ฐ˜ํ™˜ ๊ฐ’ = V

 

TMP36

chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://www.analog.com/media/en/technical-documentation/data-sheets/TMP35_36_37.pdf

  • TMP36 ์˜ datasheet
    • (0, 0.5), (50, 1.0)
    • y(V) = ((0.5)/50) x(์˜จ๋„) + 0.5
  • y = ((0.5)/50) x + 0.5
    • y : V
    • x : ์˜จ๋„
    • ๊ทผ๋ฐ ํ•ด๋‹น ์‹์€ ์˜จ๋„์— ๋Œ€ํ•œ V ๊ฐ’ ๋ฐฉ์ •์‹์ž„ => V์— ๋Œ€ํ•œ ์˜จ๋„๊ฐ’ ๋ฐฉ์ •์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ค˜์•ผ ํ•จ!
๊ฒฐ๊ณผ : x = 100y - 50

 

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int n =  analogRead(A0);
  
  double v=(5/1023.0)*n; // ์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ๋ฅผ V๋กœ
  
  double temp=(v-0.5)*(50/0.5);// V์— ๋Œ€ํ•œ ์˜จ๋„๊ฐ’ ๋ฐฉ์ •์‹์œผ๋กœ
	// ์œ„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ double temp=100*v-50;
  
  Serial.println(temp);
}

 

 

analogReference


 

  • ์˜จ๋„ ์„ผ์„œ๋Š” ์ตœ๋Œ€ 2V๊นŒ์ง€ ๋ฐ–์— ์•ˆ ์”€
  • ๊ทธ๋Ÿผ 5V๊นŒ์ง€๋ฅผ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค.
    • 5V / 1023 ๋ฒ”์œ„๊ฐ€ ์ข์•„์„œ ์ •๋ฐ€ํ•˜๊ฒŒ ์ธก์ • ์–ด๋ ค์›€.
  • ๊ธฐ์ค€์ ์„ ๋‚ฎ์ถ”์ž
    • 3.3V / 1023 ๋ฒ”์œ„๊ฐ€ ๋„“์–ด์„œ ์ •๋ฐ€ํ•˜๊ฒŒ ์ธก์ •
  • ์–ด๋–ป๊ฒŒ?
    • analogReference ๋กœ ์™ธ๋ถ€ ํ•€์œผ๋กœ ๊ธฐ์ค€์„ ๋‚ฎ์ถ”๊ธฐ

void setup()
{
  Serial.begin(9600);

  // ์™ธ๋ถ€ ํ•€์„ ๊ฝ‚์•„ ๊ธฐ์ค€์ ์„ ์„ค์ •
  analogReference(EXTERNAL);
}

void loop()
{
  int n =  analogRead(A0);
 
  // ์˜จ๋„ ์„ผ์„œ๋Š” ์ตœ๋Œ€ 2V๊นŒ์ง€ ๋ฐ–์— ๋ชป ์จ์„œ 5๋Œ€์‹ , 3.3์„ ๋Š˜๋ ค์„œ ์“ฐ๊ธฐ!
  double v=(3.3/1023.0)*n; // ์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ๋ฅผ V๋กœ
  double temp=100*v-50;// V์— ๋Œ€ํ•œ ์˜จ๋„๊ฐ’์œผ๋กœ
  
  Serial.println(temp);
}