Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

14/04/2016 #1


¿Cómo configurar los puertos en MicroCode Studio?
Buenas noches. Mi nombre es Gerardo Salazar.

Mi proyecto es el siguiente:
Es un elevador de 2 pisos y la idea es que al tocar un botón, él suba y por unos reed swich se apague, eso está programado, pero si le vuelvo a dar al botón de subir el sigue subiendo, igualmente al bajar al darle para bajar el llegaría a detenerse cuando el reed swich lo indique.

Ahora bien, a veces me funciona y a veces no me funciona.
Quisiera que alguien pudiera corregir el código para saber qué estoy haciendo mal.
Lo estoy programando con un PIC16F877 y estoy usando el puerto D porque con los demás ya tengo programado un display de 7x5 para una animación de una flecha que sube y otra que baja.

Eso esta casi resuelto, lo que persigo es:
1) Que al tocar el botón de subida o de bajada sea detenido por un reed switch conectado en el puerto.
2) Al estar al final de recorrido, si alguien toca el botón de subida que no funcione, sino el botón contrario.

Espero haberme explicado. Gracias por su tiempo.

Código PHP:
TRISD.0=0
TRISD.1
=1
TRISD.2
=0
TRISD.3
=1
TRISD.6
=0
TRISD.7
=0


FLAG    
VAR BIT
FLAG2   
VAR BIT              
B0      
VAR BYTE 
B1      
VAR BYTE
B2      
VAR BYTE
B3      
VAR BYTE  
x       
var byte 
clear

Main
:
Antirebote para el PushButton
    BUTTON PORTD.0
,0,255,0,B0,1,SUBE
    BUTTON PORTD.2
,0,255,0,B1,1,BAJA
    BUTTON PORTD.4
,0,255,0,B2,1,APAGASUBE
    BUTTON PORTD.5
,0,255,0,B3,1,APAGABAJA
    
GOTO Main

SUBE
:
    IF 
FLAG=and FLAG2=0 THEN  
      HIGH PORTD.1
      FLAG
=
    
ELSE
      
FLAG=0
      LOW PORTD.1
    
ENDIF
    GOTO 
MAIN
BAJA
:
    IF 
FLAG2=and FLAG=0 THEN 
      HIGH PORTD.3
      FLAG2
=
    
ELSE
      
FLAG2=
      LOW PORTD.3
    
ENDIF
    GOTO 
Main

APAGASUBE
:
    IF 
PORTD.6=0 THEN 
    LOW PORTD.1
    
ENDIF
    GOTO 
MAIN
APAGABAJA
:
    IF 
PORTD.7=0 THEN 
    LOW PORTD.3
    
ENDIF
    GOTO 
MAIN
    END 
15/04/2016 #2

Avatar de roberttorres

Buenas Gerardo
Lo ideal seria que adjuntaras la simulación,pero lo que mas o menos entendí es que si el ascensor esta abajo al pulsar el botón bajar no haga nada, pero al pulsar subir el ascensor suba y viceversa si el ascensor esta arriba y se pulsa el botón subir no haga nada y al pulsar bajar el ascensor baje.

Te adjunto la simulación y el código modificado para que lo veas.
17/04/2016 #3


Buenas tardes
Gracias amigo roberttorres lo chequeo esta noche, y lo subo completo para compartirlo con la animacion y todo, gracias por tu tiempo
18/04/2016 #4


Buenas tardes, acá les dejo la simulación para el elevador, señor torres el codigo que me envio esta excelente, y vi me error y apredi esa parte, ahora bien, un detalle, cuando activo el circuito se enciende el motor de subir de una vez y solo se para si le vuelvo a dar al boton, ahora bien, retomo las caracteristicas para terminar de desarrollarlo,

1) al prender el circuito debe estar en espera para esperar la orden de subir o de bajar
2) al tocar el boton de subida o de bajada haga su funcion, y se pare cono un reed swicht ( funcniona)
3) si el ascensor esta arriba que el boton de subir no funcione, y cuando este abajo el boton de bajada no funcione, es para evitar que esta arriba o abajo el boton correspondiente no funcione. (funciona, gracias a torres)
4) el control tiene una matriz de leds que cuando suba salga una flecha que indica que esta subiendo y cuando baje salga la flecha hacia abajo. y cuando este parado aparezca una P

ok. la animacion esta hecha, la probe en otro circuito y funcniona bien, lo que hay es que asociar la subida, la parada, o la bajada, con la animacion. aca dejo la simulacion y el codigo en pbp, para saber en donde esta el error.
gracias.

la idea es seguir aprendiendo y sumar conocimiento a la tecnologia..
saludos desde Venezuela
Archivos Adjuntos
Tipo de Archivo: rar Elevador_2.rar (60,3 KB (Kilobytes), 5 visitas)
18/04/2016 #5

Avatar de roberttorres

Buenas Gerardo.
tengo unas dudas sobre tu circuito:
1- como es que al activar el circuito el motor se activa?, ya lo probaste físicamente?,
configuraste las salidas para que iniciara en 0??.

2- Porque hay 4 botones en tu simulación?? si son solo son dos pisos (planta baja y 1º piso)
19/04/2016 #6


Buenos dias amigo Torres, tiene 4 botones porque en el piso de arriba (que en realidad son 4 metros) tengan la opción de llamarlo y bajarlo, y en planta baja tengan la misma opcion, no lo he probado en físico pero en la simulación al activar el circuito el led que indicaría que sube se prende, use el comando clear pero no funcionó, si lo de los botones es un error entonces los voy a cambiar y colocarlos en puertos diferentes,
19/04/2016 #7

Avatar de roberttorres

Buen día Gerardo
Bueno ahora entiendo lo de los botones, 2 botones estarán dentro del elevador(sube y baja), un botón de sube estará en piso de arriba para llamar al elevador en caso que este abajo y un botón baja estará en la planta baja en caso que el elevador este arriba. esa parte esta bien no tienes que cambiar nada.
Y lo del motor encendido al activar el circuito tienes que poner esto en la cabezera de tu codigo:
portd.1 = 0 ;poner salida subir a 0 , esto es para que no arranque el motor cuando actives el circuito
portd.3 = 0 ;poner salida baja a 0 esto es para que no arranque el motor cuando actives el circuito
19/04/2016 #8


Listo, amigo Torres, solo me falta la Animación, voy a tratar de hacerla ahora el la tarde y la Subo a ver que error estoy cometiendo, gracias por su aporte.
20/04/2016 #9


animacion de matriz de 5x7 en elevador
buenas tardes, acá les dejo la simulación de un circuito que es de un elevador, ya funciona bien pero le agrege una matriz de leds para darle un toque mas visual pero no me funciona, lo hice aparte y funciona pero cuando lo coloco con circuito de los botones no funciona nada, allí están los dos circuitos con animación y sin animación, las características son:
1) cuando presiones el pulsador de subida se vea la flecha hacia arriba
2) cuando presiones el pulsador de bajada se vea la flecha hacia abajo
3) cuando se pare el elevador no se vean las flechas

las simulaciones están hechas solo que no he podido asociar los botones con las animaciones
espero que puedan ver el error que estoy cometiendo, hay un circuito que funciona con la animación y hay otro que funciona los botones

gracias por su tiempo
Archivos Adjuntos
Tipo de Archivo: rar Elevador_2.rar (118,4 KB (Kilobytes), 2 visitas)
Tipo de Archivo: rar animacion_elevador.rar (51,1 KB (Kilobytes), 2 visitas)
20/04/2016 #10

Avatar de roberttorres

Buenas Gerardo
Lo que pasa es que no estas llamado a la Subrutina de animaciones desde tu programa principal te paso el ejemplo en tu codigo:
Código PHP:
CODIGO PARA APAGAR EL ASCENSOR AL LLEGAR ARRIBA
APAGASUBE
:
codigo
else
gosub subeflecha ;llamar a la subrutina de animacion sube flecha
goto apagasube
ENDIF

;
Subrutina de animacion de sube flecha
SUBEFLECHA

codigo
Return ;regresa donde se produjo el gosub 
22/04/2016 #11


Proyecto Elevador
buenas tardes, acá esta todo el circuito simulado y programado, le agregue una animación de parada, es decir que cuando el ascensor este parado aparezca una P en la matriz de led, quiero agradecer públicamente al señor torres, por su aporte al foro, saludos a todos desde venezuela
Archivos Adjuntos
Tipo de Archivo: rar Elevador_Final.rar (88,4 KB (Kilobytes), 5 visitas)
22/04/2016 #12

Avatar de roberttorres

Buenas Gerardo
Un ultimo detalle para tu circuito
1-Hay un delay en tu animacion (cuando el reed switch es apagado tarda un tiempo en apagar el motor, esto es porque tu animacion tiene pausas y por ende tiene que terminar la animacion para volver a tu programa principal). Te paso un ejemplo en tu codigo para que lo puedas corregir.
Código PHP:
SUBEFLECHA:
for 
1 to 10
TU CODIGO
if portd.4 0 then return   ;checar que el reed switch sube no este en 0esto es para evitar el excesivo delay de la animacion
NEXT
RETURN
BAJAFLECHA:
  for 
1 to 10
Tu codigo
if portd.5 0 then return   ;checar que el reed switch baja no este en 0esto es para evitar el excesivo delay de la animacion
 Next
Return 
2- Y por ultimo no te olvides de los fuses para tu micro:
Código PHP:
DEVICE pic16F877AWDT_OFF ' Watchdog Timer desconectado 
@ DEVICE pic16F877A, PWRT_ON ' 
Power-On Timer conectado 
DEVICE pic16F877ABOD_OFF ' Brown-Out Detect desconectado
@ DEVICE pic16F877A, LVP_OFF ' 
Low-Voltage Programming desconectado 
DEVICE pic16F877ACPD_OFF ' Data Memory Code Protect desconectado 
@ DEVICE pic16F877A, PROTECT_OFF ' 
Program Code Protection desconectado 
03/05/2016 #13


proyecto elevador
Buenas tardes, aca dejo el proyecto completo del el elevador de dos niveles, una vez mas agradezco al señor torre por su conocimiento y aporte al proyecto, de verdad gracias una vez mas.
Archivos Adjuntos
Tipo de Archivo: rar elevador.rar (86,5 KB (Kilobytes), 3 visitas)
03/05/2016 #14

Avatar de roberttorres

Buenas Gerardo
excelente proyecto y para eso estamos, para ayudarnos.
Pd: te adjunto tu proyecto con algunas pequeñas modificaciones
Archivos Adjuntos
Tipo de Archivo: rar elevador.rar (116,2 KB (Kilobytes), 8 visitas)
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.