Såhär är min FSR-lösning. Den är baserad runt en Aurduino Pro Mini 16MHz 5V som man kan köpa på ebay och få hemskickad för under 20 kronor.
2014-04-30 15.57.54.jpg
Inkoppling till RAMPS
RAMPS - Arduino
+5V - +5V
Jord - Jord
Z-min pin - pinne 12 som är normalt hög och går låg vid kontakt. Pinne 13 finns också och är inverterat värde av pinne 12 och till LED på vanligt arduino-vis.
Pinne 42 - pinne 11 detta är kommandopinnen, beskriver det mera nedanför.
(pinne 2 ser ut att vara med, men det är den inte (längre)).
FSR-erna ansluts direkt till A0-A2.
Jag provade en hel del och såg några saker som jag behövde adressera.
- Det är lika illa om bädden lyfter från en FSR som att den blir nertryckt.
- Behöver göra det lika känsligt att trycka i mitten när alla tre FSRer är belastade som att trycka rakt ovanpå en FSR.
- Det är mycket känsligt exakt hur FSR-n är placerad och "noll-värdet" avgörs av det.
- "Noll-värdet" kan driva, omkalibrering behövs åtminstone efter nån timme.
- Man behöver justera vilken avvikelse/tyngd som ska betyda träff.
- FSR-er är känsliga för vibrationer. Min obalanserade fläkt till e3d-hotenden fick bytas.
- Behöver enkelt justera Z-position på hotenden. Jag har just nu fsr-erna på mjuka kuddar vilket gör att bädden trycks ner lite vid kontakt.
Namnlös.png
Nu är detta en temporär montering, men något åt det hållet blir det till slut.
För justering av Z-offset av hotenden modifierades Marlin så att Z-offset kom upp på LCD-n och gick att ändra. Det är väldigt enkelt, bara en rad att lägga till. Tyvärr blev displayen av värdet helt knäppt när Z-offset är negativt, det funkar helt enkelt inte och då vet man ju inte vad man ändrat till.
Istället la jag till ett kommando "M41" alt "M41 Z-0.3" för att visa nuvarande Z-offset och ställa in ett nytt värde. Z-offset på -0.3 fungerar bra för mej med kuddarna.
Arduino-programmet är i basen enkelt. Analoga ingångarna använder inbyggda pullup-motståndet. Sedan är det en loop som mäter spänningen över FSR-erna, i princip på samma sätt som Johann gjorde i sitt första jobb. Jag tar medelvärdet av flera mätningar för att minska bruset.
Kalibrering av Normal-värdet görs vid uppstart eller tryck på Reset.
Det finns två villkor för touch:
1. förändringen mellan största och minsta värde ska vara mindre än 20% av normal-värdet
2. största förändring mot normal-värdet och där försöker jag väga samman om en eller många FSR-er är belastade.
Pinne 12 går låg och pinne 13 går hög vid kontakt - bara att sätta på den pinne som funkar med Marlins åsikt om på/av.
Ja det är väl det hela.
Till detta så går det att kommunicera lite enkelt från Marlins pinne 42 till Arduinons pinne 11
- omkalibrering av nollvärdet genom a. lång puls på RAMPS pinne 42 "M42 P42 S0" följt av "M42 P42 S255" en sekund senare, alternativt b. 100 snabba (1 ms) pulser följt av minst 0.2 sekunders paus. Nytt kommando "M40" gör detta.
- inställning av känslighet, normalt 20% ställs in med "M40 P42 S20" eller bara "M40 S20" för pinne är default. "M40 S30" gör FSRen mindre känslig (30%) och sker med 30 snabba (1 ms) pulser.
Vid inställning av bädden så gör jag
G28
M40
G29
så är det gjort.
Har kört med detta ett litet tag och det verkar funka.