Stroboskopowy Miernik Obrotów


9.55556
Ocena: None Średnia: 9.6 (9 głosujących)

Prezentowany układ jest miernikiem prędkości obrotowej silników elektrycznych, a główną jego zaletą jest bezinwazyjny pomiar polegający na oświetleniu wirującego obiektu diodą LED dużej mocy. Pomiar polega na ustawieniu częstotliwości błysków zgodnej z częstotliwością obrotów (ustawieniu nieruchomego obrazu po oświetleniu światłem stroboskopowym z diody LED) za pomocą impulsatora. Pomiar można dokonywać bez zatrzymania badanego urządzenia. Układ został zbudowany w oparciu o mikrokontroler ATMEGA8, a ustawione obroty prezentowane są na wyświetlaczu LCD. Dodatkowo układ pokazuje również błąd wynikający z zaokrąglenia wyliczonych w programie wartości dla podzielnika timera, natomiast pomiary częstotliwości generowanych błysków pozwoliły zrobić z układu miernik, a nie tylko wskaźnik obrotów. Sterowanie odbywa się za pomocą enkodera obrotowego i sześcioprzyciskowej klawiatury. Całe urządzenie może być zasilane z baterii, gdyż ze względu na impulsowy charakter pracy diody całość nie pobiera dużo prądu. Układ z powodzeniem zmieści się w popularnej obudowie KM35, w której znajdzie się też miejsce na baterię 9V.

Działanie:


Schemat ideowy układu znajduje się na rysunku poniżej:

Sercem układu i jego najważniejszą częścią jest mikrokontroler U1 (ATMEGA8-16AU), który pracuje na taktowaniu z rezonatora kwarcowego X1 (16MHz). Dodatkowe kondensatory C1 (22pF) i C2 (22pF) są konieczne do poprawnej pracy rezonatora. Jako interfejs programujący wykorzystane jest złącze Prog, które zawiera zestaw sygnałów potrzebnych podczas programowania szeregowego. Złącze to jest konieczne gdyż mikrokontroler jest w obudowie SMD co uniemożliwia zaprogramowanie w układzie zewnętrznym. Kondensator C5 (100nF) filtruje zasilanie mikrokontrolera. Kondensatory C6 (100nF) i C7 (100nF) łagodzą zbocza sygnału wygenerowanego przez impulsator IMP, co ułatwia jego bezproblemową obsługę w programie. Przyciski S1 - S6 (uSwitch) stanowią dodatkową klawiaturę urządzenia. Elementem generującym błyski świetlne jest dioda LED o mocy 0.5W, jej prad ograniczony jest przez rezystor R4 (30R/2W), a sterowana jest za pomocą tranzystora T2 (BC337) i rezystora R3 (330R). Dioda podłączona jest bezpośrednio do zasilania, z pominięciem stabilizatora, aby zminimalizować wpływ impulsów prądowych na działanie mikrokontrolera i odciążyć stabilizator napięcia U2 (78L05). Kondensatory C3 (220uF) i C4 (47uF) są konieczne do poprawnej pracy stabilizatora. Prezentacja wyników pomiaru odbywa się na wyświetlaczu W1 (LCD 16x2). Jego kontrast ustawiany jest za pomocą P1 (10k) a podświetlanie jest możliwe do włączenia programowo za pośrednictwem T1 (BC556), R1 (47R) i R2 (3,3k).

Budowa:

Układ z powodzeniem można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Układ jest prosty w montażu, lecz zawiera elementy SMD których przylutowanie może sprawić problemy początkującym. Pracę należy rozpocząć od wlutowania dwóch zworek. Następne w kolejności powinny być kondensatory i rezystory SMD, mają to być elementy w popularnych obudowach 0805 (2x1.2mm). Następny w kolejności powinien być mikrokontroler U1, przy którym należy zwrócić uwagę na numery wyprowadzeń (przyda się tutaj rysunek montażowy w odbiciu lustrzanym). Przyciski powinny mieć długość ośki 15mm i należy je tak wlutować aby minimalnie wystawały nad wyświetlacz LCD włożony w złącze szufladkowe, będzie to ważne przy montowaniu płytki w obudowie. Podobnie sprawa wygląda z impulsatorem. Potencjometr P1 musi być w obudowie stojącej aby z boku można było poregulować kontrastem przy włożonym LCD.

Płytka została tak zaprojektowana, że z łatwością pasuje do popularnej obudowy KM35. Wszystko jest na płytce aby nie było konieczności łączenia przycisków przewodami. Przy wycinaniu dziur w obudowie można posłużyć się rysunkiem z rozkładem dziur, specjalnie przygotowanym w tym celu. Należy go wkleić w środku obudowy za pomocą taśmy i wiercić przez rysunek. Ułatwi to znacznie wykonanie obudowy.

Układ został przewidziany do zasilania 9V z baterii, jednak nic nie stoi na przeszkodzie aby wykorzystać zasilacz o napięciu 7-12V. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj. Dla montażu SMD pomocny będzie także rysunek montażowy w odbiciu lustrzanym, dostępny tutaj

Wykaz Elementów:

1x Złącze Śrubowe ARK2(podwójne)
1x Goldpin kątowy 1x6
6x uSwitch
1x Enkoder obrotowy, Impulsator z przyciskiem

1x 3,3k
1x 30R/2W
1x 47R
1x 330R
1x Potencjometr Montażowy 10k

2x 22pF
3x 100nF
1x 47uF Elektrolit
1x 220uF Elektrolit

1x Rezonator Kwarcowy 16MHz
1x Dioda LED
1x BC337
1x BC556
1x Stabilizator 78L05
1x Mikrokontroler ATMEGA8-16AU
1x Wyświetlacz LCD 16x2

Programowanie:


Kod Źródłowy do miernika został napisany w BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej:

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "m8def.dat"
$crystal = 16000000
 
Config Portb = &B00000000 : Portb = &B11111111
Config Portc = &B11111111 : Portc = &B11111111
Config Portd = &B00111111 : Portd = &B11111011
 
 
'Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0       'mirley UPT M162
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 2
 
Deflcdchar 0 , 3 , 2 , 2 , 2 , 2 , 2 , 2 , 3
Deflcdchar 1 , 24 , 8 , 8 , 8 , 8 , 8 , 8 , 24
Deflcdchar 2 , 4 , 4 , 31 , 4 , 4 , 32 , 31 , 32
 
Cls
Cursor Off Noblink
 
 
I1 Alias Pinb.1
I2 Alias Pinb.0
X01 Alias Pinb.5
X10 Alias Pinb.4
X100 Alias Pinb.3
X1000 Alias Pinb.2
Sw1 Alias Pind.6
Sw2 Alias Pind.7
Led Alias Portd.3
Light Alias Portd.2
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
 
Config Timer1 = Timer , Prescale = 1
Enable Timer1 : On Timer1 Prztimer1
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Zmienne *******************
'***********************************************
 Dim D As Word , A As Word , X As Long ,
 Dim Obr As Long
 Dim T As Single , T2 As Single
 
 Dim Autowysw As Byte
 Dim In1 As Bit , In2 As Bit
 Dim Tryb As Byte
 Dim Rezultat As Integer
 Dim F4ms As Bit
 Dim Div As Word
 
 Dim Div_licz As Word , Div_pulse As Byte
 Dim Licz_sw(2) As Byte
 
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
 Obr = 10000
 Gosub Przelicz
 
 Lcd "Obrotomierz v1.0"
 Lowerline
 Lcd "   by mirley"
 Wait 1
 Cls
 Gosub Wyswlcd
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
In1 = I1
In2 = I2
 Rezultat = 0
 Select Case Tryb
  Case 0:
   If In1 = 1 And In2 = 1 Then Incr Tryb                    'jezeli dwa rozwarte
  Case 1:
   If In1 = 1 And In2 = 0 Then Tryb = 2
   If In1 = 0 And In2 = 1 Then Tryb = 3
  Case 2:
   If In1 = 0 And In2 = 1 Then
     Rezultat = 1
     Tryb = 0
   End If
  Case 3:
   If In1 = 1 And In2 = 0 Then
     Rezultat = -1
     Tryb = 0
   End If
 End Select
 
If Rezultat <> 0 Then
   Autowysw = 11                                            '10x4ms
   A = 10
   If X01 = 0 Then A = 1
   If X10 = 0 Then A = 100
   If X100 = 0 Then A = 1000
   If X1000 = 0 Then A = 10000
 
   If Rezultat = 1 Then
      Obr = Obr + A
      If Obr > 420000 Then Obr = 420000
   Else
     Obr = Obr - A
     If Obr < 600 Then Obr = 600
   End If
 
   Gosub Przelicz
End If
 
 
If F4ms = 1 Then
  F4ms = 0
  '***********************************************
  If Sw1 = 0 Then
    Incr Licz_sw(1)
    If Licz_sw(1) = 20 Then
      Obr = Obr * 2
      If Obr > 420000 Then Obr = 420000
      Gosub Przelicz
      Gosub Wyswlcd
    End If
  Else
    Licz_sw(1) = 0
  End If
 
  If Sw2 = 0 Then
    Incr Licz_sw(2)
    If Licz_sw(2) = 20 Then
      Obr = Obr / 2
      If Obr < 600 Then Obr = 600
      Gosub Przelicz
      Gosub Wyswlcd
    End If
  Else
    Licz_sw(2) = 0
  End If
 
  If Autowysw > 1 Then
    Decr Autowysw
  Else
    If Autowysw = 1 Then
      Gosub Wyswlcd
      Autowysw = 0
    End If
  End If
  '***********************************************
End If
 
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
  Timer0 = 5
  Set F4ms
Return
'******** Przerwanie timer 0 Koniec ************
'************ Przerwanie timer 1 ***************
'***********************************************
Prztimer1:
  Timer1 = D                                                'max 65535
  Incr Div
  If Div >= Div_licz Then Div = 0
  If Div < Div_pulse Then Led = 1 Else Led = 0
Return
'******** Przerwanie timer 1 Koniec ************
 
'***********************************************
 Przelicz:
   If Obr >= 4800 Then
     Div_licz = 32
     Div_pulse = 1
     'wynika z parametryzacji po dokonaniu pomiarów
     T = 0.000000258 * Obr                                  ' hi
     T = T * Obr
     T2 = 0.995658 * Obr
     T = T + T2
     T = T + 85.3782
     T = 300000000 / T
   Else
     Div_licz = 256
     Div_pulse = 8
     'wynika z parametryzacji po dokonaniu pomiarów
     T = 0.0000018863 * Obr                                 'low
     T = T * Obr
     T2 = 0.999905 * Obr
     T = T + T2
     T = T + 0.1899438
     T = 37500000 / T
   End If
 
   X = T                                                    'rzutowanie
   D = 65536 - X
 
   T2 = T - X
   T = T2 / T                                               'błąd procentowy wynikający z zaokrąglenia
   T = T * Obr                                              'blad w obr/min
 
 Return
'***********************************************
Wyswlcd:
 Locate 1 , 2
 If Obr < 100000 Then Lcd " "
 If Obr < 10000 Then Lcd " "
 If Obr < 1000 Then Lcd " "
 X = Obr / 10
 Lcd X ; "."
 X = Obr Mod 10
 Lcd X
 Locate 1 , 10
 Lcd Chr(0) ; "n/min" ; Chr(1)
 
 
 Locate 2 , 2
 T = T * 100
 X = T
 If X < 10000 Then Lcd " "
 If X < 1000 Then Lcd " "
 X = X / 100
 Lcd Chr(2)
 Lcd X ; "."
 X = T
 X = X Mod 100
 If X < 10 Then Lcd "0"
 Lcd X
 Locate 2 , 10
 Lcd Chr(0) ; "n/min" ; Chr(1)
 
 
Return
'***********************************************

Kalibracja i pomiary:

Po zaprogramowaniu układu wstępną wersją programu i wyliczeniu podzielnika timera, pomiary wykazały odchyłki generowanej częstotliwości w stosunku do teoretycznie spodziewanej. Jest to spowodowane pracą z podzielnikiem timera równym 1, czasem jaki jest potrzebny na obsługę przerwania i czasem przeładowania wartości w rejestrze timera. W tabeli niżej zostały zawarte pomiary częstotliwości generowanej na wyjściu (f_p) w stosunku do częstotliwości jaka powinna być teoretycznie (f_i) oraz odpowiadające im wartości obrotów (obroty pomnożone są przez 10 aby uzyskać dokładność nastaw 0.1 obr/min).

Dane z tabelki zostały podzielone na dwie części, od 60 do 480 obr/min i drugi przedział od 480-42000 obr/min. Podział ten wynika z działania programu, w którym działają dwa zakresy pomiarowe. Na wykresach poniżej widać punkty pomiarowe (zależność obrotów teoretycznych od obrotów zmierzonych, przeliczonych z pomiaru częstotliwości) wraz z dopasowanymi krzywymi kalibracyjnymi:

Jako krzywą kalibracyjną została przyjęta zależność kwadratowa postaci:

[tex]y = a \cdot x^2 + b \cdot x +c[/tex]

gdzie y - obroty teoretyczne, x - obroty zmierzone, a,b,c - współczynniki wynikające z regresji. Dopasowanie krzywej zostało wykonane w programie gnuplot, a stałe współczynniki dopasowania dla dwóch zakresów pracy układu przedstawione zostały poniżej:

zakres 60-480 obrotów:
a= 1.88622104239405e-006 
b= 0.999905059864626 
c= 0.189869882714651 
 
zakres 480-42000 obrotów:
a= 2.54573967680295e-007 
b= 0.996905226980814 
c= 1.00037985789872 

Po wstawieniu parametrów do programu układ staje się miernikiem a nie tylko wskaźnikiem obrotów. W tabelce poniżej zostały zawarte wyniki pomiarów częstotliwości generowanej przez układ w zależności od ustawionej na wyświetlaczu. Błąd generowanej częstotliwości jest ułamkiem procenta wartości żądanej:

Zdjęcia Projektu:

ZałącznikWielkość
Schemat63.83 KB
Płytka15.87 KB
Płytka (odbicie lustrzane)15.97 KB
Płytka (6 na stronie)89.96 KB
Montowanie21.29 KB
Montowanie (odbicie lustrzane) (do lutowania SMD)21.37 KB
Maska otworów w obudowie (odbicie lustrzane)4.36 KB
Nadruk na obudowę23.76 KB
Kod źródłowy5.55 KB
Program po kompilacji (bin)4.25 KB
Program po kompilacji (hex)11.98 KB



Portret użytkownika White

obrotomierz

Projekt ciekawy, powiedz tylko czy przy średnio nasłonecznionym pomieszczeniu da się zrobić pomiar ew. na dworze? Czy taka dioda wystarcza? Rozumiem że kalibracja polega na wprowadzeniu tych stałych?Bo nie napisałeś wyraźnie jak należy go skalibrować.Jak byś dał radę pokaż jakiś film z przykładowym pomiarem.
Ciekawi mnie to i bym sobie z chęcią wykonał.
pozdrawiam.

-

Co cie nie zabije to cie wzmocni.
(Nie dotyczy kondensatora 230V)

Portret użytkownika mirley

Re: Obrotomierz

Da się zrobić pomiar, w dzień.... testowałem na swoim biurku w dzień. Filmiku nie pokażę bo już nie mam układu przy sobie. Pomiar polega na ustawieniu nieruchomego obrazu znaku szczególnego na obracającej się osi silnika, lub innym wirującym elemencie. Na wyświetlaczu będzie wtedy można odczytać wartość prędkości obrotowej.

kalibracja została wykonana przeze mnie i wydaje mi się że powinna być dobra dla innym mikrokontrolerów Mega8, wkońcu to układ cyfrowy i powinien się zachowywać tak samo. Przedstawiłem metodę kalibracji żeby było jasne jak to jest wyznaczone. Jedyne co można sprawdzić to czy częstotliwość dla kilku wybranych prędkości zgadza się z teorią (wskazaniem na wyświetlaczu, wskazanie/60 daje częstotliwość). Trzeba mieć do tego dobry miernik bo przebieg wyjściowy ma wypełnienie 1/32

-

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 White

obrotomierz

Quote:
Przedstawiłem metodę kalibracji żeby było jasne jak to jest wyznaczone.

W takim razie ok.Na czym polega samo mierzenie to wiem miałem kiedyś styczność z tego typu urządzeniem stąd moje zaciekawienie nim.Jak nie wypali projekt zegarka TXT z twojej stronki(koncepcje mam dobrą ale trochę ciężko uzyskać zadowalający efekt) to sobie zrobię to.
pzdr

-

Co cie nie zabije to cie wzmocni.
(Nie dotyczy kondensatora 230V)

Portret użytkownika blackwolf

czy da rade przerobić program

czy da rade przerobić program aby liczył obroty w motocyklu??

Portret użytkownika mirley

Re: Obroty

jak liczył obroty w motocyklu? jadącego motoru?

-

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 blackwolf

ja myślałem żeby podpiąć się

ja myślałem żeby podpiąć się pod przerywacz zapłonu i liczyć impulsy

Portret użytkownika White

obrotomierz

To całkiem inna metoda pomiaru. To jest układ w którym kierujesz światło z diody na ruchomą wirującą część sprawdzasz kiedy wizualnie obiekt przestanie wirować następnie odczytujesz wynik z wyświetlacza co masz napisane w opisie.Nie nadaje się do pomiaru obrotów w motocyklu.

-

Co cie nie zabije to cie wzmocni.
(Nie dotyczy kondensatora 230V)

Portret użytkownika alex

przyciski

A ja bym poprosił jeszcze króciutko o przyciskach jeżeli można.

Portret użytkownika mirley

Re: Przyciski

Impulsatorem ustawiasz obroty +/-1 obrót, jak trzymiesz do tego przycisk 0,1x to kręcisz co 0.1 obrotu. Jak trzymasz przycisk x100 to imulsator zwiększa stan obrotów co właśnie tyle. Przyciski x2 i /2 mnożą i dziela wskazane obroty przez 2

-

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 alex

impulsator

czy impulsator musi być z przyciskiem? tam gdzie zawsze wszystko zamawiam w TME jest tylko bez przycisku.

ED16112O Enkoder do PCB, pionowy, plastikowa ośka
Typ czujnika enkodery mechaniczne
Właściwości wyjście z 2 bitowym kodem Graya, ośka 6 mm
Temperatura pracy -20...70°C
Rozdzielczość 24 imp/obrót
Prąd pracy maks. 500 ?A
Napięcie pracy maks. 50 V AC
Wymiary zewnętrzne 6,5 x 17,6 x 16 mm

Portret użytkownika mirley

Re: Miernik obr

Impulsator nie musi być z przyciskiem, gdyż nie jest on wykorzystywany w projekcie

-

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 alex

obrotomierz

Swietny obrotomierz działa bez problemu po niedzieli potestują go w pracy na u silnikowców i pokażę
jak działa w praktyce.

Portret użytkownika MichałK85

pomiar obrotów komputerowego wiatraczka

Witam

Jestem kompletnym amatorem jeśli chodzi o takie rzeczy, dlatego pytam czy da się tym urządzeniem zmierzyć obroty wiatraczka kompuerowego?

Jest to wkońcu obracająca się część :D

Jeśli się da to jak? zaznaczyć np. na biało jedną z krawędzi łopatki wiatraczka ? Co oznacza że przed wykonaniem pomiaru trzeba zatrzymać dany obiekt ?

mam nadzieję że wyraziłem się w miarę jasno

Portret użytkownika mirley

Re: Wiatraczek

W przypadku wiatraczka nawet nie będziesz musiał nic znaczyć, bo prawdopodobnie zobaczysz stojące łopaty wirnika jak dostroisz częstotliwość. Ogólnie jest to do pomiaru silników w różnego typu maszynach ale wentylator też zmierzysz

-

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 MichałK85

A jeszcze jedno pytanie - czujnik ?

W tym układzie rolą "czujnika" jest oko ludzkie jeśli dobrze rozumiem?

Jak bardzo jest taki pomiar precyzyjny ? Nie dałoby się tego przerobić i dołożyć jakiś fotodetektor ? Który by wspomógł człowieka?

Portret użytkownika mirley

Re: Pomiar

Czujnikiem można powiedzieć że jest ludzkie oko... niczym tego dokładniej nie zmierzysz wykorzystując ta metodę. Nie bardzo mam pomysł jak chciałbyś wykryć czy obraz się porusza czy nie za pomocą fotodetektora, ta właściwość wynika z bezwładności ludzkiego oka.

-

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 Norek12

kompilacja

Mam problem z wsadem otóż jak go skopiuje do Bascom'a i jak dam kompilację to wyskakują mi dwa błędy.Czym to może być spowodowane??Za informacje wielkie dzięki Pozdrawiam

Portret użytkownika matrix

Re: kompilacja

a jakie te błędy Ci wyskakują?

Portret użytkownika Norek12

Witam Już mam po problemie bo

Witam Już mam po problemie bo zablokował mi się uC i muszę kupić nowy hehe przez moją nie uwagę i przypadek dałem zły oscylator w Fuse Bita-ch muszę teraz kupić nowy ,bo ten nie nawiązuje komunikacji.A błędy miałem gdy skopiowałem wsad i zrobiłem kompilację.;pozdrawiam

Portret użytkownika matrix

Re: kompilacja i błędy

jeśli chodzi o błędy to trzeba było trochę dokładniej, a jeśli chodzi o złe fusy to nie musisz kupować nowego procka. na jakimś innym napisz program:

config portb = output
 
set portb
 
do
toggle portb
loop
end

i teraz:
- umieść zablokowany kontroler w programatorze
- zaprogramowany wyżej podanym softem procesor zasil w innym układzie
- podpinając się pod port.b zaprogramowanego proca, podaj sygnał na XTAL1 tego zablokowanego
- nie odłączając taktowania otwórz zablokowany procek w programatorze i przestaw mu fuse bits.
ja odblokowałem sobie tak dwie atmegi8.

tylko nim zaprogramujesz inny procek powiedz jaki będziesz programował, to Ci podpowiemy jakie ustawić fusy. ja korzystam z bascoma więc tylko na tej platwormie mogę Ci pomóc.

Portret użytkownika Norek12

Chodzi mo to że jak

Chodzi mo to że jak skompiluje wsad do bascoma to wyrzuca 2 błędy że plik jest za duży że wynosi 4096bytes i nie wiem co z tym zrobić.A procka jutro spróbuje wskrzesić jak się nie uda to bee musiał kupić.Do wskrzeszenia myślę użyć uC 89C51.Dzięki za pomoc tylko co z tym wsadem zrobić.pozdrawiam

Portret użytkownika matrix

Re: co z tym zrobić?

spróbuj w bascomie zaznaczyć opcję OPTIMIZE CODE.

Portret użytkownika Norek12

Witam panowie i mam tylko

Witam panowie i mam tylko jedno pytanie odnośnie kompilacji a mianowicie czemu mu za każdym razem wyskakuje 2błędy że plik jest za duży.Opiszę jak robię kompilacje a więc otwieram Bascom'a i w nim otwieram plik z wsadem i kompiluje i lipa.Mam prośbę jak ktoś by mi mógł pomóc z tym to był bym bardzo wdzięczny,albo jak ktoś by mi mógł przesłać plik bin tego wsadu.Dzięki za wszelką pomoc
Pozdrawiam

Portret użytkownika matrix

re: błędy

co kolega opowiada? ja przed chwilą skompilowałem i jest gites. 0 błędów. a pamięci jeszcze masa została bo wykorzystane tylko 53%. zaznacz OPTIMIZE CODE.

Portret użytkownika Norek12

Ale naprawdę ja tak mam i nie

Ale naprawdę ja tak mam i nie wiem co zrobić Jka byś mógł mi wysłać format bin był bym bardzo wdzięczny a i gdzie się wyłącza Jtag w Duse Bita-ch.Dzięki za pomoc
pozdrawiam

Portret użytkownika matrix

Re: plik BIN

Portret użytkownika Norek12

Dzięki wielkie Ale nie wiem

Dzięki wielkie Ale nie wiem czemu u mnie się tak dzieje ściągam jeszcze raz Bascom'a demo do Avr jutro muszę po walczyć z tymi Fuse Bit'ami.Mam jeszcze do Ciebie czy może masz gdzieś screen jak mają być ustawione w Bascom-ie??Lub jak możesz mi wytłumaczyć jakie mają mieć wartości i gdzie się wyłącza tego JTAG-a.Naprawdę jeszcze raz dzięki Pozdrawiam

Portret użytkownika Norek12

http://img709.imageshack.us/i

http://img709.imageshack.us/i/bdbascom.png/ tutaj jest to o mi się pokazuje po kompilacji nie wiem czemu.

Portret użytkownika matrix

Re: Fusy

ustaw taktowanie na 16MHz na zewnętrzny kwarc. co do JTAG'a to nie mam pojęcia. nigdy tego nie ustawiałem.

Portret użytkownika Norek12

I dalej to samo nie mam

I dalej to samo nie mam pojęcia czym to może być spowodowane.Jak by ktoś miał jakiś pomysł to proszę o poradę.Dziękuje za pomoc
Pozdrawiam

Portret użytkownika mirley

Re: Miernik obrotów

W bascomie AVR DEMO nie skompilujesz tego programu bo bascom demo ma ograniczenie do 4kB kodu a skompilowany program ma więcej niż 4kB. Potrzebna jest pełna wersja bascoma.

Taktowanie ma być ustawione na zewnętrzny kwarc (External crystal [CKSEL=1111]) a SUT ma być na 11. Interfejs JTAG ma być bezwzględnie wyłączony (disable) bo wyswietlacz LCD nie będzie działał. JTAG wykorzystuje piny na których aktualnie tutaj jest LCD

-

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 mich43l

programtor ??

witaj oglądałem twoje projekty całkiem niezłe :]
pytanko do ciebie jakim programatorem wgrywasz programy do scalakow

Portret użytkownika mirley

Re: Programowanie

Używam USBASPA, tego opisanego na swojej stronie

-

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 alex

odczyty

Czy ktoś testował to urządzene, ja zauważyłem że przy odczycie obrotów np jest 2000 i wygląda że obraz jest nieruchomy podobny efekt jest przy 4000 tyś i 1000.Tak jakby pomnożyć i podzielić rzeczywiste obroty i conajmniej dwa wyniki są łudząco podobne i nie znając rzeczywistych obrotów trudno jest zdecydować się który zatrzymany obraz jest prawdziwy dla prawidłowych obrotów.
I badzo trudno było mi przekonać kolegów ,że odczyt jest prawidłowy.

Portret użytkownika obserwator25

Witam. Mam pytanie .Rozmyślam

Witam. Mam pytanie .Rozmyślam nad budową symulatora czujnika położenia wału korbowego w samochodzie. Czujnik tak podczas kręcenia się wału wytwarza przebieg sinusoidy ( może byś prostokątny) z tym że :powiedzmy na 60 impulsów ,2 impulsy koło siebie są "puste"- czyli powiedzmy 58 impulsów prostokątnych i przerwa 2 impulsów po czym kolejne powtórzenie . chodzi mi o sposób realizacji tego "przerwania". Twój projekt wytwarza regulowana częstotliwość wyjścia na diodę LED . Myślałem nad podłączeniem do tego wyjścia bramki 4011 -czyli jedna noga na to wyjście a druga na wyjście które co 58 impulsów będzie blokować bramkę na czas 2 impulsów.Czy mógłbyś przedstawić modyfikacje kodu dla takiego :przerwania". Wiem że pytanie może nie w tym temacie ale nie ukrywam że szukałem informacji na temat jakiegoś kodu generatora i trafiłem na Twoją stronę.

Pozdrawiam

Portret użytkownika mirley

Re: Obrotomierz

Nie trzeba tu żadnych bramek logicznych ja bym poprostu w programie zbramkował sygnał idący na diodę. Zmień procedurę obsługi timera aby wyglądała tak:

Prztimer1:
  Timer1 = D                                                'max 65535
  Incr Div
  If Div >= Div_licz Then 
    Div = 0
    incr impuls
    if impuls >= 60 then impuls = 0
    if impuls < 58 then Led_en = 1 else Led_en = 0
  end if
  If Div < Div_pulse Then Led = Led_en Else Led = 0
Return
'********

W zmiennych zadeklaruj jeszcze zmienna impuls jako byte, oraz Led_en jako bit

-

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 obserwator25

odp.

Oki program działa tak jak powinien ale impulsy są nie proporcjonalne (szpilki). Co zrobić by sygnał generowany miał przebieg prostokąta 50%/50%.??

Portret użytkownika mirley

Re: Stroboskopowy miernik

Miały być szpilki bo to stroboskop wkońcu...... Zmień parametry w procedurze przelicz:

...
 Przelicz:
   If Obr >= 4800 Then
     Div_licz = 32        
     Div_pulse = 16             'zmienic z 1 na 16
     'wynika z parametryzacji po dokonaniu pomiarów
     T = 0.000000258 * Obr                                  ' hi
     T = T * Obr
     T2 = 0.995658 * Obr
     T = T + T2
     T = T + 85.3782
     T = 300000000 / T
   Else
     Div_licz = 256
     Div_pulse = 128           'zmienić z 8 na 128
....

Chodzi o zmianę w dwóch linijkach gdzie jest Div_pulse, zamiast 1 i 8 powinno być 16 i 128

-

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 gość

nie działa mi :( dekoder obrotu

Witam !
Napisałem sobie menu na wyświetlacz i zastosowałem dekoder obrotu z przyciskiem tyle że mi to nie chce działać. Wzorowałem się na Twoim programie. Co powinienem zrobić / dopisać by mi to chodziło sensownie?

$regfile = "m32def.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 10
$framesize = 40
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Dim A As Byte
Config Portc = &B00000000 : Portc = &B11111111
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Dim Temp As Word
Dim Celsius As String * 5
Dim C As Single
Dim K As Single , H1 As Single , H2 As Single
Dim F As Byte
Dim Rezul As Bit
Dim Nr_menu As Byte , Klucz As Bit
Dim Nr_menu1 As Byte , Klucz1 As Bit
Dim Pk As Byte
Dim Wynik As Integer
Dim Temperatura_badana As Single
Dim Dystans As Word
 Dim In1 As Bit , In2 As Bit
 Dim Tryb As Byte
 Dim Rezultat As Integer
I1 Alias Pinc.1                                             'dekoder w gore
I2 Alias Pinc.2                                             'dekoder w dol
 
Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32
 
Declare Sub Przyciskc5
Declare Sub Gora_dol
Cls
Start Adc
K = 20
H1 = 10
H2 = 10
Nr_menu = 0
 
 
 Do                                                         'glowna petla
Cls
   Lcd Lookupstr(nr_menu , D_menu)
   On Nr_menu Gosub Menu1 , Menu1_h , Menu2_h , Menu3
 
   Set Klucz
   While Klucz = 1
 
 
 
      Debounce Pinc.0 , 0 , Zmiana , Sub
 
   Wend
Loop
Zmiana:
   Incr Nr_menu
   If Nr_menu = 4 Then Nr_menu = 0
   Reset Klucz
Return
 
 
 
 
Menu1:
Do
Gosub Gora_dol                                              ' ustawiamy temperature
Select Case Rezul
Case 0 : Incr K
Case 1 : Decr K
End Select
Locate 2 , 2
Lcd K
Loop Until Pinc.0 = 0
Return
 
 
Menu3:                                                      ' mierzymy temperature
Pk = 0
Do
Temp = Getadc(0)
C = Temp / 4.166
Celsius = Fusing(c , "###.#")
Lowerline
Locate 2 , 4
Lcd Celsius
Locate 2 , 10
Lcd Chr(0)
Locate 2 , 11
Lcd "C"
Debounce Pinc.0 , 0 , Przyciskc5 , Sub
 
Loop Until Pk = 1
Return
 
 
Menu1_h:                                                    'ustawiamy gorna temperature
Do
Gosub Gora_dol
Select Case Rezul
Case 0 : Incr H1
Case 1 : Decr H1
End Select
Locate 2 , 2
Lcd H1
Loop Until Pinc.0 = 0
Return
 
 
 Menu2_h:                                                   'ustawiamy dolna temperature
Do
Gosub Gora_dol
Select Case Rezul
Case 0 : Incr H2
Case 1 : Decr H2
End Select
Locate 2 , 2
Lcd H2
Loop Until Pinc.0 = 0
Return
 
Przyciskc5:                                                 'aby wyjsc z pomiaru do menu
Pk = 1
Return
 
Sub Gora_dol:                                               'obsluga dekodera obrotu
 
In1 = I1
In2 = I2
 Rezultat = 0
 Select Case Tryb
  Case 0:
   If In1 = 1 And In2 = 1 Then Incr Tryb                    'jezeli dwa rozwarte
  Case 1:
   If In1 = 1 And In2 = 0 Then Tryb = 2
   If In1 = 0 And In2 = 1 Then Tryb = 3
  Case 2:
   If In1 = 0 And In2 = 1 Then
     Rezultat = 1
     Tryb = 0
   End If
  Case 3:
   If In1 = 1 And In2 = 0 Then
     Rezultat = -1
     Tryb = 0
   End If
 End Select
 
If Rezultat <> 0 Then
   Rezul = 0
 
   If Rezultat = 1 Then
      Rezul = 1
   End If
   End If
 
   End Sub Gora_dol
 
D_menu:
Data " Temperatura  T " , " Granica Gorna " , " Granica Dolna" , "  Pomiar Temp."

Chodzi o to że chcę dodawać/odejmować po przez obrót wartości K , H1 i H2.

Dzięki za odpowiedź.

Portret użytkownika mirley

Re: Impulsator

Tak to nie będzie działać.... w programie masz pełno poleceń, które wstrzymują działanie programu a tak nie może być. W do loop musi cały czas być odświerzana procedura impulsatora jak chcesz aby on działał. Reszta programu musi być taktowana timerem i wykonywana w do loop wtedy kiedy flaga się ustawi.

Zadeklaruj timer tak samo jak ja mam w programie, wrzuć do do loop obsługę impulsatora i co 1s w do loop wyświetlaj na LCD wartość zmiennej rezultat

-

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 gość

No ale jakby zastosować w

No ale jakby zastosować w pętli Do-Loop dla H1 H2 i K by odczytywał poprzez Timer to by chyba się udało ? Bez Timer-a to jedynie na mikrostykach jak w temacie na elektrodzie . To menu mi wyszło jak chciałem. Nie za bardzo mi się uśmiecha myśleć nad nowym Menu. Może by się i dało ale i tak masę czasu spędzam przy lutownicy i kompie. Pozdrawiam.

Portret użytkownika gość

Skoro musi być stale

Skoro musi być stale odczytywany w pętli do-loop to jedynie wstawienie tej części Twojego programu odpowiadającej za odczyt w KAŻDE podmenu (Menu1_h , Menu2_h i Menu1) może być sensowne. Bo te pętle się "obracają" dopóki nie nacisnę klawisza PinC.0 . Dobrze rozumuję? Zapewne i Start Timer też musi być (jak i Stop Timer) w takiej pętli. Dobrą drogą idę?

Portret użytkownika mirley

Re: Enkoder

Według mnie idziesz złą drogą..... po co ci te pętle do loop until.... wstrzymuje to cały program. Napisałem już dużo programów ale takich konstrukcji nie potrzebowałem. Timer ma działac cały czas jeśli zajmuje się taktowaniem programu. Powinna być jedna pętla Do loop główna i tyle. Bezpośrednio w niej sprawdzany jest enkoder a co jakiś czas wykonywane są inne rzeczy np co 4ms obsługa pozostałych klawiszy,a co 100ms np wyświetlanie itd. Zanim zaczniesz pisac to od nowa to poczytaj moje programy do różnych układów. Spróbuj zrozumieć o co chodzi

-

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 gosc2

dot. miernika obrotów

Witam, na wstępie zdradzę ze jest to mój pierwszy uklad ktory udalo mi sie zlozyc i dzialal super. Musiałem się widocznie nieumiejętnie z nim obchodzić, bo teraaz mam taki objaw.

Chciałbym zapytać ,co może byc powodem iż pomimo widocznej reakcji na ruch potencjometra oraz przełączników /2 lub x2 (dioda miga i zwiększa / zminiejsza częstotliwosc świecenia) to na całej długości wyświetlacza widnieją "kwadraty" (tak jakby kontrolnie zaświeciły się wszystkie pola wyświetlacza).

Czy to może oznaczać ,że konieczne jest ponowne zaprogramowanie mikroporcesora ?
Jak to zrobić ?

Za odpowiedź oraz wszzelkie wskazówki z góry dziękuję.
Pozdrawiam

Portret użytkownika kaktus

straszne rzeczy

Jeśli litery/napisy są też na tle kwadratów wyreguluj kontrast.

-

"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".

Portret użytkownika gosc2

Nie, niestety ani litery ani

Nie, niestety ani litery ani cyfry nie są wyświetlane.

Portret użytkownika mirley

Re: LCD

Popatrz dokłądnie na płytkę, i poszukaj zwarć bądź przerw w liniach sterowanie wyswietlaczem. Czy napewno RW wyświetlacza jest podłączony do masy?

-

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 jacek3me

Wyłączanie stroboskopu.

Witaj. Bardzo fajny projekt.
Czy jest jakiś sposób na wyłączanie urządzenia, czy tylko odłączenie baterii?
Po co jest to wycięcie w pcb?
Pozdrawiam

Portret użytkownika EDC

Odp.Wyłączanie stroboskopu

Po małej przeróbce kodu mógłbyś przełaczać go do trybu POWERDOWN. Potrzebujesz jednak wolne wejście zewnętrznego przerwania INT0 albo INT1 bo tylko to może go wybudzić albo WatchDog.
Napisałem taki gotowiec TUTAJ Włącza coś, albo wyłącza jednym przyciskiem.

-

BARTek
Moja strona

Portret użytkownika mirley

Re: Płytka

Wycięcie umożliwia skręcenie obudowy :)

-

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.