![]() |
Upravo stiglo - Printable Version +- DIY Electronic projects (https://forum.yu3ma.net) +-- Forum: Sve ostalo - Everything else (https://forum.yu3ma.net/forumdisplay.php?fid=9) +--- Forum: Sve i svašta (https://forum.yu3ma.net/forumdisplay.php?fid=41) +--- Thread: Upravo stiglo (/showthread.php?tid=159) Pages:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
|
RE: Upravo stiglo - mikikg - 05-19-2017 Da objasnim ukratko kako se realizuje frekvencmetar sa MCU, inace i ja ovih dana se debelo vrtim onko nekih brojaca i tajmera ... Frekvencmetar je relativno prosta stvar, on treba da izbroji tacan broj inpulsa u nekom intervalu, recimo u intervalu od 0.1, 1 ili 10s (sekundi) - to vreme se zove scan ili update rate. Signal se dovodi na ulaz HW countera (internog u MCU), on na svaku rastucu ivicu signala poveca svoj broj i tako dokle moze (najcesce 16bit brojac, dakle moze da broji u opsegu od 0 do 65535). Posto je cesto nedovoljno ovih 16bit, neophodno je uraditi jednu prostu ISR koja na OVERFLOW tog brojaca inkrementuje jednu variablu i taj broj posle koristis kod racuna. Da bi sa tim mogao da izvuces informaciju o frekvenciji impulsa, neophodno je uradi ovaj sled komandi: - resetujes HW brojac na 0 - resetujes pomocnu variablu na 0 (ona koja broji OVERFLOW) - das mu dozvolu da radi (RUN), od tog trenutka pocinju da se broje impulsi - cekas neko tacno definisano vreme, 0.1, 1 ili 10 sekundi (moze koliko hoces, ovako je jednostavnije za racun sa "okruglim" vrednostima) - napomena: od stabilnosti ovog vremena ti zavisi tacnost ocitavanja. - kada istekne vreme cekanja uradis STOP brojaca - ocitas stanje HW brojaca, npr izbrojio 1234 impulsa - preracunas frekvenciju, ako je scan rate bio 1s i imas 1234 impulsa dakle ti impulsi su frekvencije 1.234kHz - prikazes to na LCD i tako u krug ... Napomena 2: posto imas zahtev da brojis u 1Hz frekvencije do 100kHz, znaci treba ti brojac sa minimum 100.000, dakle ISR rutina ti je neophodna jer imas samo 65535 po jednom celom ciklusu brojaca, znaci treba ti bar dva ciklusa - to vazi za slucaj od 1 sekunde vremena update-a. Ako bi to sve isto radio samo pustio da meri 10 sekundi onda dobijas jos jednu decimalu za frekvenciju, mogao bi da ocitas u 0.1Hz i tako dalje. RE: Upravo stiglo - vojinilic - 05-19-2017 (05-19-2017, 12:09 PM)Milan94 Wrote: Da ne otvaram novu temu postavicu pitanje ovde. Imam jedno pitanje. Kako MCU koji radi na 4MHz moze da meri frekvenciju od 50MHz? RE: Upravo stiglo - mikikg - 05-19-2017 Maksimalna brzina brojanja eksternih impulsa nije u relaciji sa brzinom Clock od MCU, zavisi iskljucivo od dozvoljenih limita za ulazne pinove i njihovog tajminga a obicno je to vece (brze) od tajminga Clock-a. Koliko tacno moze mora da se pogleda u specifikaciji kontrolera. PS: Ovo pricam za slucaj bez PRESCALER-a ispred ulaza u brojac, sa preskalerom moze da se tera koliko hoces, i u GHz opseg ako imas dovoljno brze preskalere. RE: Upravo stiglo - Milan94 - 05-19-2017 (05-19-2017, 01:36 PM)vojinilic Wrote:(05-19-2017, 12:09 PM)Milan94 Wrote: Da ne otvaram novu temu postavicu pitanje ovde. Iskreno iako sam sastavio taj frekvencmetar nisam ni imao cime da proverim da li moze stvarno da izmeri do 50Mhz jer nemam izvor takta sa tolikom ucestanoscu ali tako su napisali na stranici sa koje sam skinuo projekat. Miki hvala videcu to da realizujem znaci za brojanje mogu da koristim timer1 (16bit) a za njegov takt koristim spoljni signal koji se meri i kada se desi OVERFLOW tada uvecam neku variablu koju kasnije uracunavam kao 65535 plus jos onoliko taktova koje je brojac izbrojao do kraja 1s. Za recimo 100KHz imacu variablu uvecanu za 1 i plus iz brojaca 34.465 taktova kada to saberem imam 100.000 i to prikazem na LCD . RE: Upravo stiglo - vojinilic - 05-19-2017 (05-19-2017, 01:43 PM)mikikg Wrote: Maksimalna brzina brojanja eksternih impulsa nije u relaciji sa brzinom Clock od MCU, zavisi iskljucivo od dozvoljenih limita za ulazne pinove i njihovog tajminga a obicno je to vece (brze) od tajminga Clock-a. Koliko tacno moze mora da se pogleda u specifikaciji kontrolera. Miki, znam da se dovodi signal na brojacki ulaz, ali nisam nikada proveravao koji su limiti. Jednostavno mi je mnogo da preko 10 puta vecu freq mozes da meris. Sada sam pogledao u PDF. 20ns je limit. To je tacno 50MHz. Hvala. RE: Upravo stiglo - vojinilic - 05-19-2017 [/quote] Miki hvala videcu to da realizujem znaci za brojanje mogu da koristim timer1 (16bit) a za njegov takt koristim spoljni signal koji se meri i kada se desi OVERFLOW tada uvecam neku variablu koju kasnije uracunavam kao 65535 plus jos onoliko taktova koje je brojac izbrojao do kraja 1s. Za recimo 100KHz imacu variablu uvecanu za 1 i plus iz brojaca 34.465 taktova kada to saberem imam 100.000 i to prikazem na LCD . [/quote] Nije 65535, vec 65536, posto se interapt desava pri prelazu sa 65535 na 0 i tu imas jos jedan count. Onda ces imati 65536. Rezultat mozes da posmatras i kao jedan long, pri cemu ti je gornji word od longa tvoja varijabla uvecana pri svakom overflow, a donji word vrednost TMR1 brojaca. RE: Upravo stiglo - Milan94 - 05-19-2017 Miki hvala videcu to da realizujem znaci za brojanje mogu da koristim timer1 (16bit) a za njegov takt koristim spoljni signal koji se meri i kada se desi OVERFLOW tada uvecam neku variablu koju kasnije uracunavam kao 65535 plus jos onoliko taktova koje je brojac izbrojao do kraja 1s. Za recimo 100KHz imacu variablu uvecanu za 1 i plus iz brojaca 34.465 taktova kada to saberem imam 100.000 i to prikazem na LCD . [/quote] Nije 65535, vec 65536, posto se interapt desava pri prelazu sa 65535 na 0 i tu imas jos jedan count. Onda ces imati 65536. Rezultat mozes da posmatras i kao jedan long, pri cemu ti je gornji word od longa tvoja varijabla uvecana pri svakom overflow, a donji word vrednost TMR1 brojaca. [/quote] Moja greska tacno da 16bit ima vrednost 65536 hvala na ispravci. RE: Upravo stiglo - mikikg - 05-19-2017 Da, tako treba da se uradi, to je ceo algoritam, prosto je ... Informativno kada smo se dotakli te teme, za precizno merenje relativno malih frekvencija (npr <10Hz) se koristi drugi pristup, slican je ali je razlika u tome sto se izabrani HW brojac ne clock-uje spolja nego interno sa nekim Clock i onda se broje takvi impulsi izmedju dve ivice ulaznog signala (ili jedna cela perioda, izmedju dve rastuce ivice, moze da se bira). Na taj nacin se dobije drasticno bolja rezolucija ocitavanja za tako niske frekvencije. RE: Upravo stiglo - Milan94 - 05-19-2017 Dovoljno ce biti prethodno opisani algoritam jer neverujem da ce mi trebati merenje toliko niskih frekvencija. Za konacno izracunavanje rezultata koji treba da se ispisuje na LCD mislim da nece biti dovoljna variabla Word jer rezultat nemoze da se smesti neznam da li PIC16f serija podrzava variablu LONG koja se sastoji od dva word-a. Edit: Imam ideju kako ovo moze da se resi sada sam se setio kako se to radi u PicBasic tako da nema problema. RE: Upravo stiglo - mikikg - 05-19-2017 Duzinu variabli odreduje kompajler, on je zaduzen da tvoje tipove prilagodi fizickoj postavci unutar MCU. Ako je 8 bitni MCU a treba ti 32bitna variabla (da ne dodje do zabune, zgodno je da se prica u bitovima jer WORD, LONG i ostali tipovi imaju razlicitu duzinu na razlicitim tipovima MCU), to znaci da ce MCU morati da iscita/obradi tu variablu iz 4 nekih prolaza i obicno te operacije traju dosta vise nego 4x 8bitne operacije, neophodno je dodatno "muckanje" da bi se slozio 32bitni broj. Konkretno tebi za frekvecmetar ovo muckanje sa 32bit ne predstavlja problem, nece uticati na metenje, samo na brzinu prikazivanja rezultata. RE: Upravo stiglo - Milan94 - 05-19-2017 Nasao sam ovde objasnjenje kako da realizujem 32bit variablu mora da se sluzimo trikovima ![]() RE: Upravo stiglo - vojinilic - 05-19-2017 Ne znam kako se radi u Basic-u. Koristim C. U C je to dosta lako: unsigned long Brojac32Bit; Brojac32Bit = (unsigned long)(BrojacOverflow << 16) | TMR1; BrojacOverflow je pomocna 16bitna promenljiva koju inkrementiras na svaki interapt od TMR1, a TMR1 je trenutna vrednost tajmera (16 bit) RE: Upravo stiglo - Gosha - 05-19-2017 (05-19-2017, 03:06 PM)Milan94 Wrote: Dovoljno ce biti prethodno opisani algoritam jer neverujem da ce mi trebati merenje toliko niskih frekvencija.Treba ce ti kad budes napravio generator funkcija koji ide od 0.1Hz. Odavno se resavam da napravim jedan frekvencmetar koji ce da meri od 0.01Hz pa do nekoliko MHz, stim sto ce do 1Khz da meri periodu na nacin kako je miki opisao, a rezultate prikazuje kao frekvenciju a od 1KHz klasicno merenje frekvencije i sve to autorange. Bio bih veoma zahvalan ako bi to neko drugi odradio ![]() RE: Upravo stiglo - mikikg - 05-19-2017 Gosha, imaj u vidu da je za merenje niske frekvencije od npr 0.1Hz neophodno 10s uzorkovanje, nevezano na metodu merenja !!! Razlicite metode mogu samo da daju bolje/losije rezultate ali je i dalje neophodno minumum 10s uzorkovanje, maximum nije limitiran, ogranicen je vasim strpljenjem na cekanje rezultata, sto duze to je precizniji rezultat. RE: Upravo stiglo - Gosha - 05-19-2017 (05-19-2017, 05:33 PM)mikikg Wrote: Gosha, imaj u vidu da je za merenje niske frekvencije od npr 0.1Hz neophodno 10s uzorkovanje, nevezano na metodu merenja !!!Tako je Miki, 0.1Hz ima periodu od 10s, dakle vreme merenja mora da traje upravo toliko, samo sto se dobije veca rezolucija posrednim merenjem, preko merenja periode. RE: Upravo stiglo - gorankg - 05-19-2017 (05-19-2017, 05:17 PM)Gosha Wrote: Odavno se resavam da napravim jedan frekvencmetar koji ce da meri od 0.01Hz pa do nekoliko MHz, stim sto ce do 1Khz da meri periodu na nacin kako je miki opisao, a rezultate prikazuje kao frekvenciju a od 1KHz klasicno merenje frekvencije i sve to autorange. Bio bih veoma zahvalan ako bi to neko drugi odradio Gosha, za 0.01Hz će nam trebati najmanje 100s merenje. Jesi li siguran da bi išao sa tim vrednostima za opseg merenja? Nije problem da nešto skockam samo treba vremena. RE: Upravo stiglo - Gosha - 05-19-2017 (05-19-2017, 07:51 PM)gorankg Wrote:Ma ne mora, dovoljno je i od 1Hz, koj da ceka 10s a ne daj Boze 100s da bi izmerio frekvenciju koja mu mozda nikad nece zatrebati. Ako imamo 4 cifre dovoljno je izmeriti 1Hz na trecu decimalu.(05-19-2017, 05:17 PM)Gosha Wrote: Odavno se resavam da napravim jedan frekvencmetar koji ce da meri od 0.01Hz pa do nekoliko MHz, stim sto ce do 1Khz da meri periodu na nacin kako je miki opisao, a rezultate prikazuje kao frekvenciju a od 1KHz klasicno merenje frekvencije i sve to autorange. Bio bih veoma zahvalan ako bi to neko drugi odradio RE: Upravo stiglo - mikikg - 05-19-2017 Hajde samo malo realnije da sagledamo stvari, kao prvo sta ce vam 1 ili cak 0.1Hz recimo sinus??? Ja iskreno ne znam cemu to moze da posluzi! Trougao i pravougaoni i nekako ... Dajlje, taj ko napravi sinusni generator sa 1 ili 0.1Hz svaka mu cast! To je veoma tesko da se napravi sa nekim prihvatljivim perfomansama u analognoj varijanti. Za tako niske frekvencije se definitivno treba odluciti za digitalne generatore a ako tako pravite onda vam frekvencmetar za to i ne treba ![]() RE: Upravo stiglo - mikikg - 05-20-2017 Postovi oko frekvencmetra, TCXO i Si5351 premesteni ovde: http://forum.yu3ma.net/showthread.php?tid=700&pid=72287#pid72287 RE: Upravo stiglo - pakonja - 05-22-2017 Moj prvi osciloskop... Srecan sam kao kuce.... da imam rep mahao bi njime ![]() Veceras idem do drugara da uporedim sa pravim osciloskopom... nadam se da je upotrebljiv... ![]() |