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
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.