μλ νμΈμ.
μ€λμ νμ΄μ¬μΌλ‘ μ νΈμ²λ¦¬μ κΈ°λ³ΈμΈ μ νΈμ μκ°μμκ³Ό μ£Όνμ μμμ λν΄ μμλ³΄κ² μ΅λλ€.
μ°μ μ κ° μ§ννκ³ μλ νλ‘μ νΈμ μ νΈλ₯Ό μ¬μ©νκ² μ΅λλ€.
μ°μ , μ μ λ°μ΄ν°λ₯Ό μ€λͺ νκ² μ΅λλ€.
AVRμ adc(analog to digital converter)λ₯Ό κ±°μΉ λ°μ΄ν°λ‘ 0μμ 1023μ μ¬μ΄μ μΆλ ₯κ°μ κ°μ§λλ€.
https://coding-yoon.tistory.com/13?category=823570
μ λ°μ΄ν°λ₯Ό μ€λͺ νλ €κ³ νλ, μλ μ μ μ΄λμ κΈμ΄ μμμ΅λλ€. μ κΈμ μ°Έκ³ νμλ©΄ μ’μ κ² κ°μ΅λλ€.
( μ λ§ν¬μ κΈμ μ΄μν μ μ΄ μλλ° νΉμ μ°ΎμΌμ ¨λμ?? μ κ° λ€μ ν λ² μ½μ΄λ³΄λ μνλ§(μμν)νμ¬ λΆνΈν!! μ΄λ κ² μ ν μμ΅λλ€. μ νν λ§νμλ©΄ μνλ§(sampling)μ μκ°μΌλ‘ μͺΌκ° κ²μ΄λ©°, μ§νμΌλ‘ μͺΌκ° κ²μ΄ μμν μ λλ€.
κ·Έλ¬λ 0 ~ 5vλ₯Ό 0 ~ 1023(10bits)λ‘ μμννλ€λ κ²μ΄ μ νν ννμ λλ€.)
μ λ°μ΄ν°λ μκ°μ λ°λ₯Έ μ리 λ°μ΄ν°μ λλ€. μ무 μ μ²λ¦¬λ₯Ό κ±°μΉμ§ μλ μκ° & μ§ν λμ§νΈ λ°μ΄ν°μ λλ€.
λ€μ μλ―Έκ° μλ μλ λ‘κ·ΈνμμΌμ£Όλλ‘ ν©μλ€. λ€λ§, μ κ° sampling rateλ₯Ό λͺμΌλ‘ μ€μ νλμ§ μ§κΈμ κΈ°μ΅μ΄ λμ§ μμ μκ°μ κ·Έλλ‘ λκ³ , μ§νμ μλ λ‘κ·ΈνμμΌμ£Όλλ‘ νκ² μ΅λλ€.
analog_data = digital_data / 1024 * 5.0(v)
λμ§νΈ λ°μ΄ν°μ μμνμμΌμ€ bitλ‘ λλ μ£Όκ³ , μΈκ°ν μ μμ κ³±ν΄μ£Όλ©΄ λ©λλ€.
λλΆλΆ μ¬λλ€μ μκ° μμμΌλ‘ 보λ λ°μ΄ν°λ₯Ό λ³΄κ³ λΆμν©λλ€. ex) μκ°μ λ°λ₯Έ μ μ, μ£Όμ λ±λ±
νμ§λ§, 곡νμ λ°°μ°λ μ¬λλ€μ μκ° μμλΏλ§ μλλΌ μ£Όνμ μμμ μμμΌ ν©λλ€.
μ£Όνμ μμμ μΈμ μ¬μ©λ κΉμ?
κ°μ₯ λνμ μΈ μμ μ€ νλκ° νν°μΌ κ²μ λλ€.
λ§μ½, μ κ° μ λ°μ΄ν°λ₯Ό Low Pass Filterλ₯Ό μ¬μ©ν΄μ 100Hzλ―Έλ§μ λ°μ΄ν°λ§ μΆμΆνμκ³ (sample rateλ₯Ό μκ³ μλ€λ κ°μ νμ), κ·Έκ²μ νμΈνκ³ μΆλ€λ©΄ μ΄λ»κ² ν΄μΌν κΉμ? μ΄λμ λ λμΌλ‘ κ³ μ£Όνκ° μλ Έκ΅¬λλ μκ°μμμμ λλ΅μ μΌλ‘ μ μ λ μμ§λ§ μ νν μ μ μμ΅λλ€. κ·Έ λ μ¬μ©λλ μμμ΄ μ£Όνμ μμμ λλ€.
μκ° μ νΈλ₯Ό μ£Όνμ μμμΌλ‘ λ³ννκ³ μΆλ€λ©΄, νΈλ¦¬μ κΈμ, νΈλ¦¬μ λ³νμ μμμΌ νμ§λ§, 그건 νμ΄μ¬μκ² λ§‘κ²¨ λ‘μλ€.
νμ΄μ¬μ numpyλ₯Ό μ¬μ©ν΄μ λ°λ‘ λ³νν΄λ³΄λλ‘ νκ² μ΅λλ€. ν μ€μ΄λ©΄ κ°λ₯ν©λλ€.
import numpy as np
fft = np.fft.fft(data) / len(data)
fft_abs = abs(fft)
np.fft.fftμ λμ¨ κ°μ μ abs(μ λκ°)μ μμ΄ μ΄μ λ 볡μμκ° λ€μ΄μκΈ° λλ¬Έμ λλ€. λ°λ‘ plotμμΌ λ³΄κ² μ΅λλ€.
import matplotlib.pyplot as plt
plt.title("raw data - frequency domain")
plt.stem(fft_abs)
plt.show()
κ·Έλ¦Όμ΄ λ¬΄μΈκ° μλͺ»λ κ² κ°μ΅λλ€.
0Hzμμ 2.5κ° μ°λ μμκ³ , λλ¨Έμ§ μ£Όνμλ 보μ΄μ§ μμ΅λλ€. μ΄λ»κ² ν΄μΌν κΉμ?
μ§λ₯ μ±λΆμ μ κ±°νλ©΄ λ©λλ€. μ§κΈ νμ¬ λ°μ΄ν°λ 2.5Vλ₯Ό κΈ°μ€μΌλ‘ κ°μ΄ νλ₯΄κ³ μμ΅λλ€.
κ·Έ λ§μ μ¦μ¨ 2.5Vμ μ§λ₯ μ±λΆμ μ κ±°νλ©΄ κ΅λ₯ μ±λΆλ§ λ¨κ² λλ€λ κ²μ λλ€. λ°λ‘ 2.5Vλ₯Ό λΉΌμ©λλ€.
analog_data = digital_data / 1024 * 5.0(v) - 2.5(v)
κ·Έλ¦¬κ³ λ€μ κ·Έλ €μ€μλ€.
μμ²λΌ μ£Όνμ μμμΌλ‘ λ³κ²½νλ©΄, μ΄λ€ λμμ μ£Όνμκ° λ§κ³ μ μμ§λ μ νν μ μ μκ² λ©λλ€.