MIkrokontrolerski sistemi

Autor: Vladimir Đurić

Projekat

Kontakt: gimel@ptt.yu

 

Automatizacija preko telefonske linije

Potrebno je isprojektovati uređaj koji ce se javiti na telefonski poziv, primiti DTMF ton, uraditi potrebnu akciju i prekinuti telefonsku vezu, ali da počnemo iz početka.

Od davnina su ljudi hteli da upravljaju dogadajima koji nisu u njihovoj neposrednoj blizini. Takvo upravljanje nazvano je daljinsko upravljanje. Nekada je to bilo pomocu štapa i kanapa a danas daljinsko upravljanje rade veoma složeni uredaji sastavljeni od komponenti koje se izraduju vrlo visokom tehnologijom. Ako bi morali da podelimo vrste daljinskog upravljanja po sistemu upravljanja ta podela bi verovatno izgledala ovako:

• Daljinsko upravljanje pomocu radio talasa.
• Daljinsko upravljanje pomocu infra crvenih uredaja.
• Daljinsko upravljanje pomocu ožicenih veza.
• Daljinsko upravljanje pomocu zvucnih signala i.t.d.

Izgled gotove pločice

Mi cemo u ovom clanku razmatrati vid daljinskog upravljanja pomocu ožicenih veza. U ovu grupu spada više vrsta daljinskih upravljanja od kojih za više njih sami morate da razvlacite žice i petljate se sa raznoraznim kablovima, a za neke vidove daljinskog upravljanja vec imaju izvuceni kablovi, vi samo treba da konektujete vaš uredaj.

''Ali ko je izvukao kablove za moje daljinsko upravljanje'' upitace se neko verovatno zbunjeno. Odgovor je telefonisti. Da telefonske linije vam mogu poslužiti za veoma jeftinu izvedbu daljinskog upravljanja. Uz pomocu ovog jednostavnog elektronskog sklopa moci cete da upalite i ugasite željeni uredaj koji se nalazi na bilo kom kraju planete, pod uslovom da tamo ima telefonska linija konektovana na automatsku telefonsku centralu (ATC). Dakle izbegli smo gradnju komplikovanih i skupih uredaja za daljinsko upravljanje (cena našeg uredaja jedva da dostiže 20DM po trenutno važecim cenama komponenti, zato lemilicu u ruke pa na posao.

Od više nacina upravljanja preko telefonske linije izabrali smo upravljanje pomocu DTMF (dual tone multy frekvency) signala. Da bi shvatili rad uredaja o kome ce biti rec treba znati nešto o DTMF standardu. Sama rec DTMF govori da se radi o dve frekvencije, dakle kombinacijom dve frekvencije generisane u isto vreme dobijamo DTMF tonove.

 Naravno za svaki dobijeni ton i jedna i druga frekvencija su precizno odredene, što se vidi u tabeli 1. Svi telefonski aparati koji podržavaju DTMF biranje mogu da generišu 12 DTMF signala. Ti signali predstavljaju brojeve 1, 2, ... 9, 0, * zvezdicu i # tarabu. Samo specijalni aparati mogu da generišu još cetiri tona nazvana A, B, C, i D cije su numericke vrednosti 13,14,15,0 respektivno. Cemu sve to procitacete u nastavku.

Shema (Kliknite na sliku za veću shemu)

Da pocnemo. Ako postoje IC kola koja koduju DTMF tonove, onda predpostavljate postoje i IC kola koja dekoduju te tonove. Tacno postoje, i to razna kola za dekodovanje DTMF signala od kojih smo mi ovde izabrali Mitel - ovo kolo koje nosi oznaku MT8870. Ovo kolo sa samo nekoliko komponenti oko sebe je kompletan prijemnik DTMF signala, i iskorišten je za detekciju tih signala u priloženoj šemi. Detaljnije upustvo o ovom kolu možete pronaci na Mitel-ovom sajtu na internetu, a mi cemo se vratiti objašnjenju rada konkretnog uredaja. Dakle DTMF signali dolaze na kolo MT8870 preko kontezatora C11, C12. Ulazni deo kola MT8870 je operacioni pojacavac koji je postavljen da radi kao diferencijalni pojacavac, da bi bilo moguce galvanski odvojiti masu uredaja od telefonske linije. Galvansko odvajanje elektronskog skolopa od telefonske linije je potrebno iz razloga što bi bilo kakav spoj telefonske linije i mase nekog drugog uredaja ili nekog stranog napona prouzrokavo kako se u žargonu kaže ''odvod'' na telefonskoj liniji, na šta bi naravno reagavala telefonska centrala a odvod bi se mogao izmeriti sa OM metrom iz telefonskih razdelnika koji se nalaze u telefonskim centaralama. Uredaj za daljinsko upravljanje ''remonte001'' je potpuno galvanski odvojen od telefonske linije opto kaplerima O1, O2, releom RE1, kondezatorima C11 i C12 tako da ne pravi nikakve probleme ako se konektuje na telefonsku liniju. Primljene signale preko C11 i C12 diferencialni pojacavac pojaca do nivoa koji je potreban da logika unutar kola MT8870 može da dekoduje tonove. Tako pojacani signali prolaze kroz 2 bandpass filtra pa dolaze u sekciju za digitalnu datekciju gde bivaju detektovani u odredeni broj, taj broj se upisuje u izlazne latch-ove kola MT8870 i ostaje upisan tu sve dok se ne detektuje novi ton.U meduvremenu kada kolo MT8870 detektuje ton StD pin prelazi iz stanja logicke '0' u stanje '1', a posle trajanja tona od 51 ms MT8870 je detektovao broj i opet promenuo stanje StD pin-a ali sada sa '1' u '0'. Ovu pojavu sam iskorisitio za generisanje externog interapta na mikro kontreolreru AT89C2051. Aha došli smo i do kontrolera. Današnja moderna elektronika ne može se zamisliti bez jednog procesora ili kontrolera koji obavlja gomilu raznoraznih zadataka zamenjujuci tako veliki broj logickih kola. Pošto je u prošlim brojevima bilo reci o mikrokontroleru AT89C2051 ovom prilikom cemo pomenuti samo ono što je bitno za naš "remonte001". Dakle napisali smo program za mikro kontreler koji kontreoliše stanje telefonske linije, generisanje tona 2kHz, ocitavanje pristiglih brojeva od MT8870 i.t.d.

KAKO RADI PROGRAM KOJI KONTROLIŠE "REMONTE001"?

Posle prve montaže uredaja "remonte001" i njegovog ukljucenja program pocinje da ispituje stanje 'ring' pina P1.2 a na ovom pinu ocekuje '0' kada je primeti aktivira zauzimanje telefonske linije i pauzu od 20sec (pauza je uvedena u slucaju da korisnik zaboravi da pošalje kod za prekid veze. Posle pauze remonte001 sam prekida telefonsku liniju sa svoje strane). Posle zauzimanja telefonske linije šalje ton od 2 KHz, koji se na telefonsku liniju generiše preko optokaplera O1, u trajanju od 0,5 sec, da bi onaj ko je pozvao znao da je "remonte001" aktivan. Posle signala od 2 KHz "remonte001" je spreman da prima brojeve poslate od strane korisnika. Preko linija q1-q4 mikrokontroler AT89C2051 ocitava broj koji je detektovao MT8870 pa ako je taj broj 1 program ce ukuljuciti rele RE2 a ako je taj broj 2 program ce iskljuciti rele RE2. Posle svake uspešno uradene komande (ukljucenje ili iskljucenje) program ce generisati ton od 2 KHz. Za prekid telefonske linije na strani "remonte001" treba poslati 0.Za sve ostale brojeve koje primi "remonte001" ce ostati neaktivan. Posle prijema 0 "remonte001" prekida telefonsku liniju sa svoje strane i dovodi se u pocetno stanje, ustvari pocinje opet da ispituje da li je stiglo zvonce.

LISTING PROGRAMA

$mod51

d0 bit p3.5
d1 bit p3.4
d2 bit p3.3
d3 bit p3.1
ring bit p1.2
line bit p3.5
tone bit p3.7
consumer bit p1.3


time_ring equ 3dh
pauza equ 3fh
pauza5 equ 41h


bi_ring bit 00h
bi_pauza bit 01h
bi_svirka bit 02h
bi_command bit 03h


org 0
sjmp ini


org 03h

sjmp citaj


org 01bh

clr tr1
mov tl1,#017h
mov th1,#0fch
setb tr1

jb bi_svirka,mea_time
jnb line,svirka
call measure_ring
jb bi_ring,take_line
sjmp out_int
take_line: call pauza_
jnb bi_pauza,out_int
clr bi_pauza
clr line
clr tone
svirka: call pauza_
jb bi_pauza,out_svirka
cpl tone
sjmp out_int
out_svirka: clr tone
setb bi_svirka
sjmp out_int

mea_time: call pauza5s


out_int: reti


;***********************


citaj:

reti


;**********************



 
ini:

mov tmod,#00010000b
mov tl1,#17h
mov th1,#0fch

mov ie,#10001001b
setb it0
setb px0

mov pauza,#255
mov pauza+1,#5
mov pauza5,#255
mov pauza5+1,#20

mov time_ring,#70

clr bi_command
clr bi_svirka
clr bi_pauza
setb tone
clr bi_ring
setb tr1

loop: sjmp loop


;***********************


measure_ring: jb ring,out_ring
djnz time_ring,out_mea_ring
setb bi_ring
out_ring: mov time_ring,#70
out_mea_ring: ret


pauza_: djnz pauza,out_pauza
djnz pauza+1,out_pauza
mov pauza,#255
mov pauza+1,#5
setb bi_pauza
out_pauza: ret


pauza5s: djnz pauza5,out_pauza5
djnz pauza5+1,out_pauza5
mov pauza5,#255
mov pauza5+1,#20
call default
out_pauza5: ret

default: mov pauza,#255
mov pauza+1,#5
mov pauza5,#255
mov pauza5+1,#20

mov time_ring,#70

clr bi_command
clr bi_svirka
clr bi_pauza
setb tone
clr bi_ring
ret

Ovaj uredaj je projektovan da radi na digitalnim telefonskim centralama ciji je napon napajanja do 48V. Da bi pouzdano radio na starijim centralama gde je napon napajanja do 60V potrebno je koristiti optokapler O1 ciji tranzistor može da izdrži napon od bar 100V.

Za pravilan rad uredaja je potrebno paziti na polaritet telefonske linije. x


 Pročitajte više o ovoj temi
AT89C2051 uvod
Programiranje Atmelovog mikrokontrolera AT89C2051
Programator Atmel mikrokontrolera

C o p y r i g h t  1998-2002  mikroElektronika. A l l  R i g h t s   R e s e r v e d . Za sva pitanja obratite se redakciji.