Pages: [1] 2 3   Go Down
Author Topic: Conta giri a led per auto e temperatura  (Read 3178 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buona sera sono nuovo del forum vorrei creare con arduino un contagiri a led per auto premetto che sono proprio agli inizi e posseggo un arduino uno quindi abbiate pazienza se non capisco a primo colpo smiley-razz . allora un con un mio amico una volta abbiamo misurato il segnale e da quanto mi ricordo il segnale era un onda quadra con 12 volt picco picco e più i giri aumentavano e più il periodo diminuiva.ditemi se il ragionamento che voglio fare è giusto allora per prima cosa con un partitore di tensione bisogna abbassare i volt portandoli a 5 volt poi far leggere il segnale ad aurduino fargli calcolare il periodo e poi a con una equazione matematica (che posso rimediare) calcolare i giri motore fare una media e poi con la stringa if dirgli che i vari led si devono accendere dopo il superamento del tot di giri..il tutto trasformato in linguaggio di programmazione e li mi serve una mano  smiley-grin ...secondo voi il ragionamento che voglio fare fila ed è possibile farlo con arduino ??Grazie a tutti in anticipo per l aiuto
« Last Edit: December 09, 2012, 04:47:57 pm by luchetto19 » Logged

Marche
Offline Offline
Edison Member
*
Karma: 34
Posts: 2275
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Con un LM2917 e degli LM3914 (ognuno controlla 10 led e si possono mettere in cascata) puoi farne uno senza scomodare l'arduino, partitori, regolatori di tensione, ecc.
Sarebbe più comodo, ma se vuoi usare l'arduino sicuramente è un ottimo esercizio e avrai anche più flessibilità.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

appunto io lo vorrei fare con arduino perché l anno prossimo lo dovrei usare anche a scuola per questo volevo esercitarmi
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

gentilmente mi potreste dire come calcolarmi il periodo in millisecondi .ve ne sarei grato.
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La funzione millis() di Arduino è un contatore che viene incrementato ogni millisecondo partendo da zero all'accensione o al reset.
Devi registrare in una variabile l'inizio delle evento esempio start = millis() e poi la fine finish = millis().
Il periodo, in millisecondi, lo trovi semplicemente calcolando periodo = finish - start.
Per assegnare il valore alla variabile ti conviene appoggiarti ad un interrupt individuando la salita e la discesa del segnale.
  
« Last Edit: December 05, 2012, 09:57:25 am by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Marche
Offline Offline
Edison Member
*
Karma: 34
Posts: 2275
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ci sarebbe anche la funzione pulsein, magari può tornare utile
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si, anche se a me non ha mai funzionato.  smiley-sad
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok mi devo studiare un po questi  interrupt che non ho capito bene cosa sia...appena ho tempo vede se riesco almeno a far carpionare il segnale ad arduino e visualizzare sul serial monitor...vediamo cosa uscirà fuori...un altra cosa secondo voi per abbassare il voltaggio del segnale basta un partitore o ci vorrebbe anche un regolatore?? perchè il segnale esce direttamente dalla ecu
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma se esce dalla ECU non ti conviene utilizzare direttamente il CAN BUS e le librerie OBD?
--> http://sourceforge.net/projects/obdcon/
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

questa delle librerie obd non lo sapevo quindi sulle auto stradali sarebbe una bella soluzione...il problema si pone sulle auto da rally (possibile istallazione) dato che sono totalmente prive di questo dispositivo
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se utilizzano una centralina di serie dovrebbero avere il connettore da qualche parte. Se poi vengano modificate e allegerite di componentistica non necessaria non saprei dire.
Ma dubito che non abbiano predisposto una connessione per la diagnostica.

P.S. Parlo ovviamente delle nuove auto con centraline elettroniche non di una vecchia ritmo abarth.  smiley-roll-sweat
« Last Edit: December 06, 2012, 08:57:30 am by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

per auto da rally io mi riferisco ad auto da corsa prototipi che sono prive di ecu originale... e le ecu che sono montate sono montate hanno una diagnostica completamente diversa dalle auto stradali. a parte  questo questa e un parte dell programma che ho fatto avrei la necessità di calcolarmi la media dei valori assegnati a (duration) avete qualche suggerimento ??

Code:
const int LED1 = 1; //Led 1 collegato al pin 1
const int LED2 = 2; //Led 2 collegato al pin 2
const int LED3 = 3; //Led 3 collegato al pin 3
const int LED4 = 4; //Led 4 collegato al pin 4
const int LED5 = 5; //Led 5 collegato al pin 5
const int LED6 = 6; //Led 6 collegato al pin 6
const int LED7 = 7; //Led 7 collegato al pin 7
const int LED8 = 8; //Led 8 collegato al pin 8
const int LED9 = 9; //Led 9 collegato al pin 9
const int LED10 = 10; //Led 10 collegato al pin 10

int Impulso = 13;     //indica che il pin di input al quale arriveranno gli impulso è il 13

unsigned long duration; //indica che la durata non può assumere valori negativi, long viene usato xk ha dimensione doppia rispetto a int

void setup()
{
  pinMode(Impulso, INPUT); //configura il pin come input
  pinMode(LED1, OUTPUT); //configura il pin come output
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(LED7, OUTPUT);
  pinMode(LED8, OUTPUT);
  pinMode(LED9, OUTPUT);
  pinMode(LED10, OUTPUT);
 

}

void loop()
{
  duration = pulseIn(Impulso, HIGH); //misura il tempo in millisecondi che trascorre tra un impulso e l'altro
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Devi sommare duration in una variabile.
Ad ogni loop incrementi un contatore. Quando il contatore arriva ad un certo numero dividi la somma per il contatore.
Code:
sumduration += duration;
count++;
if (count >= 10) media = sumduration/count;

una cosa del genere.
Attento alla divisione intera, ma credo che non ti interessino i decimali degli rpm.  smiley-grin

P.S. Sostituisci i const int con i #define. Pare rendano il codice più veloce. <-- si sta ancora investigando sull'argomento.
« Last Edit: December 06, 2012, 01:08:25 pm by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

scusate se vi rompo ancora ma su serial monitor  invece di far stampare sempre un nuovo valore e possibile solo aggiornarlo ??
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sul serial monitor dell'IDE no, non ha il ritorno sulla riga superiore.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Pages: [1] 2 3   Go Up
Jump to: