PDA

Ver la Versión Completa : Abrir una Cerradura Electrica DelphiXE TComPort


pnsd_89
14-11-2016, 13:48:56
Buenos Días, tardes o noches según en que parte del mundo se encuentren.
Estoy desarrollando un programa "Experimento" donde trato de abrir una cerradura eléctrica.
Estoy utilizando Delphi XE y el componente TCOMPORT para poder enviar una señal a un hardware (el cual tiene un rele) el cual uso como un "interruptor" para la cerradura eléctrica.
El caso es que con el siguiente código


ComPort1.Open;
ComPort1.WriteStr('A');
ComPort1.Open;


donde ComPort1 es un componente TComPort, el sistema envía una señal pero no la mantiene y la tranca hace un ruido pero no llega a abrir.
Hay alguna manera de mantener constante esa señal, puesto que si hago...


ComPort1.Open;
for i := 1 to 100 do
ComPort1.WriteStr('A');
ComPort1.Open;

la cerradura hacen como 4 "patadas" o ruidos rapidos pero no la abre...
Creo que mi problema esta en que la señal positiva no se mantiene en el puerto serial... hay forma de hacerlo?

Desde ya muchas gracias.:eek:

ahh me olvidaba la cerradura es una genérica(china de 12 volt) no se que mas decir sobre la cerradura jaja..

Neftali [Germán.Estévez]
14-11-2016, 15:45:03
¿Y no será el hardware el que tiene que mantener la señal?
Deberías revisar las especificaciones del dispositivo, para ver exactamente qué debes enviar.

pnsd_89
14-11-2016, 20:56:13
¿Y no será el hardware el que tiene que mantener la señal?
Deberías revisar las especificaciones del dispositivo, para ver exactamente qué debes enviar.
Hola Neftali, tanto tiempo!
La verdad que el dispositivo lo fabrico un amigo Ing. Electronico, es una placa super sencilla que tiene un rele que va conectada a la tranca electrica, hoy estuve investigando mas y pude ver que el Comport.WriteStr('A'); envia la señal de esos bits y muere, voy a cambiarlo dentro de unas horas por:

Comport1.open;
Comport1.SetRTS(true); //Segun la documentacion de TComport activa y envia una señal continua +15v al RTS( el pin 7 en un RS232)
sleep(5000);
Comport1.SetRTS(true); // señal -15v



Lo acabo de probar con un tester(multimetro) y al parecer funcionara...
Ampliaremos luego de la prueba con la tranca ^\||/

pnsd_89
15-11-2016, 12:41:56
en el codigo me olvide de cambiar a false deberia ser asi

Comport1.open;
Comport1.SetRTS(true); //Segun la documentacion de TComport activa y envia una señal continua +15v al RTS( el pin 7 en un RS232)
sleep(5000);
Comport1.SetRTS(false); // señal -15v

Casimiro Notevi
15-11-2016, 12:56:05
¿Necesita 5 segundos?

pnsd_89
15-11-2016, 14:40:54
¿Necesita 5 segundos?
Don Casimiro! pensé que seria un comentario con el link de las normas de uso del foro jaja ;)
Ayer no pude ir a modificar la placa, hoy tengo pensado hacerlo.
Los 5 segundos fue para poder probar si el voltaje se mantenia arriba en True, con un multimetro y fue asi, el colocar la agujas del multimetro y colocarlos sobre los pines del serial me llevaba 5 seg. jaja. pero hoy de noche podre ver si son necesarios realmente esos 5 seg.
Lo que hace el programa es que en una pc el usuario coloca su codigo, y si es correcto habilita la cerradura que esta a unos cuantos pasos de donde el usuario ingresa su codigo. :)

pnsd_89
16-11-2016, 03:08:59
fumciono!!!!!!!!:-|!!!:-|!!!:-|!!!:-|
el codigo final es este

if activarTranca then
begin
// Para activar tranca
ComPort.Port := sTrancaPort;//variable que lee de un .ini contiene COM1 o el puerto que fuere
ComPort.Open;
ComPort.SetRTS(True);
Sleep(3000);// Casimiro este quedo en 3 segundos nada mas jeje
ComPort.SetRTS(false);
ComPort.Close;
activarTranca := false;
end;

Casimiro Notevi
16-11-2016, 10:44:49
Estupendo.
¿Has probado con menos tiempo?

Neftali [Germán.Estévez]
16-11-2016, 11:27:50
¿Has probado con menos tiempo?

Yo he pensado lo mismo.
3 sg. me parece demasiado tiempo. Tal vez algo entre 200 ms. y 500 ms. parecería algo más lógico (de todas formas eso debería estar en las especificaciones).

Casimiro Notevi
16-11-2016, 11:32:33
Yo he pensado lo mismo.
3 sg. me parece demasiado tiempo. Tal vez algo entre 200 ms. y 500 ms. parecería algo más lógico (de todas formas eso debería estar en las especificaciones).
Hace tiempo programé una de esas y necesitaba entre 100 y 200 ms. Con 100, a veces no le daba tiempo, así que la dejé en 200 y siempre se abría.
Lo mismo la de este caso necesita más tiempo.

pnsd_89
16-11-2016, 12:11:49
Estupendo.
¿Has probado con menos tiempo?
Si.. y la cerradura china que uso (creo que es por el mecanismo que usa) no mantiene abierta el tiempo suficiente

pnsd_89
16-11-2016, 12:14:29
Hace tiempo programé una de esas y necesitaba entre 100 y 200 ms. Con 100, a veces no le daba tiempo, así que la dejé en 200 y siempre se abría.
Lo mismo la de este caso necesita más tiempo.
Lo que pasa es que la cerradura que tengo es una generica, y de origen chino... por ende sus especificaciones estan en chino... por fortuna pude encontrar entre sus tantas letras chinas un 12v.
Ahora la placa que uso lo fabrico un amigo Ing. en electronica y fue algo tipo experimental, osea ahora debemos hacer las especificaciones de ese circuito.

Neftali [Germán.Estévez]
16-11-2016, 12:26:03
Lo que pasa es que la cerradura que tengo es una generica, y de origen chino... por ende sus especificaciones estan en chino...


Aun has sacado algo en claro...
:D:D:D