Calcolare rapporto tra velocita' e numero di giri

13 Anni 1 Mese fa - 13 Anni 1 Mese fa #1 da ElleErre
Giusto per complicarmi la vita, sto lavorando, nei ritagli di tempo, ad un progetto che prende il nome dalla mia moto FJR Yamaha: FJRobot.

La mia moto e' abbastanza carente dal punto di vista delle informazioni sul cruscotto: giri, velocita', consumo e contakilometri parziali. No more.

Il FJRobot dovrebbe:

1) durante le ore del giorno spegnere il secondo anabbagliante e comunque riaccenderlo ad una determinata velocita' od ad una certa ora -> fatto!

2) controllare periodicamente il livello della batteria e comunque sempre all'inserimento della chiave nel quadro -> fatto

3) rilevare la temperatura esterna e/o di altri punti del motore -> fatto

4) totalizzare le ore trascorse e i km percorsi giornalmente, sommarli, memorizzare gli ultimi 5 gg e il totale -> fatto

5) indicare in quale marcia sono -> sob!, non fatto, sob!


L'indicazione della marcia in uso e' determinata dal rapporto tra velocita' e numero dei giri motore.


Ad esempio:

4000 RPM -> 6,667 giri/sec.
In prima marcia corrispondono a 30 Km/h -> 8,333 mt/sec rapporto = 1,250
in quarta marcia corrispondono a 60 Km/h -> 16,667 mt/sec rapporto = 2,500

8000 RPM -> 13,333 giri/sec
In prima marcia corrispondono a 60 Km/h -> 16,667 mt/sec rapporto = 1,250
in quarta marcia corrispondono a 120 Km/h -> 33,333 mt/sec rapporto = 2,500

Ho individuato due strade per ottenere il risultato...

#1: Utilizzo del Timer 0 con interrupt


_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| clock

_______|_____________|_____________| segnale giri motore

___|___|___|___|___|___|___|___|___| giri ruota



- genero un clock elevato
- intercetto sulla porta RB0 la variazione di stato e azzero un contatore
- memorizzo nella variabile il numero di clock contati fino prossimo impulso giri motore
- memorizzo il numero di impulsi della ruota che corrispondono ad una certa unita di spostamento in metri nello stesso intervallo di tempo
- calcolo il rapporto...

se il rapporto = 1.25 -> allora sono in prima
se il rapporto = 2.50 -> sono in quarta
ecc....

#2: Utilizzo il CAPTURE del pic

Ammetto di non aver capito come funziona.

Ho letto la documentazione di Microchip, provato con gli esempi forniti...

Il massimo che ho ottenuto e' una lettura di valori (mantenendo costante la frequenza) che varia in continuazione, e non di poco.


Inoltre ho un dubbio.

Visto che ci sara' un capture sui giri motore ed uno sulla ruota, ma che i due eventi non sono sincronizzati, che risultato dovrei aspettarmi nel mometo in cui cerco di calcolare il rapporto?

Potrei, in teoria, trovarmi con il capture dei giri che ha gia' terminato il conteggio mentre quello della ruota e' ancora in fase di elaborazione.

Certo, potrei eseguire una campionatura su piu' eventi ed ottenere una valore medio.

Sto utilizzando sia Freedom II con 18F4550 che il kit fornito con im PicKit3 che monta un 18F45K20.


Le domande...

La prima soluzione e' percorribile?
Per la seconda soluzione esiste un testo che mi aiuti a capire come usare le funzioni Capture e non solo la modalita' PWM?


Grazie per la vostra pazienza!

nota: allego un diagramma di una moto, purtroppo non della mia :(


ElleErre
Allegati:
Ultima Modifica 13 Anni 1 Mese fa da ElleErre.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • ElleErre
  • Avatar di ElleErre
  • New Member
  • New Member
Di più
13 Anni 1 Mese fa - 13 Anni 1 Mese fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Calcolare rapporto tra velocita' e numero di giri
Ciao,

Stai già a buon punto del lavoro!

Qualche considerazione.

Più è alta la frequenza del clock che usi per il PIC e maggiore sarà la risoluzione che otterrai.

I due eventi non arrivano assieme per cui per non avere valori falsi considera questo.

il primo Capture lo devi buttare per entrambi, poiché non sai a che punto del giro eri quando hai abilitato il Capture.

Usa due variabili per i due contatori. Prendi e memorizza il prima ed interrompi il Capture relativo.
Aspetta che il secondo capture dia il valore valido. Interrompi anche il secondo Capture.
Elabora le due variabili per il calcolo della marcia.

Riabilita i Capture e getta il primo valore. Aspetta il primo valido e ripeti quanto sopra.

In questo modo le variabili per il capture non avranno valori di tempi relativi a giri parziali e i dati validi faranno riferimento sempre a due capture consecuitivi (motore e ruota).

Saluti,

Mauro
Ultima Modifica 13 Anni 1 Mese fa da Mauro Laurenti.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login