PIC18f458

C

csr1981

Guest
Može bilo tko popuštanje mene logika / code za mjerenje brzine motora korištenjem PIC18f458.za ovu sam vala četvornih doprinos sklop za motor brzina.Trebao bih da te dolazni val pulseva na trgu brzina (rpm).
učestalost trga vala varira kao brzina varira.

 
Pozdrav csr1981
Ova tema može kormilariti vas u pravom smjeru: http://www.edaboard.com/viewtopic.php?p=1152065

Rješenje sam objasnio tamo se odnosi PIC16F874 (što sam koristio kad sam RPM mjerenja), ali isti princip se može koristiti na većini PIC18F MCUs as well.

 
Hi jumper2highJA je otišao kroz taj post, ali didnot dobiti jasnu ideju.

Možete li mi dati broj ili za iste logike,
bilo bi super.

Hvala.

 
I
couldn't help vam stvarni broj (od različitih Pics imaju različite načine radiš istu stvar).

U suštini, ako imate četvrtasto val signala koji predstavlja motorni rotacije (1 impuls = 1 punu rotaciju) sve što trebate učiniti je brojati koliko puta je signal ide od niske do visoke vrijeme dok je s jedne sekunde vremena.Nakon što
je učinio, ti pomnožite broj impulsa po 60 i imate RPM (Rotations po minuti).Tu je mali defekt s ovim načinom radiš stvari, kao prvo, ti si brojenje impulsa za jednu cijelu drugi, što znači nadopunu stopa (od RPM) nije puno, a vi se množenjem rezultat od 60, što znači, ako pogreąku puls računati samo 1, nastale RPM razlika će biti 60 o
/ min.

Ako je imao motor koji je napravio 10 impulsa po jednom rotacija po minuti, ti bi se postigla bolja preciznost (i moći će smanjiti računajući vrijeme za samo pola sekunde ili manje, a ne menjamo zadovoljavajuće preciznosti).Drugi način izračunavanja brzine motornim je korišćenje CCP (sakupljanjem Usporedite / PWM) modul zajedno s 16-bitnom Timer.Ako ste postavili CCP na "bilježenja" vremena kada se diže rubu dogodi, pohraniti ga negdje,
a zatim nakon drugog diže rubu dogodi, vi oduzmete pohranjene vrijednosti od novih zarobljeni vrijednost vremena, i znat ćete o tome kako je točno mnogo vremena je prošlo između dva impulsa, što znači da ćete znati točno vrijeme koje je potrebno napraviti jednu punu rotaciju.Jednostavna matematika tada će vam omogućiti da izračunati stvarni RPM.Npr.:

Pulse # 1 Timer1 zarobljeni vrijednost = "16000"
čeka još jedan impuls
Pulse # 2 Timer1 zarobljeni vrijednost = "36000"

ili

Pulse # 1 -> Timer se Reset
čeka još jedan impuls
Pulse # 2 -> Timer zarobljeni value = "20000"

Sada, s obzirom da smo koristeći 4Mhz sat,
imamo vremena razliku od 20,000 microseconds, koji je 20ms.To znači da se motor treba 20 miliseconds napraviti jedan rotacije.Ako znamo da smo znali motora će činiti 50 rotacija u jednoj sekundi, a 3000 rotacije u jednoj minuti.

Jedino ograničenje za ovu metodu je RPM dometu.Ne možete izmjeriti brzine vrlo sporo (osim ako provoditi daljnje korake u brojanju vremena overflows).Maksimalna "Vrijeme je" Timer se može računati 65536 microseconds (bez prescaler).To znači da ne bi mogla izmjeriti brzina ispod 1000rpm, bez dodavanja prescaler (gubite preciznost) ili dodavanja koda za snabdjevanje hranom za pretočni brojanja.Maksimalni broj okretaja mogli mjeriti na taj način s 4Mhz sat ide s onu stranu bilo kojeg fizičkog brzinama motor / navijač mogao postići, tako da nije nešto brinuti o

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Osmjeh" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top