쪽팔리면 질문하지 맙시다. 소중한 답변 댓글을 삭제하는건 부끄러운 일 입니다
안녕하세요. 이창준 입니다. 어디 가서 물어볼 데가 없어 회로를 가져오게 되었습니다.
라즈베리파이 피코에 압력계를 붙여 제어할 목적으로 ADC를 테스트하고 있습니다. 이제껏 가변저항으로 ADC에 입력하고 가변저항의 작동에 의해 "음...잘 되네..." 하고 있던 것을 실제 입력 전압과 코드에 의해 읽어지는 데이터 비교는 처음하게 되었는데, 제가 생각했던 것과 너무 달라 고수 분들의 조언을 얻고자 합니다.
아래의 적용 과정을 참고하시어, 원하는 근사 1.65V(32768)를 ADC에서 얻을 수 있도록 고수분들의 고견을 구합니다.
======== 과정========
1. 라즈베리파이 피코의 ADC는 0 - 65535 16비트 데이터로 변환이 됩니다.
2. USB를 통해 라즈베리파이 피코에 전원을 인가 하였습니다. (현재 외부 전원은 연결하지 않았습니다. 차후 5V 적용예정)
3. 전압 분배로 3.3V의 절반 1.65V를 얻기 위해 아래의 스키매틱과 같이 220옴 두 개를 사용하였습니다. ( 멀티미터로 측정시 완전한 1/2인 1.65V는 아니지만, 1.58V로 근사한 절반이 측정 되었습니다. 저렴이 알리산 저항이라 그러려니 합니다.)
4. 분배된 전압을 라즈베리파이 피코 ADC 채널0번 26번핀에 연결하였습니다.
5. 하단의 마이크로 파이썬 코드로 ADC 데이터를 읽었습니다.
======== 결과========
1. 파이썬 코드에 의해 읽어지는 데이터는 1.65와 전혀 근사하지 않은 2.48V로 계산이 됩니다. 읽어지는 ADC 값이 49164로 전압 변환의 목적으로 * (3.3 / 65535) 가 적용되었습니다.
2. 저항의 오차를 감안하더라도 너무 오차가 커서 어디가 문제일까 삽질 중입니다.
3. 메뉴얼을 참고하여 ADC_VREF에 3.3V를 연결하니, ADC 측정값은 최대치인, 3.3V(65535)가 나타납니다. (일단 측정이 되지 않는다고 판단하여 적용하지 않았습니다.)
========마이크로파이썬코드============
from machine import ADC, Pin
import time
# ADC 객체 생성 (GPIO 26 사용)
adc_pin = ADC(Pin(26))
conversion_factor = 3.3 / 65535 # 16비트 ADC 값을 전압으로 변환하는 계수
while True:
# ADC 값 읽기
reading = adc_pin.read_u16()
# ADC 값을 전압으로 변환
voltage = reading * conversion_factor
print("ADC Value: {}, Voltage: {:.2f} V".format(reading, voltage))
# 1초 대기
time.sleep(1)
========마이크로파이썬 REPL 결과 값=========
¾î¶°ÇÑ ¿¬À¯·Î ±×·¯¼ÌÀ»±î¿ä?
ÇØ´ç ºÎºÐ¿¡¼ ³ëÀÌÁî°¡ Å»¼öµµ ÀÖÁö ¾ÊÀ»±î Á¶½É½º·¡...
±×¸®°í Å×½ºÅͱâ·Î AGNDÇÉ°ú A0ÇÉ »çÀÌÀÇ Àü¾ÐÀ» Âï¾îº¼ ÇÊ¿äµµ ÀÖÀ»°Í°°½À´Ï´Ù.
¸Þ´º¾ó »ó¿¡´Â AGND´Â ADC¸¦ À§ÇÑ ÇÊÅÍ°¡ Àû¿ëµÇ¾î ÀÖ´Ù°í Çϳ׿ä. ADCÀÇ ¿ä±¸ Á¤¹Ðµµ°¡ Å©Áö ¾Ê´Ù¸é, ADCÀÇ GND¸¦ µðÁöÅÐGND(AGND°¡ ¾Æ´Ñ ¸ðµç GND)·Î »ç¿ë °¡´ÉÇÏ´Ù°í ÀÌÇØÇß½À´Ï´Ù. ±×¸®ÇÏ¿© µÎ °³¸¦ ¿¬°áÇÏ¿´½À´Ï´Ù. Å×½ºÆ® °úÁ¤¿¡¼ GND ¿Í AGND¸¦ ¿¬°á/´Ü¶ô ¸ðµÎ ½ÃµµÇÏ¿´Áö¸¸, µ¿ÀÏÇÑ °á°ú¸¦ ¾ò¾î¼ Å©°Ô »ý°¢ÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
AGND¿Í A0´Â À§¿¡¼ ¾ð±ÞÇÑ°Í°ú °°ÀÌ 1.58V°¡ ÃøÁ¤µË´Ï´Ù.
AREF¿¡ Àΰ¡µÇ´Â Àü¾ÐÀÌ ¹®Á¦°¡ ¾Æ´Ò±î »ý°¢ÀÌ µË´Ï´Ù.
+
AGND / GND ¸¦ ¹¾î µÎ¼Ì´Âµ¥ AGND¿¡ Àΰ¡µÇ´Â Àü¾Ð¿¡ µû¶ó¼ ÃøÁ¤µÇ´Â Àü¾ÐÀÌ ´Ù¸£°Ô µÉ ¼ö ÀÖÀ» °Í °°½À´Ï´Ù.
Ȥ½Ã ¸ð¸£´Ï AGND¿¡ 3.3V ¿¡¼ ¿À´Â°ÍÀ» ¶¼°í GND¿¡ ¿¬°áÇÏ°í ´Ù½Ã Çغ¸½Ã¸é ¾î¶³±î ÇÕ´Ï´Ù.
Àúµµ ADC_VREF°¡ Á¶±Ý Àǽɽº·´±ä ÇÕ´Ï´Ù. Á¦°¡ ÀÌÇØÇÑ ¹Ù·Î´Â AGND°¡ ADCÀÇ ÃÖÀúÀüÀ§ Á¤ÀÇ, ADC_VREF°¡ ÃÖ°í ÀüÀ§ Á¤ÀÇÀÔ´Ï´Ù. Áï AGND¿¡¼ ADC_VREF »çÀÌ¿¡¼ 3.3V°¡ ³ª¿Í¾ß Çϴµ¥, 1.186V°¡ ³ª¿À°í ÀÖ½À´Ï´Ù. ±×·¡¼ À§¿¡¼ ¾ð±ÞÇÑ °Íó·³ °Á¦·Î ADC_VREF¿¡ 3.3V¸¦ ³ÖÀ¸´Ï, ADC¿¡¼ ÃøÁ¤µÇ´Â °ªÀÌ 3.3V(65535)·Î ³ª¿É´Ï´Ù. GND¿Í AGND»çÀÌ¿¡´Â ÀüÀ§Â÷´Â ¾ø´Â °ÍÀ¸·Î ÃøÁ¤µË´Ï´Ù. Å×½ºÆ® °úÁ¤¿¡¼ GND ¿Í AGND¸¦ ¿¬°á/´Ü¶ô ¸ðµÎ ½ÃµµÇÏ¿´Áö¸¸, µ¿ÀÏÇÑ °á°ú¸¦ ¾ò¾î¼ Å©°Ô »ý°¢ÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
¾Æ¹«Æ° VREFÀÇ °æ¿ì ADC¿¡¼ ÃøÁ¤ÇÒ ¹üÀ§¸¦ ¼³Á¤Çϴ°ɷΠÀÌÇØÇÏ°í »ç¿ëÇߴµ¥..
AGND - ADC_VREF »çÀÌ°¡ 1.186V ¶ó¸é
1.186V * 49164 / 65535·Î °è»êÇØ¾ß ÇÏÁö ¾Ê³ª »ý°¢µË´Ï´Ù.
ȸ·Î´Â Á¦ Àü°øÀÌ ¾Æ´Ï¶ó.. ´Ù¸¥ ºÐ¿¡°Ô Åä~~¾² ÇÏ°Ú½À´Ï´Ù ¤¾
ÃøÁ¤µÇ¾ú´Ù´Â 49164´Â..
65536-49164 = 16397
16397 / 32767 x 3.3 = 1.65 ³ª¿À³×¿ä.
+- ÀԷ¹޴ ³ÑÀΰ¡¿ä? ¾î·µç, ·¹Áö½ºÅÍ ¼ÂÆÃÀ̶û adc ºÎºÐ ¸Þ´º¾ó Àо½Ã¸é µÇ°Ú½À´Ï´Ù.
-----------------------------------
Àо´Ï º°°Å ¾ø³×¿ä.. ¸¶ÀÌÅ©·Î ÆÄÀ̽ãÂʵµ º°°Å ¾ø°í,
Vref Àΰ¡½Ã¿¡µµ °°Àº ¹®Á¦¸é ADC0 Æ÷Æ® ÀÌ»óÀ¸·Î ºÁ¾ß°Ú³×¿ä.
°è»êÀÌ Á¶±Ý ½Å±âÇÕ´Ï´Ù.
"16397 / 32767 x 3.3 = 1.65 ³ª¿À³×¿ä" À̺κÐÀÌ ¾î¶»°Ô À¯ÃߵǾú´ÂÁö Á¶±Ý ´õ ÀÚ¼¼ÇÏ°Ô ¼³¸í ºÎŹ µå·Áµµ µÉ±î¿ä?
ÇöÀç ÇÇÄÚ º¸µå 3°³¸¦ °¡Áö°í Àִµ¥, 3°³ ¸ðµÎ µ¿ÀÏÇÑ ¹®Á¦¶ó¼ 100% ÀúÀÇ ¹«ÁöÇÔÀ» ¿øÀÎÀ¸·Î »ý°¢ÇÏ°í ÀÖ½À´Ï´Ù. ¤¾¤¾
65535 ¿¡¼ »©´Â°Ç ÀÌÇØ°¡ ¾ÈµÇ³×¿ä negative Àü¿øÀ̶ó¸é ¸ð¸¦±î¿ä
Á¦°¡ ´Ù·ç´Â °Íµé Áß TI mcu¿¡ ÄÁ¹öÆÃÇÑ °ªÀÇ Æ÷¸ËÀ» ·¹Áö½ºÅÍ¿¡ ¼ÂÆà °¡´ÉÇÑ ³ÑÀÌ ÀÖ½À´Ï´Ù. (ÀϹÝÀûÀÎ 2ÀÇ º¸¼ö·Î º¸Àϲ«Áö, 0~max·Î Ç¥ÇöÇÒ²«Áö)
#define SD24_DATA_FORMAT_BINARY (0x00)
#define SD24_DATA_FORMAT_2COMPLEMENT (SD24DF)
¼ýÀÚ¸¸ º¸¸é ¿¹Àü Ãʱ⿡ Å×½ºÆ®Çß´ø ÀÔ·Â °ªÀ̶û µ¿ÀÏÇؼ ¾ð±ÞÇß½À´Ï´Ù.
±Ùµ¥ ÇÇÄÚ´Â ±×·±±â´ÉÀÌ ¾ø³×¿ä.
¿äÁò¿¡´Â stm ²¨¸¸ ÁÖ·Î ¾²³×¿ä ÇÏÇÏÇÏ -_¤Ð
ÀÓº£µðµå/¸¶ÀÌÄÄ °³¹ßÀÚ¶ó ¹Ý°©½À´Ï´Ù!
¼¾¼ ÃøÁ¤ ¿ëµµ·Î TI(msp430i), ´Ü¼ø °£´ÜÇÑ °Ç AVR(mega/tiny), ±× ¿Ü stm32·Î..
pic³ª 8051°è¿Àº ´õ ÀÌ»ó ¾È¾²´Â°É·Î ¤¾¤¾
ÀÏÇÏ¸é¼ ¾²´Ùº¸´Ï.. ÀÌ»óÇÏ´Ù°í ÇÏ½Å°Ô ¸Â½À´Ï´Ù.
49164-32767 ÀÔ´Ï´Ù.
3°³´Ù ±×·¯¸é ¸¶ÀÌÅ©·Î ÆÄÀ̼± ¶óÀ̺귯¸® ¿À·ù·Î ºÁ¾ßÇÏÁö ¾ÊÀ»±î ½ÍÀºµ¥..
±× Àü¿¡´Â ¸»¾¸Ã³·³ ¸¶ÀÌÅ©·ÎÆÄÀ̽ã Æß¿þ¾î ¹öÀüÀ» Âß ¹Þ¾Æ¼ Çϳª¾¿ ³Ö¾îºÁ¾ß °Ú½À´Ï´Ù.
°¨»çÇÕ´Ï´Ù.
ȤÀº ³»ÀÏ °¡Á®¿Í¼ ȸ»ç¿¡¼ ÇغÁ¾ß ÇÒÁöµÎ¿ä ¤¾¤¾
AGND¿¡ common(GND)
GP26¿¡ OUTÀ» ¿¬°áÇÏ°í
3.0V / 3.1V / 3.2V / 3.3V·Î Å×½ºÆ® Çß½À´Ï´Ù.
>>> adc_pin.read_u16()
60398
>>> adc_pin.read_u16()
62367
>>> adc_pin.read_u16()
64319
>>> adc_pin.read_u16()
65535
>>> adc_pin.read_u16()
3.3V Vmax·Î °è»êÇϸé
3.04132753490501
3.14047608148318
3.23876859693294
3.3
À¸·Î ³ª¿É´Ï´Ù. 0.05V Á¤µµ ¿ÀÂ÷°¡ ¹ß»ýÇϱä ÇÏÁö¸¸ ³ª»ÚÁö ¾ÊÀº°Í °°½À´Ï´Ù.
ÀǵµÇÑ °Í´ë·Î ³ª¿ÂÁö ¸ð¸£°ÚÁö¸¸
¶óÁ¸® ÆÄÀÌ ÇÇÄÚ ¸Þ´º¾ó »ó¿¡´Â ³»ºÎ 3.3V Àü¿øÀº RC ȸ·Î·Î ³ÖÀº°Å¶ó ¿ÜºÎ¿¡¼ AREF¸¦ ³Ö´Â°É ±ÇÀåÇÏ°í ÀÖ°í
ȸ·Î´Â ¸ô¶ó¼ 220¿ÈÀ¸·Î ³ª´«´Ù°í Çؼ 1:1·Î ³ª´©¾î Áö´ÂÁö ¸ð¸£°Ú½À´Ï´Ù.
¾îÁ¦ ¸Þ´º¾ó º¸´Ù º¸´Ï (20p)
https://datasheets.raspberrypi.com/pico/pico-datasheet.pdf
4.3. Using the ADC
The RP2040 ADC does not have an on-board reference and therefore uses its own power supply as a reference. On Pico
the ADC_AVDD pin (the ADC supply) is generated from the SMPS 3.3V by using an R-C filter (201¥Ø into 2.2¥ìF).
º¸µå¿¡ ÀÖ´Â RC filter¸¦ ÅëÇØ ADC_AVDD·Î °ø±ÞµÇ´Â Àü¿ø¿¡ ¹®Á¦°¡ ÀÖ´Â°Ô ¾Æ´Ò±î »ý°¢ÀÌ µÇ±âµµ ÇÕ´Ï´Ù.
ÀÌ·±Àú·± ÀÌÀ¯·Î ±×·¡¼ ±¸¸Å½Ã x2·Î ±¸¸ÅÇÕ´Ï´Ù. ¹®Á¦ »ý±â¸é ´Ù¸¥°Å Çϳª ¶Ç ºñ±³Çغ¸·Á±¸¿ä ¤¾¤¾
Ŭ·Ð Á¦Ç°Àº ¾Æ·¡ ¸µÅ©ÀÇ Á¦Ç°À̸ç, ADC ÀÌ¿Ü µðÁöÅÐ ÇÉ Á¦¾î´Â ¹®Á¦°¡ ¾ø¾ú½À´Ï´Ù. ADC°¡ ÇÊ¿äÇÑ ºÐÀº ¾Æ·¡ÀÇ Á¦Ç°Àº ÇÇÇØ ÁÖ¼¼¿ä. Á¤Ç°À¸·Î ¸¶À½ÀÇ ¾È½ÄÀ» ¾òÀ¸½Ã±æ....¤¾¤¾
https://vi.aliexpress.com/item/1005007104120926.html?spm=a2g0o.productlist.main.9.906cXao6Xao63q&algo_pvid=b90a2aec-ec55-4767-8e28-03d38ab9ac6f&algo_exp_id=b90a2aec-ec55-4767-8e28-03d38ab9ac6f-4&pdp_npi=4%40dis%21KRW%212689%212362%21%21%211.89%211.66%21%402101364217211988900713054e9059%2112000039415580065%21sea%21KR%211661844084%21&curPageLogUid=NMG9LtXO8Isi&utparam-url=scene%3Asearch%7Cquery_from%3A