Predkosc wentylatorow PC

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
misha89
Użytkownik
Posty: 150
Rejestracja: 06 lip 2006, 17:15
Lokalizacja: Ryki
Kontakt:

Predkosc wentylatorow PC

Post autor: misha89 » 07 sie 2006, 14:58

Witam
Czy ktos moze mi napisac w jaki sposob mierzyc predkosc wentylatowow PC urzywajac Bascoma i uP AVR?

Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 07 sie 2006, 15:37

Jeżeli są to wentylatory trójprzewodowe - to można liczyć impulsy pojawiające się na żółtym przewodzie w jednostce czasu.
Przy wentylatorach z dwoma przewodami będzie problem, ale też jest to do zrobienia. Nie obejdzie się jednak bez ingerencji w sam wentylator, a to może być problem...

Pozdrawiam!

Awatar użytkownika
misha89
Użytkownik
Posty: 150
Rejestracja: 06 lip 2006, 17:15
Lokalizacja: Ryki
Kontakt:

Post autor: misha89 » 07 sie 2006, 16:02

To wiem :grin: A moze jakis przyklad w bascomie?

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

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

A ile masz tych przewodów? Dwa czy trzy?

Awatar użytkownika
misha89
Użytkownik
Posty: 150
Rejestracja: 06 lip 2006, 17:15
Lokalizacja: Ryki
Kontakt:

Post autor: misha89 » 08 sie 2006, 11:46

Mam trzy przewody

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

Post autor: Daymian » 08 sie 2006, 14:54

Tu masz program w Bascomie (akurat na ATMega8515), mierzy częstotoliwość teoretycznie do połowy częstotliwości zegarowej przy wypełnieniu impulsów równym 50%:

$crystal = 16000000
Config Lcd = 16 * 2
Cursor Off
Dim Ccount As Word
Dim Maincounter As Long
Config Pinb.1 = Input

Config Timer0 = Timer , Prescale = 1
Config Timer1 = Counter , Edge = Falling , Noice Cancel = 1
Dim Count As Word
Dim Licznik As Long
Count = 0
Ccount = 0
Enable Interrupts
Enable Timer0
Enable Timer1
On Timer0 Int_0
On Timer1 Int_1
Timer1 = 0
Timer0 = 0

Do

Loop

Int_1:
Incr Count
Return

Int_0:
Incr Ccount
If Ccount = 62500 Then
Stop Timer0
Stop Timer1
Licznik = Count * 65536
Licznik = Licznik + Timer1

Cls
Lcd Licznik ; "Hz"
Timer0 = 0
Timer1 = 0
count =0
Ccount = 0
Start Timer0
Start Timer1
End If
Return

ODPOWIEDZ