Autor Tema: rele alternador de bomba  (Leído 11442 veces)

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

Desconectado 16f

  • PIC12
  • **
  • Mensajes: 73
rele alternador de bomba
« en: 08 de Mayo de 2008, 22:24:03 »

hola amigos como podriamos llevar esto a proton.
he usado contadores , interrupciones  y no le doy


Los relés de alternadores de bomba son relés que reciben señal de un contacto que indica que es necesario bombear agua. El relé cierra un contacto que hace que la bomba Nº 1 actúe. Cuando el contacto exterior al relé abre el contacto del relé también abre. Posteriormente ese contacto exterior vuelve a operar cuando sea necesaria de nuevo la operación de una bomba. En este último caso el relé hace que opere el contacto de la bomba Nº 2. Esto hace posible una operación alternada de las bombas.

sw1 activa , motor1 activa :)
sw1 desactiva, motor1 desactiva :(
sw1 activa , motor2 activa :)
sw1 desactiva , motor2 desactiva :(

se repite la   accion


[/img]

Desconectado raul_juarez_chihuahua

  • PIC10
  • *
  • Mensajes: 19
Re: rele alternador de bomba
« Respuesta #1 en: 09 de Mayo de 2008, 09:46:43 »
inicio:

if sw = 1 then
       M1 = 1
       else
       goto inicio
end if

perro:
if sw = 1 then
        M1 = 0
        else
        goto perro
end if

gato:
if sw = 1 then
        M2 = 1
        else
        goto gato
end if

loro:
if sw = 1 then
       M2 = 0
       else
       goto loro
end if
   
End



SALUDOS desde cd. Juarez
CHihuahua Mexico

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: rele alternador de bomba
« Respuesta #2 en: 09 de Mayo de 2008, 11:38:33 »
Que tal 16f,

mmmm, en cuanto a la solucion que te ofrece raul_juarez_chichuahua no seria muy correcta. Porque de esa manera cuando el SW genere un 1 puede entrar a cualquier IF y eso no se desea. La mejor manera es que utilices un contador. No se como este configurado tu lecterua de switch, es decir si estes usando un puul-up o un pull-down. Suponiendo que estas usando un pull-down, tu codigo seria algo asi:

INICIO:
Contador = 0
INI:
If SW = 1 then
   IF Contador = 0 then
             HIGH MOTOR1           ;Enciende el motor1
             Contador = Contador + 1
            GOTO       INI
   Endif
  If Contador = 1 then
            LOW MOTOR1             ;Apaga el motor1
           Contador = Contador + 1
          GOTO         INI
  Endif
  If Contador = 2 then
            HIGH    MOTOR2
            Contador = Contador + 1
           GOTO     INI
   Endif
   If Contador = 3 then
          LOW     MOTOR2
          GOTO     INI
   Endif
Endif

Debo hacer la alcaracion que en el codigo no esta considerado los rebotes del switch, por lo que deberas eliminarlos. Saludos y espero que te sirva la solucion.

Elreypic.

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: rele alternador de bomba
« Respuesta #3 en: 09 de Mayo de 2008, 12:37:49 »
Saludos!  :-)
Bueno no soy tan experimentado como elreypic2.
Pero, en el último if no debería ir un goto inicio en vez de goto ini? Para que el contador sea aclarado y el ciclo pueda volver a repetirse? O sino colocar dentro del último if, después de Low Motor2 un "contador=0"?
Creo que eso falta, si estoy equivocado me dicen...
Ok nos leemos!  :mrgreen:
« Última modificación: 09 de Mayo de 2008, 12:49:55 por firepic »
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: rele alternador de bomba
« Respuesta #4 en: 09 de Mayo de 2008, 12:46:44 »
Gracias firepic, tienes razon ahi cometi un error. En el ultimo IF el GOTO deberia ir INICIO, es decir sera asi:

INICIO:
Contador = 0
INI:
If SW = 1 then
   IF Contador = 0 then
             HIGH MOTOR1           ;Enciende el motor1
             Contador = Contador + 1
            GOTO       INI
   Endif
  If Contador = 1 then
            LOW MOTOR1             ;Apaga el motor1
           Contador = Contador + 1
          GOTO         INI
  Endif
  If Contador = 2 then
            HIGH    MOTOR2
            Contador = Contador + 1
           GOTO     INI
   Endif
   If Contador = 3 then
          LOW     MOTOR2
          GOTO     INICIO
   Endif
Endif

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: rele alternador de bomba
« Respuesta #5 en: 09 de Mayo de 2008, 12:51:08 »
Saludos reypic2!
Ah ok, entonces estaba en lo cierto...
Bueno como diría ALF... no hay problema! Cualquiera se equivoquea  :D
Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: rele alternador de bomba
« Respuesta #6 en: 09 de Mayo de 2008, 17:19:04 »
INI:
   Pause = 3000 'Hace una pausa de 3 segundos
   If SW = 1 then
      If Contador = 3 then
          LOW     MOTOR2
      Endif
       If Contador = 2 then
          HIGH    MOTOR2
      Endif
      If Contador = 1 then
          LOW MOTOR1             ;Apaga el motor1
      Endif
      IF Contador = 0 then
          HIGH MOTOR1           ;Enciende el motor1
      Endif
      contador = contador + 1
      if contador > 3 then contador = 0
   endif
goto ini
End

Asi quedara un poco mejor y los reles no parecerán una orquesta cada vez que se pulsa la tecla.

PD. No conozco la sintaxis del lenguaje, asi que no compilara el programa... :mrgreen:
Saludos desde Granada, España.

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: rele alternador de bomba
« Respuesta #7 en: 09 de Mayo de 2008, 17:36:17 »
Uf! Muchísimo mejor!  :-/
Tienes razón dogflu, de la forma anterior los contactos de los relés estarían continuamente como bailando samba  :D
Ok nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: rele alternador de bomba
« Respuesta #8 en: 09 de Mayo de 2008, 17:47:51 »
DE igual forma funcionaria con un select case  :mrgreen:

Saludos

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: rele alternador de bomba
« Respuesta #9 en: 09 de Mayo de 2008, 18:05:03 »
Bueno todavía mejor pues, qué decir?
Eso evitaría tener que invertir la cosa y colocar 0,1,2,3 (que se ve más elegante) en lugar de 3,2,1,0...
Entonces, modificando el codigo de dogflu, quedaría así Ralph?:

INI:
   Pause = 3000 'Hace una pausa de 3 segundos
   If SW = 1 then
      Select case Contador
          case 0
              HIGH MOTOR1           ;Enciende el motor1
          case 1
              LOW MOTOR1             ;Apaga el motor1               
          case 2
              HIGH MOTOR2
          case 3
              LOW MOTOR2
      End Select
      contador = contador + 1
      if contador > 3 then contador = 0
   Endif
   goto ini

Bueno así se ve más dindo dindo  :D
Se aceptan más mejoras!  :)

Ok nos leemos!  :mrgreen:
« Última modificación: 09 de Mayo de 2008, 18:07:17 por firepic »
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: rele alternador de bomba
« Respuesta #10 en: 09 de Mayo de 2008, 18:23:35 »
Asi es firepic!

Saludos

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: rele alternador de bomba
« Respuesta #11 en: 09 de Mayo de 2008, 18:28:23 »
Si, asi quedo mas elegante... :D
Saludos desde Granada, España.

Desconectado 16f

  • PIC12
  • **
  • Mensajes: 73
Re: rele alternador de bomba
« Respuesta #12 en: 09 de Mayo de 2008, 20:37:27 »
hola amigos gracias por los aportes pero es mas menos lo que he hecho. el programa que uds expucieron tiene un problema
que al quedar el sw enganchado recorrera toda secuencia, es efectivo para un pulsador que solo interviene en un segundo.

la idea es que si el sw se activa enviando un 1  el  motor 1 se activa, pero si dejo de precionar deja de funcionar el m1

luego tendremos una nueva secuencia  con el mismo pulsador  pero ahora activando el motor 2

esto se repite     

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: rele alternador de bomba
« Respuesta #13 en: 09 de Mayo de 2008, 20:57:56 »
INI:
      If Contador = 3 then
         while sw=1
             LOW     MOTOR2
             gosub wait
         wend
         contador = 4
      Endif
       If Contador = 2 then
          while sw=1
              HIGH    MOTOR2
              gosub wait
          wend
          contador = 3
      Endif
      If Contador = 1 then
          while sw=1
              LOW MOTOR1             ;Apaga el motor1
              gosub wait
          wend
          contador = 2
      Endif
      IF Contador = 0 then
          while sw=1
              HIGH MOTOR1           ;Enciende el motor1
              gosub wait
          wend
          contador = 1
      Endif
      if contador >= 4 then contador = 0
goto ini
End
wait:
    pausa 3000
return

Me parece que esto si que lo hace...  :-)
Saludos desde Granada, España.

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: rele alternador de bomba
« Respuesta #14 en: 09 de Mayo de 2008, 21:48:13 »
Saludos!  :-)
Bueno no había visto la respuesta de dogflu, pero por aquí tienes este código... esta vez no utilizo contador, tal vez sea un poco rudimentaria la lógica pero por lo menos el código es más corto.
Lo simulé en proteus y va de lo lindo, allí te dejo el archivo con la simulación y el .bas y .hex para que lo pruebes.

Código: [Seleccionar]
SW      var PORTB.0
motor_1 Var PORTB.1
motor_2 Var PORTB.2

loop:   if SW==0 then
           pause 100
           while SW==0
             HIGH motor_1
           wend
        else
           goto loop
        endif
        LOW motor_1
evalua: if SW==0 then
           pause 100
           while SW==0
             HIGH motor_2
           wend
        else
           goto evalua
        endif
        LOW motor_2
goto loop
END

El switch está simulado por un pulsador NA, conectado de forma tal que al cerrarlo = GND. Lo coloqué así porque es la configuración que más uso, pero si deseas que al presionar sea = 1, entonces simplemente cambia donde dice SW==0 por SW==1...
Los motores están simulados por un par de leds azules.
Por cierto, usé PIC16F84A y frecuencia de trabajo 4MHz solo para probar... como sabrás eso también lo puedes cambiar.

Ok espero te ayude, nos leemos!  :mrgreen:

P.D. Como verás, esto lo hice con pic basic... tu pedías proton, pero es que no manejo ese compilador... :D  aunque creo que no te costará adaptarlo a proton... :mrgreen:
« Última modificación: 09 de Mayo de 2008, 21:57:52 por firepic »
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web