Wiatraczek z procesora pomiar jego obrotów na uC


Witam.
Gdzie można dostać jakieś info pomocne przy odczytaniu obr z takiego wiatraczka? Tam chyba idzie sygnał prostokątny? Chciałbym odczytywać obroty na attiny13, program tylko w bascomie.
dzięki




Portret użytkownika mirley

Re: Obroty

Zasada działania jest prosta. Wiatraczek przeważnie generuje jeden impuls na obrót. Najprościej jest podać sygnał z wiatraczka na wejście countera w procesorze. Co 1 sekundę odczytywać wartość licznika countera i zerować go. Otrzymana liczba to ilość obrotów na sekundę. Zwiększyć dokładność można licząc obroty na 10s ale czas pomiaru się wydłuża.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika noki

Jest jeszcze inna możliwość.

Jest jeszcze inna możliwość. Można mierzyć czas między impulsami. Tylko avrek musiałby trochę policzyć aby podał wynik w obrotach /min, ale jest to do zrealizowania.

Portret użytkownika mirley

Re: Pomiar

Ta metoda jest dokładniejsza i daje szybciej wyniki. Nie wiem jednak czy bascom da sobie radę z dobrym oprogramowaniem takiego pomiaru.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika noki

Bascom da radę, lecz obawiam

Bascom da radę, lecz obawiam się o ilość flasha i ramu attiny13.

Mam podobny wiatraczek, może kiedyś się tym pobawię :)

Portret użytkownika gosc

Witam. Kod wygląda

Witam.
Kod wygląda tak:

$regfile = "attiny13.dat"
$crystal = 9600000                                          ' fuse bity przestawione na 9,6MHz
$hwstack = 8
$swstack = 8
$framesize = 8
 
 
Config Portb.5 = Output
Config Portb.4 = Output
Config Portb.3 = Output                                     ' tutaj podłączyłem LED
Config Portb.2 = Output
Config Portb.1 = Input                                      'tutaj sygnał
Config Portb.0 = Output
 
Reset Portb
 
 
Dim Czas2 As Single
Dim Czas As Word
Dim Rpm As Word
 
 
Config Int0 = Rising
On Int0 Licz
Enable Int0
Enable Interrupts
Config Timer0 = Timer , Prescale = 256
Enable Timer0
Stop Timer0
Timer0 = 0
 
 
Portb.0 = 1
Wait 1
Portb.0 = 0
 
Do
 
If Rpm >= 5000 Then Portb.0 = 1 Else Portb.0 = 0
 
Loop
End
 
Licz:
   Czas = Timer0
   Timer0 = 0
 
   If Czas = 0 Then
     Start Timer0
   Else
     Czas2 = Czas * 0.00002667
     Czas2 = 60 / Czas2
     Rpm = Round(czas2)
   End If
 Return

Niestety nie można skompilować bo zajmuje ponad 100% flash :/
Ma ktoś pomysł jak to zoptymalizować na tiny13? Jeśli nie to zrobię na 2313 bo tam nie było problemu.

Portret użytkownika mirley

Re: Obroty

Nie używaj poleceń typu round a napewno się zmieści. To samo tyczy się zmiennych single. Operacje na tych zmiennych trwają strasznie długi i zajmują mnóstwo rozkazów asemblera

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.