Surinkta paprasčiausia, kokią tik sugalvojau, konstrukcija 3D spausdintuvo stalo padėties kompensavimui. Naudojamas vienas piezo diskas ir schemutė, kurios pagrindinis elementas atTiny45 mikrovaldiklis.
Diskas įstatytas į tarpelį tarp ekstruderio laikiklio ir x ašies guolių laikiklio. Diską spaudžiant generuojama elektros srovė, kurią registruoja mikrovaldiklis ir pastebėjęs įtampos šuolį išėjime duoda trumpą signalą. Konstrukcijos privalumas: kaip jutiklis naudojama pati spausdinimo galvutė, nereikia nustatinėti jutiklio padėties ir ilgio kaip būtų naudojant bltouch jutiklį, nereikia papildomo servo laido, pakeitus galvutę nereikia jokių papildomų kalibracijų. Bet yra ir trūkumas: jei kalibruoti su karšta galvute, ir iš jos yra ištekėjusio minkšto plastiko galiukas, daviklis nevisada sureaguoja į prisilietimą prie stalo paviršiaus.
Kaip viskas veikia matosi čia:
Valdiklio elektrinė schema, plokštė surinkta ant universalios spausdintinės plokštės.

Programa nekeičiant schemos veiktų su atTiny25, atTiny45, atTiny85. Programos tekstas Arduino aplinkoje:
const int isejimas = 0; //išėjimo pinas
const int jutiklis = A2; //ADC keitiklio pinas prijungtas prie piezo disko
uint16_t signalas = 0; //kintamasis nuskaityto signalo lygio saugojimui
uint16_t lygis = 0; // suvidurkintas signalo lygis
int diodas = 1; //diodo būsena
int jautrumas = 12; //mažinant didinam jautrumą prisilietimui
void setup() {
pinMode(isejimas, OUTPUT);
for ( int i = 0; i <=6000; i++) { //ciklas pradiniam signalo lygiui kalibruoti
signalas = analogRead(jutiklis);
lygis = (lygis * 3 + signalas) / 4;
if ( (i % 500) == 0) { //mirksinam diodą po maitinimo įjungimo
digitalWrite(isejimas, diodas);
diodas = !diodas;
}
}
digitalWrite(isejimas, LOW);
}
void loop() {
signalas = analogRead(jutiklis);
if (signalas > (lygis + jautrumas)) { // jeigu signalas didesnis už (vidutinis lygis + jautrumas) siunčiam signalą
digitalWrite(isejimas, HIGH);
delay(250);
digitalWrite(isejimas, LOW);
}
lygis = (lygis * 3 + signalas) / 4; //koreguojame vidutinį signalo lygį
}

