Autor Tema: Control de nivel y llenado de tanque - 16F84a  (Leído 7281 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Control de nivel y llenado de tanque - 16F84a
« en: 14 de Noviembre de 2016, 20:35:49 »
Hola a todos, les dejo para el que le interese, un proyecto que estoy llevando a cabo.
Soy de Comodoro Rivadavia y aca tenemos mucho problema con el agua, en verano es normal que nos corten el suministro una o dos veces a la semana.
Tengo un tanque de 500lts en el techo de casa pero con los cortes se me hace insuficiente, por lo que coloque uno de 2500lts en el suelo, utilice una bomba que llena el tanque del techo y una electrovalvula para activar el llenado automatico del tanque cisterna.
Para el llenado del tanque cisterna se me hace muy complicado utilizar flotante ya que no corta, desconozco por que, pero utilice los plasticos de boya de aire, bocha de telgopor, de bronce, etc etc y rara vez corta, se me revalsa el tanque y tengo el patio inundado.
Lo hice facil, pic, flotantes con switch un circuito sencillo y vamos andando.
Este es el flotante "electrico"

Este es el circuito, perdon por el desorden pero lo tire todo asi nomas para probar la simulacion y hacer el pcb

El circuito lo que hace es:
- Sensar el nivel de agua del tanque superior, al quedar poca agua el flotante envia señal de bajo nivel lo que activa la bomba de llenado, al alcanzar el nivel deseado la bomba se detiene.
- Sensar el nivel de agua del cisterna, cuando baja del 50% se abre la electrovalvula permitiendo que se llene, al alcanzar el nivel deseado la electro se cierra.
- Sensar que el nivel del tanque cisterna no este por debajo del 10%, si estuviera por debajo de este nivel no activara la bomba para evitar enviar basura al tanque superior o quedar trabajando en vacio.

Los leds estan continuamente parpadeando, cuando se acciona la electro o la bomba, el led correspondiente permanece encendido (sin parpadeo).

En caso de bajo nivel en el cisterna los leds de electro y bomba se apagan, y parpadea el de bajo nivel emitiendo un pitido para indicar la emergencia de ausencia de agua.

Este es el codigo:
Código: [Seleccionar]
'Sistema de sensado y llenado de tanque y cisterna - Wolfman77 -
Define CONF_WORD = 0x3ff1
AllDigital
TRISA = 1
TRISB = 0
Symbol stk = PORTA.0  'sensor de tanque
Symbol scisterna = PORTA.1  'sensor de cisterna
Symbol svacio = PORTB.4  'sensor de vacio en cisterna
Symbol ledbba = PORTB.1  'led de estado de bomba
Symbol ledctna = PORTB.2  'led de estado de electrovalvula
Symbol ledvacio = PORTB.3  'led de vacio en cisterna
Symbol bbatk = PORTA.2  'salida de accionamiento de bomba
Symbol electrov = PORTA.3  'salida de accionamiento de electrovalvula

estadosensores:
bbatk = 0
electrov = 0
ledvacio = 0
If stk = 1 Then Goto tk1
If scisterna = 1 Then Goto cisterna
If svacio = 1 Then Goto cvacio
ledbba = 0
ledctna = 0
WaitMs 500
ledbba = 1
ledctna = 1
WaitMs 500
Goto estadosensores

tk1:
If stk = 0 Then Goto estadosensores
If scisterna = 1 Then Goto todostk
If svacio = 1 Then Goto cvacio
bbatk = 1
ledbba = 1
ledctna = 0
WaitMs 500
ledbba = 1
ledctna = 1
WaitMs 500
Goto tk1

cisterna:
If stk = 1 Then Goto todostk
If scisterna = 0 Then Goto estadosensores
If svacio = 1 Then Goto cvacio
electrov = 1
ledbba = 0
ledctna = 1
WaitMs 500
ledbba = 1
ledctna = 1
WaitMs 500
Goto cisterna

todostk:
If stk = 0 Then Goto estadosensores
If scisterna = 0 Then Goto estadosensores
If svacio = 1 Then Goto cvacio
bbatk = 1
electrov = 1
ledbba = 1
ledctna = 1
WaitMs 500
Goto todostk

cvacio:
If svacio = 0 Then Goto estadosensores
bbatk = 0
electrov = 0
ledbba = 0
ledctna = 0
ledvacio = 1
WaitMs 500
ledvacio = 0
WaitMs 500
Goto cvacio

End                                               


Se puede simplificar el codigo? seguro que si...
funciona? hasta ahora si, y no hubo problemas en las pruebas, salvo que se me este escapando algo


Pendiente: Agregar un caudalimetro a la  entrada o salida de la electrovalvula, de modo que cuando el nivel esta por debajo del 10% cada 30min se abra la electrovalvula por 20seg, y si el caudalimetro detecta circulacion de agua se proceda al llenado normal de la cisterna.

Eso es algo que no tuve en cuenta por lo que no es solo agregar lineas de codigo, si no que ademas debere modificar el hard para colocar la entrada del caudalimetro, no es un gran cambio, se puede hacer sobre el mismo pcb.

El Pic utilizado es el 16F84a, basico pero efectivo, y el programa lo hice sobre PSI (Pic Simulator Ide).

Se aceptan sugerencias  :azn:

Exitos!

« Última modificación: 05 de Diciembre de 2016, 14:05:50 por wolfman77 »
Volviendo al mundo de los PIC....