https://www.winsen-sensor.com/product/mp-3b.html?campaignid=21472985515&adgroupid=163472020486&feeditemid=&targetid=kwd-324378996163&device=c&creative=705851074211&keyword=alcohol%20sensor&gad_source=1&gclid=EAIaIQobChMIspnEhI3qhwMVtAl7Bx3xPwXDEAAYASAAEgJy8_D_BwE

 

MP-3B Flat Surfaced Alcohol Sensor

The sensor has been fully tested (not calibrated) before leaving the factory. However, after transportation and storage, the environment conditions change, and the surface of the sensor absorbs moisture, mixed gas, pollution matters, etc. It is recommended

www.winsen-sensor.com

 

최근 이 센서로 알콜 측정기를 개발하고 있는데.. 쉽게 접근했다가 된통 당하고 있는중.

 

log 와 power 함수를 쓰게 될줄이야 ㅎㅎㅎ

그나저나 센서 안정화를 검증하는 시간이 너무 길다....

 

오랜만에 mol 수 계산도 해보고 예전 화학 수업 기억을 떠올리고 있습니다.

대강 하는 거랑 측정기를 통해서 제대로 칼리브레이션하고 동작하는 거랑은 천지 차이이다.

게다가 메모리 32kb 에 때려박으려니 코드 사이즈가 아슬아슬하네요.

 

 

아래 그림이 핵심!

매일  여러 샘플들 측정하고 30분 쉬고 엑셀로 기록..진도가 안나갑니다 T.T

 

M0 코어에서 float 연산을 할 일이 생겨서 , 아무 생각없이 software floating point 연산을 하다보니 이게 제법 코드를 차지하여서 32kb 메모리에서 도저히 다른 일을 할 수가 없게 되었다.

 

혹시나 찾아보니 역시..

누군가 M0 에 최적화한  tiny 버전을 만들어 놓았다.

 

https://www.quinapalus.com/qfplib-m0-tiny.html

 

Qfplib-M0-tiny: a free ARM Cortex-M0 floating-point library in 1 kbyte

Qfplib-M0-tiny: a free ARM Cortex-M0 floating-point library in 1 kbyte See also: Qfplib-M0-full: a similar library more optimised for speed, including both single- and double-precision functions; and Qfplib-M3: a similar library optimised for speed and acc

www.quinapalus.com

 

 

qfp_fadd
qfp_fsub
qfp_fmul
qfp_fdiv
qfp_fcmp
qfp_float2int
qfp_float2fix
qfp_int2float
qfp_fix2float
qfp_float2uint
qfp_float2ufix
qfp_uint2float
qfp_ufix2float
qfp_fcos
qfp_fsin
qfp_ftan
qfp_fatan2
qfp_fexp
qfp_fln
qfp_fsqrt

 

풀로는 이렇게 지원하고, 코드 크기가 1k 안으로 만들수 있다. gcc 에서 제공하는 라이브러는 한 2-3k 차지한듯.

한바이트라도 아쉬웠는데 이제 겨우 남은 메모리로 코딩을 할 수 있을거 같다.

 

혹시 pow 가 없다고 고민하지말 것.

고등학교에서 고1 수학을 배웠다면  위 함수로 구현이 가능합니다.

a^b = e^(b*ln(a))

쓸모없는 삽질 이야기.
오늘 주일 설교 예화중에 인생에 있어서 100점짜리 단어에 대한 이야기가 있었다. a 는 1점 , b 는 2점 c는 3점 이런식으로 환산해보면 , 아래와 같다.
luck(운) = 47점
love(사랑) = 54점
leadership(리더쉽) = 89점
hardwork(열심) = 98점
attitude(태도) = 100점
예화는 예화일뿐 공학적으로 너무 심각한 의미를 부여하지는 말자.
하지만, 나는 이과 공대생!
옆에 계셨던 분이 100점 짜리 단어가 attitude 만 있을까? 하는 질문을 주셨고, 나도 갑자기 궁금해져서 파이썬으로 프로그램을 짜보게 되었다.
과연 100점 짜리는 단어는 얼마나 있을까?
(입력 모수는 1800단어 고교 단어)
[가설]
확률적으로 약 1% 정도 존재할 것이며 attitude 만 있지는 않을꺼야.
[질문]
1. attitude 외에 100점 짜리 단어는 ?
2. 있다면 단어별 전체 분포도는?
[결론]
1. 약 1%의 확율로 영어단어중 100점 단어가 여러개 있다.
2. 분포도에서 75점이 제일 많고 50-110점 사이가 1-2% 대역에 분포해 있다.
3. useless 도 100점 이라는 사실!
[코드 소스]
import matplotlib.pyplot as plt
def cal_word(word):
val = 0
for i in word:
if ord(i) != 10:
#print(i, ord(i)-96, end=' ',)
val += ord(i)-96
return val
f=open('word_list.txt');
lines = f.readlines();
#개행 제거
lines = list(map(lambda s: s.strip(), lines))
def stack_word(n , is_show):
cnt = 0;
for x in lines:
if cal_word(x) == n:
cnt += 1
if is_show:
print(x)
return cnt
print('Word Cnt 100')
stack_word(100,1)
ps = [0 for i in range(200)]
for n in range(1,200) :
ps[n-1] = stack_word(n,0)
ps[n-1] = 100 * ps[n-1]/ len(lines)
plt.plot(ps)
plt.ylabel('probability(%)')
plt.xlabel('Word cnt')
plt.grid(True)
plt.show()
 

+ Recent posts