Está en la página 1de 114

INTRODUCCIN

Muchas lavadoras que estn actualmente en produccin utiliza un sensor mecnico para la
deteccin de nivel de agua. Mecnica sensores de trabajo con discreta viaje puntos que permiten
el agua nivel deteccin slo en esos puntos. La propsito para diseo de referencia de esta es
permitir al usuario evaluar un sensor de presin para no slo el nivel del agua de deteccin para
reemplazar un mecnico interruptor, pero tambin para agua flujo medida, , deteccin de fugas y
otros soluciones para inteligente aparatos. Este sistema supervisa continuamente el nivel de agua
y agua flujo usando la temperatura compensado MPXM2010GS sensor de presin en el bajo costo
MPAK paquete, un dual opamp, y el MC68HC908QT4, 8pin microcontroller.
PRESIN SENSOR
La familia de sensor de presin de Motorola tiene tres niveles de integracin Uncompensated,
compensacin y integrados. Para este diseo, el sensor de presin compensada MPXM2010GS fue
seleccionado porque tiene dos compensaciones de temperatura y calibracin circuitos en el silicio,
permitiendo un simple an ms robusto sistema circuito diseo. Un presin integrado sensor,
tales como el MPXV5004G, es tambin una buena opcin para la diseo eliminando la necesita
para la amplificacin circuitry.
La altura de la mayora de las cubas de lavadora es los 40cm, por lo tanto el agua altura gama que
esta sistema a ser de medicin se encuentra entre 040cm. esto corresponde a un rango de
presin de 0 4 kPa. Por lo tanto, era el MPXM2010GS seleccionado para este sistema. La sensor
sensibilidad es 2.5mV / kPa, con un fullscale span de 25mV en la tensin de alimentacin de 10
Vdc. la fullscale salida de el sensor cambios linealmente con tensin de alimentacin, para una
tensin de alimentacin de 5V devolver un palmo fullscale de 12,5 mV.
(Vs actual / Vs spec) x Vout fullscale spec = Vout fullscale
(5 V / 10 V) x 25 mV = 12.5 mV
Puesto que esta aplicacin slo se utiliza el 40% de la presin gama, 04kPa, nuestra mximo
salida voltaje a ser
40% de la fullscale span.



Va FS x (por ciento Gama FS) = Vpor max
12.5 mV x 40% = 5.0 mV
El paquete del sensor de presin es un paquete de MPAK portado. Esto permite un tubo ser
conectado al sensor; el tubo est conectado a la parte inferior de la baera. Esto asla el sensor de
directa en contacto con con la water. El pequeo tamao, y baja costo son adicional caractersticas
que hacer este paquete un perfecto ajuste para este aplicacin.
Figura 1. MPXM2010GS/GST1
Caso 1320A
Freescale Semiconductor, Inc.
T1 capacidad: MPXM2010D OPERATING caractersticas (VS = 10 Vdc, TA = 25C si si seal, P1 >
P2)
Caracterstica
Smbolo
Min
T YP
Max
Unidad
Presin gama(1)
Amplificador seleccin y amplificador inducida por errores
El sensor salida necesita a ser amplificado antes de ser introducidos directamente a la
microcontrolador a travs de un 8bit A/D entrada de pin. To determinar los requisitos de la
amplificacin, la presin de salida del sensor caractersticas y el rango de entrada 05V para el
convertidor A/D tuvo que ser considerado.El amplificacin circuito tres opamps se utiliza para
agregar un fsetfo y convertir la differential salida de la MPXM2010GS sensor para un ground
referenced, tensin asimtrica en la gama de de 0 5V. El presin sensor ha un posible offset de +
/ 1mV en el mnimo nominal presin. To evitar un no lineal respuesta cuando una presin
sensor elegido para la sistema ha un negativo offset (Voff), nos han aadido un 5mV offset a el
positiva salida del sensor seal. Esta offset a siguen siendo la mismo cueste lo que cueste de la
salida del sensor. Cualquier fsetfo adicional que introducen el sensor o opamp es compensado
para por rutinas de software que son invoca cuando la inicial sistema calibracin es hecho. To
determinar la ganar requiere para la sistema, la voltaje de salida mximo de el sensor para este
aplicacin haba a determinarse. El mximo salida voltaje de el sensor es aproximadamente
12.5mV con un 5V fuente desde el fullscale salida de el sensor cambios linealmente con fuente
voltaje. Sistema tendr una presin mxima de 4kPa a 40cm de water. En un 5V supply, a han un
mximo sensor salida de 5mV en 4kPa de presin. To amplificar la mximo salida del sensor a
5.0V, la siguiente ganar es necesario:

Ganancia = (Max salida necesitado) / (Max Sensor de salida y

Offset inicial)
= 5.0V / (.005V +.005) = 500
El ganar para la sistema fue establecer para 500 a evitar pasamano de fsetsfo posibles desde el
sensor de presin o el opamp.

El oltage V salidas de el sensor son cada conectado

a un noninverting entrada de un opamp. Cada opamp circuito tiene la mismo resistor ratio. La
amplificado voltaje seal de la negativos sensor plomo es VA. El resultante voltaje es

calculado de la siguiente manera:


VA= (1 + R8/R6) * V4

= (1 + 10/1000) * V4

= (1.001) * V4

El amplificado voltaje seal de el positiva sensor plomo es VB. Esto amplificacin agrega un
pequeo ganar a asegurar que el positivo plomo, V2, es siempre mayor que el voltaje salida

de el negativos sensor plomo, V4. Esto asegura la linealidad

de el differential voltaje seal.

VB = (1 + R7/R5) * V2 (R7/R5) * Vcc
= (1 + 10/1000) * V2 + (10/1000)*(5V)
= (1.001) * V2 + .005V

El difference entre el positiva sensor voltaje, VB, y el voltaje del sensor negativo, VA se calcula y
se amplifica con un resultante por un ganar de 500.

VC= (R12/R11) * (VB VA)
= (500K / 1K) * (VB VA)
= 500 * (VB VA)
El voltaje de salida, Vc, est conectado a un voltaje Colleenr. Por lo tanto, la resultante voltaje, Vc,
es pasado a un A/D perno de la microcontroller.
El gama de de la A/D convertidor es 0 a 255 cuenta. Howeverr, la A/D Vgrfica que la sistema
puede lograr son dependiente en el mximo y mnima sistema salida valores:
Conde = (Vhacia fuera VRL) / ( VRH VRL) x 255
donde VXdcr = Transducer salida Voltage
Vrh = el voltaje mximo A/D
VlH = mnimo A/D voltaje
Conde (0mm H20) = (2.5 0) / (5.0 0) x 255 = 127
Conde (40mm H20) = (5.0 0) / (5.0 0) x 255 = 255
Total # cuenta = 255 127 = 127 cuentas.

La resolucin del sistema est determinada por los milmetros de agua que est representado por
cada cuenta A/D. Como calcular por encima, la sistema ha un palmo de 226 cuenta a representan
el nivel del agua a a y incluyendo 40 cm. por lo tanto, la resolucin es:

Resolucin = mm de agua / Total # cuentas
= 400mm/127 puntos = 3,1 mm por cuenta de A/D
Cuadro de texto: Semiconductor, Inc.Cuadro de texto: Freescale3396

FowrwwM.moorteooYonlunaf.coormm/sunetmyooYocnonOdunCToTrhs es PrODUct,

Motorola datos del dispositivo Sensor
Freescale Semiconductor, Inc.

Figura 2. Amplificacin esquema

Microprocesador
To proporcionar el procesamiento de seales para valores de presin, un microprocesador es
necesario. El MCU elegido para esta aplicacin es la MC68HC908QT4. Este MCU es perfecto
aparato aplicaciones debida a su bajo costo, pequeo 8pin
paquete, y otros en-viruta recursos. La
MC68HC908QT4 ofrece: un 4 canal, 8bit A/D, un 16bit tiempor, un ajustables interno tiempor, y
insystem FLASH
HC908QT4 HC164
programacin.
La unidad central de procesamiento se basa en el alto rendimiento M68HC08 CPU base y se puede
direccin 64

KBytes de memoria espacio. La MC68HC908QT4 proporciona

4096 bytes de usuario FLASH y 128 bytes de al azar acceder a la memoria (RAM) para facilitar el
mantenimiento y desarrollo de software. Hay 5 lneas de entrada/salida de bidirectional y un
entrada lnea que son compartida con otros pin caractersticas.

El MCU es disponibles en 8pin como bien como 16pin paquetes en dos PDIP y SOIC. Para este
aplicacin, la 8pin PDIP fue seleccionado. La 8pin PDIP fue elegido para un un paquete pequeo,
eventualmente a ser diseado en aplicaciones como la

8pin SOIC. La PDIP permite la cliente a reprogramar el software en un programacin Junta y
vuelva a probar.



DISPLAY

Dependiendo de en el calidad de el pantalla requerido, agua nivel y agua flujo puede ser se
muestra con 2 LEDs. Si un superior qualitydigital salida es necesario, un opcional LCD interfaz es en
el referencia junta. Usando un turno registrar a Mantenga Mostrar los datos, el LCD es impulsado
por con slo 3 lneas generan de el microcontrolador: un permiten lnea, un datos lnea, y un reloj
seal. Los LEDs estn multiplexados con la seal de reloj y lnea de datos.


R2 R3

1K 1K







Figura 3. Circuito multiplexado del LCD



Multiplexacin de el microcontrolador salida pernos permite la comunicacin de el LCD a ser logra
con 3 pines en lugar de 8 o 11 pins de lneas de la entrada-salida que normalmente son necesarios.
Con un 8bit turno register, nos son poder a manualmente reloj en 8 bits de datos. La lnea
enable, at, es manualmente cuando habilitado

8 bytes tienen sido cambi de puesto , diciendo la LCD que el datos de datos est disponible para
ejecutar autobs.

El LED son utiliza a Mostrar presin salida datos, por

Mostrar binario valores que corresponden a un presin gama. Velocidad de deteccin o water
flow de fuga aparece parpadeando un verde LED en un velocidad relativos a la velocidad de agua
flow. El rojo LED a pantalla la direccin de agua flow. Turning rojo LED off significa agua que fluye
en el Tina. Turning el LED rojo indica que fluye agua de la baera, o hay un fuga.

Valores digitales para agua altura, tasa de de agua flowy calibracin valores son aparece si un LCD
es conectado a la junta.

OTROS

Esto sistema es diseado a corre en un 9V bateadory. Se contiene un regulador de 5V para proveer
5V a la presin sensor, microcontroller, y LCD. La batera es montado en el la parte posterior del
tablero utilizando un clip de la batera del resorte del ahorro de espacio.













Cuadro de texto: Semiconductor, Inc.Cuadro de texto: FreescaleDatos del dispositivo Sensor de
Motorola


Para MorwewwYon.mfootromrounlunat.cyoomn/sOemnYocTohndyosucPtorros duct,


3397





Freescale Semiconductor, Inc.



T2 capacidad: lista de piezas




Ref

QTy.

Descripcin

V valor

V Endor

Parte no.


U2

1

Presin Sensor

1

Motorola

MPXM2010GS


C1

1

VCC Cap

0.1uF

Genrico




C2

1

Opamp Cap

0.1uF

Genrico




C3

1

Cambio registro Cap

0.1uF

Genrico




D1

1

Rojo LED



Genrico




D2

1

Verde LED



Genrico




S2, S3

2

Pulsadores



Genrico




U1

1

Quad OpAmp



ADI

AD8544


U3

1

Voltage regulador

5V

Fairchild

LM78L05ACH


U4

1

Microcontrolador

8pin

Motorola

MC68HC908QT4


R1

1

W resistente

22K

Genrico




R2

1

W resistente

2.4 K

Genrico




R3, R6

2

W resistente

1.2 M

Genrico




R4, R5

2

W resistente

1.5 K

Genrico




R7, R8

2

W resistente

10K

Genrico




R9, R10

2

W resistente

1K

Genrico




U6

1

LCD (opcional)

16 x 2

Seiko

L168200J000


U5

1

Cambio registro



TTexas instrumentos

74HC164




Smart Washer Software

Esta nota de aplicacin describe la primera versin del software que fue disponibles. Sin embargo
actualizacin software versiones puede ser disponibles con ms funcionalidad y men selecciones.



Instrucciones para el usuario software

Cuando la sistema es vuelta en o restablecer, el microcontrolador destellar el LED seleccionar y
mostrar el ttulo del programa en la pantalla LCD para 5 segundos o hasta la seleccione (SEL) botn
es empuj. A continuacin se muestra la pantalla de men. Usando el botn Seleccionar del (SEL),
la usuario puede rollo a travs de el men opciones para un software programa. To corre el agua
nivel programa, uso select botn a destacar la "Water nivel" opcin, entonces presiona el enter
(ENT) pulsador. La Water nivel programa mostrar actual el nivel del agua, la tasa de flow, un
mensaje si el contenedor es "De relleno", "Vaciado", "Completo", o "Vaco", y un desplazamiento
historia grfica mostrando datos seala que representa lecturas de nivel de los ltimos cuarenta.

El Water nivel es aparece por recuperar la digital voltaje de el interno A/D Converter. Esta voltaje
es convertido a la presin en milmetros de agua y luego aparece en la pantalla LCD.



Calibracin y Software de calibracin

To calibrar la sistema, un twopoint calibracin se lleva a cabo. La sensor a tomar un calibracin
punto en 0mm y en 40mm de water. Mantenga abajo tanto la SEL y ENT botones sistema power
up a entrar en calibracin modo. En este punto, el men de calibracin ser exhibido con el
previamente muestreados offset voltaje. O T recalibrar la sistema, exponer el sensor de la presin
atmosfrica y pulse el botn SEL (PB1). En este punto, la cero offset voltaje a ser muestreados y se
guarda en una ubicacin en el microcontrolador memory. To obtener el segundo calibracin
punto, lugar el final de el plstico tubo de el presin sensor a la inferior de un contenedor
sosteniendo

40mm de water. y prensa la ENT botn (PB2). La tensin salida a ser muestreados, un promedio
de y salv a un


Ubicacin en memory. O T salida la calibracin modo, prensa la

SEL (PB1) botn.















40 cm

lubricacin cm

30 cm

25 cm

20 cm

15 cm

10 cm

5 cm





Figura 4. Water nivel sistema setup para demostracin



Conversin de presin a Water nivel

Hidrosttica presin que nos son medicin es el presin en el inferior de un columna de lquido
causado por el peso de el lquido y el presin de el aire por encima de el lquido. , Pues, la presin
hidrosttica depende de la presin del aire, la densidad del fluido y el altura de el columna de
lquido.



P = Pa + g h

donde P = presin

PA = presin

densidad de masa de fluido g = = 9.8066 m/s ^ 2

h = altura de columna de lquido



To calcular la altura del agua, podemos usar la presin medida con la siguiente ecuacin,
suponiendo que la atmsfera presin ya es compensada por la seleccin de el presin sensor ser
calibre:



h = P \ g











Cuadro de texto: Semiconductor, Inc.Cuadro de texto: Freescale3398


FowrwwM.moorteooYonlunaf.coormm/sunetmyooYocnonOdunCToTrhs es PrODUct,


Datos del dispositivo Sensor de Motorola





Freescale Semiconductor, Inc.





Software funcin descripciones



Funcin principal

El principal funcin llamadas un inicializacin funcin "ALLINIT", llama a una funcin warmup
"WARMUP" permitir tiempo adicional para el lcd inicializar, entonces cheques si botones PB1 y
PB2 estn siendo presionado. Si son dos presionado, entonces lo llamadas una calibracin funcin
"CALIB". Si son no dos presionado, y luego entrar en el bucle principal funcin. El bucle principal
muestra el men, se mueve la cursor cuando la PB1 es presiona y entra en el funcin
correspondiente a la resaltado opcin del men cuando se presiona el PB2.



Funcin de calibracin

La funcin de calibracin se utiliza para obtener dos puntos de calibracin. La primer calibracin
punto es tomado cuando la cabeza tubo es no colocado en agua a obtener la presin para 0mm de
water. El segundo calibracin punto es obtenidos cuando la cabeza tubo es colocado en el inferior
de un contenedor con un altura de 160mm. Cuando se inicia la funcin de calibracin, aparece
exhibiendo un mensaje la A/D valores para los correspondientes puntos de calibracin
actualmente almacenado en el flash. O T programa nueva puntos de calibracin, el usuario debe
presionar PB1 tomar 256 lecturas A/D en

0mm de water. La media es calculado y almacenado en un pgina de flash. Entonces la usuario ha
la opcin a prensa PB1 a salida la calibracin funcin o obtener el segundo calibracin punto. To
obtener la segundo calibracin punto, la cabeza tubo debe colocarse en 160 mm de agua y
entonces la usuario debe pulse PB2 a tomar 256 A/D lecturas. La media es tomado y almacenado
en una pgina de flash. Una vez que se han tomado las dos lecturas, un promedio de, y
almacenado en el flash, un mensaje muestra el dos valores A/D que se almacenaron.



Nivel funcin

La funcin del nivel inicializar los caracteres grficos. Una vez que esto termine, continuar bucle
para obtener un promedio A/D lectura y Mostrar la Water nivel, el Water Flow, y un grfico
historia hasta la usuario Prensas y sostiene ambos PB1 y PB2 a volver a la principal funcin.

El funcin primer borra la 40 presin lecturas que ser actualizacin para la grfico History. Se
entonces entra en el del lazo que primer muestra 8 especial caracteres, cada una con 5 puntos de
datos de agua nivel history. La funcin "adcbyta" se llama a obtener la actual un promedio de A/D
valor. El funcin "LfNx" es llamado a convertir la A/D valor a un agua nivel, que es entonces en
comparacin a la calibracin puntos, la mximo mnimo y puntos, a determinar si el contenedor es
completo o vacy. Si verdad, entonces lo muestra la correspondiente mensaje. El nivel de agua
actual se compara con la lectura anterior y muestra la mensaje "relleno" si ha aumentado,
"vaciar" si ha disminuido y "tranquilo" si no ha cambiado.

El agua nivel clculo ha a ser convertido a decimal para mostrarlo en la pantalla LCD. To convertir
el clculo del nivel de agua a decimal, la valor es continuamente divide con el resto aparece a la
pantalla para cada decimal lugar. To Mostrar la tasa de Water Flow, el signo del valor se
determina primero. Si la valor es negativo, la uno's complemento es tomada, una negativa seal se
visualiza, y entonces el valor es continuamente divide a Mostrar cada decimal lugar. Si el nmero
es positivo, un ms signo es aparece a mantener la alineacin de la pantalla y el valor
continuamente se divide para mostrar cada decimal lugar.



La parte ms complicada de esta funcin est actualizando los grficos historia ey. La caracteres
para la 16 x 2 LCD que fueron escogidos para esta referencia diseo son 8 x 5 pxeles por defecto.
Por lo tanto, cada especial carcter que es creado ser poder a pantalla 5 agua nivel lecturas.
Desde la altura de la especial carcter es 8 pixel, cada vertical pixel posicin representar a un
agua nivel en incrementos de de 20mm.





Resolucin = (H1 H0) / D

donde H1 y H2 son el mximo y mnimo en agua niveles de respectivamente y D es el posible
datapoints disponibles por character.





Resolucin = (160mm 0mm) / 8 = 20mm / punto de datos.





La historia grfica se muestra los 8 caracteres especiales. To actualizar la grficos, todo la
caracteres tienen ser actualizado. La caracteres son actualizacin por posicionamiento primero un
pxel para el nivel de agua ms reciente la lectura en la primera columna de la primera character.
Luego a la derecha las cuatro columnas de la primer carcter son cambi de puesto a el bien. La
pixel en el ltima columna de ese personaje es llevado luego a la primera columna de la siguiente
character. Esta columna cambio de es continu hasta todos

40 datos puntos tienen sido actualizado en el 8 especial caracteres.







Funcin LfNx

La LfNx funcin calcula la agua nivel de el lectura de presin de A/D actual. Presin/D2 el valor se
almacena en el registro A antes de este funcin es llamado. Usando la A/D valor y los valores de
calibracin almacenados en el flash, el nivel del agua es calculado de el siguiente funcin:





RBRA: = (NX-N1) * 160 / (N2-N1), donde NX es el valor actual de A/D VN1 es el valor de A/D Va 0
mm H20

N2 es el valor de A/D Ven 160 mm H20





To simplificar el clculo, primero se hace la multiplicacin. Entonces se llama a la funcin "NdivD"
para dividir los valores de.







Funcin NdivD

El "NdivD" funcin realiza un divisin contando sucesivas sustracciones del denominador del
numerador a determinar la cociente. El denominador se resta de el numerador hasta la resultado
es cero. Si hay un XTOw, el resto de la ltima resta el resto de el divisin.







Funciones wrflash y ersflsh

El "wrflash" y "ersflsh" funciones son utiliza a escribir a y borrar valores de el flash. Para ms
informacin con respecto a flash functionality, refirase a la seccin 4. Memoria del
MC68HC908QY4/D Databook Flash.









Cuadro de texto: Semiconductor, Inc.Cuadro de texto: FreescaleDatos del dispositivo Sensor de
Motorola


Para MorwewwYon.mfootromrounlunat.cyoomn/sOemnYocTohndyosucPtorros duct,


3399











Funcin ALLINIT


Freescale Semiconductor, Inc.



(RS), y el turno registro reloj poco, respectivamentey. La reloj



La funcin ALLINIT deshabilita la polica por esta versin del software, establece la datos direccin
pedacitos, y deshabilita la datos a la LCD y se convierte off la LCD habilitar lnea. Se tambin
establece por el microcontroller's reloj interno a mitad de la velocidad del reloj del bus. Vea la
seccin 15, computadora de funcionamiento Properly, de la MC68908QT4 hoja de datos para
informacin en utilizando la mdulo de polica a recuperar software de cdigo fuera de control.



W ARMUP funcin

El Wfuncin ARMUP alterna el parpadeo de los LEDs diez veces. Esto da el LCD algunos tiempo
para calentar. Entonces la funcin "calentamiento" llama a la funcin de inicializacin del LCD,
"lcdinit".



bintasc funcin

La funcin "binasc" convierte un valor binario para su representacin ascii.



A/D funciones

Se utilizan las funciones de A/D para el voltaje amplificado de el presin sensor de canal 0 de la
A/D converter. El funcin "adcbyti" ser establecer la A/D control register, espera para el A/D
leyendo y cargar el datos de la A/D datos registrarse en el acumulandor. El funcin "adcbyta" es
utilizado a obtener un un promedio de A/D leyendo por llamando "adcbyti" 256 veces y volver el
resultante promedio en el acumulandor.



Funciones del LCD

El LCD hardware es set a para multiplexacin 3 pernos de el microcontrolador mediante un 8bit
cambio register. Canales 3, 4, y 5 son utiliza en puerto A para la LCD permiten (E), la LCD reset


poco es utiliza a manualmente reloj datos de canal 4 en la 8bit turno register. Esta es el mismo
lnea como la LCD RS poco porque el MSB de los datos es baja para un comando y alta para los
datos. El RS poco prepara la LCD para instrucciones o datos con la misma poco Convenio. Cuando
la 8 bits de datos son disponibles sobre los terminales de salida del turno register, se activa el
enable del LCD (E) a recibir la datos.

Las LCD funciones consisten en una funcin de inicializacin "lcdinit" que es utiliza una vez cuando
la sistema es empez a y salida cinco funciones. La las funciones "lcdcmdo" y "lcdchro" tanto
envan un byte de datos. Se llama a la funcin "shiftA" por dos "lcdcmdo" y "lcdchro" a
manualmente turno 8 bits de de datos en el cambio register. El funcin "lcdnibo" convierte la
datos a binario antes de mostrando. La "lcdbyto" muestra un byte de datos llamando "lcdnibo"
para cada picar de datos. El la funcin "lcdstro" permite cadenas a ser fcilmente aadido a la
software para presentary. La funcin acepta una cadena de commadelimited de datos que
consiste en de 1-2 comandos para claro la pantalla y posicionamiento la cursor. Entonces sigue a
salida personajes de el cadena hasta la "@" smbolo es encontrado, signally el final de el cadena.



Conclusin

El agua nivel referencia diseo utiliza un MPXM2010GS

presin sensor en la bajo costo MPAK paquete, la bajo costo,

8pin microcontroller, y un cuatro opamp a amplificar la salida del sensor voltaje. Esta sistema
utiliza muy pocos componentes, reduccin de el total sistema costo. Esta permite para un solucin
a competir con un mecnica interruptor para agua deteccin de nivel pero tambin offer adicional
aplicaciones tales como monitoreo de agua flujo para fuga deteccin, y el otras aplicaciones para
lavadoras inteligentes.









































































Cuadro de texto: Semiconductor, Inc.Cuadro de texto: Freescale3400


FowrwwM.moorteooYonlunaf.coormm/sunetmyooYocnonOdunCToTrhs es PrODUct,


Datos del dispositivo Sensor de Motorola











Software listado


Freescale Semiconductor, Inc.







;NitroWater 2.0 15 02 de Nov

;

;

;Agua nivel referencia diseo

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

; utiliza NITRON (MC68HC08QC4) y MPAK (MPXM2010GS)

; CALIB: 2point presin calibracin (0mm y 160mm)

; NIVEL: muestra agua nivel flujo, y grficos

; UNIDADES: muestra A/D valor, calib max/min valores

;

RAM equ $0080 ; memoria punteros rom equ $EE00

vectores equ $FFDE

;

Porta equ $00 ; registra ddra equ $04

Config2 equ $1E config1 equ $1F tsc equ tmodh $20 equ icgcr $23 equ $36 adscr equ $3 adr equ
$3E adiclk equ $3F flcr equ $FE08 flbpr equ $FFBE

;

org $FD00 ; flash variables

N1 db $96 ; i calibracin pt. = org 0mm $FD40

N2 db $F6 ; 2 calibracin pt. = org 160mm $FD80

;

org vectores

DW frio ;ADC

fro DW ;Teclado dw fro ; no utilizar dw fro ; no utilizar dw fro ; no utilizar dw fro ; no utilizar dw
fro ; no utilizar dw fro ; no utilizar dw fro ; no utilizar dw fro ; no usado

DW frio ;TIM desbordamiento

DW frio ;TIM canal 1 dw frio ;TIM canal 0 dw frio ; no usado

DW frio ; IRQ

DW frio ;SWI

DW frio ;RESET ($FFFE)

;




BB

org ds

RAM

1


flshadr

DS

2


flshbyt

DS

1


memSP

DS

2


mem03

DS

2


CNT

DS

1


Lgfx

DS

1


weath

DS

1


ram0

DS

1


NC

DS

1


NB

DS

1


NA

DS

1


DC

DS

1


DB

DS

1


DA

DS

1


MB

DS

1


MA

DS

1


OB

DS

1


OA

DS

1




Cuadro de texto: Semiconductor, Inc.Cuadro de texto: FreescaleDatos del dispositivo Sensor de
Motorola


Para MorwewwYon.mfootromrounlunat.cyoomn/sOemnYocTohndyosucPtorros duct,


3401





Freescale Semiconductor, Inc.



RB ds 1

RA ds 1

P0C ds 1

P0B ds 1

P0A ds 1

NPTR ds 1

RAMEspacio ds 80 ; usados dos para corriendo RAM versin de wrflash & guardar 40 lecturas

;

;

org rom fro: rsp

JSR ALLINIT ; general inicializacin

JSR calentamiento ; dar LCD extra tiempo a inicializar



errneo 1, porta, nocalib errneo 2, porta, nocalib

JMP CALIB ; hacer calibracin si SEL & ENT en reset



nocalib: ldhx #msg01 ; de lo contrario saltar y Mostrar Bienvenido mensajes jsr lcdstro ;
"Referencia diseo " msg

JSR del1s

ldhx #msg01a ; "Agua nivel " msg jsr lcdstro

JSR del1s



MEN: ldhx #msg01b jsr lcdstro

CLR RA ; men opcin = 0 comenzar con lda #$0D

JSR lcdcmdo ; parpadea el cursor sobre la opcin del men



Luke: ldx RA ; conseguir actual men opcin clrh

Lda menupos, x ; y ve a correspondiente LCD direccin

JSR lcdcmdo



caliente: brclr 1, porta, PB1 ; espera para SEL brclr 2, porta, PB2 ; o para ENT bclr 4, porta

BSET 5, porta ; alternar LEDs jsr del100ms ; retardo

BSET 4, porta

BClr 5, porta ; toggle otra vez: SEL *** o *** ENT

JSR del100ms ; retardo y repetir hasta SEL o ENT

sujetador caliente



PB1: inc RA ; *** SEL *** alterna men opciones lda RA

CMP #$02 ; men opciones son $00 y $01 blt PB1ok

CMP #$03

BGT menureset



; cambio a y pantalla 3

MENU2: ldhx #msg01c jsr lcdstro



menureset:



CLR RA ; vuelta a $00 cuando todo otros tienen sido ofrecido





PB1ok: bclr 4, porta

BClr 5, porta ;LEDs apagados

JSR del100ms ; esperar un poco

BRCLR 1, porta, PB1ok ; hacer que que ir de SEL

sujetador luke



PB2: bclr porta 4, ; *** ENT *** confirma men opcin bclr 5, porta ;LEDs apagados

Lda RA ; conseguir men opcin APLV #$00

BNE skip00

JMP nivel ; hacer === nivel === si opcin = $00 skip00: APLV #$01

BNE skip01

JMP unidades ; hacer === unidades === si opcin = $01 skip01: APLV #$02

BNE skip02 ; hacer == MANCALIB = si opcin = $02



Cuadro de texto: Semiconductor, Inc.Cuadro de texto: Freescale3402


FowrwwM.moorteooYonlunaf.coormm/sunetmyooYocnonOdunCToTrhs es PrODUct,


Motorola datos del dispositivo Sensor





Freescale Semiconductor, Inc.






JMP

MANCALIB


skip02:

JMP

PRUEBA


;

;


CALIB:

jsr ldhx

#msg05 lcdstro

; === CALIB === 2point calibracin

;Calibracin actual valores




Lda

JSR lda jsr lda

N1

lcdbyto

#' /' lcdchro N2

; 0mm







160mm








lego1:

JSR

BSET bset brclr

lcdbyto

4, porta

5, porta

1, porta, lego1





;LEDs


lego2:

BRCLR

BClr

2, porta, lego2

4, porta






BClr

JSR jsr ldhx jsr

5, porta

del1s del1s

#msg05a lcdstro

;LED de cuando dos SEL & ENT son liberado



; Espera 2s



; Mostrar instrucciones


waitPB1:



NO2:



do1st:

errneo

JMP brclr sujetador ldhx jsr

2, porta, no2

nocalib

1, porta, do1st waitPB1

#msg05b lcdstro

; Si ENT es no presionado, saltar

; Si ENT es presiona y cancelar calibracin

; Si SEL es presiona entonces 1st punto cal

; de lo contrario espera para SEL

i punto cal: Mostrar valores








do256:

CLR

CLR clr lda jsr lda

CNT

RB RA

#$C9 lcdcmdo CNT

;CNT contar 256 lecturas A/D



;RB: RA contiene 16bit addup de los 256 valores



; posicin LCD cursor en el bien punto




Deca

JSR



lcdbyto



; Mostrar actual iteracin $FF baja a $00




Lda

Aadir JSR jsr

#:

lcdchro adcbyti RA





; conseguir leyendo




Sta

Lda adc sta

RA

RB

#$00

RB







; agregar en RB: RA (aade 16 bits)




JSR

Lda

lcdbyto

RA

; Mostrar RB




JSR

dbnz lsl bcc inc

lcdbyto

CNT, do256

Nochg RA RB

; luego RA

; y hacer x 256

; conseguir bit7 a llevar

; Si C = 0 entonces no necesita reunir

; lo contrario ronda


nochg:

Lda

ldhx jsr ldhx jsr

RB

#N1 wrflash

#msg05c lcdstro

; nos puede descartar RA: media valor es en RB

; punto a flash ubicacin

; quemar se en!

; preguntar para 160mm


waitPB2: errneo 2, porta, waitPB2 ; espera para ENT












do256b:

ldhx

JSR clr clr clr lda

#msg05d

lcdstro

CNT RB RA

#$C9

2 punto cal: Mostrar valores



; dem como primer punto de cal




JSR

Lda deca jsr lda jsr

lcdcmdo

CNT



lcdbyto

#:

lcdchro






JSR

Aadir sta lda adc sta

adcbyti

RA RA RB

#$00

RB






Cuadro de texto: Semiconductor, Inc.Cuadro de texto: FreescaleMotorola datos del dispositivo
Sensor


Para MorwewwYon.mfootromrounlunat.cyoomn/sOemnYocTohndyosucPtorros duct,


3403





Freescale Semiconductor, Inc.



JSR lcdbyto lda RA

JSR lcdbyto dbnz CNT, lsl do256b RA

BCC inc nochg2 RB

nochg2: lda RB

CMP N1 ; comparar N2 a N1

BNE validcal ; si es diferente, estamos OK

ldhx #msg05e ; de lo contrario advertir de no vlido CAL.

JSR jsr lcdstro del1s jsr del1s

JSR del1s ; espera 2s

JMP CALIB ; cal intenta otra vez validcal: ldhx #N2

JSR wrflash ; quemar N2 en flash

ldhx #msg05 ; y pantalla nueva actual cal valores de flash jsr lcdstro

Lda N1 ; 0mm valor jsr lcdbyto

Lda #' /'

JSR lcdchro

Lda N2 ; 160mm valor jsr lcdbyto

JSR jsr del1s del1s

JMP nocalib ; hecho!

;

NIVEL: lda #$01 ; === nivel === principal rutina: muestra nivel flujo & grficos jsr lcdcmdo ; clara
pantalla

Lda #$0C

JSR lcdcmdo ; cursor apagado



Lda #$88 ; posicin cursor en LCD grficos porcin jsr lcdcmdo ; (2nd media de primer lnea)

clra ; y escribir ascii $00 a travs de fillgfx $07: jsr lcdchro ; que contienen la grficos relacionados
con a

Inca ; 40 diferentes lecturas cmp #$08

BNE fillgfx



LVL: ldhx #ramfree ; punto a 40 presin lecturas lda #$28 ; contar hasta 40

purga: clr x 0, ; clara todo esos ubicaciones

incx ; la prxima (H no cambiar: nos son en page0 RAM)

dbnza de purga

JSR adcbyta ; conseguir Lref: referencia A/D leyendo jsr LfNx

Sta Lgfx ; almacenar en "Niveles grficos"



LVLwarm: bset 4, porta

BSET 5, porta ;LED en en este ciclo



ldhx #ramfree ; punto a 40 presin lecturas mov #$27, RA ; cuenta por de 39

shiftgfx: lda 1, x ; tomar ubicacin + 1

Sta x 0, ; y mover a ubicacin + 0, es decir turno grficos izquierdo

incx ; la prxima X (una vez ms: estamos en pgina 0, ninguna necesidad de preocuparse acerca
de H)

dbnz RA, shiftgfx ; hacer este lda 39 x #$80

JSR lda lcdcmdo Lgfx

JSR adcbyta ; conseguir un promedio de A/D leyendo (es decir, LX)

JSR LfNx ;LX:=(NXN1)*160/(N2N1)

MOV RA, OA

CLR RB

CMP #$03 ; si < = 2 mm.

BCS Lzero ; luego "vaca"

CMP #$9E

BCC Lsat ; luego "completo"

CLRH

LDX #$14 ; div por 20 div

MOV #$01, RB



Cuadro de texto: Semiconductor, Inc.Cuadro de texto: Freescale3404


FowrwwM.moorteooYonlunaf.coormm/sunetmyooYocnonOdunCToTrhs es PrODUct,


Motorola datos del dispositivo Sensor





Freescale Semiconductor, Inc.








makeRB

CMP beq lsl dbnza sujetador

#$01

RB Lzero makeRB Lzero




LSAT:

Lzero:

MOV

ldhx Lda

#$80, RB

RB

#ramfree + $27





; ltima de del 40




izquierda

Sta

x 0,

; poner se en entonces final de la 40 bytes (nueva valor), todo otros fueron cambiados de puesto




CLR lda beq

weath RB donew





; $00 si est "vaco"










notfull

CMP

BNE mov sujetador mov lda

#$80

notfull

#$01, donew de trigo

#$02, meteorizacin

OA





; if set "completo" $80



; preparar para "constante" si L(i)=L(i1)




CMP

BEQ mov bcc mov

Lgfx

donew

#$03, donew de trigo

#$04, meteorizacin





;relleno" si L(i) > L(i1)



;vaciado" lo contrario


donew:

Lda sub sta

OA Lgfx MA





; rate:=L(i)L(i1)




MOV

RA, Lgfx

; actualizacin L(i1)




jsr Lda

lcdcmdo #$80

;******** Ahora pantalla la nivel en decimal ********

; iniciar en 1st carcter de 1st lnea




clrh Lda

OA






LDX

CLR div bne lda jsr

#$64

RB



over100

lcdchro #$20









; preparar un espacio en caso de primer valor es 0




over100:



siguiente:

sujetador

JSR inc pshh pula clrh

siguiente

lcdnibo

RB






LDX

bne div

#$0A



nospace

; dividir por 10




TST

BNE

RB

nospace










nospace:

Lda

JSR sujetador jsr

#$20

lcdchro lnexta lcdnibo







; Mostrar decenas dgitos


lnexta:

Pshh

Pula








JSR

Lda jsr lda jsr

lcdnibo

# Estoy '

lcdchro

# Estoy '

lcdchro

; y primer decimal







; luego la unidad




Lda jsr lda isla

#$C0 lcdcmdo MA

;******** Ahora pantalla el flujo de en decimal ********

; posicin cursor en 1st carcter 2 lnea



; prueba de seal de velocidad (en MA)




BCC

Positiv

; Si positivo, entonces es fcil




Lda

MA

; complemento de otra manera 1 de MB




coma

sta Inca





MA






Lda

JSR

#

lcdchro



; Mostrar ese signo




Cuadro de texto: Semiconductor, Inc.Cuadro de texto: FreescaleMotorola datos del dispositivo
Sensor


Para MorwewwYon.mfootromrounlunat.cyoomn/sOemnYocTohndyosucPtorros duct,


3405





Freescale Semiconductor, Inc.



sujetador goconv

positivo: lda #' +'

JSR lcdchro ; Mostrar las ms signo (a mantener alineacin)

goconv: lda MA

CLRH

LDX #$64 clr RB div

BNE over100b

Lda #$20 ; preparar un espacio en caso de primer valor es 0 jsr lcdchro

sujetador lnextb over100b: jsr lcdnibo

Inc RB

lnextb: pshh pula clrh

LDX #$0A ; dividir por 10 div

BNE tst nospaceb RB

BNE nospaceb lda #$20

JSR lcdchro

sujetador lnextab

nospaceb: jsr lcdnibo ; vea decenas lnextab dgitos: pshh

Pula

JSR lcdnibo ; y primer lda decimal # estoy '

JSR lcdchro lda # estoy '

JSR lcdchro ; luego la lda unidad #' /'

JSR lcdchro lda # de

JSR lcdchro

Lda #$40 ; === Graphics actualizacin: duro cosas ===========

JSR lcdcmdo ; preparar a escribir 8 bytes en CGRAM a partir en @ $40 ldhx #ramfree ; punto a 40
presin lecturas (esto reutiliza wrflash RAM) mov #$08, DA ; DA a Conde esos 8 CGRAM
direcciones

CG8: lda x 0,

Sta lda NC 1, sta x NB lda 2, sta x lda NA 3, x sta lda DC x 4,

Sta DB ; lecturas amamantados ir en DB DC NA, NC, NB, y a forma 1 LCD especial regi -



ter



MOV #$08, RA ;RA a Conde la 8 bits



relleno: clr RB ; empezar con RB = 0, esta a eventualmente contienen el datos para CGRAM




rol rol rol

NC RB NB




rol

rol rol rol rol rol

RB

NA RB DC RB DB


rol

jsr Lda

RB

RB

lcdchro

; Gire izquierda los 5 valores y usar llevar pedacitos a forma RB (difcil)



; y en CGRAM


Dec

BNE incx

RA

relleno

; hacerlo 8 veces para cubrir todos los 8 bits










ter)

incx

incx incx incx









; Ahora punto a siguiente 5 valores para siguiente CGRAM direccin (5 valores por regi -




Cuadro de texto: Semiconductor, Inc.Cuadro de texto: Freescale3406


FowrwwM.moorteooYonlunaf.coormm/sunetmyooYocnonOdunCToTrhs es PrODUct,


Motorola datos del dispositivo Sensor





Freescale Semiconductor, Inc.



Dec DA ; hacer este para todo 8 CGRAM caracteres bne cg8



Lda weath ; conseguir tiempo variable y decidir que mensaje a pantalla cmp #$04

BNE try3210

ldhx #msg02e ; si bra $04 aparece

try3210: cmp #$03 bne try210

ldhx #msg02d ; if $03

sujetador aparece try210: cmp #$02

BNE try10

ldhx #msg02c ; si bra $02 aparece

try10: cmp #$01

BNE try0

ldhx #msg02b ; si bra $01 aparece

try0: ldhx #msg02a ; de lo contrario este uno aparece: jsr lcdstro

JSR del1s ; 1s entre presin/altitud lecturas

errneo 1, porta, cont ; salida slo si SEL

errneo 2, porta, cont ; y ENT presiona jmp junto men

Contin: jmp LVLwarm

; LfNx: sub N1 ; *** PX=f(NX,N2,N1) ***

LDX $A0 # ; x 160 mul

Sta NA

STX NB

CLR NC ;NCNBNA: = (NXN1) * 160



Lda N2 sub N1 sta DA clr DB clr DC

JSR NdivD ;RBRA:=(NXN1)*160/(N2N1)

Lda RA



RTS

;


NdivD:



keepatit:

CLR clr lda

RA RB RA

;RBRA: = NCNBNA/DCDBDA

; destruye NCNBNA y DCDBDA




Aadir

Sta lda adc sta

#$01

RA RB

#$00

RB









; incrementar RB: RA




Lda

Sub sta lda sbc sta

NA

DA NA NB DB NB






Lda

SBC sta

NC

DC NC





;NC:NB:NA: = NC:NB:NADC:DB:DA




BCC

Lda sub

keepatit

RA

#$01

; mantener contar muchos veces hasta desbordamiento




Sta

Lda sbc sta lsr ror

RA

RB

#$00

RB DC DB







; una vez contamos demasiados, as que deshacer




Ror

Lda aadir sta lda

DA

NA DA NA NB

; dividir DC:DB:DA 2




Cuadro de texto: Semiconductor, Inc.Cuadro de texto: FreescaleMotorola datos del dispositivo
Sensor


Para MorwewwYon.mfootromrounlunat.cyoomn/sOemnYocTohndyosucPtorros duct,


3407





Freescale Semiconductor, Inc.



ADC DB sta NB lda NC adc DC

Sta NC ; y agregar en NC:NB:NA

Isla

BCS nornd ; if llevar = 1 then resto < 1/2 de lda dividendo RA

Aadir #$01 sta lda RA RB adc #$00

Sta RB ; de lo contrario aadir 1 resultado

nornd: rts








jsr Lda

#$01 lcdcmdo

; === UNIDADES === : muestra A/D valor, calib max/min valores

; clara pantalla


UNTwarm:










Lda

JSR

#$0C

lcdcmdo



; cursor apagado




jsr Lda

lcdcmdo #$80



; (pos cursor Inicio de primer lnea)




JSR

adcbyta

; conseguir Lref: referencia A/D leyendo




BSET jsr jsr bclr

4, porta lcdbyto del1s

4, porta

;SEL LEDON seales a leyendo





;SEL LEDOFF seales leyendo recibido





; UNIDADES:































JSR adcbyta ; conseguir Lref: referencia A/D leyendo





tstLfNx:





Sub N1 ; *** PX=f(NX,N2,N1) ***






CMP

#$00

; IF Nx N1 > 0 y calcular


BGT

skipzero




Lda #' ' ; Else IF Nx << N1 entonces pantalla error mensaje a volver a calibrar

JSR lcdbyto lda #' '

JSR sujetador lcdbyto skipneg



skipzero:



LDX $A0 # ; x 160 mul

Sta NA

STX NB

CLR NC ;NCNBNA: = (NXN1) * 160 lda #$90

JSR lcdcmdo ; (pos cursor 2 media de primer lnea)

JSR lcdbyto ; NA pantalla



Lda #$87

JSR lcdcmdo lda NB

JSR lcdbyto ; pantalla NB





skipneg:



JSR del1s ; 1s entre presin/altitud lecturas







errneo 1, porta, UNTcon ; salida slo si SEL

errneo 2, porta, UNTcon ; y ENT presiona jmp junto men

UNTcon: jmp UNTwarm

; MANCALIB:







PRUEBA:


JSR del1s

RTS



JSR del1s





Cuadro de texto: Semiconductor, Inc.Cuadro de texto: Freescale3408


FowrwwM.moorteooYonlunaf.coormm/sunetmyooYocnonOdunCToTrhs es PrODUct,


Motorola datos del dispositivo Sensor





Freescale Semiconductor, Inc.



RTS

;

wrflash: sthx flshadr ; esta es el direccin en el flash flshbyt sta ; y el byte nos quiero a poner all

FLASH: tsx

sthx memSP ; almacenar SP en memSP, para puede ser temporalmente utilizado como un 2 ndice
regis -



ter



ldhx #ramfree + 1 ;SP ahora puntos a RAM (recuerde a agregar 1 a la direccin!!!, HC08 chanfle)

TXS ;SP cambiado (cuidado no a empuje o llamar subrutinas)

ldhx #ersflsh ;H:X puntos a Inicio de flash programacin cdigo



DOALL: lda x 0, ; conseguir 1st byte de flash sta 0, sp ; copia en RAM

Aix #$0001 ;HX: = HX + 1

AIS #$0001 ;SP: = SP + 1

cphx #lastbyt ; y continuar hasta nos llegar a la ltima byte bne doall

ldhx memSP ; una vez hecho esto, restaurar el SP

TXS

JSR RAMEspacio ; y corre la subrutina de RAM, te no escribir el flash mientras rts ; ejecutar un
cdigo en l, as que la memoria RAM tiene para apoderarse de su arma

;

ersflsh: lda #$02 ; libros de texto forma a borrar flash sta flcr

Lda flbpr

clra

ldhx flshadr sta x 0,

BSR delayf lda #$0A sta flcr bsr delayf lda #$08 sta flcr bsr delayf clra

Sta flcr

BSR delayf

pgmflsh: lda #$01 ; libros de texto forma a programa flash sta flcr

Lda flbpr clra

ldhx flshadr

Sta x 0,

BSR delayf lda #$09 sta flcr bsr delayf

Lda flshbyt

ldhx flshadr sta x 0,

BSR delayf lda #$08 sta flcr bsr delayf clra

Sta flcr

BSR delayf rts

delayf: ldhx $ # 0005

MOV $ # 36, tsc ; parada TIM & / 64 sthx tmodh ; Conde H:X x 20us bclr tsc 5, ; iniciar reloj

delayfls: brclr 7, tsc, rts delayfls

lastbyt: nop

; GENERAL rutinas ALLINIT: bset 0, config1 ; deshabilitar polica

MOV #$38, ddra ;PTA0 = MPAK, PTA1 = SEL, PTA2 = ENT, PTA3 = E, PTA4 = RS, PTA5 = clk bclr 3,
porta ;E = 0

BClr porta 4, ; grn = OFF; RS = 0 bclr 5, porta ; rojo = OFF; CLK = 0 mov #$30, adiclk ;ADC reloj 2 rts

; WARMUP: bclr 4,porta





Cuadro de texto: Semiconductor, Inc.Cuadro de texto: FreescaleMotorola datos del dispositivo
Sensor


Para MorwewwYon.mfootromrounlunat.cyoomn/sOemnYocTohndyosucPtorros duct,


3409





Freescale Semiconductor, Inc.



BClr 5, porta ;LEDs apagados

Lda #$0A ; preparar hacer este tenx 10 x: jsr del25ms ; retardo

BClr 4, porta

BSET 5, porta ; alternativo de encendido/apagado jsr del25ms

BSET 4, porta

BClr 5, porta ; y apagado/encendido

dbnza tenx ; 10 veces para la LCD puede conseguir lista (lento arranque)

JSR lcdinit ; ahora inicializar bclr 4, porta

BClr 5, porta ;LED fuera de rts

bintasc: agregar #$30 ; agregar $30 (0-9 offset) cmp #$39 ; es un nmero (0-9). BLS d0to9b ; si as
saltar

Aadir #$07 ; ms agregar $07 = total de $37 (desplazamiento a-f)


Referencias

1) Baum, Jeff, "frecuencia salida conversin para MPX2000 serie presin sensores," Motorola
aplicacin Nota AN1316/D.

2) Hamelain, JC, "lquido nivel Control usando un Motorola presin Sensor," Motorola aplicacin
Nota AN1516/D.

También podría gustarte