Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sensor Es
Sensor Es
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.