Ste slučajno lastnik starejšega avta, ali pa morda tudi novejšega, ki nima »obratomerja«? Predstavil vam bom varianto digitalnega obratomerja z LED prikazovalniki, ki si ga lahko sestavite v zelo kratkem času in z minimalnimi stroški. Tudi montaža senzorja je enostavna, saj malo tuljavico enostavno prilepite kar na vžigalno tuljavo v avtomobilu.
Delovanje naprave
Izdelava naprave
Vgradnja in nastavitev
Program
Spisek materiala
Za konec
Datoteke
Kot lahko vidite iz sheme je naprava dokaj enostavna, saj razen mikrokontrolerja in nekaj okoliških elementov, ne ostane kaj dosti drugega. Jedro naprave je zopet mikrokontroler AT89C2051, ki direktno poganja štiri LED prikazovalnike z multipleksiranjem, zaradi česar je potrebno uporabiti displeje z visoko svetilnostjo in skupno anodo. Mikrokontroler šteje impulze na nogici 6, ki je konfigurirana kot prekinitev Int0. Morda je še najbolj zanimivo vhodno vezje, ki ga lahko uporabite na več načinov. Če boste vezje uporabili v avtomobilu za merjenje obratov, je dovolj, da na vhod priključite ploščato tuljavico s približno 100 ovoji. Inducirana napetost se bo najprej ojačala s prvim operacijskim ojačevalnikom z ojačanjem 470, ki ga določata upora R17 in R18. R15 in R16 tvorita delilnik napetosti, ki služi za ustvarjanje navidezne mase za operacijski ojačevalnik. Tako ZD1 kot obe diodi služita za zaščito operacijskega ojačevalnika pred uničenjem zaradi previsoke napetosti. Ojačan signal nato peljemo na komparator, katerega posebnost je ta, da se sam prilagaja nivoju enosmerne vhodne komponente napetosti, v stabilno stanje logične enke, ko je brez signala, pa ga sili upor R13. Brez tega upora bi v stanju brez signala na izhodu dobili šum velike amplitude, ki bi prožil naš obratomer povsem nekontrolirano. Mikrokontroler šteje impulze in jih prikazuje na LED prikazovalnikih. Zadnji prikazovalnik vedno kaže ničlo, razen če obratomer uporabite kot frekvenc meter. Predupori za LED prikazovalnike so lahko tudi nekaj manjši od 180?, vendar prekomernega zmanjševanja upornost ne priporočam zaradi preobremenitve samega mikrokontrolerja. Vsekakor naj ne bi bili manjši od 100?. Kot sem že omenil, lahko to vezje uporabite tudi kot frekvenc meter, kateri pa direktno meri frekvenco tja do 3kHz. V tem primeru pa sploh ni nujno, da uporabite vgrajeni predojačevalnik z LM358, ampak digitalni signal pripeljete direktno na nogico 6 IC3.
Slika 1: Shema obratomerja
Naprava je narejena iz dveh osnovnih delov in sicer iz tiskanega vezja z displeji in tiskanega vezja z ostalimi komponentami. Ploščici sta zelo majhni, za deljenje na dva dela pa sem se odločil zato, ker v avtomobilu ni vedno prostora, kamor bi lahko namontirali prikazovalnik skupaj z ostalo elektroniko. Ploščici sta med sabo povezani s ploščatim (flat) kablom z enajstimi žilami. Košček takega kabla lahko naredite iz kabla npr. od računalniške disketne enote. Tiskano vezje lahko brez problema naredite doma, za kar vam bo prišla prav predloga, ki se nahaja v ZIP datoteki pa tudi na moji domači strani ali domači strani revije jo bo moč najti, skupaj z vsemi ostalimi potrebnimi datotekami in izvorno kodo. Kot vedno v svojih projektih sem tudi sedaj uporabil nekaj SMD elementov, katerih pa se, prosim, ne ustrašite, saj je spajkanje le-teh veliko enostavnejše, kot si mislite. Izjedkano ploščico tiskanega vezja izvrtajte, očistite z acetonom in posprejajte s FLUX-om. Ko se ta vsaj deloma posuši, lahko začnete s spajkanjem SMD komponent, pri čemer si lahko pomagate s pinceto, kar še posebej velja za tranzistorje. Na tiskanini prikazovalnika se nahajajo samo štirje LED prikazovalniki LD1 do LD4.
Slika 2: Razpored elementov prikazovalnika
Na drugo ploščico najprej prispajkajte vse SMD elemente. Za tiste, ki vas zelo skrbi, kako priti do elementov, naj namignem, da jih lahko za domačo uporabo odspajkate kar iz odsluženih elektronskih enot (CD-ROM enote, razne računalniške kartice…). Problem bo le s keramičnimi kondenzatorji, ki ponavadi niso označeni, težko pa jih je doma izmeriti.
Slika 3: Razpored SMD komponent na strani spajkanja
Nato sledi prevezava, tuljavica L1, podnožje za IC3, »jumperji«, kristal, vrstna sponka in napetostni regulator 7805, na katerega je priporočljivo priviti manjši košček pločevine.
Slika 4: Razpored komponent na nasprotni strani spajkanja
Na koncu še povežete obe tiskanini s ploščatim 11 žilnim kablom, katerega dolžina je odvisna od vaših potreb in naprava je gotova. Še enkrat preverite postavitev in polariteto komponent, nato pa lahko napravo že priključite. Če ste vse pravilno prispajkali, se vam bo na displeju takoj izpisalo stanje 0000. Če imate na voljo funkcijski generator, lahko takoj preizkusite delovanje, ne pozabite pa, da je prikazan rezultat odvisen od nastavitve jumperjev. Če vam nobena nastavitev ne odgovarja, pa se lahko poigrate s programom, ki je solidno komentiran.
Priporočam, da naprave ne vgrajujete v posebno ohišje. Malo bolj iznajdljivim pa bo morda uspelo displej namontirati celo v armaturno ploščo. Pozorni bodite na to, da bo displej v senci in da bo pred njim filtersko rdeče steklo, sicer bo čitljivost slaba. Do motorja potegnite dve žički, na koncu katerih je prispajkana tuljavica, katero priključite na napravo na priključka IN1 in IN2. Najlažje to tuljavico dobite iz kake odslužene disketne enote ali iz kakega podobnega sinhronskega motorja s ploščatim rotorjem. Take tuljavice so običajno prilepljene pod rotor in jih je šest v enem motorju. So samostoječe in imajo ovoje zlepljene med sabo, tako da ne razpadejo. Če je nikjer med svojo ropotijo ne najdete (kar dvomim), jo lahko navijete na ozek in visok tuljavnik in sicer cca 100 ovojev lakirane žice premera okrog 0,2mm. V skrajnem primeru mi lahko pišete po elektronski pošti in vam jo bom poslal brezplačno. Predhodno izolirano tuljavico prilepite nekam na vžigalno tuljavo, po možnosti na mesto, kjer je stresano magnetno polje najmočnejše (pod glavni steber EI jedra). Pomembno pa je tudi, da ni magnetno polje premočno, saj lahko napravo proži tudi iznihavanje vžigalne tuljave, zaradi česar bi lahko dobili napačen očitek. Jaz sem napravo preizkusil na Zastavini Yugo Floridi, kjer je delovala brez težav in mislim, da bi morala tudi v drugih avtomobilih.
Slika 5: Montaža senzorske tuljavice
Program za mikrokontroler je napisan tako, da si lahko obratomer kar
se da prilagodimo svojim potrebam. V pomoč so nam tudi t.i. »jumperji«,
s katerimi nastavimo njegovo delovanje. Z JP1 nastavimo osveževanje
zaslona.
Če je zaprt, potem zaslon osvežuje vsake pol sekunde z dvakrat večjim
korakom,
če je odprt pa vsako sekundo. JP2 in JP3 določata množenje rezultata,
kar
je pomembno za pravilen prikaz pri različnih vrstah vozil. Množenje je
določeno po spodnji tabeli (O = odprt, Z = zaprt):
JP1 | JP2 | JP3 | Faktor | Opomba |
O | O | O | 30 | 2 imp/obrat (večina) |
O | O | Z | 15 | 4 imp/obrat |
O | Z | O | 60 | 1 imp/obrat |
O | Z | Z | 1 | Uporabno za merjenje f |
Z | O | O | 60 | 2 imp/obrat (večina) |
Z | O | Z | 30 | 4 imp/obrat |
Z | Z | O | 120 | 1 imp/obrat |
Z | Z | Z | 2 | Merjenje f z napako +-1Hz |
Rezultat se bo prikazoval v korakih, ki jih določa zgoraj omenjeni faktor. Poglejmo si program s komentarjem, da nam bo vse skupaj bolj jasno. Naj ponovim, da program dobite na internetu in ga ni treba tipkati. Program je napisan in preveden v DEMO verziji Bascom-a 8051.
Za začetek povemo prevajalniku, s kakšnim procesorjem in taktom ima opravka.
$crystal = 12000000
$regfile = 89c2051.dat
Nato definiramo potrebne spremenljivke, katere bodo bolj jasne, če boste temeljito preučili program.
Dim Clock As Byte ,
Clock1
As Byte , Mux As Byte
Dim Cnter As Integer ,
Cnter2 As Integer
Dim Pomozna_v As Integer
, 7seg(10) As Byte , Ostanek As Integer
Dim Enice As Byte ,
Desetice
As Byte , Stotice As Byte , Tisocice As Byte
Dim Prikaz As Bit ,
Izracun
As Bit , Osvezi As Byte , Mnozi As Byte
Nato konfiguriramo časovnik (Timer0) in prekinitev (Int0).
Config Timer0 = Timer
,
Gate = Internal , Mode = 2
On Timer0
Timer_0_int
'Podveja Timerja 0
On Int0
Int0_int
'Podveja prekinitve 0
Load Timer0 ,
250
'Timer naložimo z vrednostjo 250,
Priority Set
Int0
'Int0 nastavimo najvišjo prioriteto,
Enable
Interrupts
'Omogočimo prekinitve,
Enable
Timer0
'Omogočimo Timer0,
Enable
Int0
'Omogočimo Int0,
Set
Tcon.0
'Nastavimo, da se prekinitev zgodi samo ob negativni fronti signala ter
Start
Timer0
'zaženemo tudi Timer0.
V spremenljivko 7seg naložimo podatke o segmentih iz tabele. To storimo zato, da je med izvajanjem zanke dostop do podatkov hitrejši.
Restore
Tabela
'Pokažemo na tabelo s podatki
For Pomozna_v = 1 To
10
'in jih naložimo v spremenljivko.
Read
7seg(pomozna_v)
'Podatki nam služijo za izpis
Next
Pomozna_v
'na LED displeje.
Postavimo spremenljivke
na izhodišče.
Clock = 0 : Clock1 =
0
: Cnter = 0
Cnter2 = 0 : Izracun =
1
Določimo način prikazovanja na LED displeju (glej tabelo).
If P3.1 = 1
Then
'Določi faktor množenja
If P3.0 =
1
Then
'glede na nastavitev
Mnozi =
30
'posameznih "jumperjev".
Else
Mnozi = 60
End If
Else
If P3.0 =
1 Then
Mnozi = 15
Else
Mnozi = 1
End If
End If
If P1.0 = 1
Then
'Osveževanje na 1s
Osvezi =
199
Else
Osvezi =
99
'Potrebno je rezultat
Mnozi =
Mnozi
* 2
'podvojiti
za osveževanje
End
If
'na 0,5s.
Tu se začne neskončna zanka, kjer se izvajajo izračuni in multipleksiran prikaz na prikazovalnikih. Opazite lahko, da se izračuni izvajajo po korakih med multipleksiranjem, in da se pri vsakem izpisu na displej izvrši tudi rutina za izračun naslednje vrednosti. Na ta način se izognemo utripanju displejev med izračunavanjem.
Do
If Prikaz
= 1 Then
'Prikaz
je omogočen,
Prikaz = 0
P3 =
255
'ugasni displej,
If Mux = 0
Then
'če je na vrsti 1. displej,
Pomozna_v = Enice + 1 'določi vrednost prej. izpisa,
P1 = 7seg(pomozna_v) 'postavi port na ustrezno stanje,
P3.4 =
0
'vključi ustrezni displej.
If Izracun = 1 Then 'Izračun je omogočen,
Tisocice = Cnter / 1000 'izračunaj tisočice
Pomozna_v = Tisocice * 1000 'za naslednji izpis
Ostanek = Cnter - Pomozna_v
End If
End If
If Mux = 1
Then
'Enako velje za desetice,
Pomozna_v = Desetice + 1
P1 = 7seg(pomozna_v)
P3.5 = 0
If Izracun = 1 Then
Stotice = Ostanek / 100
Pomozna_v = Stotice * 100
Ostanek = Ostanek - Pomozna_v
End If
End If
If Mux = 2
Then
'stotice
Pomozna_v = Stotice + 1
P1 = 7seg(pomozna_v)
P3.3 = 0
If Izracun = 1 Then
Desetice = Ostanek / 10
Pomozna_v = Desetice * 10
Enice = Ostanek - Pomozna_v
End If
End If
If Mux = 3
Then
'in tisočice.
Pomozna_v = Tisocice + 1
P1 = 7seg(pomozna_v)
P3.7 = 0
End If
End If
Loop
End
Sledijo le še podrutine Timer_0_int in Int0_int ter na koncu tabela s podatki o segmentih.
Timer_0_int: 'podveja Timer0
Incr
Clock
'Povečaj vrednost Clock.(vsakih 250 us)
If Clock > 19 Then 'Če je 20,
Clock =
0
'postavi na 0,
Prikaz =
1
'prikaži digit.
Incr
Mux
'Povečaj vrednost Mux.(vsakih 5ms)
If Mux > 3 Then 'Ko je 4,
Mux =
0
'ga postavi na 0 in
Izracun = 0 'končaj izračune.
End If
Incr
Clock1
'Povečaj Clock1.
If Clock1 > Osvezi Then 'Ko je 200 (vsako sekundo)
Clock1 =
0
'ga postavi na 0,
Cnter = Cnter2 * Mnozi 'določi vrednost za displej
Cnter2 =
0
'in resetiraj števec.
Izracun =
1
'Opravi izračune.
End If
End If
Return
Int0_int:
'Podveja Int0
Incr Cnter2
Return
Tabela:
'Podatki o segmentih za LED
Data 16 , 124 , 34 , 40
, 76 , 136 , 128 , 60 , 0 , 8
Oznaka | Vrednost | Kos | Opomba |
R1-R7 | 180W | 7 | SMD 1206 ALI 0805 |
R8, R18 | 10k | 2 | SMD 1206 ALI 0805 |
R9-12, R15, R16 | 4k7 | 6 | SMD 1206 ALI 0805 |
R13 | 2M2 | 1 | SMD 1206 ALI 0805 |
R14 | 100k | 1 | SMD 1206 ALI 0805 |
R17 | 4M7 | 1 | SMD 1206 ALI 0805 |
C1 | 22m F/16V | 1 | SMD tantal |
C2, C3, C6, C8, C9 | 100n | 5 | SMD 1206 ALI 0805 |
C4, C5 | 33p | 2 | SMD 0805 |
L1 | 470m H | 1 | |
C7 | 470n | 1 | SMD 1206 |
D1, D2 | 1N4148 | 2 | SMD |
ZD1 | 5,1V | 1 | SMD |
T1-T4 | BC857 | 4 | Ali podoben SMD SOT23 PNP tr. |
IC1 | 7805 | 1 | Napetostni regulator TO220 |
IC2 | LM358 | 1 | SMD SO8 |
IC3 | AT89C2051 | 1 | DIL20 s programom |
X1 | 12MHz | 1 | Quartz kristal |
DP1-DP4 | LED displej | 4 | Skupna ANODA, visoka svetilnost |
JP1-JP3 | Letvica 2x3 | 1 | Skupaj s pripadajočim jumperjem |
CN1 | Vrstna sp. 2 kon. | 2 | Raster 5,08mm |
Ostalo | Podnožje DIL20 | 1 | Profi |
TIV | Tiskani vezji | 2 | Po predlogi |
Senzor | Tuljavica | 1 | GLEJ TEKST! |
Naprava ki sem jo opisal lahko dejansko služi kot obratomer v avtomobilu ali v delavnici, lahko pa jo uporabite kot frekvencmeter, katerega merilno območje razširite s delilnikom frekvence. Če malce spremenite program pa lahko iz njega naredite števec impulzov ali kaj podobnega. Moj namen je bil tudi pokazati, da se da z zelo malo elementi in nekaj več programa narediti koristno napravico za v naš avto ali delavnico.
Tiskano vezje, izvorna koda v Bascom-u 8051 in HEX
datoteka
Avtor: Srečko Lavrič
Zadnja sprememba, 27. junij 2002