Robot - rad efterföljare (32 / 35 steg)
Steg 32: Linje kalibrering
För roboten att upptäcka linjen exakt, bör dess sensorer kalibreras. Den metod som jag har använt är den median-filter tekniken. Det förklaras i detalj nedan. Kalibrering koden kan erhållas från calibrate_sensors() funktionen under rubriken filen < sensors.h >.
Utbudet av åtta sensorer placeras över den ljusa ytan (här är det den vita linjen). När kommandot kalibrering mottas, tas en uppsättning 100 avläsningar. För varje sensor representerar medianen av deras 100 avläsningar dess "max värde". Nästa, arrayen sensorn placeras över den mörka ytan (här är det den svarta bakgrunden) och samma procedur upprepas. Den här gången representerar medianen ' min'. Tröskelvärdet på varje sensor bestäms utifrån dess "max värde" och "min värde" med hjälp av formeln nedan.
tröskel = min värde + (max värde - min värdet) / 2
Om värdet läsa av en sensor är större än dess tröskelvärdet, så att sensorn är över den ljusa ytan, annars är det över den mörka ytan.
Minimum, maximum och tröskel värdena för varje sensor skrivs sedan till EEPROM minnet av Atmega32 så att kalibreringsvärden kan hämtas varje gång när roboten är påslagen.
Obs: Nionde sensorn kan inte kalibreras med programvara som den är ansluten till en ingångsstift för Atmega32. Utdata från nionde sensorn är antingen en logik 1 eller en logik 0 och det beror på värdet på motståndet tillsammans med dess detektor. Jag har plockat en 10K resistor för detta. Men jag rekommenderar att du använder en potentiometer i stället.