Salve a tutti vorrei realizzare un conta impulsi dal filo della candela della mia vespa ho realizzato un circuito ma non funziona, sono qui per chiedere un aiuto con un circuito funzionante magari già collaudato
grazie.
Salve a tutti vorrei realizzare un conta impulsi dal filo della candela della mia vespa ho realizzato un circuito ma non funziona, sono qui per chiedere un aiuto con un circuito funzionante magari già collaudato
grazie.
Sarebbe utile sapere a che punto sei: come leggi gli impulsi, con che Arduino, come è il programma, dove è che "non funziona", eccetera...
Prova a leggere qui:
Leggere impulso cavo candela - Italiano / Software - Arduino Forum
questo é lo circuito che ho utilizzato
const int ignitionPin = D2;
const int ignitionInterrupt = 0;
const unsigned int pulsesPerRev = 1;
unsigned long lastPulseTime = 0;
unsigned long rpm = 0;
int rpm_int;
int rpm_to_disp;
unsigned long interval;
void setup() {
Serial.begin(9600);
pinMode(ignitionPin, INPUT);
attachInterrupt(ignitionInterrupt, &ignitionIsr, RISING);
}
void ignitionIsr()
{
unsigned long now = micros();
unsigned long interval = now - lastPulseTime;
if (interval > 5000)
{
rpm = 60000000UL/(interval * pulsesPerRev);
lastPulseTime = now;
//rpm_int=int(rpm);
Serial.println("");
Serial.print(rpm);
Serial.print(" RPM");
}
}
void loop() {
noInterrupts();
rpm_to_disp=int(rpm);
interrupts();
delay(500);
}
ho un arduino nano esp32
cerco peroò proprio un circuito differente in quanto questo non funziona correttamente. provo a dare un occhiata a c'ho che mi hai linkato grazie
troppa roba nella ISR
e lo schema mi sembra povero
Concordo al 100% ... fare delle Serial.print() in una ISR è un grave errore !
Guglielmo
... il riferimento nel post #2 riguarda uno schema che fu proposto in una discussione attorno al 2017 ... , in pratica è questo:
... ma, come dissi allora, è da verificare il funzionamento (L1 sono alcune spire di filo avvolte attorno al cavo candela).
Guglielmo
... ho ritrovato la vecchia discussione del 2017, furono proposte delle modifiche e delle soluzioni alternative ... si può leggere QUI.
Guglielmo
L'ho preso su una discussione qui sul forum insieme allo schema parecchio tempo fa.
... che NON significa sia corretto. Da un post del grande Nick Gammon:
When writing an Interrupt Service Routine (ISR):
- Keep it short
- Don't use delay ()
- Don't do serial prints
- Make variables shared with the main code volatile
- Variables shared with main code may need to be protected by "critical sections" (see below)
- Don't try to turn interrupts off or on
Guglielmo
non intendevo quello, ma sono poco esperto non sapevo del grave errore compiuto.
Come farebbe ad andare?
La tensione al primo diodo e' al massimo 7 decimi di volt
Dopo la caduta del secondo va a zero
Dopo il primo partitore 10k su 10k va a meta di zero
Il terzo diodo ci toglie ancora 0,7 volt di caduta
E ci vogliono almeno 0.7 volt per portare in conduzione il transistor
Magari provare con uno pnp.
Perché???...
Hai ragione
Avevo interpretato male