Go Down

Topic: Contagiri con Hall + Lm2917 + Arduino (Read 750 times) previous topic - next topic

Artal

ho bisogno di sapere il numero di rotazioni di un disco, vorrei qualcosa di più veloce del Pulse in, e ho pensato di mettere dei magneti sul disco e creare un frequenza con un sensore di hall (A3144), e un convertitore frequenza-tensione LM2917 da collegare ad un analog in di arduino.
Ho seguito i collegamenti esposti sul datasheet visto che era la stessa applicazione calcolando R3 + R4 (che è R1 sul datasheet) e C1 con la formula
Vo = Vcc x Fin X C1 X R1
Come Vcc ho usato i 5V di arduino.
Lo schema è questo:


Solo che non funziona...in uscita ho semplicemente un valore 0 quando è tutto fermo che schizza intorno a 500 appena il sensore passa sopra un magnete per poi ritornare a 0. Qualunque sia la velocità di rotazione fa sempre così, la tensione in uscita non varia con la frequenza.  :~
Mi sapreste spiegare dove sbaglio?

PaoloP

Fai un test.
Collega l'uscita del sensore Hall ad Arduino (pin 5) e carica questo sketch
Code: (http://forum.arduino.cc/index.php?topic=22060.0) [Select]
const int frqPin = 5; //Input Pin
const int oneSecond = 1000; //Meassured time

int frqPinState = LOW;
int frq = 0;
int prevFrqPinState = LOW;
unsigned long timer = 0;

void setup()
{
Serial.begin(9600);
pinMode(frqPin, INPUT_PULLUP); //Declared Pin 5 as Input
}

void loop()
{
frqPinState = digitalRead(frqPin); //Reads State of Input Pin
if (frqPinState == LOW) prevFrqPinState = LOW; //Creates a previos state
if (frqPinState == HIGH && prevFrqPinState == LOW) //Pulses Counter
{
prevFrqPinState = frqPinState;
frq++;
}
if (millis() - timer > oneSecond) //Time Counter
{
timer = millis(); //Resets Time
Serial.println(frq); //Prints Frequency
frq = 0; //Resets Frequency
}
}


Gira la ruota  :smiley-mr-green: e apri il monitor seriale.
Che letture hai?

cyberhs

Mi sembra che lo LM2917 lavori con una tensione tra 6 e 28V, ma comunque perché non usi un external interrupt per contare semplicemente gli impulsi?

astrobeed


Mi sapreste spiegare dove sbaglio?


Si, non puoi usare il 2917 con un sensore on/off come quelli ad effetto Hall, in ingresso vuole un segnale sinusoidale.

Artal

Lo sketch funziona, però non è funzionale a quello che devo fare: in pratica adesso sto usando un disco per comodità, ma il progetto serve come contagiri a led per un motore a due tempi. L'idea è quella di sfruttare le calamite sull'accensione con un sensore di hall latch così da creare una frequenza da convertire in tensione al volo. Con lo sketch le letture sono fatte con una frequenza di un secondo mentre i led devono accendersi a giri più o meno precisi.
Mi piacerebbe usare arduino perchè via via voglio provare ad aggiungere funzioni più complicate, ma lo schema che ho seguito è quello usatissimo per i contagiri fai da te, con la differenza che invece dell'ingresso analogico di arduino vengono usati degli LM3914 per comandare i led.
esempio:
http://www.instructables.com/id/DIY-LED-Tachomter-RPM-gauge/step1/
Volevo fare così perchè mi pareva comodo anche per un contachilometri (con un disco a magneti collegato alla rotazione delle ruote), ma se mi dite che non posso usare segnali a onda quadra devo trovare il modo di collegare il sistema all'accensione del motore, che però ha tensioni e correnti troppo elevate per arduino...come potrei fare?

Go Up