Citlivosť vibračného senzora SW-18015P

Zápisník experimentátora

Prednedávnom som testoval vibračný senzor SW-18020P a zdal sa mi dosť necitlivý. Preto som objednal citlivejšie senzory a otestoval ich. Tu je výsledok. Na porovnanie to síce chcelo špeciálny program, ale tento senzor je naozaj citlivejší.

Senzor sa pripája takto. V podstate ako keby to bolo tlačidlo a bolo zapojené cez pull-up rezistor.

Na otestovanie som napísal novú verziu programu na počítanie prerušení. Výsledok sa zobrazuje na displeji Nokia 5110. Od spodného okraja displeja sa postupne posúvajú hore namerané hodnoty. Meria sa vždy časový úsek jedna sekunda a zobrazená úsečka predstavuje počet prerušení za sekundu. Najširšia úsečka môže mat 84 hodnôt. Ak je nameraných viac prerušení, zobrazí sa maximálna šírka. Konkrétna hodnota v poslednej sekunde je vykreslená v rámiku.

Takto vyzerá meranie v praxi. Na spodnom skúšobnom poli mám vibračné senzory a jemným poklepávaním na skúšobné pole som generoval prerušenia. Chce to síce trošku cviku, ale po chvíli som sa naučil klepať stále rovnako a otestovať citlivosť oboch senzorov. Senzory som naletoval na odlamovaciu lištu, aby sa dali zastrčiť do skúšobného pola.

Program

V premennej t0 pribúdajú počty prerušení a premennú t0last používam na zaznamenanie hodnoty v predchádzajúcej sekunde, aby som vedel vypočítať rozdiel a zobraziť ho na displeji.

void loop() {
int dif=t0-t0last;
Serial.print(millis());
Serial.print(" ");
Serial.println(dif);

// rotate data
for(int i=0;i<47;i++)
  data[i]=data[i+1];
// set last item
data[47]=constrain(dif,0,83);
t0last=t0;

// draw data
display.clearDisplay();
for(int i=0;i<48;i++) {
  display.drawLine(0,i,data[i],i,BLACK);
  }
display.fillRect(40,0,21,11,BLACK);
display.fillRect(41,1,19,9,WHITE);
display.setCursor(42,2);
display.print(dif);
display.display();

delay(1000);
}

Zdrojový kód programu

Zdrojový kód sa nachádza na GitHub.


31.07.2016


Menu