Stap 32: Lijn Sensor kalibratie
Voor de robot de lijn nauwkeurig detecteren, moeten de sensoren worden gekalibreerd. De methode die ik heb gebruikt is de mediaan-filter techniek. Het wordt uitgelegd in detail besproken. De kalibratie-code kan worden verkregen van de functie van de calibrate_sensors() onder de header bestand < sensors.h >.
De array van acht sensoren wordt geplaatst over het helder oppervlak (hier is de witte lijn). Bij de kalibratie-opdracht wordt ontvangen, wordt een set van 100 lezingen gehouden. Voor elke sensor vormt de mediaan van hun 100 lezingen zijn 'max waarde'. Vervolgens de sensor-array wordt geplaatst over het donkere oppervlak (hier is de zwarte achtergrond) en dezelfde procedure wordt herhaald. Ditmaal vertegenwoordigt de mediaan de 'minimumwaarde'. De drempelwaarde van elke sensor wordt bepaald door de 'max waarde' en 'minimumwaarde' met behulp van de formule hieronder.
drempel = minimumwaarde + (max waarde - min) / 2
Als de waarde gelezen door een sensor groter dan de drempelwaarde, is dan is die sensor over de heldere oppervlak, anders is het over het donkere oppervlak.
De drempel, minimum en maximum waarden van elke sensor zijn vervolgens naar het EEPROM geheugen van Atmega32 geschreven zodat kalibratie waarden kunnen worden opgehaald telkens wanneer de robot wordt aangezet.
Opmerking: De negende sensor kan niet worden gekalibreerd door de software als deze is aangesloten op een invoer pin van de Atmega32. De output van de negende sensor is een logica 1 of een logica 0 en het hangt af van de waarde van de weerstand gebruikt samen met de detector. Hiervoor heb ik een 10K Ohm weerstand. Maar ik aanbevelen dat u een potentiometer in plaats daarvan gebruiken.