KY-024 Linear magnetic Hall sensor - SS49E

  • Il sensore KY-024 fornisce due output: uno analogico e uno digitale. I datasheet di questo sensore sono piuttosto confusionari e non contengono dati tecnici: scheda tecnica, manuale.
  • L'output analogico proviene dal chip SS49E:
    • permette la misurazione del campo magnetico lungo un solo asse
    • riesce a leggere valori di campo magnetico anche grandi, da a , ma la precisione è piuttosto carente (se la lettura analogica di Arduino fornisce solo valori da 0 a 1024, allora la precisione massima è di )
    • i dati letti da Arduino con analogRead saranno invertiti rispetto al campo magnetico, ovvero valori più alti letti corrispondono a valori più bassi del campo magnetico
    • il datasheet del SS49E è qui
  • L'output digitale proviene da un comparatore:
    • dice semplicemente se il campo magnetico ha superato uno specifico valore
    • tale valore è impostabile girando la vite
    • Regolazione vite

Progetto di esempio: magnetometro_esterno

// i pin da cui leggiamo il valore del campo magnetico
int pin_analog = A0; // pin per lettura analogica
int pin_digital = 3; // pin per lettura digitale

void setup ()
{
    // inizializza il seriale
    Serial.begin(9600);

    // abilita i pin alla lettura
    pinMode(pin_analog, INPUT);
    pinMode(pin_digital, INPUT);
}

void loop ()
{
    // i dati di analogRead vanno da 0 a 1023 e coprono il range da 0v a 5v
    int letturaAnalogica = analogRead(pin_analog);
    // conversione in volt della lettura analogica
    float letturaAnalogicaVolt = letturaAnalogica / 1023.0 * 5.0;
    // se vogliamo trasformare letturaAnalogicaVolt in Tesla dobbiamo fare riferimento
    // al datasheet dell'SS49E (il primo grafico a pagina 3)
    float campoMagneticoTesla = (letturaAnalogica - 2.5) * 0.2 / 3;

    // la lettura digitale dice solo se il campo magnetico ha superato il threshold
    // impostato girando la vite sul sensore
    bool letturaDigitale = digitalRead(pin_digital);

    // scriviamo il campo magnetico in tesla sulla seriale
    Serial.println(campoMagneticoTesla);

    // aspettiamo 50ms per non sparare letture troppo velocemente
    delay(50);
}

Queste sono le connessioni da fare se si usa un Arduino UNO. Se si usa un altro arduino (ad esempio il Nano 33 BLE) l'importante è collegare il pin analogico in uscita dal sensore ad un pin analogico di Arduino, altrimenti la lettura non potrà essere analogica.

Nel manuale online sono presenti più informazioni.