Mnożnik częstotliwości sygnału prądowego
Mnożnik częstotliwości sygnału prądowego
Witam, potrzebuje stworzyć mnożnik częstotliwości prądowej sygnału z czujnika halla, który pod napięciem 14 V generuje impulsy prądowe o wartościach 7 mA i 14mA , impulsator to koło z wieńcem o 12 wypustach, potrzebuje przemnożyć częstotliwość dokładnie o 1,12 czyli jeśli czujnik poda 1000 impulsów to układ musi je przetworzyć na 1120, da się coś takiego stworzyć małym kosztem?
Najprościej będzie dołożyć przekładnię albo wymienić 'wieniec' na taki mający 13 lub 14 wypustów.
Jeśli ma to być realizowane elektronicznie, to musisz dokładniej określić czego potrzebujesz!
- Jeśli mają to być impulsy idące na licznik impulsów, to wystarczy liczyć te impulsy i co 8 impulsów dołożyć jeden ekstra. W ten sposób pomnożysz wynik przez 1.125, myślę że to dobry wynik. Alternatywa to co 9 impulsów (mnożnik 1.11111) albo (wersja trudniejsza) kolejno ekstra impuls co 8, 8, 9 impulsów. Wtedy wyjdzie mnożnik dokładnie 1.12.
- Jeśli impulsy idą na częstościomierz, prędkościomierz albo cokolwiek reagującego na czas między kolejnymi impulsami, już trzeba pomyśleć nad układem typu PLL albo dwa przetworniki częstotliwość -> napięcie i napięcie -> częstotliwość. Jest to rozwiązanie bardziej skomplikowane, trudniejsze do zestrojenia i mniej dokładne, ale gwarantuje że prędkościomierz/obrotomierz nie zacznie wariować.
Jeśli ma to być realizowane elektronicznie, to musisz dokładniej określić czego potrzebujesz!
- Jeśli mają to być impulsy idące na licznik impulsów, to wystarczy liczyć te impulsy i co 8 impulsów dołożyć jeden ekstra. W ten sposób pomnożysz wynik przez 1.125, myślę że to dobry wynik. Alternatywa to co 9 impulsów (mnożnik 1.11111) albo (wersja trudniejsza) kolejno ekstra impuls co 8, 8, 9 impulsów. Wtedy wyjdzie mnożnik dokładnie 1.12.
- Jeśli impulsy idą na częstościomierz, prędkościomierz albo cokolwiek reagującego na czas między kolejnymi impulsami, już trzeba pomyśleć nad układem typu PLL albo dwa przetworniki częstotliwość -> napięcie i napięcie -> częstotliwość. Jest to rozwiązanie bardziej skomplikowane, trudniejsze do zestrojenia i mniej dokładne, ale gwarantuje że prędkościomierz/obrotomierz nie zacznie wariować.
w załączniku dodałem schemat urządzenia, które zaprojektował znajomy, ale w tej chwili coś się w nim popsuło i konwerter wywołuje błąd "za wysokiego sygnału" w sterowniku automatycznej skrzyni, odłączenie go i przerwanie całkowicie wiązki problem eliminuje, więc ten układ zaczął wysyłać jakieś niepotrzebne impulsy na postoju (w ruchu błędu nie ma). Mikrokontroler zastosowany w tym układzie to atmega8, wyprowadzenia ze schematu do procesora są odpowiednio opisane. Kod programu wygląda tak:
może Wam uda się doszukać błędu?
Kod: Zaznacz cały
$regfile = "m8def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40
Config Timer1 = Timer , Prescale = 256 , Noise Cancel = 1 , Clear Timer = 1
Config Aci = On , Compare = Off , Trigger = Rising
Acsr = Acsr And &B01111111 'włączenie timer1, bo Bascom sobie z tym nie bardzo radzi
Config Portb.5 = Output
Config Portb.1 = Output
Config Portb.0 = Output
Dim Okresin As Long 'zmienna wejściowa z timera1
Dim Okresout As Word ' zmienna wyjściowa sterująca
Dim Out1 As Byte 'zmienna sterująca loscią powtórzeń timer0
Dim Out0 As Byte 'zmienna wpisywna do timera na koniec
Dim Outpom As Word
Dim A As Byte
Dim C As Word
Dim D As Long
Dim E As Byte
Dim Zadlugo As Byte
Dim Z As Bit
Dim Y As Bit
Dim Okresinh As Byte
Dim Okresinl As Byte
Enable Interrupts
Enable Timer1
Enable Aci
On Aci Zapal
On Ovf1 Wyzeruj
Okresin = 0
C = 0
E = 0
Start Timer1
'end program
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Zapal:
Okresin = Timer1
Timer1 = 0
Reset Watchdog
Zadlugo = 0
Return
Wyzeruj:
E = 1
Return
- Załączniki
-
- schemat.jpg (37.43 KiB) Przejrzano 6942 razy