Necesito ayuda.Estoy intentando utilizar el BS2 para controlar una maqueta de trenes miniatura.He montado el circuito tal y como está en los experimentos 23 y 24 de StampWorks para mandar y recibir. Utilizo el mismo clock para los dos integrados, lo demás van a P1,2,3 y 4.Las salidas casi todas NO son led sino transistores que tendran algún retardo y las entradas será fotodiodos que masnejarán a los transistores de salida. Las salidas podrán activarse una o varias al mismo tiempo con una sola entrada.
El programa no soy capaz de que funcione,porque no sé como detectar un 1 en la posicion de 8 bit, y es aquí donde os pido ayuda por si me lo podeis  solucionar, ya que llevo varios dias y no doy con el programa.
Muchas gracias,

Visitas: 656

Responde a esto

Respuestas a esta discusión

Hola José,
Vamos a ir por partes...

1º Comprobemos el circuito de SALIDAS
--------------------------------

Supongo que te estás refiriendo al experimento 21 en el que tratamos de expandir el nº de salidas (8) a partir de 3 líneas del BASIC Stamp.


Entonces el código será este:


Este código va cambiando secuencialmente el estado de las salidas (tratándose de LEDs, estos se encenderán y apagarán a modo de "coche fantástico"). Confírmame primero si estás obteniendo los cambios de estado que deseas en todas las salidas. Para esto, puedes colocar un LED a cada una de las salidas (o vas probando con un sólo LED, salidad por salida).

Otra comprobación a realizar, especialmente en la parte del código que genera el patrón de estados de las salidas, es intercalar una línea con DEBUG que nos muestre el correcto funcionamiento de las subrutinas "Adelante" y "Atras".

A partir de esta comprobación, podemos determinar si existe algún problema en el cicuito de salidas. Si es así, podremos pasar a comprobar el circuito de entradas.

Ya nos dirás cosas...
Ante todo gracias por contestarme, pues sigo atrancado en lo mismo. Aquí te mando lo que quiero hacer y que no sé si es posible. Los interruptores del 165 seran detectores que manejarán a los reles que habrá en el 595.Podrá haber más de un detector activado, con lo cuál tambien habrá mas de un relé actuado. Primero he probado los programas que vienen en el libro y van bien, pero mi problema es que cuando recibo una masa del 165, hacer que se me encienda el led correspondiente.
Espeero haber explicado bien el circuito y si me puedes orientar. Gracias.

Apórtanos también el código del programa, please...
Hola Lorenzo, perdona que tarde en contestar pero he estado haciendo experimentos y al final he decidido mandar un sencillo circuito y lo que quiero hacer, claro que con mas vias cambios, etc.
Te explico y perdona que me alargue; toda la via tiene tensión menos los tramos que son los que se manejan con el BS2. Si activo el TRAMO 1 el TREN "A" se desplaza hacia el paso a nivel; el DETECTOR 2 hará que se cierre el paso a nivel y al pasar por DETECTOR 3 abre paso a nivel, enciende SEMAFOR0 y activa TRAMO 2 con lo cual el TREN "B" se pone en funcionamiento. El TREN "A" SE PARA EN tramo 4 para que pase TREN "B" que de berá parar en TRAMO 1. Etc,.
Todo eso se puede hacer con unos cuantos componentes y algo de cableado, pero cuando tienes muchos tramos , detectores y cambios el cableado se complica y si encima quieres hacer modificaciones, mejor que te pille el tren.
Por eso pedí ayuda; lo único que he cambiado es la entrada de datos del 74HC165 que la he pasado a P5 del BS2.
Haber si me puedes orientar porque estoy perdido.
Gracias.
Archivos adjuntos
Pero ¿qué orientación quieres que te dé? ¿el código del programa?

En cualquier caso, no acabo de ver la necesidad que tienes de utilizar el 74HC165 y el 74HC595 ¿Te das cuenta de que los 16 pines que tienes en el BASIC Stamp te bastan para hacer lo que quieres?
Si partes de la idea de utilizar sólo los pines del BS, no sólo simplificarás el circuíto sino también el programa. El código lo puedes reducir a un sólo bucle principal y varias subrutinas de activación/desactivación.

Es más, puedes comenzar con el código a base de condicionales IF y utilizar simples etiquetas DEBUG para ver cómo se comporta el programa (ya sabes: "paso nivel 1 cerrado", "tramo 1 activado", etc.).

Una vez que veas que te funciona el código con el DEBUG, es el momento de intercalar los transistores para las cargas y su funcionamiento real.
Hola Lorenzo, no quería que se me dé el código del programa, tan solo saber utilizar los bytes que entran al bs2 desde el integrado y saber cómo mandarlo al de salida.De todas formas decido abandonar la idea, porque los circuitos que mandé eran algo teórico. El circuito verdadero del tren tiene 18 tramos aislados, 26 detectores, 8 cambios de via, 5 cruces, semáforos, etc., con lo cual necesitaría cuatro o cinco bs2, y aún así sería un problema para mí pues no sabría como sincronizarlos.
De todas formas te agradezco tus respuestas.
Un saludo
Me parece que llego tarde a la discusión, en fin si tienes aún interés te digo que con el bs2 es completamente posible manejar lo que quieres y será mucho mas sencillo que cualquier otra solución pudiendo hacerlo por tablas o por programa tendrás mas dificultad en hacer los circuitos periféricos que en programarlo.
Un saludo.
Nunca es tarde si la dicha es buena. Gracias por contestar. Estoy liado con la electronica que es mas complicada.Sigo muy interesado, puesto que si ves los correos te habras dado cuenta que utilizo mucho material y conectarlo todo es complicado, además de lo dificil que es hacer cualquier modificación.Si has visto el esquema que mandé con el nombre de "TERMINADO" éra una simplificación no real para que se viera lo que quería hacer, pero la realidad era que tendría otros registros de desplazamiento conectados en serie para conseguir mas entradas y salidas. Lorenzo pensó que ese era el circuito con lo cual podia utilizar un bs2, pero en el circuito real tendría que utilizar unos cinco bs2, y además no sabría como sincronizarlos. En fin si me puedes dar una respuesta te lo agradecería.
Un saludo,
Bueno yo empezaría por hacer el ejemplo terminado, empezamos por lo sencillo, como te dije te será lo mas dificil hacer la placa de registros de desplazamiento que programar el bs2, asi que lo primero será entender como funcionan los integrados si utilizas el integrado que "lee" 74hc165 lo que hace es leer los datos presentes en D0 a D7 y cuando tu le metes pulsos de reloj"CP" el te entregará si hay un 0 o un 1 en "Q7" por lo tanto leeras los 8 bits y tendras que generar 8 pulsos de reloj uno por cada dato a leer, estos se guardaran en una variable definida en tu programa como ves las patillas PL, DS y CE deberan ser puestas a su estado correspondiente si quieres controlar 26 entradas te harían falta 4 integrados con lo cual por lo menos utilizariamos 4 salidas del bs2 para seleccionar cada uno de ellos mas todas las señales comunes que casi me atrevería a decir que sería solo el clok dejando las demas entradas fijas a un estado.


PIN DESCRIPTION
PIN NO. SYMBOL NAME AND FUNCTION
1 PL asynchronous parallel load input (active LOW)
7 Q7 complementary output from the last stage
9 Q7 serial output from the last stage
2 CP clock input (LOW-to-HIGH edge-triggered)
8 GND ground (0 V)
10 Ds serial data input
11, 12, 13, 14, 3, 4, 5, 6 D0 to D7 parallel data inputs
15 CE clock enable input (active LOW)
16 VCC positive supply voltage
Archivos adjuntos
Lo lamento, José. Reconozco que esto me supera...
Bueno Javier, gracias por tu ayuda. Los ejemplos que vienen en el libro ya los hice. El único cambio que hice fué sustituir los integrados por el CD4014 y CD4094 que son iguales y lo único que cambia es las patillas y el voltaje, y son más faciles de encontrar en el mercado. Mi problema sigue siendo el mismo, poder usar los bits que me entran y utilizarlos para alguna función. Leerlos lo sé ya que viene en el ejemplo y los veo en la pantalla, pero si introduzco por ejemplo "00011000" , esos dos unos como los puedo utilizar, con que instrucción. No sé si me comprendes pero no he dejado de hacer pruebas y no consigo utilizarlos.
Gracias y un saludo,
Te recomiendo leer programación del bs2 que hay en Español, de todas formas te mando un ejemplo para que veas la estructura es así como aislas los bit de un dato serie de cualquier longitud, te lo mando desde el trabajo y no se si llegará en el formato correcto.
Un saludo.



' {$STAMP BS2}

' {$PBASIC 2.5}


dato1 VAR Word

tramo2 VAR dato1.HIGHBYTE
tramo1 VAR dato1.BYTE0
semaforo1 VAR tramo1.BIT0
semaforo2 VAR tramo2.BIT0


DO
DEBUG CLS, "Este es el dato serie "
DEBUGIN BIN dato1
PAUSE 3000
DEBUG CLS, "Dato1", CRSRXY, 0, 2,SBIN dato1
PAUSE 3000
DEBUG CLS, "Tramo2", CRSRXY, 0, 2,SBIN tramo2
PAUSE 3000
DEBUG CLS, "Tramo1", CRSRXY, 0, 2,SBIN tramo1
PAUSE 3000
DEBUG CLS, "Semaforo1", CRSRXY, 0, 2,SBIN semaforo1
PAUSE 3000
DEBUG CLS, "Semaforo2", CRSRXY, 0, 2,SBIN semaforo2
PAUSE 3000
LOOP

Responder a debate

RSS

Cursos online y tutoriales


(se requiere registro previo gratuito en PortalArduino.com)

Mantenimiento del sitio

© 2024   Creado por Lorenzo M. Oliver.   [Imágenes licenciadas por Depositphotos.com] Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio