рд╕реВрдЪрдирд╛-рдорд╛рдкрди рдЪреИрдирд▓ рдореЗрдВ IIR рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░реНрдпрд╛рд╡рд░рдг рдпрд╛ рд╡рд╕реНрддреБ рдХреЗ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдорд╛рдкрдХрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рддрдХрдиреАрдХреА рд╕рд╛рдзрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдкрд╛ рдорд╛рдкрдХ рдХрд╛ рдорд╛рди рд╕реВрдЪрдирд╛ рдорд╛рдкрдиреЗ рдХреЗ рд╕рдВрдХреЗрдд рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдорд╛рдк рдЙрдкрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реВрдЪрдирд╛-рдорд╛рдкрдиреЗ рд╡рд╛рд▓реЗ рдЪреИрдирд▓ ( IIC ) рдХреЛ рддрдХрдиреАрдХреА рд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛, рдорд╛рдкрд╛ рдореВрд▓реНрдп рдХреА рдзрд╛рд░рдгрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдорд╛рдкрдиреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдорд╛рдирд╡ рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдореЗрдВ рдпрд╛ рдЗрд╕рдХреЗ рдЖрдЧреЗ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде, рд╣рд╕реНрддрдХреНрд╖реЗрдк рдИ (рдЯреА) рдорд╛рдк рд╕реВрдЪрдирд╛ рдХреЗ рдЙрдкрдпреЛрдЧреА рд╕рдВрдХреЗрдд y (рдЯреА) рдкрд░ рдЖрд░реЛрдкрд┐рдд рд╣реИ - рд╕рдордп рдХрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрд╛рд░реНрдп рдЬреЛ рдорд╛рдкрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░рд╛рдВрд╕рдбреНрдпреВрд╕рд░ рдХреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддреНрд░реБрдЯрд┐, рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рддрд╛рд░реЛрдВ рдореЗрдВ рдмрд┐рдЬрд▓реА рдХреЗ рдкрд┐рдХрдЕрдк рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрд░рдВрдЧреЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдорд╛рдкрд╛ рдкреИрд░рд╛рдореАрдЯрд░, рдФрд░ рдЕрдиреНрдп рдХрд╛рд░рдХред

рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕рдорд╕реНрдпрд╛ рдЖрдИрдЖрдИрд╕реА рдореЗрдВ рд╕реВрдЪрдирд╛ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ - рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдИ (рдЯреА) рд╕реЗ рдорд╛рдк рд╕реВрдЪрдирд╛ рдХреЗ рд╕рдВрдХреЗрдд y (рдЯреА) рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ, рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдкрджреНрдзрддрд┐рдпрд╛рдБ y (t) рдФрд░ e (t) рдХреЗ рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рд╕реНрдкреЗрдХреНрдЯреНрд░рд╛ рдХреЗ рдЕрдВрддрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЛ рдЕрдзрд┐рдХ рдЙрдЪреНрдЪ-рдЖрд╡реГрддреНрддрд┐ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЗрд╖реНрдЯрддрдо рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдПрдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╕рдВрдХреЗрдд рдФрд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рдЯреАрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╕рд░рд▓ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рд╕рдВрд╢реНрд▓реЗрд╖рдг рддрдХ рд╕реАрдорд┐рдд рдФрд░ рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдирд┐рд╕реНрдкрдВрджрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрддрд░ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрддрд░ рджреЛрдиреЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, BMP280 (рдмреЙрд╢) рд╕реЗрдВрд╕рд░ рдореЗрдВ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрддрд░ рдкрд░ IIR рдлрд╝рд┐рд▓реНрдЯрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ k рдХреЛ рдмрджрд▓рдирд╛, [1]ред

IIR рдлрд╝рд┐рд▓реНрдЯрд░


рдЕрдирдВрдд рдЖрд╡реЗрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдлрд┐рд▓реНрдЯрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдлрд┐рд▓реНрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкрд┐рдЫрд▓реЗ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдирдореВрдиреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ IIR рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдЖрд╡реЗрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрднреА рд╢реВрдиреНрдп рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдЕрд╡рдзрд┐ рдореЗрдВ рдЕрдирдВрдд рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдПрдХ рдЖрдпрд╛рдореА рд╕реНрдХреЗрд▓рд░ рдбрд┐рдЬрд┐рдЯрд▓ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ: [реи]

y[n]=T(x[n],x[nтИТрез],...,x[nтИТM],y[nтИТрез],...,y[nтИТN],n), (1),
рдЬрд╣рд╛рдБ T рдПрдХ рдЪрд░ рдХрд╛ рдПрдХ рдЕрджрд┐рд╢ рдХрд╛рд░реНрдп рд╣реИред

рдлрд╝рдВрдХреНрд╢рди T рд╡рд░реНрддрдорд╛рди рдЗрдирдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ x [n] рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реЗ: рдЗрдирдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдПрдо рдирдореВрдиреЗ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдПрди рдирдореВрдиреЗ

IIR рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдлреЙрд░реНрдо рдХреЗ рдЕрдВрддрд░ рд╕рдореАрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ:

(2)
рдЬрд╣рд╛рдБ x [n], y [n] рдХреНрд░рдорд╢рдГ рдлрд╝рд┐рд▓реНрдЯрд░, рдХрд╛ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ, { ak} рд╕реАрдзрд╛ рдЧреБрдгрд╛рдВрдХ рдХрд╛ рд╕рдореВрд╣ рд╣реИ, M рдкреНрд░рддреНрдпрдХреНрд╖ рдЧреБрдгрд╛рдВрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, { bk} рдЙрд▓рдЯрд╛ рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдПрди рдЙрд▓рдЯрд╛ рдЧреБрдгрд╛рдВрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред

рд╕рдореАрдХрд░рдг (2) рдХреЗ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдореЗрдВ z- рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

(3)ред

рддрдм рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд╛рд░реНрдп рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

(4)

рдПрдХ рдЖрдпрд╛рдореА IIR рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдердо


рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рдЖрдпрд╛рдореА рд╕реНрдХреЗрд▓рд░ рд╕реНрдерд┐рд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

y[n]=T(x[n],y[nтИТ1])ред (5)

рдЕрдм рд╣рдо рдлреЙрд░реНрдо рдореЗрдВ IIR рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░ рд╕рдореАрдХрд░рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

(6)
рдЬрд╣рд╛рдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдлрд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ рд╣реИ;
рдпрд╛
y[n]=ay[nтИТ1]+bx[n](7)
рдЬрд╣рд╛рдБ рдХреНрд░рдорд╢рдГ рдЙрд▓рдЯрд╛ рдФрд░ рдЖрдЧреЗ рдлрд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ рд╣реИрдВред

рд╕реЗ (7) рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ k = 1 рдкрд░ рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдЗрдирдкреБрдЯ рдХреЛ рджреЛрд╣рд░рд╛рдПрдЧрд╛, рдФрд░ рдЬреИрд╕реЗ рд╣реА рдлрд╝рд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ k рдмрдврд╝рддрд╛ рд╣реИ, рдкрд┐рдЫрд▓реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рд╡рдЬрди 1 рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдорд╛рдкрд╛ рдореВрд▓реНрдп рдХрд╛ рд╡рдЬрди 0 рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдПрд▓реНрдЧреЛрд░рд┐рдердо (6) рдХреЛ BMP280 рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП рдирд┐рд░рдкреЗрдХреНрд╖ рд╡рд╛рдпреБрдордВрдбрд▓реАрдп рджрдмрд╛рд╡ рд╕реВрдЪрдирд╛-рдорд╛рдкрдиреЗ рд╡рд╛рд▓реЗ рдЪреИрдирд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, Arduino Software (IDE) рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрддрд░ рдкрд░, рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1. II рдШрдЯрдХреЛрдВ рдХреЗ рд╡рд┐рджреНрдпреБрдд рдХрдиреЗрдХреНрд╢рди рдЖрд░реЗрдЦ рдХреЛ рдЕрдВрдЬреАрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред 1. рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк IIC рдкреВрд░реНрдг рд╡рд╛рдпреБрдордВрдбрд▓реАрдп рджрдмрд╛рд╡ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рдЕрдВрдЬреАрд░ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред 2. рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, рдкреЛрдЯреЗрдВрд╢рд┐рдпреЛрдореАрдЯрд░ рдХреЗ рдиреЙрдм рдХреЛ рдШреБрдорд╛рдХрд░, 1 рдХреА 50 рд╡реГрджреНрдзрд┐ рдореЗрдВ 1 ... рдХреА рд░реЗрдВрдЬ рдореЗрдВ рдлрд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд▓рд┐рдХреНрд╡рд┐рдб рдХреНрд░рд┐рд╕реНрдЯрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХрд╛ рд╕рдВрдХреЗрдд рдорд╛рдкрд╛ рджрдмрд╛рд╡ рдорд╛рди (k = 1 рдХреЗ рд▓рд┐рдП) рдпрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рдорд╛рди (k = 2 ... 50 рдХреЗ рд▓рд┐рдП) рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ k рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1
//    () // -  - //https://github.com/orgua/iLib/blob/master/src/i2c.h #include "i2c.h" //https://github.com/orgua/iLib/blob/master/src/i2c_BMP280.h #include "i2c_BMP280.h" //https://github.com/arduino-libraries/LiquidCrystal #include <LiquidCrystal.h> //https://github.com/orgua/iLib/tree/master/examples/i2c_BMP280 BMP280 bmp280; const int rs = 12, en = 11, d4 = 6, d5 = 5, d6 = 4, d7 = 3; //const int rs = PB4, en = PB3, d4 = PD6, d5 = PD5, d6 = PD4, d7 = PD3; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); float pascal_f = 100500; float filter_K = 1; const int analogInPin = A0; //    int sensorValue = 0; //   int outputValue = 0; void setup() { Serial.begin(9600); //Serial.print("Probe BMP280: "); if (bmp280.initialize()) { //Serial.println("Sensor found"); ; } else { Serial.println("Sensor missing"); while (1) {} } bmp280.setEnabled(0); bmp280.triggerMeasurement(); bmp280.setFilterRatio(0); lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("measure"); lcd.setCursor(7, 1); lcd.print("Pa"); lcd.setCursor(10, 0); lcd.print("filter"); } void loop() { float temperature; float pascal, hpascal; sensorValue = analogRead(analogInPin); outputValue = map(sensorValue, 0, 1023, 1, 50); filter_K = outputValue; bmp280.awaitMeasurement(); bmp280.getTemperature(temperature); temperature -= 1.7; // bmp280.getPressure(pascal); pascal -= 50;// hpascal = pascal/100.; bmp280.triggerMeasurement(); pascal_f = (pascal_f * (filter_K - 1) + pascal) / filter_K; //(6) Serial.println(pascal_f,0); if(pascal_f < 100000) lcd.setCursor(6, 1); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(pascal_f,0); if(filter_K < 10) lcd.setCursor(13, 1); lcd.print(" "); lcd.setCursor(10, 1); lcd.print(filter_K,1); delay(300); } 



рдЕрдВрдЬреАрд░ред 1 - рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк IIC рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рддрд╛рд░реЛрдВ рдЖрд░реЗрдЦ


рдЕрдВрдЬреАрд░ред 2 - рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк IIC рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп

IIR рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд╢реЛрдз рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рд▓рд┐рдкрд┐


IIR рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2 рдПрдХ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдлрд╝рд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ k рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдорд╛рдкрд╛ рджрдмрд╛рд╡ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдорд╛рдкрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдкрд╛ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рдорд╛рди рдЧреНрд░рд╛рдлрд┐рдХ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░рдпреЛрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдорд╛рдкрд╛ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреА рд╕рдордп рд╕реАрдорд╛рдПрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2
 import numpy as np import matplotlib.pyplot as plt import serial from drawnow import drawnow import datetime, time k = 6.0 #  + 1 filter_K = 1 + k #     def cur_graf(): plt.title("BMP280") plt.ylim( 100450, 100510 ) plt.plot(nw, lw1, "r.-", label='') plt.plot(nw, lw1f, "b.-", label='') plt.legend(loc='best') plt.ylabel(r'$, $') plt.xlabel(r'$ \ $') plt.grid(True) #      def all_graf(): plt.close() fig=plt.figure() ax = fig.add_subplot(111) fig.subplots_adjust(top=0.85) ax.set_title(" BMP280\n" + str(count_v) + "-  " + "(" + now.strftime("%d-%m-%Y %H:%M") + ")") ax.set_ylabel(r'$, $') ax.set_xlabel(r'$ \ $' + '; (  : {:.6f}, c)'.format(Ts)) ax.text(0.95, 0.03, " : " + str(filter_K) + "\n", verticalalignment='bottom', horizontalalignment='right', transform=ax.transAxes, color='black', fontsize=14) plt.plot( n, l1, "r-", label='') plt.plot( n, l1f, "b-", label='') plt.legend(loc='best') plt.grid(True) plt.show() #   #    str_m = input("  : ") m = eval(str_m) #    mw = 16 #    ser = serial.Serial() ser.baudrate = 9600 port_num = input("   : ") ser.port = 'COM' + port_num ser #   try: ser.open() ser.is_open print(" : " + ser.portstr) except serial.SerialException: print("   : " + ser.portstr) raise SystemExit(1) #  l1 = [] #    l1f = [] #     t1 = [] #     lw1 = [] #     lw1f= [] #      n = [] #     nw = [] #      #      filename = 'count.txt' in_file = open(filename,"r") count = in_file.read() count_v = eval(count) + 1 in_file.close() in_file = open(filename,"w") count = str(count_v) in_file.write(count) in_file.close() filename = count + '_' + filename out_file = open(filename,"w") #      print("\n:\n") print("n -  ;") print("P - , ;") print("\n   \n") print('{0}{1}\n'.format('n'.rjust(4),'P'.rjust(10))) #     #  #   #       i = 0 while i < m: n.append(i) nw.append(n[i]) if i >= mw: nw.pop(0) line1 = ser.readline().decode('utf-8')[:-2] t1.append(time.time()) if line1: l1.append(eval(line1)) lw1.append(l1[i]) if i : l1f.append( (l1f[i-1]*(filter_K - 1) + l1[i])/filter_K ) #(6) lw1f.append(l1f[i]) else : l1f.append(l1[i]) lw1f.append(l1f[i]) if i >= mw: lw1.pop(0) lw1f.pop(0) print('{0:4d} {1:10.2f} {2:10.2f}'.format(n[i],l1[i],l1f[i]) ) drawnow(cur_graf) i += 1 #   ser.close() ser.is_open time_tm = t1[m - 1] - t1[0] print("\n  : {0:.3f}, c".format(time_tm)) Ts = time_tm / (m - 1) print("\n  : {0:.6f}, c".format(Ts)) #    print("\n    {}\n".format(filename)) for i in np.arange(0,len(n),1): count = str(n[i]) + "\t" + str(l1[i]) + "\n" out_file.write(count) #    out_file.close() out_file.closed #    now = datetime.datetime.now() #     all_graf() end = input("\n Ctrl-C,   ") 


рдкреНрд░рдпреЛрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдо


   : 33    : 6  : COM6 : n -  ; P - , ;     n P 0 100490.00 100490.00 1 100488.00 100489.71 2 100487.00 100489.33 3 100488.00 100489.14 4 100488.00 100488.97 тАж 30 100486.00 100488.14 31 100492.00 100488.70 32 100489.00 100488.74   : 16.028, c   : 0.500875, c     275_count.txt  Ctrl-C,   





рдирд┐рд╖реНрдХрд░реНрд╖


рдЙрдкрд░реЛрдХреНрдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди IIC рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓рд╛рд▓реАрдЦрд┐рди рдбреА.рдП., рдПрд╕.рд╡реА. рд╡рд┐рднрд╛рдЧред CITYM ред

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕реНрд░реЛрдд


  1. BMP280 рдбрд┐рдЬрд┐рдЯрд▓ рдкреНрд░реЗрд╢рд░ рд╕реЗрдВрд╕рд░
  2. рдЕрдирдВрдд рдЖрд╡реЗрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд╝рд┐рд▓реНрдЯрд░

Source: https://habr.com/ru/post/hi414943/


All Articles