Autor Tema: Tarjeta controladora de banda transportadora, no se que estoy haciendo mal!!  (Leído 2488 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado rnelson

  • PIC12
  • **
  • Mensajes: 53
Ante todo un cordial saludo,
El siguiente Codigo trata de una tarjeta que controla banda transportadora donde tiene un sensor al inicio y al final (PortB2 y Portb3), para saber que llego a los extremos, y un boton en Porta1 que cuando se activa debe abrir unos reles conectados en los puertos Porta2 y Porta3, la apertura de estos rele va a depender de que sensor este activado, por ejemplo si esta activado el sensor abierto (Portb2) debe accionar el rele de cerrar (Porta3) y viceversa.  

El tema es que lo estoy tratando de simular en el proteus y no hace nada, y lo quisiera simularen el microcode pero no tengo ni idea de como se hace.

En lo que me puedan ayudar a conseguir el error se los agradezco.


Código: [Seleccionar]

DEFINE Osc 4            'Definicion de Oscilador
    
    AB  var byte
    CE  var byte    
    TRISA = %00010      'Puerto A como salida
                        
    TRISB = %00000000   'Puerto B como salida
    
    PORTA = 0           'inicializado los puertos
    PORTB = 0
    ab = 0
    ce = 0
    SYMBOL  ENTRADA     = PORTA.1
    SYMBOL  RELEABRE    = PORTA.2
    SYMBOL  RELECIERRE  = PORTA.3  
    SYMBOL  SABIERTO    = PORTB.2
    Symbol  SCERRADO    = PORTB.3
    SYMBOL  DIP1        = PORTB.4
    SYMBOL  DIP2        = PORTB.5
    SYMBOL  DIP3        = PORTB.6
    SYMBOL  DIP4        = PORTB.7
    
    
inicio:
    
    IF entrada = 1 THEN
    CALL CONSULTAs
    else
    goto inicio
    endif
  
Consultas:
    
    if      sabierto = 0 or scerrado = 0 then
    call    medio
    if      sabierto = 1 or ab = 1 then
    call    cerrar
    if      scerrado = 1 or ce = 1 then  
    call    abre
    endif
    endif
    endif
    return
      
Medio:
    
    low     releabre
    low     relecierre
    if      ab = 1 then
    call    cerrar
    if      ce = 1 then
    call    abre
    pause   500
    endif
    endif
    return
            
Cerrar:    
    
    ab = 0
    while   scerrado = 0
    high    relecierre
    wend
    ce = 1
    return

Abre:
    
    ce = 0
    pause   1000
    while   sabierto = 0
    high    releabre
    wend
    ab = 1
    return

 end

« Última modificación: 07 de Enero de 2010, 21:23:26 por rnelson »

Desconectado Strepto

  • PIC16
  • ***
  • Mensajes: 159
    • Pictronics
Re: Tarjeta controladora de banda transportadora, no se que estoy haciendo mal!!
« Respuesta #1 en: 13 de Enero de 2010, 18:59:00 »
Asi en la primera ojeada me ha entrado una duda: como haces para controlar un rele con dos pines? A mi entender activando la salida activas el rele y desactivando la salida desactivas el rele no? O acaso hay mas de un rele?

Por otra parte he visto que pones esto:

    if      sabierto = 0 or scerrado = 0 then
    call    medio
    if      sabierto = 1 or ab = 1 then
    call    cerrar
    if      scerrado = 1 or ce = 1 then 
    call    abre
    endif

No se si en el compilador que usas tu sera asi, pero despues del primer IF los siguientes (segundo y tercero) deberian de ser elseif no? Y ese "fallo" lo he visto varias veces en diferentes subrutinas. Prueba a cambiarlo y a robar suerte!  :D

Un saludo!

Desconectado rnelson

  • PIC12
  • **
  • Mensajes: 53
Re: Tarjeta controladora de banda transportadora, no se que estoy haciendo mal!!
« Respuesta #2 en: 13 de Enero de 2010, 19:22:43 »
Gracias por tu respuesta.
En efecto son dos rele lo que se conectaran al pic, y ya me funciono, lo unico que hice fue cambiar los pines de entradas al pueto B, y todo funciono bien, ahora porque no me funcionaba con las entradas en el puerto A?, no se.

El compilador que uso es el Microcode plus, ysi lo permite asi.

De todas formas muchisimas gracias por tus consejos nunca estan de mas

Saludos..