desktop

Uln2003

Viendo los data sheet no tiene diodo de protección contra la fuerza contraelectromotriz.
 
Ese seria el menor de los problemas, de ultima pones un 1n4001 y listo.

El tema es que esos buffer (SN54LS540, SN54LS541, SN74LS540, SN74LS541) como mucho pueden entregar 24mA con una salida en alto de 3,4v (y seguro que a 24mA se cae mas todavia la tension), no creo que puedas mover el rele con eso, salvo que cambies el rele original con el que trabajabas.
 
Proyecto general.
pcserver.png

Te voy a dar una recomendación...de onda ;).

Por que diablos hacés tanto lío usando lenguajes tan diferentes como C# y PHP, mas Apache mas el cliente en C# y/o HTML mas toda la bola?

Si usaras JAVA podrías escribir un servlet de 20 líneas sobre Tomcat y quitarte de encima el 99% de los problemas...usando AJAX sobre el cliente o un simple formulario HTML, según sea tu gusto...

Te lo digo por que lo hice en 1997, con transmisión de imágenes a un applet Java y un montón de cosas más para mi tesis de maestría...y te aseguro que es el camino mas corto, y ahora...también el más actual ;).
 
Última edición:
Buenas:

1) Apache, PHP y MySQL lo quiero para almacenar usuarios desde la base de datos como este mismo foro.

2) Flash o PHP se hará una Interfaz Web para controlar el PIC a distancia. (No conozco todavía Ajax y no se si vale la pena perder el tiempo con ello, por eso no lo uso. Casi uso hasta el .net remoting).

3) C# hace de servidor (también funciona como cliente).

4) Desde vía Web controlo MySQL, C# lee los datos desde MySQL y los interpreta para el puerto serie.

5) Así me ha fucnionado con el 16F84A y 16F88, por eso hice el primer manual sobre instalar servidor Web. (con el tiempo, se hará en Linux). Más adelante haré un buen manual con el control del PIC por Internet.

6) PC-Ciente <-----> PC-Servidor <-----> Puerto COM <-----> PIC16F887 <-----> Dispositivos.

7) A pesar de que me funciona el control de salida del PIC por puerto COM (quizás haga también LPT al mismo tiempo), en estos momentos estoy liado de conseguir que me funcione los pulsadores del puerto C como entrada y lo pase a puerto D como salida sea por pueto serie o por pulsadores.

8) Cuando veas el gran manual, ya verás con es un trabajo muy grande. Eso si, con el tiempo lo mejoraré. Primero tener experiencias de lo que sabe hasta el momento para mejorar en el futuro. Llevo desde Marzo del 2008 y mira la fecha que estamos, estos proyectos me cuesta trabajo y tiempo que no siempre poseo.

9) Puedes ver sus avances poco a poco por aquí. https://www.forosdeelectronica.com/posts/303829/ y aquí https://www.forosdeelectronica.com/posts/301293/
10) Gracias por tu opición.

Saludo.
 
Última edición:
1) Apache, PHP y MySQL lo quiero para almacenar usuarios desde la base de datos como este mismo foro.

OK, no hay problema. Java también lo hace, y sobre cualquier base, no solo MySQL.

2) Flash o PHP se hará una Interfaz Web para controlar el PIC a distancia. (No conozco todavía Ajax y no se si vale la pena perder el tiempo con ello, por eso no lo uso. Casi uso hasta el .net remoting).

OK. Da lo mismo usar Flash, HTML, PHP o Java, solo que con este ultimo trabajás todo en el mismo lenguaje, sin necesidad de cambiar nada ni pelear con otro lenguaje. Java también tiene algo parecido al .net remoting, solo que cuando lo uses te vas a dar cuenta del error de elegirlo ;)

3) C# hace de servidor (también funciona como cliente).

OK. JAVA hace lo mismo, pero la calidad del servidor (Tomcat es desarrollado por la fundación Apache) es muy superior a cualquier cosa que vos o yo podamos hacer.

4) Desde vía Web controlo MySQL, C# lee los datos desde MySQL y los interpreta para el puerto serie.

Sep...es lo mismo, Java puede leerlos también y comunicarse por el puerto serie, y Java en el servlet puede escribirlos en la base de datos.

5) Así me ha fucnionado con el 16F84A y 16F88, por eso hice el primer manual sobre instalar servidor Web. (con el tiempo, se hará en Linux). Más adelante haré un buen manual con el control del PIC por Internet.

6) PC-Ciente <-----> PC-Servidor <-----> Puerto COM <-----> PIC16F887 <-----> Dispositivos.

7) A pesar de que me funciona el control de salida del PIC por puerto COM (quizás haga también LPT al mismo tiempo), en estos momentos estoy liado de conseguir que me funcione los pulsadores del puerto C como entrada y lo pase a puerto D como salida sea por pueto serie o por pulsadores.

La arquitectura que uses da lo mismo, pero el punto 7 no lo entendí.

8) Cuando veas el gran manual, ya verás con es un trabajo muy grande. Eso si, con el tiempo lo mejoraré. Primero tener experiencias de lo que sabe hasta el momento para mejorar en el futuro. Llevo desde Marzo del 2008 y mira la fecha que estamos, estos proyectos me cuesta trabajo y tiempo que no siempre poseo.

9) Puedes ver sus avances poco a poco por aquí. https://www.forosdeelectronica.com/posts/303829/ y aquí https://www.forosdeelectronica.com/posts/301293/

No me cabe duda que es un gran trabajo, por eso me animé a darte una solución que no requiere tanta carga laboral para lograrlo ;).

10) Gracias por tu opición.

De nada.
 
Estimado amigo:

El Java por lo que veo lo dominas muy bien, precisamente no lo domino pero si el C#. Parece que el Java es muy potente en todo, en temas de Internet es de los mejores.

En el punto 7) quiero decir que no se como programar en ensamblador la comunicación en paralelo por puerto COM y pulsadores en la misma salida que son los relés.

dibujoimi.jpg


Esto del Java en Internet parece lo mejor...

Saludo.
 
En el punto 7) quiero decir que no se como programar en ensamblador la comunicación en paralelo por puerto COM y pulsadores en la misma salida que son los relés.

dibujoimi.jpg

Vos querés fijar los bits de salida del port D, ya sea por un dato del puerto serie o por el estado de un pulsador en el puerto C?
Los bits del puerto D operan como "toggle" con los datos de los pulsadores o del puerto serie?
 
Hola:

- Puerto serie actua como entrada.
- Puerto C actúa como toggle (palanca) ya que es entrada digital.
- Puerto D son salidas y son 8 relés.

Estaba pensando en añadir otro PIC en paralelo, que funcione como entrada digital con pulsadores en modo toggle y del puerto COM con otro PIC.

sinttulo1yry.png


Si no logro hacer mi meta, lo hago de una manera o otra.

Saludo.
 
Última edición:
Si usaras un 74165 o cualquier registro de desplazamiento de carga-paralelo / salida-serie podrías tener las ocho entradas adicionales usando solo tres terminales del 16F877. No necesitas un pic adicional y el costo de ese chip es insignificante.

Por otra parte, no comprendo cual es el problema con fijar el valor del puerto D usando la comunicación serie y/o los pulsadores del puerto C. Es tan simple como hacer una XOR entre el valor del puerto C o el recibido por el puerto serie y un registro que contenga el ultimo estado del puerto D....
 
Parece bueno el IC.
exp_io.gif


Por lo qu eveo, debo usar el puerto B en vez del C ya que tiene servicios de interrupción. Lo voy hacer otra vez. Estaba apunto de comprar un expansor de bus, es un integrado de 8 bits Entrada/Salida conectado a I2C.

PCF8574, no se si hay más grande que este, con más pines, por lo que veo, puede usar hasta 8 ó 16 PCF8574 en paralelo, al mismo tiempo, con su nombre cada uno por supuesto.

figure_02.gif


Si conocen otro expansor de bus I2C con más pines me lo dices, no es lo mismo 8 que 40.

A lo que iba.
DEbo cambiar el LCD al puerto C y usar los pulsadores 'toggle' en el puert B ya que tiene lo de interrupción. Lo he intentado, pero si le pica la curiosidad hasta el momento les paso lo que he hecho hasta ahora. Eso si, no hagan caso a los comentarios, está a lo chapuza hasta el código, ejejje. Les paso el ejemplo de proteus de prueba, pero voy a cambiar de puerto B como entrada y LCD al C como salida.

Viendo el precio de PCF8574 cuesta 3.80 € y el PIC16F88 4.50 €. Me da que pensar mejor un PIC que el PCF. Claro que si eligo el PIC16F84A también cuaesta 4.50 € y so escojo el PIC16F627 que es el que tienen en un local que conozco vale el mismo precio. Deja ir a otro sitio a ver cuanto cuesta el PCF8574 y les comento.

Muchas gracias de antemano.
 

Adjuntos

  • PicRS232 16F887.zip
    90.9 KB · Visitas: 36
Última edición:
Otra posible solucion seria implementar un codificador con prioridad, de esta forma por ej. podrias ampliar de 3 lineas a 8.

El unico inconveniente es que solo podrias usar 1 pulsador a la vez, osea no podes presionar 2 o mas pulsadores al mismo tiempo, ya que solo te tomaria el de mayor peso segun hayas puesto en el codificador (por eso debe ser con prioridad).

La otra solucion de usar shifter, tenes la ventaja de poder presionar los pulsadores a la vez, pero es un poco mas complejo el manejo.

Por ultimo, tenes la alternativa 3, que es usar multiplexores, cuyo manejo es parecido al codificador.
 
Gracias por los consejos.

Una curiosidad, mirando estos registros llamados CM1CON0, CM2CON0 y CM2CON1.

¿Hay que deshabilitarlo?

No los he tocado y uso esta configuración.

Código:
    bsf        PEntradasB,EntradaR1B    
    bsf        PEntradasB,EntradaR2B    
    bsf        PEntradasB,EntradaR3B    
    bsf        PEntradasB,EntradaR4B    
    bsf        PEntradasB,EntradaR5B    
    bsf        PEntradasB,EntradaR6B    
    bsf        PEntradasB,EntradaR7B    
    bsf        PEntradasB,EntradaR8B                    
    bcf        PSalidasD,SalidaR1D
    bcf        PSalidasD,SalidaR2D
    bcf        PSalidasD,SalidaR3D
    bcf        PSalidasD,SalidaR4D
    bcf        PSalidasD,SalidaR5D
    bcf        PSalidasD,SalidaR6D
    bcf        PSalidasD,SalidaR7D
    bcf        PSalidasD,SalidaR8D                   
    BANKSEL    ANSEL
    clrf    ANSEL
    clrf    ANSELH
    BANKSEL    TRISB
    movlw    b'11111111'
    movwf    TRISB
    clrw
    clrf    TRISD
    BANKSEL    PORTD

Saludo.
 
Me dejaste la duda, yo no use nunca el 2003, pero el 28xx si, junto con el udn2981 para multiplexar 7segmentos, y yo recuerdo que el 28xx no tenia que invertir ni nada raro, en cambio con el 2981 si por la configuracion tipo pnp.

En la hoja del uln2003 figura el circuito interno (el mismo que el 28xx):



Si el equivalente es correcto y supongamos que la carga fuera una R en serie con un led, para encenderlo tengo que mandarle tension a la base para que sature.

En cambio en la hoja de dato del udn2981 el circuito interno es este:



Nuevamente si el equivalente es correcto y supongamos que la carga fuera una R en serie con un led, para encenderlo tengo que mandarle 0v a la base para que el pnp sature.

hola, estoy mirando un poco y me dio curiosidad esto :
solo por curiosidad, si no les molesta aclararme el ultimo dibujo NO es equivalente a un PNP como han puesto sino a un NPN ya que como se ve en el esquema completo la salida real es la dupla darlington NPN ........o me equivoco ??

y en la data si bien lo dibujan como equivalente a compuertas separadoras NO lo son ya que es capaz de entregar un 1 logico cuando se exita la entrada pero NO es capaz de entregar un 0 (creo que se llama salida push - pull no ?? para hacer una compuerta no inversora ) .
me equivoco ????
 
Última edición:
hola, estoy mirando un poco y me dio curiosidad esto :
solo por curiosidad, si no les molesta aclararme el ultimo dibujo NO es equivalente a un PNP como han puesto sino a un NPN ya que como se ve en el esquema completo la salida real es la dupla darlington NPN ........o me equivoco ??

Fernando:
Ese es un "darlington PNP" de tres etapas. El "darlington" comienza en el PNP y luego tiene dos etapas NPN de muy alta ganancia. Fijate acá: http://en.wikipedia.org/wiki/Sziklai_pair , aunque ese es justo al revés, un NPN con salida PNP...pero se entiende la idea.
 
hola por favor aclarenmelo, a veces me agarra un lapsus y me parece que el mundo se dio vuelta o me estoy poniendo GA-GA ( y me asusta un poco ) .

yo veo una entrada NPN (la flechita que sale) .
si le doy tension ese T se exita mandando a masa (a travez de Rs) a PNP (unico e interno ) o sea disparandolo o sea haciendolo conducir, el PNP interno que esta mas arriba emisor comun a pata 9 .
al conducir ese PNP interno me exita la base de el darlingon NPN .

entrada NPN
salida NPN

que no veo ????????

lo unico raro es que no haya una R . limitando la corriente que manda el PNP al darlington, supongo que si esta pero la omitieron en el dibujo .


ah..........puede ser la confusion que yo miro los T. pero la costumbre si uno dice salida NPN estas suponiendo que es emisor comun , o sea tipo colector abierto y aca usan como colector comun, te da + cuando se exita. sera eso ?????

ahi puse el dibujo, diganme si esta ok
 

Adjuntos

  • viajero 2 jpg.JPG
    viajero 2 jpg.JPG
    32.8 KB · Visitas: 37
Última edición:
Si creo ese equivalente estaria bien y no el que puse yo (faltaria el pull-up en la base del pnp, para garantizar el corte) , ya que como decis si a la entrada tengo 0v no polarizo los 2 transistores y queda abierto por lo tanto el pnp gracias al pull-up que se hace con la R de 20k queda tambien abierto.

Estaba seguro de que con ese driver metiendole 0v a la entrada conducia, tendria que revisar que hice en su momento cuando lo use :LOL: .
 
yo veo una entrada NPN (la flechita que sale) .
si le doy tension ese T se exita mandando a masa (a travez de Rs) a PNP (unico e interno ) o sea disparandolo o sea haciendolo conducir, el PNP interno que esta mas arriba emisor comun a pata 9 .
al conducir ese PNP interno me exita la base de el darlingon NPN .

La entrada no es NPN, esos dos primeros transistores funcionan como una fuente de corriente controlada por tensión. Cuando polarizás la entrada, por el NPN que está conectado al divisor de base del PNP circula una corriente dada por Vbe/1K5=400uA y polariza la base del PNP bajándola de Vcc en 20K * 400uA = 8V, lo que lo manda a conducción. Si no polarizás la entrada, la base del PNP está a Vcc por medio de la R de 20K y está bloqueado.

entrada NPN
salida NPN

La salida NO es NPN: El asunto es que el PNP son los tres transistores de arriba en configuración Sziklai, donde los emisores de los NPN son el colector del PNP, y el emisor del PNP es el emisor de todo el conjunto (junto con los colectores de los NPN)

que no veo ????????
lo unico raro es que no haya una R . limitando la corriente que manda el PNP al darlington, supongo que si esta pero la omitieron en el dibujo .

La R de base NO VA por que no es un transistor PNP en modo conmutación que excita a los darlington. El mismo PNP forma parte del Darlington, solo que es de tres capas en lugar de dos. Y al estar en configuración Sziklai, el conjunto de los tres transistores se comporta como un Darlington PNP de muy alta ganancia de corriente.

ah..........puede ser la confusion que yo miro los T. pero la costumbre si uno dice salida NPN estas suponiendo que es emisor comun , o sea tipo colector abierto y aca usan como colector comun, te da + cuando se exita. sera eso ?????
ahi puse el dibujo, diganme si esta ok

El circuito "equivalente" que has dibuijado a la derecha está MAS O MENOS correcto, pero te falta la R de 20K de la base del PNP a Vcc, que es la que se encarga de bloquearlo cuando la fuente de corriente de base está al corte.
 
gracias, nunca escuche de esa configuracion.

se ven en esto 2 cosas :

1-- siempre es bueno teener un ing. cerca (y)
2 -- que cosa, siempre se aprenden cosas hasta de 2 simples transistores :aplauso:

saludos y gracias

mirando un poco acerca de esa config. encontre :
http://translate.google.com.ar/tran...refox-a&hs=U3o&rls=org.mozilla:es-ES:official
esa la conozco, es mas, la uso, pero con la salida como emisor comun , no como en el dibujo que parece un "seguidor" o sea el emisor a la carga.
igual voy a seguir mirando un poco por la web.

gracias de nuevo ezevalla
 
Última edición:
Atrás
Arriba