Billiga sensorer: RPR220 (5 / 6 steg)
Steg 5: Linearization och mer Arduino kod
Denna sensor är icke-linjär. Du kan berätta att genom att titta på grafen.
För att linearize det, använde jag formeln:
dist = 900 /(RAW-12)
Detta fungerade tillräckligt bra för en svart mål, men vit är ju helt annorlunda. Att bygga upp en bättre modell är definitivt möjligt, men skulle vara specifika material. Om du vill ha exakta värden, måste du kalibrera den ändå.
Arduino koden jag slutade med för att använda dessa sensorer är:
void initRPR220 (int ledPin, int detectorPin) {
Initialises en RPR220 på angivna stift
pinMode (detectorPin, ingång);
pinMode (ledPin, produktionen);
}
int readRPR220 (int ledPin, int detectorPin) {
Returnerar ett ungefärligt linearized avstånd (mm) för en RPR på angivna stift.
Obs: Konstruerad för svart material
int val = 0;
digitalWrite (ledPin, låg);
Delay(5);
Val = analogRead(detectorPin);
digitalWrite (ledPin, hög);
Delay(5);
Val = analogRead(detectorPin) - val;
returnera 9000 / (val - 12);
}