Sari la conținut
ELFORUM - Forumul electronistilor

BPM counter


dj_steel

Postări Recomandate

Salut!Fiind dj amator,as avea nevoie de un montaj care sa imi numere bpm-ul unor melodii(bpm=beats per minute).Ma gandeam daca se poate modifica un frecventmetru,ca in loc sa numere impulsurile dintr-o secunda,sa numere impulsurile dintr-un minut...eu am construit acest frecventmetru: http://homepage.eircom.net/~ei9gq/counter.html

Se poate modifica softul sa devina bpm counter?

Link spre comentariu
  • Răspunsuri 11
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • dj_steel

    6

  • benishor

    2

  • francezu

    2

  • Mikrosha

    2

Top autori în acest subiect

Teoretic ar trebui sa aplici o transformare Fourier asupra semnalului si sa cauti varfurile de energie in componentele de magnitude. Ma indoiesc ca poti face asta doar cu un biet microcontroller. Poate ai putea folosi un filtru trece jos cu o frecventa de cutoff mica ( pentru a detecta bass drum-urile ), outputul cuplat la un comparator si iesirea acestuia sa joace rolul de intrare la frecventmetrul existent. Sunt doar niste idei.

Link spre comentariu

Da,eu nu am mentionat despre filtru trece jos eventual si un trigger schmitt...astea sunt simplu de implementat,doar ca vroiam sa stiu daca se poate modifica softul frecventmetrului(el indica direct in megahertzi,am introdus semnal de la un transformator si imi indica 51 Hz,deci imi trebuie precizie cat mai mare in domeniul 0-10Hz Ex:120bmp inseamna 2hz....

http://i29.tinypic.com/2yxne53.jpg

Link spre comentariu

Inainte de a transforma rezultatul din binar in bcd, trebuie sa inmultesti cu 60. Daca dispui de rutine de adaugare si scadere ( in cazul in care rezultatul este pe mai multi bytes ), poti face usor inmultirea cu 60 ca x*64 - x*4, adica shiftare la stanga cu 6 a rezultatului si scaderea din asta a rezultatului shiftat la stanga cu 2.

Link spre comentariu

Multumesc de pont,dar eu tin neparat sa fie independente de pc...imi trebuie in timp real sa stiu bpm-ul,asa pot sa trec pe fiecare cd in parte bpm-ul si gata...cu sincronizarea e mai greu.Pana la urma o sa incerc ceva cu filtru de rigoare+trigger schmidt+lm2917(convertor frecventa-tensiune)si un voltmetru sa vedem ce iese

Link spre comentariu
  • 3 săptămâni mai târziu...

Noroc!

Am facut o varianta pre-pre-beta. Lucreaza ca un fel de frecventmetru, dar cu poarta de 15 secunde, si inmulteste cu 4 pentru a afisa valoarea in bpm. Oscilatorul folosit este cel intern de 8MHz.. Daca indica in plus sau in minus se poate ajusta din cod, am marcat linia care trebuie modificata. Contorul este timer1, cu intrarea pe RB6, iar timer0 este folosit pentru a masura trecerea celor 15 secunde.

Atasez: fisierul sursa (pt SourceBoost C), fisierul .hex, fisierul .dsn pentru Proteus Isis.

Zi-mi ce parere ai, dac-am inteles bine ce vrei sa faci, si ce sa mai imbunatatesc.

Posted Image

Link spre comentariu

O mica observatie : oscilatorul intern la PIC16F628A este de 4MHz nu de 8! Pentru 8MHz trebuie cristal extern.

Coreeect! :jytuiyu Deci if (sec==1860) poarta(); se inlocuieste cu if (sec==930) poarta();

Radu cere-mi p? mess .hex-ul daca n-ai compilator instalat.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări