Lettura sensore di fase ad effetto hall

Salve a tutti,
colgo questa occasione per salutare e ringraziare anticipatamente tutti quanti, sperando che questo post non aiuti soltanto me, ma tutti coloro che si cimentano in queste cose.
Dunque, il mio problema è che ho bisogno di far partire un motore 4t a benzina (4 cilindri) senza l'ausilio della centralina ne dello spinteroggeno, utilizzando esclusivamente il sensore di fase ad effetto hall posto sulla dentellatura del volano cosi come fa la centralina originale, utilizzando Arduino per interpretare il segnale. Il funzionamento del sensore è quello riportato nell'immagine.
Io avrei bisogno che quando legge quel picco di frequenza dia un'input per i pistoni 1 e 4, ed inizi a contare le altre onde, in modo che quando arriva a metà(denti: 100/2 =50), dia l'input per i pistoni 2 e 3, e cosi via. Sapete dirmi se è una cosa fattibile, o sto sbagliando completamente metodo?
Vi ringrazio nuovamente per il tempo dedicatomi.
Cordiali saluti.

---.jpg

casari:
Sapete dirmi se è una cosa fattibile, o sto sbagliando completamente metodo?

Se il segnale che arriva è realmente quello allegato scordati di usare Arduino, l'ADC non è abbastanza veloce per una cosa simile, sopratutto tenendo conto degli RPM a cui può arrivare un motore da moltiplicarsi per il numero di denti da conteggiare.
Però trovo abbastanza strano il segnale che alleghi dato che il sensore utilizzato è di tipo on/off e produce un onda quadra quasi perfetta, in questo caso Arduino può fare quanto chiedi visto si andrebbe ad utilizzare un ingresso digitale.
Con che strumento, e come, hai effettuato la misura ? Ho il sospetto che sia stata fatta in modo non corretto e/o con strumento non idoneo.

ciao astrobeed, inanzi tutto grazie mille per avermi risposto.
Per quanto riguarda la misurazione l'ho effettuata con un'oscilloscopio portatile, ed è stata effettuata a 1000 rpm, infatti con l'aumentare dei giri le onde aumentano di voltaggio, portando quel picco che si vede nell'immagine a quasi 5 volt e le onde più piccole circa 3. Il mio problema è che a 1000 giri è solo di 2.5 volt il picco.
Ho effettuato un'esperimento:
Ho collegato il sensore ad Arduino dicendogli:

int pistone1 = 8; 
int pistone2=9;
int pistone3 =10; 
int pistone4=11;
int sensepin=5;
int val=0;
void setup()
{
  
  
  pinMode(pistone1, OUTPUT);
  pinMode(pistone2, OUTPUT);
  pinMode(pistone3, OUTPUT);
  pinMode(pistone4, OUTPUT);
  pinMode(sensepin, INPUT);
  
   
}

void loop() 
{

  int val = analogRead(sensepin);
  
  
  if(val > 300) 
   
  {
  delay(0);
  digitalWrite(pistone1, HIGH);
  digitalWrite(pistone2, HIGH);
  digitalWrite(pistone3, HIGH);
  digitalWrite(pistone4, HIGH);
  }
  else 
  {
  digitalWrite(pistone1, LOW);
  digitalWrite(pistone2, LOW);
  digitalWrite(pistone3, LOW);
  digitalWrite(pistone4, LOW);
  }
}

cosi che si accendessero tutti e 4 i pistoni contemporaneamente. Dopo di che ho provato a mettere in moto, ed il motore a minimo, funziona bene, ma se provo ad accelerare non segue più la fase, scoppiettando dalla marmitta.

Beh , è ovvio che succeda così, non puoi fare la comparazione della tensione con una costante, in quanto come tu stesso hai scritto il range dei valori di picco variano con RPM

Devi progettare un circuito di condizionamento del segnale prima di darlo al MC

Ricerca in inet circuiti già progettati per questi voice-coil oppure fai il reverse engineering di centraline commerciali

non esiste un circuito che faccia la media delle onde e riesca a capire da sola quale è il picco?

Certo che esiste, lo trovi in ogni centralina da auto ma devi cercartelo da solo, è una cosa troppo particolare per essere così diffusa, chi ce l'ha se lo tiene, chi non ce l'ha fà il reverse engineering di una centralina per auto

Io della centralina originale ho utilizzato solo gli integrati per la gestione delle bobine bypassando il processore. Adesso provo a cercare questo integrato che mi dici tu. :wink:

Puoi leggere questo topic col progetto di lucaleo.
E' molto simile al tuo --> centralina accensione motore - Software - Arduino Forum

Casari ha sbagliato titolo del post a dire "SENSORE HALL" il suo è un voice coil su ruota fonica , vedere differenza qui

http://www.daytona-twintec.com/tech_sensors.html

nel topic da te linkato PaoloP si parla solo di HALL

anche qui

http://www.aa1car.com/library/crank_sensors.htm

Avevo già letto l'argomento citato da paoloP, purtroppo non fa al caso mio :~ .
Grazie icio per avermi fatto capire di che sensore si tratta, li avevo confusi :blush: ,
sapresti dirmi se esiste uno schema o un'integrato che legga questo sensore e mi fornisca un'onda quadra o comunque un'onda interpretabile da arduino?

Questo è il funzionamento del sensore di cui vi parlavo, preso dalla pagina ( Basics of Crankshaft & Camshaft Position Sensors )

Il terzo tipo di sensore di posizione albero motore è un pickup magnetico che legge gli slot lavorati in un anello "reluctor" al centro dell'albero motore, sul bilanciatore armonico o volano. Questa configurazione è utilizzata sui motori GM con l'impianto di accensione diretta (DIS) sui motori 2.0L, 2.5L e 2.8L, e l'accensione integrata Distributorless (IDI) sul 2.3L Quad 4, e anche molti Ford, Chrysler e l'importazione motori.

Sulle applicazioni GM, l'anello reluctor manovella ha sei slot equidistanti 60 gradi. Un settimo slot è distanziata 10 gradi da uno degli altri così il sensore manovella genererà un extra "sync-pulse" ogni rivoluzione. Il PCM utilizza quindi le informazioni per calcolare una corretta accensione e fasatura iniettore. Questo tipo di sensore deve essere accuratamente posizionato in modo che il traferro è a 0,050 pollici dell'anello reluctor albero motore.

icio:
Casari ha sbagliato titolo del post a dire "SENSORE HALL" il suo è un voice coil su ruota fonica , vedere differenza qui

Il voice coil non è un sensore, è un tipo di attuatore lineare, semmai usa un sensore a riluttanza variabile, o un pickup, che in effetti può fornire il tipo di segnale dell'immagine nel primo post.

Sì pickup è il termine corretto , non mi veniva in mente il nome, grazie astrobeed

Niente, non riesco a trovare uno schema per far interpretare il segnale ad Arduino. :~