Problema sincronizzazione Stepper&Anemometro

Ciao,
Sto sviluppando un sistema di regolazione automatica per delle vele.
Per il momento è sufficiente che un motore passo-passo segui la direzione del vento misurata da un anemometro.
Il programma funziona, il problema sta nel fatto che per fare in modo che l’anemometro e il motore siano solidali tra loro, nel momento dell’accensione devo forzare la direzione del vento a 0°, per tararli tra loro… altrimenti se per esempio il vento viene da 90° il motore parte (da 0) e arriva a 90 anche se il suo zero non è lo zero dell’anemometro… non so se mi spiego.
Come potrei fare? Grazie in anticipo

//MOTORE PASSO-PASSO INSEGUI WIND DIRECTION

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define LED_PIN 3


//LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);

//WIND DIRECTION
int sensorPin = A0;

float sensorValue = 0;
float voltage = 0;
float AWA = 0 ;

//PASSO-PASSO
const int stepPin = 5;            //CLK+
const int dirPin = 2;             //CW+
const int enPin = 8;              //EN+

int currentAngle = 0;
int angle = 0;
float stepPerAngle = 1.8;
int numstep;

// TIME
unsigned long time;
unsigned long time_programma;

unsigned long lettura_AWA_time;
unsigned long stampa_dati_AWA;



void setup() {
  Serial.begin(9600);

  //LCD
  lcd.begin(16, 2);
  lcd.init();
  lcd.backlight();
  analogWrite(LED_PIN, 50);

  lcd.setCursor(1, 0);
  lcd.print("Wind direction");
  lcd.setCursor(6, 1);
  lcd.print("motor");
  delay(2500);
  lcd.clear();

  //PASSO-PASSO
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(enPin, OUTPUT);
  
  digitalWrite(enPin, LOW);
  digitalWrite(dirPin, HIGH);

  //TIME
  time=millis();
  time_programma=millis();
  
  lettura_AWA_time=millis();
  stampa_dati_AWA=millis();
}


void loop() {
  time=millis();

  if(time>time_programma + 500) {
    leggiAWA();
    scriviSuDisplay();
  
    int n;

    angle = -AWA;

    if(currentAngle != angle) {
      if(currentAngle < angle) {
        digitalWrite(dirPin, HIGH);
        n = angle - currentAngle;
        numstep = n / stepPerAngle;
      }
      else if(currentAngle > angle) {
        digitalWrite(dirPin, LOW);
        n = currentAngle - angle;
        if(angle == 0) {
          n = currentAngle;
        }
        numstep = n / stepPerAngle;
      }
      for(int x = 0; x < numstep; x++) {
        digitalWrite(stepPin, HIGH);
        delayMicroseconds(1000);
        digitalWrite(stepPin, LOW);
        delayMicroseconds(1000);
      }
      currentAngle = angle;
    }

  time_programma=millis();
  }
}

Metti un sensore (solitamente si usa un sensore ottico) per individuare la posizione di zero del motore in modo che coincida con la posizione di zero dell'anemometro. All'avvio resetta la posizione del motore sul suo sensore di zero e poi sincronizzala con l'anemometro.