You are on page 1of 29

Escuela Profesional de Ingeniera Electrnica_ ____ UNSA

UNIVERSIDAD NACIONAL DE SAN AGUSTIN DE AREQUIPA


FACULTAD DE INGENIERA DE PRODUCCIN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERA ELECTRNICA
MICROELECTRNICA EN RF
MONITOREO REMOTO DE LA
VELOCIDAD DE UN MOTOR TRIFASICO
MEDIANTE UNA PC
Docente:
Ing. Victo !"go Ri#e$ C%$#e&
Integ$nte':
Ag"i($ S$($') Fen$n*o
S"(($ Gon&$(e') P$"(
AREQUIPA + PER,
-./.
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& #
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
MONITOREO REMOTO DE LA
VELOCIDAD DE UN MOTOR TRIFASICO
MEDIANTE UNA PC
_______________________________________________________________________________
I. Objetivos
El objetivo general, es el monitoreo a distancia de motores ya sea en
una central hidroelctrica, en una fbrica, etc., donde el acceso a los
mismos sea poco asequible y se tenga que estar permanentemente
monitoreando su velocidad, su temperatura, etc. Los resultados de este
monitoreo se mostraran en una pantalla de una PC.
_______________________________________________________________________________
II. Procedimiento
escripci!n
El proyecto comprende la implementaci!n de un sistema de transmisi!n "
recepci!n de datos de informaci!n sobre la velocidad de un motor trifsico
utili#ando tecnolog$a de telecomunicaciones de radiofrecuencia.
iagrama de bloques general
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& '
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
iagrama de %loques &impli'cado
( continuaci!n mostramos un esquema simpli'cado del sistema en su
conjunto)
Unidad Transmisora
Unidad Receptora
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& "
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
Unidad Transmisora
Fuentes analgicas de seal
Las se*ales anal!gicas a transmitir pueden provenir de diversas fuentes+ por
ejemplo, todo tipo de sensores anal!gicos ,de temperatura, presi!n, humedad,
nivel, etc.-, vo#, se*ales de video anal!gicas, etc.
Para nuestro trabajo, usaremos sensores anal!gicos de temperatura a manera
de prueba.
Acondicionamiento de la seal
.na ve# determinada la fuente de se*ales anal!gicas, es necesario
acondicionar esas se*ales antes de utili#arlas como entradas al Convertidor
(/.
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& (
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
La primera parte de este bloque acondicionador consiste en (mpli'cadores
0peracionales en con'guraci!n 1o 2nversora que nos sirven para
atenuar/ampli'car las se*ales y para presentar una impedancia de salida baja,
para conseguir un buen acople de la se*al con el Convertidor (/.
Los ampli'cadores en ambos canales permiten alterar la ganancia desde la
unidad hasta algo menos de dos veces. Esto, junto con los divisores de voltaje
preliminares, permite dividir el voltaje entrante entre 3. 4 veces
apro5imadamente.
La segunda parte de este bloque consiste en una referencia de voltaje de 6.4
7 ,utili#ada como parmetro para la conversi!n (/-, utili#ando el 2C 8L39:.
.tili#ando los potenci!metros P: y P6 podemos ajustar la ganancia de forma
que :;.69 7 a la entrada correspondan a 6.4 7 a la salida, esto permite evitar
los clculos para convertir las lecturas en voltajes+ lo que al 'nal permite un
procesamiento ms rpido de las se*ales anal!gicas.
Estamos utili#ando (mpli'cadores 0peracionales con alimentaci!n simtrica.
Para no tener que utili#ar fuentes de alimentaci!n simtrica, hacemos uso de
una <bomba de voltaje= que nos proporciona > 4 7 a partir de ?4 7. El 2C
utili#ado es el 2CL @AA;.
Multiplexaje !onversin A"#
El multiple5aje ,en nuestro caso, multiple5aje de dos se*ales- es reali#ado en
hardBare dentro del microcontrolador. Este multiple5aje es necesario debido a
que el microcontrolador s!lo posee un Conversor (/. El microcontrolador
posee hasta catorce entradas anal!gicas que deber ser multiple5adas para
utili#ar el Cnico Conversor (/ disponible.
El Conversor (/ disponible es uno de :; bits de precisi!n y usa el mtodo de
<(pro5imaciones &ucesivas= para reali#ar la conversi!n. La 'gura anterior
muestra un esquema simpli'cado del m!dulo de conversi!n (/ del
microcontrolador a utili#ar ,P2C:ADEE@-. &eleccionando los voltajes de
referencias de este m!dulo, la resoluci!n de la conversi!n puede ser ajustada
para mCltiples necesidades ,por ejemplo+ se*ales de gran amplitud o de
peque*a amplitud-.
En nuestro caso nosotros estamos utili#ando una referencia de voltaje superior
de 6.4 7, que junto con nuestra etapa acondicionadora nos permite convertir
un amplio rango de se*ales sobre distintos intervalos de voltaje.
!odi$cacin de la Transmisin %!digo de Manc&ester'
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& )
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
En ve# de enviar directamente los datos en forma binaria hacia el m!dulo
transmisor, reali#aremos una codi'caci!n digital previa+ codi'caremos los
datos utili#ando la codi'caci!n de Fanchester ,ver gr'co-.
La codi'caci!n sacri'ca algo de la velocidad de la comunicaci!n a cambio de
obtener una transmisi!n ms con'able a mayores distancias.
La codi'caci!n es reali#ada por el microcontrolador mediante softBare.
Mdulo Tx Antena
El m!dulo transmisor que estamos usando es el <8GF " 3:E " LH= de la
empresa <L21G 8echnologies= capa# de transferir ,segCn su hoja de datos-
hasta :;;;; bps a distancias de hasta 9;;; pies ,I4; metros- sobre una
frecuencia de 3:EFh#.
Este transmisor en particular trabaja a 9.97, as$ que hemos utili#ado un diodo
tener ,:- de 9.97 en serie con un resistor de AE ohm para proveer los 9.97
necesarios ,a partir de los 47 disponibles-. .n resistor de :;J ohm es usado
como interfa# entre la l!gica de 47 y la l!gica de 9.97. E5isten adems un par
de capacitares de desacoplo.
( continuaci!n mostramos el diagrama de bloques del m!dulo transmisor
<8GF " 3:E " LH=)
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& *
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
.tili#aremos una antena de Lamda/3)
( continuaci!n mostramos los esquemticos e impresos correspondientes a la
placa transmisora)
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& +
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
Unidad (eceptora
Mdulo (x Antena
El m!dulo receptor que estamos usando es el <HGF " 3:E " LH= de la empresa
<L21G 8echnologies= capa# de transferir ,segCn su hoja de datos- hasta :;;;;
bps a distancias de hasta 9;;; pies ,I4; metros- sobre una frecuencia de
3:EFh#
La placa receptora es bastante simple, s!lo el m!dulo y unos cuantos
capacitares de desacoplo+ e5iste una salida au5iliar ms, un voltaje anlogo
relacionado con la fuer#a de la se*al, pero no la hemos conectado.
( continuaci!n mostramos el diagrama de bloques del m!dulo transmisor
<8GF " 3:E " LH=)
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& ,
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
( continuaci!n mostramos los esquemticos e impresos correspondientes a la
placa receptora)
#ecodi$cacin de la In)ormacin
.na ve# que las se*ales digitales ,codi'cadas segCn el c!digo de Fanchester-
lleguen a la unidad receptora, es necesario decodi'carlas.
La decodi'caci!n del c!digo de Fanchester la reali#a el microcontrolador
mediante softBare.
&e debe tener en cuenta tambin, que la se*al entrante est formada por la
multiple5aci!n de dos se*ales. &e debe llevar un proceso de demultiple5aje
para e5traer la informaci!n deseada de ambos canales anal!gicos de origen.
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& -
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
!onversin a (*+,+
.na ve# decodi'cada las se*ales entrantes, y con el 'n de transmitirlas hacia
una PC, necesitamos un protocolo que la PC <entienda=. Kemos escogido una
transmisi!n serial que implementa el muy conocido protocolo H&696.
El 2C estndar que convierte las se*ales de 88L ,; " 4 7- a se*ales H&696 ,>
:67 " :67- es el F(G696.
III. (esultados
En el .roceso se .uede distingir ) eta.as/
Eta.a de Ca.tacin
Eta.a de Trans0isin
Eta.a de Rece.cin
Eta.a de Ada.tacin
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& $
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
Si0"($cion en PROTEUS
ETAPA DE CAPTACIN
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& '#
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
ETAPA DE TRANSMISIN
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& ''
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA

ETAPA DE RECEPCIN
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& '"
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA

ETAPA DE ADAPTACIN
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& '(
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA

_________________________________________________________________________
I-.Programas
TRANSMISOR
1include 2.'+!-,,a3inc4
51define T6IN7
5in8ert T6 out.ut so inacti8e is 9I:9;
.ac<et_len E=U " 5.ac<et lengt> ' ? ' address @Ate
5T6 .in is .ortaB +
1ifndef T6IN7
1define T6LOC &C! PORTAB +
1define T69I:9 &S! PORTAB +
1else
1define T6LOC &S! PORTAB +
1define T69I:9 &C! PORTAB +
1endif
c@loc< #D"# 5start of general .ur.ose registers
ncnt
@t
su0
0tD_@uffer
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& ')
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
0tD_@uffer'
0tD_delaA 5 >alf_fra0e delaA
count' 5used in delaA routine
count"
counta 5used in delaA routine
count@ 5used in delaA routine
endc
org #D####
goto 0ain
no.
no.
no.
retfie
0ain 5 .rogra0 starts >ere
0o8lE #D#,
0o8Ef CMCON
@sf STATUSB RP# 5select @an< '
0o8lE #D##
0o8Ef TRISA
clrf TRIS&
@cf STATUSB RP# 5select @an< #
clrf PORTA
clrf PORT&
call 0tD_init
Loo.
0o8lE#DAA 5set .ac<et address @Ate to #DAA
0o8Ef 0tD_@uffer
0o8lEFNF
0o8Ef 0tD_@uffer'
call 0tD_send
call GelaA"#
0o8lEFiF
0o8Ef 0tD_@uffer'
call 0tD_send
call GelaA"#
0o8lEFgF
0o8Ef 0tD_@uffer'
call 0tD_send
call GelaA"#
0o8lEFeF
0o8Ef 0tD_@uffer'
call 0tD_send
call GelaA"#
0o8lEFlF
0o8Ef 0tD_@uffer'
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& '*
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
call 0tD_send
call GelaA"#
0o8lEF F
0o8Ef 0tD_@uffer'
call 0tD_send
call GelaA"#
goto Loo.
5Manc>ester su@routines
5 Aut>or/ elHIa.3>u
5 >tt./JJIa.3>uJelectronicJ
0tD_init 0o8lE 3''* 5 (*# usec
0o8Ef 0tD_delaA
return
5
0tD_send
5 send out @uffer
out@uf 0o8lE #D') 5 "#D@it'B 'D@it#
>eader 0o8Ef count"
>ead# call @it'
decfsK count"B!
goto >ead#
call @it#
0o8lE 0tD_@uffer
0o8Ef !SR
0o8lE .ac<et_len
0o8Ef count'
0o8lE #Dff
0o8Ef su0
5
out@u# 0o8f ING!BC
call u.date_su0
0o8f ING!BC
call out@Ate
incf !SRB!
decfsK count'B!
goto out@u#
0o8f su0BC
call out@Ate
5 @uffer is sent
return
u.date_su0 5 fast CRC%- algorit>0 Eit> .olA DL-?DL*?DL)?'
5 eDecutes in "( cAcles .er u.date
DorEf su0Bf
clrE
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& '+
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
@tfsc su0B,
DorlE #D,a
@tfsc su0B+
DorlE #D(d
@tfsc su0B*
DorlE #D-+
@tfsc su0B)
DorlE #D)(
@tfsc su0B(
DorlE #D@$
@tfsc su0B"
DorlE #Dc)
@tfsc su0B'
DorlE #D+"
@tfsc su0B#
DorlE #D('
0o8Ef su0
return
out@Ate 0o8Ef @t
0o8lE -
0o8Ef count"
out@A# rlf @tB!
@tfsc STATUSBC
goto out@A'
call @it#
goto out@A"
out@A' call @it'
out@A" decfsK count"B!
goto out@A#
5
call @it'
5 and @it# % falls t>roug> to @it# su@routine
5send a @it#
@it# T69I:9 5 9I:9
call 0tD_@itdel 5 @it ti0e delaA
T6LOC 5 to LOC transition
call 0tD_@itdel 5 @it ti0e delaA
return
5send a @it'
@it' T6LOC 5 LOC
call 0tD_@itdel 5 @it ti0e delaA
T69I:9 5 to 9I:9 transition
call 0tD_@itdel 5 @it ti0e delaA
return
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& ',
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
5 @it delaA 0odified @A N:
0tD_@itdel 0o8f 0tD_delaAB C
0o8Ef ncnt
ndelaAa' decfsK ncntB !
goto ndelaAa'
return
5 end of Manc>ester routines
5GelaA routines
GelaA"** 0o8lE#Dff 5delaA "** 0S
goto d#
GelaA'## 0o8lEdF'##F 5delaA '##0S
goto d#
GelaA*# 0o8lEdF*#F 5delaA *#0S
goto d#
GelaA"# 0o8lEdF"#F 5delaA "#0S
goto d#
GelaA* 0o8lE#D#* 5delaA *3### 0s M) M9K cloc<N
d# 0o8Ef count'
d' 0o8lE#DC, 5delaA '0S
0o8Ef counta
0o8lE#D#'
0o8Ef count@
GelaA_#
decfsK countaB f
goto O?"
decfsK count@B f
goto GelaA_#
decfsK count' Bf
goto d'
retlE #D##
end
RECEPTOR
1include 2.'+f+"-3inc4
5PPPPP CONSTANT 7ALUES
E6PIRE_TIMER E=U #D'"
LATC9_MASQ E=U #Dff
7ALIG_&IT E=U )
>drcnt0in E=U #D#c 5 0ini0u0 nu0@er of >eader @its to recei8e
>drcnt0aD E=U #D'# 5 0aDi0u0 nu0@er of >eader @its to recei8e
5 decoder ti0e tolerances are set at / #3*TB '3*TB "3*T
5 0easured in $Dinstr3ti0e M$usecN counts
T E=U 3($ 5 >alf fra0e (*# usec MR T P $ usecN
0in_t E=U TJ" 5 >alf fra0e MTN 0ini0u0 ti0e
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& '-
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
0in_"t E=U (PTJ" 5 >alf fra0e MTN 0aDi0u0 ti0e and full fra0e
M"TN 0ini0u0 ti0e
0aD_"t E=U *PTJ" 5 full fra0e M"TN 0aDi0u0 ti0e
.ac<et_len E=U * 5 .ac<et lengt>B c>ec< 8ar3 allocS
0rD_.ac<et_len E=U * 5 .ac<et lengt>B c>ec< 8ar3 allocS
5 in.ut .ort @it
1define R6&IT PORTAB ,
5 nor0al decoder logic in.ut
1define SQL @tfsc
1define SQ9 @tfss
5 in8erse decoder logic in.ut
51define SQL @tfss
51define SQ9 @tfsc
5PPPPP !LA:S
1define I!_S9ORT flagsB #
1define !IRST_9AL! flagsB '
1define 9EAGER flagsB "
1define 7ALIG flagsB ,
if_s>ort_8al E=U ' 5 @it 8alue of I!_S9ORT flag
first_>alf_8al E=U " 5 @it 8alue of !IRST_9AL! flag
SER_PORT ETu PORT&
SER_TRIS ETu TRIS&
SER_IN ETu #D#,
SER_OUT ETu #D#+
5PPPPP 7ARIA&LE GE!INITIONS
c@loc< #D"# 5start of general .ur.ose registers
@itcnt
t0r8al 5 ti0er 8alue
@t 5 recei8e @Ate @uffer
flags 5 decode logic status
@tcnt 5 @Ate counter
0rD_@uffer 5 recei8e address @uffer
0rD_@uffer' 5 recei8e .ac<et @uffer
0tD_@uffer"
0tD_@uffer(
0tD_@uffer)
0rD_@su0 5 recei8e @ufferB c>ec<su0
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& '$
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
count 5used in loo.ing routines
count' 5used in delaA routine
counta 5used in delaA routine
count@ 5used in delaA routine
t0.' 5te0.orarA storage
t0."
60it_&Ate 5>olds @Ate to D0it
Rc8_&Ate 5>olds recei8ed @Ate
&it_Cntr 5@it counter for RS"("
GelaA_Count 5delaA loo. counter
endc
org #D#### 5 org sets t>e originB #D#### for t>e
'+!+"-B
goto 0ain 5 go to @eginning of .rogra0
no.
no.
no.
5 interru.t 8ector location
retfie
0ain
59ARGCARE INIT
0o8lE ,
0o8Ef CMCON
SetPorts @sf STATUSB RP# 5 select @an< '
0o8lE #D-# 5 A,Rin.ut
0o8Ef TRISA
@cf STATUSB RP# 5 select @an< #
call SER_INIT 5 initialise serial .ort
loo.
call 0rD_recei8e 5 get .ac<et
andlE #Dff
@nK loo. 5 reIect if error code
call 0rD_c><_@uf 5 test t>e c>ec<su0 8alue
andlE #Dff
@nK loo. 5 reIect .ac<et if c>ec<su0 fails
0o8lE#DAA 5 c>ec< t>at .ac<et address is correct
M#DAAN
su@Ef M0rD_@ufferNB C
@nK loo. 5 else reIect .ac<et
0o8f 0rD_@uffer?'B C 5 get data @Ate @Ate
call 6MIT_RS"(" 5 and dis.laA it
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& "#
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
0o8f 0rD_@uffer?"B C 5 get data @Ate @Ate
call 6MIT_RS"(" 5 and dis.laA it
0o8f 0rD_@uffer?(B C 5 get data @Ate @Ate
call 6MIT_RS"(" 5 and dis.laA it
0o8f 0rD_@uffer?)B C 5 get data @Ate @Ate
call 6MIT_RS"(" 5 and dis.laA it
goto loo. 5 Iust dis.laA t>e @Ates
5PPPPPPPPPPPPPPP recei8e routines PPPPPPPPPPPPPPPPPPPPPPPPP
0rD_recei8e 5 recei8e a full 0anc>ester%encoded .ac<et
s( 5 set flags/ first_>alfR'B if_s>ortR#
@sf !IRST_9AL!
s) @cf I!_S9ORT
s* 5 init @efore t>e recei8ed .ac<et
5 set !SR to @uffer start
0o8lE 0rD_@uffer
0o8Ef !SR
5 set @Ate counter
0o8lE M.ac<et_len?'N 5 @Ates J .ac<et
0o8Ef @tcnt
5 set >eader recei8e 0ode
@sf 9EAGER
clrf @itcnt 5 counting @it'%s in t>is 0ode
s" 5 Eait for a .ulse
SQ9 R6&IT
goto s"
s+ 5 Eait for end of Ms>ortN .ulse u. to 0in_"t
clrf t0r8al
s+_E SQ9 R6&IT
goto s, 5 goto s, at end of .ulse
incf t0r8alB !
no.
0o8lE 0in_"t
su@Ef t0r8alB C
@tfss STATUSB C
goto s+_E
5 ti0eoutB eDit
retlE ' 5 illegal start@it
s, 5 start ti0er
clrf t0r8al
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& "'
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
s- 5 if Mif_s>ort U rD@itN goto s$
5 if MSif_s>ort U SrD@itN goto s$
5 goto s'#
@tfsc I!_S9ORT
5 if_s>ort R '
goto s-_ss'
s-_ss# 5 if_s>ort R #
SQL R6&IT
goto s'# 5 rD@it R 'B goto s'#
s$_ss# 5 if Mti0er 4 0aD_"tN eDit % else goto s-
0o8lE 0aD_"t
su@Ef t0r8alB C
@tfsc STATUSB C
retlE " 5 signal too long
incf t0r8alB !
goto s-_ss#
s-_ss' 5 if_s>ort R '
SQ9 R6&IT
goto s'# 5 rD@it R #B goto s'#
s$_ss' 5 if Mti0er 4 0aD_"tN eDit % else goto s-
0o8lE 0aD_"t
su@Ef t0r8alB C
@tfsc STATUSB C
retlE " 5 signal too long
incf t0r8alB !
goto s-_ss'
s'# 5 in8ert if_s>ort
0o8lE if_s>ort_8al
DorEf flagsB !
s'' 5 if Mti0er 2 0in_tN eDit
0o8lE 0in_t
su@Ef t0r8alB C
@tfss STATUSB C
retlE ( 5 signal too s>ort
s'" 5 if Mti0er 2 0in_"tN goto s')
0o8lE 0in_"t
su@Ef t0r8alB C
@tfss STATUSB C
goto s')
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& ""
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
s'( 5 if Mfirst_>alf R #N goto s'+ % else eDit
@tfss !IRST_9AL!
goto s'+
retlE ) 5 no 0id%fra0e transitionJout of sAnc
s') 5 in8ert first_>alf
0o8lE first_>alf_8al
DorEf flagsB !
s'* 5 if Mfirst_>alf R 'N goto ,
@tfsc !IRST_9AL!
goto s,
s'+ 5 if_s>ort is a decoded @it3 9andle >ere
@tfss 9EAGER
goto s'+_not_>eader
5 >eader recei8ing 0ode
@tfss I!_S9ORT
goto s'+_>eader_end
5 >eader @it is '
@tfss @itcntB ) 5 inc u. to '+
incf @itcntB ! 5 '+ is enoug>333
1ifdef NOMA69GR
5 test for 0aD >eader lengt>
0o8lE >drcnt0aD
su@Ef @itcntB C
@tfss STATUSB C
1endif
goto s, 5 loo. @ac<
retlE $ 5 >eader too long
s'+_>eader_end 5 >eader ends indicated @A a #
@cf 9EAGER
5 test for 0in >eader lengt>
0o8lE >drcnt0in
su@Ef @itcntB C
@tfss STATUSB C
retlE #D#a 5 >eader too s>ort
neDt_@Ate 0o8lE #D#a
0o8Ef @itcnt
goto s, 5 loo. @ac<
s'+_not_>eader 5 recei8ing @Ates
decf @itcntB !
@K s'+_s) 5 if M@itcnt R #N c>ec< for a @Ate%se. '
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& "(
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
5 if M@itcnt R 'N c>ec< for a @Ate%se.arator #
0o8lE '
DorEf @itcntB C
@nK s'+_s"
5 test for a @Ate se.arator '
@tfsc I!_S9ORT
goto s,
retlE , 5 @Ate%ending ' not .resent
s'+_s" 5 @it is data
rrf flagsB C
rlf @tB !
goto s,
s'+_s) 5 c>ec< for a @Ate%se.arator #
@tfsc I!_S9ORT
retlE - 5 @Ate%ending # not .resent
5 OQB recei8ed @Ate is saneB store in @uffer
0o8f @tB C
0o8Ef ING!
incf !SRB !
decfsK @tcntB !
goto neDt_@Ate
retlE # 5 OQB @uffer recei8ed
5 @uffer c>ec<ing is not done auto0aticallAS
5 if returned 8alue is #B call 0rD_c><_@uf to c>ec<
5
0rD_c><_@uf 5 c>ec< @uffer sanitA @A c><su0
0o8lE 0rD_@uffer
0o8Ef !SR
0o8lE M.ac<et_len?'N 5 nu0@er of @Ates Eit> t>e c><su0
@Ate
0o8Ef @tcnt
0o8lE #Dff
0o8Ef @t 5 used as su0 register
c><# 0o8f ING!B C
5 fast CRC%- algorit>0 Eit> .olA DL-?DL*?DL)?'
5 eDecutes in "( cAcles .er u.date
DorEf @tBf
clrE
@tfsc @tB,
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& ")
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
DorlE #D,a
@tfsc @tB+
DorlE #D(d
@tfsc @tB*
DorlE #D-+
@tfsc @tB)
DorlE #D)(
@tfsc @tB(
DorlE #D@$
@tfsc @tB"
DorlE #Dc)
@tfsc @tB'
DorlE #D+"
@tfsc @tB#
DorlE #D('
0o8Ef @t
incf !SRB !
decfsK @tcntB !
goto c><#
5 correct c>ec<su0 0ust @e Kero
0o8f @tB C
@nK c><_err
retlE # 5 result is in V
c><_err retlE #D#c 5 c>ec<su0 error
0rD_init return
5delaA routines
GelaA"** 0o8lE #Dff 5delaA "** 0S
goto d#
GelaA'## 0o8lE dF'##F 5delaA '##0S
goto d#
GelaA*# 0o8lEdF*#F 5delaA *#0S
goto d#
GelaA"# 0o8lEdF"#F 5delaA "#0S
goto d#
GelaA* 0o8lE#D#* 5delaA *3### 0s M) M9K cloc<N
d# 0o8Ef count'
d' 0o8lE#DC, 5delaA '0S
0o8Ef counta
0o8lE#D#'
0o8Ef count@
GelaA_#
decfsK countaB f
goto O?"
decfsK count@B f
goto GelaA_#
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& "*
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
decfsK count' Bf
goto d'
retlE #D##
5Serial routines
SER_INIT
&S! STATUSB RP# 5select @an< '
&C! SER_TRISB SER_OUT 5set &+ as an out.ut
&S! SER_TRISB SER_IN 5set &, as an in.ut
&C! STATUSB RP# 5select @an< #
&S! SER_PORTB SER_OUT 5set SER_OUT >ig>
RETURN
6MIT_RS"(" MO7C! 60it_&Ate 50o8e C to 60it_&Ate
MO7LC #D#- 5set - @its out
MO7C! &it_Cntr
&C! SER_PORTB SER_OUT
CALL &it_GelaA
Ser_Loo. RR! 60it_&Ate B f 5send one @it
&T!SS STATUS B C
&C! SER_PORTB SER_OUT
&T!SC STATUS B C
&S! SER_PORTB SER_OUT
CALL &it_GelaA
GEC!SV &it_Cntr B f 5test if all done
:OTO Ser_Loo.
&S! SER_PORTB SER_OUT
CALL &it_GelaA
RETURN
Rc8_RS"(" &T!SC SER_PORTB SER_IN 5Eait for start @it
:OTO Rc8_RS"("
CALL Start_GelaA 5do >alf @it ti0e delaA
&T!SC SER_PORTB SER_IN 5c>ec< still in start @it
:OTO Rc8_RS"("
MO7LC #D#- 5set u. to read - @its
MO7C! &it_Cntr
CLR! Rc8_&Ate
NeDt_Rc8&it CALL &it_GelaA
&T!SS SER_PORTB SER_IN
&C! STATUS B C
&T!SC SER_PORTB SER_IN
&S! STATUS B C
RR! Rc8_&Ate B f
GEC!SV &it_Cntr B f 5test if all done
:OTO NeDt_Rc8&it
CALL &it_GelaA
MO7! Rc8_&AteB C
RETURN
Start_GelaA MO7LC #D#C
MO7C! GelaA_Count
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& "+
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
Start_Cait NOP
GEC!SV GelaA_Count B f
:OTO Start_Cait
RETURN
&it_GelaA MO7LC #D'-
MO7C! GelaA_Count
&it_Cait NOP
GEC!SV GelaA_Count B f
:OTO &it_Cait
RETURN
End
C1*igo *e( 2og$0$ en Vi'"$( 3$'ic
Imports System.IO.Ports
Public Class Form_Principal
'Utlizaremos un string como buffer de recepcion
Dim ecibidos !s String
Public Sub "e#$%
InitializeComponent$%
' !brir puerto mientras se e&ecute la aplicaci'n
If "ot SerialPort(.IsOpen )*en
)ry
SerialPort(.Open$%
Catc* e+ !s System.,+ception
-essage.o+.S*o#$e+.)oString$%%
,nd )ry
,nd If
',&ecutar la funcion ecepcion por disparo del e/ento 'Dataecei/ed'
!dd0andler SerialPort(.Dataecei/ed1 !ddressOf ecepcion
,nd Sub
'!l recibir los datos
Pri/ate Sub ecepcion$.y2al sender !s Ob&ect1 .y2al a !s
System.IO.Ports.SerialDataecei/ed,/ent!rgs%
'!cumular los caracteres recibidos a nuestro 'buffer' $string%
ecibidos 3 SerialPort(.ead,+isting$%
'In/ocar o llamar al proceso de tramas
-e.In/o4e$"e# ,/ent0andler$!ddressOf !ctualizar%%
,nd Sub
'Procesar los datos recibidos en el buffer y e+traer tramas completas
Pri/ate Sub !ctualizar$.y2al s !s Ob&ect1 .y2al e !s ,/ent!rgs%
'!signar el /alor de la )rama al )e+t.o+
'te+t.o+_/isualizar_mensa&e.)e+t 3 ecibidos
'Dim canal5ibre !s Integer
'Obtenemos un canal libre 6ue nos dar7
'el sistema oparati/o para poder operar
'canal5ibre 3 FreeFile$%
'!brimos el fic*ero en el canal dado
'Open 8C9:fic*ero.t+t8 For Output !s ;canal5ibre
',scribimos el contenido del )e+t.o+ al fic*ero
'Print ;canal5ibre1 te+t.o+_/isualizar_mensa&e
'Close ;canal5ibre
' Create an array containing 8!81 8.81 and 8C8.
Dim c*ar!rray$% !s C*ar 3 ecibidos.)oC*ar!rray
Dim c*ino !s String
c*ino 3 82,5OCID!D del -O)O9 8 < c*ar!rray$(% < c*ar!rray$=% <
c*ar!rray$>% < 8 P-8
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& ",
Escuela Profesional de Ingeniera Electrnica_ ____ UNSA
'c*ino ?3
te+t.o+_/isualizar_mensa&e.)e+t 3 c*ino
,nd Sub
Pri/ate Sub Form_Principal_FormClosing$.y2al sender !s System.Ob&ect1 .y2al
e !s System.@indo#s.Forms.FormClosing,/ent!rgs% 0andles -y.ase.FormClosing
Dim m.uffer !s .yte$% 3 "e# .yte$A% BC
m.uffer$A% 3 <0DA '!SCII letra 8espacio8.
SerialPort(.@rite$m.uffer1 A1 m.uffer.5engt*%
,nd Sub
Pri/ate Sub )imer(_)ic4$.y2al sender !s System.Ob&ect1 .y2al e !s
System.,/ent!rgs% 0andles )imer(.)ic4
StatusStrip(.Items$A%.)e+t 3 Date)ime."o#.)o5ong)imeString$%
,nd Sub
Pri/ate Sub .utton(_Clic4$.y2al sender !s System.Ob&ect1 .y2al e !s
System.,/ent!rgs% 0andles .utton(.Clic4
,nd
,nd Sub
Pri/ate Sub Form_Principal_5oad$.y2al sender !s System.Ob&ect1 .y2al e !s
System.,/ent!rgs% 0andles -y.ase.5oad
,nd Sub
,nd Class
_______________________________________________________________________________
MICROELECTRNICA EN R! "##$%& "-