Pomiar czestotliwości...coś nie działa.

Czyli wszystko co dotyczy wyposażenia elektronika: multimetry, oscyloskopy, generatory, zasilacze, lutownice itp. Również tutaj można zadawać pytania co, jak i czym można mierzyć. Porady dotyczące montażu układów, lutowania, wykonywania obwodów drukowanych itp.
ODPOWIEDZ
Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Pomiar czestotliwości...coś nie działa.

Post autor: Daymian » 31 lip 2006, 22:54

Napisałem mały program mierzący f na AVR'ku. Jeden timer odmierza czas (1 seknde) a drugi liczy impulsy...testowałem go na detektorze przejscia napięcia sieci przez zero i na innym uC który generował na jednym z pinów impulsy o czasie trwania kilku milisekund (wypełnienie 50%). Gdy był wspomniany miernik był dołączony do tego detektora przejść to wskazywał częstotliwość 100Hz...ale jak był podłączony do tego generatora na innym uC to wskazywał 50Hz, a czasem 53......róznie... Wie ktoś co jest grane? Przecież ten miernik dołączony do tego generatora powinien wskazywać f gróbo powyzej tych 100Hz. Nawet zmieniałem częstotliwość generowanego przebiegu i nic-ciągle 50 albo 53Hz.

Arnold_S.

Post autor: Arnold_S. » 01 sie 2006, 0:05

A może jakiś schemat?
Programowo nic nie zdziałasz, jak elektronika leży(może mierzysz zakłócenia, "brum sieciowy", dlatego ciągle masz wynik 50Hz - prawidłowy wynik). :)

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 01 sie 2006, 11:57

Schematu nie dam bo nie mam...ale jest to standardowe połonczenie dwóch uC albo uC i tego detektora...wszystko wchodzi na pin podlonczony do systemu przerwan AVR'a a reszta to program. Tylko dlaczego mierzy mi te zakłucenia skoro włonczyłem nie tylko wewnętrzny rezystor podciągający wejście ale i próbowałem z zewnętrznym. A dlaczego mi pokazuje 50Hz jeśli na wyściu tego drugiego uC (generatora) są jakieś konkretne stany? A w dodatku po podłonczeniu do tamtego detktora przejścia napięcia sieci przez zero pokazuje 100Hz...a to już nie są zakłucenia tylko konkretne impulsy. Tak więc czym sie ten detektor różni od generatora na uC pod względem generowanych impulsów? Co mam zrobić żeby ten mirnik nie mierzył tych zakłuceń tylko "to co trzeba"?

elektronWielki
Użytkownik
Posty: 247
Rejestracja: 30 maja 2006, 12:45
Lokalizacja: kontownia

Post autor: elektronWielki » 01 sie 2006, 13:17

No to dobrze ci działa.
W jednym okresie sinusoidy masz 2 przejścia przez zero a jeden okres ma czas trwania (1/f) czyli 0.02 sekundy.
Są dwa przejścia przez zero czyli częstotliwośc równa (1/(0.02/2)) czyli 1/0.01 = 100Hz.

Nie słuchaj Arnolda_S bo źle godo.

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 01 sie 2006, 18:55

Ale to jest dziwne że przejścia sieci wykrywa a sygnał z tego generatora nie!!!!!! To jest najdziwniejsze!!! Co jest grane? Co zrobić żeby sygnał z tego generatora też mierzył???

Arnold_S.

Post autor: Arnold_S. » 01 sie 2006, 20:19

Ale jaki generator?
Może ten generator nie generuje przebiegu przemiennego(nie ma w sygnale wartości ujemnych, więc nie przechodzi przez zero i nie ma czego mierzyć - skoro na tym oparłeś metodę pomiaru)?

Jakoś niejasno piszesz(od pierwszego postu)...można się pogubić.

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 01 sie 2006, 21:07

To nie mierzy zadnych przemiennych sygnałow! A niby jak mam do AVR'a podać napięcie jemne jeśli o to Ci chodzi?
Ten detektor przejścia napięcia sieci przez zero to daje na wyjściu napięcia 0V i +5V! To ze jest to detektor to podałem przykładowo!!!! To umówmy sie że jest to pierwszy generator generujący przebiegi o częstotliwości 100Hz (i współczyniku wyenieni nierównym 50% dla dociekliwych) a en drugi generatoro to na AVR'ku , program w nim wygląda tak:

Config Pinb.5 = Output
Config Pinb.4 = Output
Dim A As Byte
Do
Waitms 50
Toggle Portb.5
Incr A
If A = 1 Then
Toggle Portb.4
A = 0
End If
Loop

Dwa wyjścia bo troche eksperymentowałem, z czasami oóźnienie też. Od 1 ms do 100ms. Juz wszystko jasne??? Juz sie sytuacja rozjasnila? Jak nie to co jescze chcecie wiedzieć?

elektronWielki
Użytkownik
Posty: 247
Rejestracja: 30 maja 2006, 12:45
Lokalizacja: kontownia

Post autor: elektronWielki » 01 sie 2006, 22:10

no to znaczy ze cos sknociles w generatorze z AVRkiem.
Wykorzystaj AVR Studio i zasymuluj ten program (albo BASCOMA, ale nie wiem czy sie da bo nigdy z niego nie korzystałem).
Sprawdź fuse bits w AVRku i upewnij sie co do faktycznej czestotliwosci taktowania procesora.

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 01 sie 2006, 23:44

Zlokalizowałem błąd ale to nie rozwiązało całkiem sprawy. Podłonczyłem kabelek łączący procki ale...nie podłączyłem masy!!! :oops:
Ale dalej coś jest nie tak...po podłączeniu do jednego procka pokazuje stałą czestotliwość tj. ok.1MHz a do drugiego procka z innym progamem pokazuje od 6Hz do 44Hz...a powinno ponad 100-tak wynika z programu.
Aha! Czy na wewnetrznym oscylatorze 8MHz i programie Bascomie:
$crystal = 8000000
Config Portc = Output
Dim A As Byte
Do
Toggle Portc.0
Incr A
If A = 2 Then
Toggle Portc.1
A = 0
End If
Loop

na wyjściu moze mi sie pojawic: na jednym ok.106kHz a na drugim ok. 53kHz?Bo wg. mnie przy częstotliwości ok. 8MHz procesora taka mała pętelka powinna się szybciej wykonywać....FuseBity są dobrze skonfigurowane.

elektronWielki
Użytkownik
Posty: 247
Rejestracja: 30 maja 2006, 12:45
Lokalizacja: kontownia

Post autor: elektronWielki » 02 sie 2006, 9:19

to na co czekasz? załóż breakpointy w miejscach zaznaczonych i zasymuluj program

Kod: Zaznacz cały

$crystal = 8000000
Config Portc = Output
Dim A As Byte
Do
>>>Toggle Portc.0
Incr A
If A = 2 Then
>>>Toggle Portc.1
A = 0
End If
Loop

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 02 sie 2006, 9:29

Brekpointy....to znaczy jakieś polecenie oczekiwania? Nie o to mi chodzi. Tylko przy częstotliwości taktowania ok. 8MHz pętla wykonuje sie z częstotliwością 106kHz...czyli 8MHz/106kHz daje ok. 75 cykli zegarowych...czy te instrukcje co napisalem moga zajać rzeczywiście 75 cykli??? A kolejna srawa z tymi niskimi czstotliwościami na innym generatorze: dlaczego one mi skakaja od kilk herców do kilkunastu? Przecież program jest zawsze taki sam:
Do
Toggle Portb.1
Waitms x
Loop
Gdzie x to różne wartości wstawiane przezemnie.

Arnold_S.

Post autor: Arnold_S. » 02 sie 2006, 10:21


Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 02 sie 2006, 11:40

Już wiem :mrgreen:
Dzięki, zobaczymy co wyjdzie w praktyce.

elektronWielki
Użytkownik
Posty: 247
Rejestracja: 30 maja 2006, 12:45
Lokalizacja: kontownia

Post autor: elektronWielki » 02 sie 2006, 12:37

Daymian pisze:Tylko przy częstotliwości taktowania ok. 8MHz pętla wykonuje sie z częstotliwością 106kHz...czyli 8MHz/106kHz daje ok. 75 cykli zegarowych...czy te instrukcje co napisalem moga zajać rzeczywiście 75 cykli???
a po co masz to wiedziec? załóż breakpointy i sprawdź w symulatorze w jakim czasie instrukcje sie wykonują

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 02 sie 2006, 23:42

Ok, spróbuje, zobacze co z tego będzie.

ODPOWIEDZ