BASIC4MCU | 질문게시판 | 답변 : 님들 MG811 이산화탄소 센서를 쓰는데
페이지 정보
작성자 master 작성일2024-05-03 15:21 조회236회 댓글0건본문
/************************ CO2 Hardware Related Macros************************************/
#define DC_GAIN (8.5) //define the DC gain of amplifier
/********************** CO2 Application Related Macros**********************************/
#define ZERO_POINT_VOLTAGE (0.360) // 이산화탄소 농도가 400ppm일 때 전압값
#define REACTION_VOLTGAE (0.130) // 이산화탄소 농도가 1000ppm일 때 전압(1000ppm : 230mv)
/***************************** CO2 Globals***********************************************/
float fCO2Curve[3] = {2.602, ZERO_POINT_VOLTAGE, (REACTION_VOLTGAE / (2.602 - 3))};
float fGetCo2Value(float _fVolts, float *_fPcurve){
if ((_fVolts/DC_GAIN) >= ZERO_POINT_VOLTAGE){ return -1; }
else{ return pow(10, ((_fVolts / DC_GAIN) - _fPcurve[1]) / _fPcurve[2] + _fPcurve[0]); }
}
인터넷에 나온 식을 쓰는데 _fVolts값도 센서 출력 전압과 비슷하게 나오는데 0.29v로 계산되어도 2000~3000ppm이 넘게 나오는데ZERO_POINT_VOLTAGE, REACTION_VOLTGAE은 센서 출력을 측정한거 쓰는건데도 문제가 있어서fCO2Curve 여길 수정할 수 밖에 없는데 2.602이걸 조절하는게 맞나 싶기도 해서요다른 사람들은 DC_GAIN, fCO2Curve 수정 안하던데https://sandboxelectronics.com/files/SEN-000007/MG811.pdf
400ppm에서 0.325V 정도1000ppm에서 0.303V 정도10000ppm에서 0.265V 정도입니다.소스코드에서 정의한 값과는 다른 결과라서 이해가 안갑니다.그래프를 보면 얼핏 직선으로 보일 수도 있으나 로그곡선 비슷한 곡선이므로계산식이 제대로 만들어진 예제를 찾으시는 것이 빠를 겁니다.https://vctec.co.kr/product/%EC%9D%B4%EC%82%B0%ED%99%94%ED%83%84%EC%86%8C-%EC%84%BC%EC%84%9C-%EB%AA%A8%EB%93%88-mg-811-co2-sensor-arduino-compatiable/4257/이 모듈 경우 회로도를 보니 게인이 2배입니다.#define DC_GAIN (8.5) //define the DC gain of amplifier
게인차가 크므로 이 부분도 바꿔야겠죠대충 예제를 검색해보니 질문 소스와 유사한 것도 같고, 다 다른 것 같기도 하고 깊게 파고들지 않으면 헷갈리겠습니다.
댓글 0
조회수 236등록된 댓글이 없습니다.