PDA

Ver la versión completa : Niveles de agua en los depositos.



Dedalo
05/03/2010, 09:16
Voy a mostrar aqui los circuitos que me hice en su dia para tener controlados los niveles de los depositos.

Mi AC tiene tres depositos, uno de 200 L para el agua limpia, otro de 200 L para las aguas grises y otro de 150 L para las aguas negras.

Para poder saber el nivel de agua en cada uno de ellos, en cada deposito hay cinco tornillos con la cabeza por dentro del deposito y las tuercas por fuera, en cada tornillo hay conectado un cable.

Los tornillos estan situados de forma que dividen el deposito en cinco zonas. Como el deposito tiene 30 cm de altura, estan colocados a 6,12,18 y 24 cm. el quinto tornillo esta situado por debajo de los 6 cm y es el que conecta el agua del deposito a masa.

Cuando el nivel del agua alcanza la cabeza de un tornillo, este se conecta a masa a traves del agua, y esto se puede medir facilmente. Con este sistema dispongo de 12 bits (cuatro por cada deposito) que me indican el nivel de cada uno de ellos. El circuito debe ser capaz de indicarme los niveles por lectura directa o bien mostrarlo en la centralita del salpicadero de la AC. Ademas, en la boca de llenado tengo cuatro leds para ver el nivel del agua mientras estoy llenando.

En la parte trasera de la AC hay un pequeño panel con conmutador rotativo y con un medidor de aguja con la escala graduada de 0 a 200 litros. El conmutador rotativo tiene las indicaciones: Apagado, Llenado, Limpias, Grises y Negras.

Cuando el conmutador esta en modo apagado, el circuito queda sin alimentacion, pero se puede alimentar desde la centralita, y transfiere en serie los doce bits para que la centralita pueda mostrar en su pantalla el estado de los tres depositos.

Cuando el conmutador esta en Llenado, el circuito enciende los cuatro leds de la boca de llenado segun el estado del deposito de agua limpia.

Cuando el conmutador esta en una de las posiciones Limpias, Grises o Negras, el indicador de aguja da una medida en litros aproximada del deposito seleccionado.

Como este tocho ya es muy largo, el circuito en la proxima entrega...

Aunolose
05/03/2010, 18:42
Tengo una duda, sobre los 12 bits, puesto que los bits de más peso siempre están a uno cuando lo están los superiores ¿no serían en realidad 2 bits? quiero decir.
nivel bajo, los cuatro tornillos estarán:
1000
nivel medio bajo
1100
nivel medio alto
1110
nivel alto
1111

en total, cuatro opciones, se codifican en 2 bits ¿no? si acaso 3, contando el 0000 como "vacío".

navegante 420
05/03/2010, 19:23
mas, mas..... dedalo no me dejes así......

Aunolose
05/03/2010, 19:47
Tengo una duda, sobre los 12 bits, puesto que los bits de más peso siempre están a uno cuando lo están los superiores ¿no serían en realidad 2 bits? quiero decir.
nivel bajo, los cuatro tornillos estarán:
1000
nivel medio bajo
1100
nivel medio alto
1110
nivel alto
1111

en total, cuatro opciones, se codifican en 2 bits ¿no? si acaso 3, contando el 0000 como "vacío".


los bits de menos peso, quise decir...

Dedalo
05/03/2010, 23:52
Pues tienes razon en parte.

Son cuatro bits y los cuatro son utiles. Cuando el deposito esta vacio tenemos todo a cero y con el deposito lleno tenemos todo a uno, por lo que son cinco estados:

0000 -> Vacio
0001 -> 1/4
0011 -> 1/2
0111 -> 3/4
1111 -> Lleno

Podria haberlo codificado para llevar solo tres bits:

000
001
010
011
100

Pero es demasiado engorro para ganar solo un bit.

Ademas le he sacado una utilidad extra a ese bit, pues a veces los tornillos se ensucian y dan problemas, transmitiendo todos los bits puedo detectar si uno de ellos esta mal por suciedad en los contactos.

0000 -> Vacio
0001 -> 1/5
0010 -> ERROR
0011 -> 1/2
0100 -> ERROR
0101 -> ERROR
0110 -> ERROR
0111 -> 3/4
1000 -> ERROR
1001 -> ERROR
1010 -> ERROR
1011 -> ERROR
1100 -> ERROR
1101 -> ERROR
1110 -> ERROR
1111 -> Lleno

Voy a empezar contando como evolucionó el circuito.

Al principio era una cajita colocada en el panel electrico de la AC con unos leds y un conmutador. El conmutador tenia tres posiciones:

1) A un lado me permitia ver en doce leds los niveles de los depositos.
2) Al otro lado permitia ver los leds de agua limpia en la bocana de carga
3) En el centro permanecia apagado.

El esquema es el de la figura, como veis utilicé un conmutador doble de tres posiciones.

26388

Los circuitos integrados son dos CD4069, dos inversores sextuples CMOS. Las resistencias de pull-up en la entrada son de 270K y las resistencias en serie con los leds son de 1K.

Dedalo
06/03/2010, 01:15
Los leds son muy bonitos, pero a una AC del 89 le va mas un indicador analogico de aguja, asi que incorporé uno que encontré en la chatarra con una leve modificacion del cuadrante.

Este es el medidor...

26390

Y para que este funcione, quité los LED's y aproveché las resistencias para hacer la conversion A/D.

Este es el circuito modificado:

26391

En este circuito he puesto un selector doble de 5 posiciones.

1) Apagado
2) Indica en los leds de la bocana de carga la cantidad de agua limpia.
3) Indica en la aguja el nivel de agua limpia.
4) Indica en la aguja el nivel de agua gris.
5) Indica en la aguja el nivel de agua negra.

Dedalo
06/03/2010, 01:41
Y despues, para poder explotar esta informacion desde la centralita, le incorporé un registro de desplazamiento de 12 bits. Cuando el procesador de la centralita activa la alimentacion al circuito de los niveles, se alimentan los circuitos CMOS a 5 V, junto con los TTL, por lo que son compatibles, cuando se activa desde el conmutador, solo se alimentan los circuitos CMOS a 12V quedando los TTL sin alimentar, asi evito tener que poner reguladores.

Este es el esquema...

26393

Aunolose
06/03/2010, 15:47
Ok, ahora me tengo que ir a comer, ya miraré los circuitos más despacio.

Navegante, ¿el registro de desplazamiento te suena? :D de aquí puedes sacar ideas para el teclado de la impresora...

Dedalo
06/03/2010, 21:19
Esta es la ultima version, que esta probada sobre la mesa y ya funciona, pero la tengo ya mas de tres meses y no la he instalado aun por falta de tiempo.

La hice solo para probar como funcionan las PAL. Fue un trabajo bonito.

El esquema es el siguiente:

26423

Como veis, ahora los leds de la bocana de carga se encienden desde la centralita.

El fichero fuente de la PAL es este:



;PALASM Design Description
;---------------------------------- Declaration Segment ------------
TITLE niveles
PATTERN niveles
REVISION rev 1
AUTHOR tony
COMPANY Dedalo
DATE 04/30/09
CHIP _niveles PALCE20V8
;---------------------------------- PIN Declarations ---------------
PIN 1 clk ; Reloj desde CPU
PIN 23 I0 ; Entrada Bit 0 L
PIN 2 I1 ; Entrada Bit 1 L
PIN 3 I2 ; Entrada Bit 2 L
PIN 4 I3 ; Entrada Bit 3 L
PIN 5 I4 ; Entrada Bit 0 G
PIN 6 I5 ; Entrada Bit 1 G
PIN 7 I6 ; Entrada Bit 2 G
PIN 8 I7 ; Entrada Bit 3 G
PIN 9 I8 ; Entrada Bit 0 N
PIN 10 I9 ; Entrada Bit 1 N
PIN 11 IA ; Entrada Bit 2 N
PIN 14 IB ; Entrada Bit 3 N
PIN 21 RST ; Reset
PIN 22 SDA REGISTERED ; Salida serie
PIN 20 SD0 REGISTERED ; no usado
PIN 18 L3 REGISTERED ; Salida Bit 3
PIN 17 L2 REGISTERED ; Salida Bit 2
PIN 16 L1 REGISTERED ; Salida Bit 1
PIN 15 L0 REGISTERED ; Salida Bit 0
PIN 19 SL REGISTERED ; No usado
PIN 13 OE ; A masa
;----------------------------------- Boolean Equation Segment ------
EQUATIONS
SL = RST
L0 = /SL*/RST* I0
+ SL* RST*/L0
L1 = /SL*/RST*I1
+ SL* RST*L0*/L1
+ SL* RST*/L0*L1
L2 = /SL*/RST*I2
+ SL* RST*L0*L1*/L2
+ SL* RST*/L1*L2
+ SL* RST*/L0*L1*L2
L3 = /SL*/RST*I3
+ SL* RST*L0*L1*L2*/L3
+ SL* RST*/L2*L3
+ SL* RST*/L1*L2*L3
+ SL* RST*/L0*L1*L2*L3
SD0 = /L0* L1* L2*/L3*I7*RST ; Posicion 6 SD I7
+ L0* L1* L2*/L3*I8*RST ; Posicion 7 SD I8
+/L0*/L1*/L2* L3*I9*RST ; Posicion 8 SD I9
+ L0*/L1*/L2* L3*IA*RST ; Posicion 9 SD IA
+/L0* L1*/L2* L3*IB*RST ; Posicion A SD IB
SDA = /L0*/L1*/L2*/L3*I0*RST ; Posicion 0 SD= carga I0
+ L0*/L1*/L2*/L3*I1*RST ; Posicion 1 SD= carga I1
+/L0* L1*/L2*/L3*I2*RST ; Posicion 2 SD= carga I2
+ L0* L1*/L2*/L3*I3*RST ; Posicion 3 SD= carga I3
+/L0*/L1* L2*/L3*I4*RST ; Posicion 4 SD= carga I4
+ L0*/L1* L2*/L3*I5*RST ; Posicion 5 SD= carga I5
+/L0* L1* L2*/L3*I6*RST ; Posicion 6 SD= carga I6
+ SD0*RST ; Posicion 7-B SD= SD0(n-1)
;-------------------------------------------------------------------


La razon de la salida no usada SD0 es porque como solo dispongo de 8 terminos en cada ecuacion y tengo que manejar 12 bits, necesitaba un calculo intermedio.

La salida /SL la calculé para que fuese una activacion de los leds de la bocana de carga, para que no se encendiesen cuando la centralita comprueba los niveles, pero finalmente la descarté porque habia que meter un transistor en el circuito, y en realidad, cuando la CPU consulta los 12 bits apenas tarda unos milisegundos, vamos, un destello invisible en los leds.

Las salidas de los leds, durante el tiempo que RST esta bajo reflejan el estado de los cuatro bits de estado de las aguas limpias, pero cuando RST esta alto se comporta como un contador que me sirve para contar que bit debe estar en la salida en cada momento.

Cuando la CPU quiere mantener los Leds encendidos y dando el nivel de aguas limpias mantiene bajo RST y da pulsos ed Clk para refrescar los cuatrobits.

Cuanto la CPU necesita transferir los 12 bits pone RST bajo, da un par de pulsos de CLK y despues levanta RST. el primer pulso de CLK se baja SL (apagado de los leds) y despues del segundo pulso de CLK ya sale el primer bit por la salida, a continuacion se comporta como un registro de desplazamiento, cada pulso de CLK sale el siguiente bit por SDA.

Dedalo
06/03/2010, 21:27
Como curiosidad este es el mapa de fusibles de la PAL despues de compilar:

Por cierto, pensaba que lo habia hecho hace tres meses y lleva compilado desde abril de 2009 (lo acabo de ver en la fecha, 30/04/09)



PALASM4 PAL ASSEMBLER - MARKET RELEASE 1.5a (8-20-92)
(C) - COPYRIGHT ADVANCED MICRO DEVICES INC., 1992

TITLE :Niveles AUTHOR :tony
PATTERN :Niveles COMPANY:Dedalo
REVISION:rev 1 DATE :04/30/09

PAL20V8
_NIVELES*
QP24*
QF2706*
G0*F0*
L0000 1111111111011101111111111111111111111111*
L0040 1101111111011111111111101110111011101111*
L0080 0111111111011111111111101110111011011111*
L0120 1111011111011111111111101110110111101111*
L0160 1111111111010111111111101101111011101111*
L0200 1111111101011111111111101110110111011111*
L0240 1111111111011111011111101101111011011111*
L0280 1111111111011111111101101101110111101111*
L0320 0000000000000000000000000000000000000000*
L0360 0000000000000000000000000000000000000000*
L0400 0000000000000000000000000000000000000000*
L0440 0000000000000000000000000000000000000000*
L0480 0000000000000000000000000000000000000000*
L0520 0000000000000000000000000000000000000000*
L0560 0000000000000000000000000000000000000000*
L0600 0000000000000000000000000000000000000000*
L0640 1111111111011111111111011110110111101101*
L0680 1111111111011111111111011110111001101111*
L0720 1111111111011111111111100101110111101111*
L0760 1111111111011111111111011110111011010111*
L0800 1111111111011111111111101101010111011111*
L0840 0000000000000000000000000000000000000000*
L0880 0000000000000000000000000000000000000000*
L0920 0000000000000000000000000000000000000000*
L0960 1111111111011111111111111111111111111111*
L1000 0000000000000000000000000000000000000000*
L1040 0000000000000000000000000000000000000000*
L1080 0000000000000000000000000000000000000000*
L1120 0000000000000000000000000000000000000000*
L1160 0000000000000000000000000000000000000000*
L1200 0000000000000000000000000000000000000000*
L1240 0000000000000000000000000000000000000000*
L1280 1111111111011111110111011111111111101111*
L1320 1111111111011111110111011111111011111111*
L1360 1111111111011111110111011110111111111111*
L1400 1111111101101111111011111111111111111111*
L1440 1111111111011111110111101101110111011111*
L1480 0000000000000000000000000000000000000000*
L1520 0000000000000000000000000000000000000000*
L1560 0000000000000000000000000000000000000000*
L1600 1111111111011111110111111101111111101111*
L1640 1111111111011111110111111101111011111111*
L1680 1111011111101111111011111111111111111111*
L1720 1111111111011111110111111110110111011111*
L1760 0000000000000000000000000000000000000000*
L1800 0000000000000000000000000000000000000000*
L1840 0000000000000000000000000000000000000000*
L1880 0000000000000000000000000000000000000000*
L1920 0111111111101111111011111111111111111111*
L1960 1111111111011111110111111111110111101111*
L2000 1111111111011111110111111111111011011111*
L2040 0000000000000000000000000000000000000000*
L2080 0000000000000000000000000000000000000000*
L2120 0000000000000000000000000000000000000000*
L2160 0000000000000000000000000000000000000000*
L2200 0000000000000000000000000000000000000000*
L2240 1101111111101111111011111111111111111111*
L2280 1111111111011111110111111111111111101111*
L2320 0000000000000000000000000000000000000000*
L2360 0000000000000000000000000000000000000000*
L2400 0000000000000000000000000000000000000000*
L2440 0000000000000000000000000000000000000000*
L2480 0000000000000000000000000000000000000000*
L2520 0000000000000000000000000000000000000000*
L2560 1111111100000000000000000000000000000000*
L2600 0000000000000000000000000000000001000000*
L2640 1111111111111111111111111111111111111111*
L2680 11111111111111111111111101*
C8498*
6D3A

Dedalo
12/03/2010, 23:30
Pues hoy he probado el invento en la AC y tiene bastante error en la marcacion de la aguja. Una vez en casa he detectado que el problema es la baja resistencia del instrumento, pues es un instrumento muy antiguo de 1 mA fonfo escala. La intensidad a traves del instrumento era tan grande que se perdia linealidad en el convertidor D/A.

Lo he solucionado poniendo un transistor en el instrumento, ya marca bien. Mañana lo pruebo en la AC otra vez.

El esquema de la modificacion es este:
26722

Aunolose
13/03/2010, 20:17
A lo mejor cambiando (bajando) el valor de las resistencias... lo digo porque 1 mA si que dan las puertas lógicas, se hace el calculo para que cada nivel de los 5 aporte 200uA y ya está, ¿no? a 5V y 200uA son 25K que serían o 27K o 22K, mejor 22K que no llegará a 5V.

No sé, se me ocurre que puede funcionar,

Dedalo
14/03/2010, 00:30
Las resistencias son de 10K y aun asi la linealidad se ha perdido completamente.

La resistencia interna del voltimetro de 5V fondo escala y 1 mA de consumo son 5 K. Con el nuevo invento del transistor se pone 100 K a positivo, lo que hace una variacion de la linealidad despreciable, ademas el consumo de la base del transistor aun minimiza mas el efecto. El diodo es para evitar el salto de 0,6V de la base del transistor. Como el transistor tiene una ganacia de corriente de mas de 200, el voltaje en el emisor es igual al voltaje de base - 0,6. El diodo evita ese error de 0,6 V, pues en la base hay un voltaje 0,6V mas alto del que hay en el puente resistivo.

Aunolose
15/03/2010, 16:54
Joe, es que 5K para un amperímetro :D ya te digo que no es lineal... ese dato no lo había pensado, cambia mucho las cosas...

Aún así pienso que se podría solucionar con resistencias de tamaño adecuado, pues, aunque fueran 1mA por puerta, si que llega, creo yo. aunque también es cierto que entre todas tampoco llegan a los 5V. Salvo que pongas de la familia 40XX CMOS, que soportan la mayoría 18V de alimentación, así tienes más margen para meterle caña al amperímetro. Aunque te veo convencido, y si ya lo has probado y funciona, pues no es que el transistor supere los 50c de euro :D

Dedalo
15/03/2010, 22:33
Pues tienes razon, al final he tenido que cambiar el circuito porque el problema no era la linealidad.

El circuito lo alimentaba directamente a 12V, pero los 12V en la AC son relativos. Cuando hice la primera medida con el deposito a mitad la placa solar debia de estar cargando la bateria de servicios, por lo que el voltaje era mayor de 13,5V. Me marcaba un poco mas de la mitad. Al hacer la segunda medida la placa se habria derivado a otra bateria, cosas del repartidor automatico. Pues bien, el voltaje debió de bajar de 13V y por eso marcaba un poco menos del lleno.

Lo he solucionado alimentando a 5V con un estabilizador y poniendo las resistencias como tu decias. Lo he estado puteando en casa y ya funciona bien con voltajes entre 10 y 15 V y las variaciones son minimas...

navegante 420
30/03/2010, 19:13
Ok, ahora me tengo que ir a comer, ya miraré los circuitos más despacio.

Navegante, ¿el registro de desplazamiento te suena? :D de aquí puedes sacar ideas para el teclado de la impresora...

Si me suena, pero ya esta, solo me suena, :)

navegante 420
30/03/2010, 19:33
CMOS, pulsos clk, integrados......

Madre lo que me queda por aprender..... pero me interesa mucho, pues hace unos añois instale en mi caravana un a centralita GBC con sensor digital del nivel del agua, pero dicho sensor nunca lo llege a ver, con lo que no esta instalado, y si con tornillos y secuenciales se puede hacer casero, me gustaria hacelo, Esta semana santa os pongo fotos de lo que tengo.

Aunolose
31/03/2010, 15:51
Por cierto ¿los tornillos son inoxidables, verdad? por que si no en poco tiempo tienes el agua roja...

Dedalo
10/04/2010, 20:43
Pues empiezo a dudar que sean inoxidables. Debe de haber algunos oxidados porque cuando lleno los depositos no conducen la corriente todos. Algunos tornillos Puede que por el uso se hayan anodizado, lo que crea una capa aislante sobre la superficie metalica y dejan de funcionar. Cuando compré la AC le di a los depositos un buen lavado con lejia lejia diluida (una botella de 5 litros en cada deposito de aprox. 150 L) y despues de aclarar con agua limpia les di otro lavado con aguafuerte diluido en la misma proporcion y empezaron a funcionar, pero parece que tendré que repetir la limpieza, aunque no me gustaría porque la lejia y el agua fuerte estropean las juntas y las he puesto todas nuevas hace poco. Se me esta ocurriendo meterle un voltaje mas alto y en corriente alterna para ver si vuelven a funcionar.