Jump to content
ELFORUM - Forumul electronistilor

Numarare pulsuri rapide


Recommended Posts

Salut, lucrez   la un proiect  pentru care e necesar sa numar  niste pulsuri de la un anumit senzor. Partea electronica am rezolvat-o in sensul ca obtin pulsuri de tip TTL la iesirea unui comparator high speed. Folosesc  arduino mega si o librarie pentru intreruperi pentru a numara pulsurile dar cred ca nu functioneaza cum  vreau eu. Va rog sa va uitati peste el, poate ma puteti ajuta sa il optimizez. Codul meu vreau sa faca asta:

-sa numere pulsuri timp de  un minut si dupa sa trimita numarul de pulsuri pe serial si sa reaia numararea.

 #define INTERRUPT_INPUT 2 int pulse_counter = 0;  void setup(){  Serial.begin(9600);       // For noise suppression, enable pullup on interrupt pin  digitalWrite(INTERRUPT_INPUT, HIGH);  attachInterrupt(INTERRUPT_INPUT - 2,                  interrupt_handler,                  RISING);}  void loop(){  // Keep LCD blank till a pulse comes in  if (pulse_counter > 0)  {     Serial.print("Z");   //sync data    Serial.println(pulse_counter);    Serial.print("n");    delay(20);  }  delay(20);}  void interrupt_handler(){  pulse_counter = pulse_counter + 1;}

Atasez  o imagine cu o oscilograma ce  ilustreaza cu mov pulsul pe care  vreau sa il numar. Multumesc anticipat!

post-216107-0-10646500-1430729364_thumb.png

Edited by Vlad Mihai
Link to comment

Pulsurile tale au ~10 ns lungime? Mi-e teama ca Arduino e prea lent pentru asa ceva. Ce-i drept, nu prea stiu eu cum e cu intreruperile la atmeli, da' daca sunt IOC...

Arduino asta nu are nici un timer/numarator care sa primeasca clock de la un pin? Cred ca ar merge mai bine.

Link to comment

Daca este asa cum a observat LiviuM, atunci numararea impulsurilor nu o vei putea face cu Arduino, decat daca folosesti un prescaler extern (tipul 74VHC4040) care accepta o latime a impulsului de minim 5ns.

Restul e aritmetica curata.

@LiviuM: ATMega2560 are destule timere (7 la numar), deci are de unde sa-si faca si baza de timp si numarator.

Link to comment

Liviu stiu de link-ul respectiv, am facut montajul cu tranzistor si tot nu merge, imi da 0 tot timpul. nu simte nimic. macar cu,codul postat de mine mai  numara ceva. :rade:

E prea mic pulsul ca latime sa il prinda arduino doar daca  folosesc un prescaler ceva....

 

O sa aplic maine o sugestie  sugerata de   giongiu si o sa    revin cu detalii

Edited by Vlad Mihai
Link to comment
  • 2 weeks later...

Salut,

 

Azi am terminat de facut circuitul care imi lungeste  pulsurile, astfel din   pulsuri de 10ns am pulsuri de circa 1.5us. nu stiu sigur daca imi ajunge  ca sa le numar cu arduino dar o sa caut ceva   documentatie sa ma conving, sau daca nu mai maresc pulsurile cat imi permite   perioada de repetitie a pulsurilor. Atasez o oscilograma:

 

Mentionez ca nu am folosit decat un tranzistor RF, un rezistor si un condensator ca sa lungesc pulsul (ideea ii apartie lui smilex), cu mov sunt pulsurile de  1.5us si cu albastru sunt pulsurile de 10ns  care au fost convertite ulterior.

 

Maine o sa testez  software-ul postat in primul post sa vad cum se comporta, in caz ca e functional.

post-216107-0-10016200-1431526005_thumb.png

Edited by Vlad Mihai
Link to comment

Salut, am testat astazi codul de mai sus dar putin modificat si tot nu merge. Acesta este codul pe care l-am testat.

 #define INTERRUPT_INPUT 2 int pulse_counter = 0;  void setup(){  Serial.begin(9600);       // For noise suppression, enable pullup on interrupt pin  digitalWrite(INTERRUPT_INPUT, HIGH);  attachInterrupt(INTERRUPT_INPUT - 2,                  interrupt_handler,                  FALLING);}  void loop(){  // Keep LCD blank till a pulse comes in  if (pulse_counter > 0)  {    Serial.print("Z");   //sync data    Serial.println(pulse_counter);    Serial.print("n");    delay(100);  }  delay(150);}  void interrupt_handler(){  pulse_counter = pulse_counter + 1;}

Pulsul pe care vreau sa il numar este atasat (cu mov).

post-216107-0-73869400-1431590933_thumb.png

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines