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

Presin Sensor

Motorola

MPXM2010GS

C1

VCC Cap

0.1uF

Genrico

C2

Opamp Cap

0.1uF

Genrico

C3

Cambio registro Cap

0.1uF

Genrico

D1

Rojo LED

Genrico

D2

Verde LED

Genrico

S2, S3

Pulsadores

Genrico

U1

Quad OpAmp

ADI

AD8544

U3

Voltage regulador

5V

Fairchild

LM78L05ACH

U4

Microcontrolador

8pin

Motorola

MC68HC908QT4

R1

W resistente

22K

Genrico

R2

W resistente

2.4 K

Genrico

R3, R6

W resistente

1.2 M

Genrico

R4, R5

W resistente

1.5 K

Genrico

R7, R8

W resistente

10K

Genrico

R9, R10

W resistente

1K

Genrico

U6

LCD (opcional)

16 x 2

Seiko

L168200J000

U5

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

flshadr

DS

flshbyt

DS

memSP

DS

mem03

DS

CNT

DS

Lgfx

DS

weath

DS

ram0

DS

NC

DS

NB

DS

NA

DS

DC

DS

DB

DS

DA

DS

MB

DS

MA

DS

OB

DS

OA

DS

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