miércoles, 16 de marzo de 2011

Proyecto OpenDoor v2

La versión anterior de OpenDoor hizo muy bien su trabajo abriendo la puerta al perrete, pero dejarla abierta no soluciona el problema del todo. Así que os presento la segunda versión, capaz de abrirla y cerrarla.




Motor de cierre
Lo primero es ver como hacemos para que la puerta se cierre. Para abrirla girabamos la manivela y la propia puerta se abria por el ajuste de las gomas, pero esto juega en nuestra contra para cerrarla, porque está bastante dura y no va a servir cualquier motor. En un vistazo por el taller, una ceja se me sube al ver esta pequeña maravilla:

Motor elevalunas reciclado


Se trata de un viejo motor elevalunas que sustituimos en el coche porque se atascaba. El problema que tenía estaba relacionado con el cable de acero de subir y bajar el cristal, asi que para darle una nueva vida útil simplemente lo he sustituido por un cable de freno de la bici (también reutilizado, jeje). 

Cable de freno de bici adaptado al motor elevalunas

Se puede ver como por un lado lo he enganchado al carrete, y en el otro extremo le he hecho un lazo con un perno y su tuerca. Lo he probado alimentandolo a 12 V y menuda fuerza tiene el condenado, esto va a haber que sujetarlo muuuy bien.
Otra cuestión a tener en cuenta es que el motor una vez que recoge el cable no hay forma de desenrollarlo por mucho que se estire de él. Hay que hacer que sea el propio motor el que suelte el cable invirtiendo su polaridad o la puerta se va a quedar bloqueada una vez que se cierre.

Sujeción del motor
La forma más facil de estirar de la puerta sin tener que hacerle ningun agujero es usando la rejilla de ventilación. Se necesita bastante fuerza para cerrarla estirando desde ahí, pero teniendo en cuenta las pruebas más bien tengo miedo de que arranque la puerta.
Para sujetarlo a la pared he aprovechado los tres agujeros originales del soporte.
Motor de cierre instalado.

Para controlar el posible exceso de fuerza, y de paso que se cierre más o menos suavemente (sin tirones) he usado un trozo de goma con un sensor de fuerza casero. El sensor de fuerza abre un circuito eléctrico cuando la goma se ha estirado lo suficiente, así el microcontrolador sabrá cuando desconectar el motor.

Esquema del gancho elástico con sensor de fuerza

En la imagen de arriba el gancho no está haciendo fuerza y las dos partes metálicas del circuito están juntas cerrando un circuito eléctrico. En la imagen de abajo el gancho está estirando en la dirección de las flechas y las dos partes metálicas del sensor se han separado, abriendo el circuito. Esto es básicamente lo que se ve en la siguiente imágen.

El gancho elástico con sensor de fuerza en la Vida real®

Sí, esta parte parece bastante cutre, pero funciona :P. El sensor con los contactos eléctricos estan sujetos al gancho, y la brida blanca estira de él cuando la goma se ha estirado lo suficiente.

Vista de los motores

Por último comentar que para que no arrastre el enganche elástico y pueda molestar le he atado una cuerdecita con un contrapeso.

Controlador del motor
Se podría hacer el controlador con semiconductores tales como mosfets, pero como estoy tratando con motores que van a estar en la intemperie y de cierta potencia prefiero aislarlos usando relés.
En la anterior versión, un relé alimentado por unos transistores darlington alimentan el motor que gira la manivela. Para esta versión además hay que ser capaz de poder girar el motor de cerrar la puerta en dos sentidos, y eso se hace normalmente usando un puente H. Buscando en internet he visto como hacer un puente H con cuatro relés (H-Bridge), pero ¿para qué usar cuatro si se puede hacer con solamente dos?

Esquema de puente H con dos relés

Si activamos el relé 1 girará en un sentido, y si activamos el relé 2 girará en el otro. Si activamos los dos no hará nada. A diferencia de un puente H normal, éste no se puede configurar para que el motor gire libremente (o bien está funcionando o bien sus contactos están cortocircuitados, actuando de freno magnético) pero esto aquí da igual.

Buscando de nuevo en el cajón desastre encuentro esta placa de relés.

Placa de relés

La verdad es que me da lástima desoldarlos porque se podria utilizar tal cual para otro proyecto, pero mejor eso que comprarlos.

Fuente de alimentación
La versión anterior del proyecto usaba una fuente de alimentación de las tradicionales, con su transformador y su regulador de voltaje lineal. Era muy grande y el voltaje caía bastante cuando se activaba el motor, asi que hubo que poner bastantes condensadores que "amortiguaran" esta caida.
Para esta versión voy a usar una fuente de alimentación de un portatil que pedi a los chinos y no uso. Estas fuentes de alimentación son conmutadas, mucho más estables que las tradicionales y más eficientes.

Fuente de alimentación conmutada

Con el polímetro se comprueba que par de hilos necesitamos y se suelda a un conector compatible con el conector que irá en el circuito. En este caso el rojo como VCC y el blanco como GND, con un voltaje entre ellos de 18 V. Los relés son de 24 V, pero a 18 V encienden perfectamente.

Regleta de conexiones
Para conectar los cables que salen del circuito es útil usar una regleta con sus tornillitos. Pero más útil aún un tipo de regleta que vi en un circuito que además se puede desconectar en conjunto. Como diría Dave: "sex on a stick!".

Regleta de conexiones que se va a reutilzar.
Circuito
El circuito lo he hecho con la versión gratuita de Eagle. He tenido que crear componentes a medida para la regleta de conexiones y para los relés. Está basado en el circuito Opendoor v1, donde expliqué en su momento el tema del sensor infrarrojo.

Esquema del circuito electrónico

En un futuro post dedicado pondré fotos del método de transferencia de tóner, que es el que sigo para crear las placas PCB. El resultado es este:


Código de Arduino
Partimos de la versión anterior, en la que se detectaba una interrupción de la barrera infrarroja y se abría la puerta. En este caso cuando la barrera infrarroja se vuelva a interrumpir se cerrará la puerta.

Para cerrar la puerta hay que activar el relé 1 del motor 2. Se activa durante un tiempo máximo de 3.5 segundos o hasta que el sensor de fuerza se active, lo que nos dirá que el motor está tirando demasiado. Después de este tiempo, se girará el motor en sentido contrario durante un segundo y medio para que suelte cable y se pueda abrir la puerta en caso necesario.

Puede ocurrir que el perro se quede a mitad de pasar y decida darse la vuelta. En este caso la puerta se quedaría abierta, y la siguiente vez que intentara pasar se cerraría. Para evitar esto se ha puesto un límite de tiempo de 15 minutos tras los cuales la puerta se cierra. ¿Y si el perro está aun fuera? Pues es difícil que no le de tiempo pero si ocurre... ea, pues que ladre y ya le abriremos :P

Diagrama de estados general

Pruebas
Aquí podéis ver el circuito montado y conectado al Arduino, todo recogido en la caja de un viejo switch al igual que la versión anterior. 

Circuito y Arduino en sus huecos respectivos

Con la carcasa puesta ahora ahora sí se ven los Leds. El rojo indica la cantidad de luz que ve el diodo infrarrojo, y el azul ahora mismo es el estado del sensor de fuerza.

OpenDoor preparado para trabajar

El motor de cerrar la puerta está sobrealimentado en el circuito original, ya que es de 12 V y lo alimentamos con 18 V de la fuente. El exceso de fuerza está en teoría controlado con el sensor de fuerza, pero como segunda medida de protección he añadido una resistencia de 3.3 Ohms y 10W, que es lo necesario para consumir los 5 Voltios que lo sobrealimentan. 

Resistencia de 3.3 Ohms auxiliar.

Aún así sigue teniendo fuerza más que de sobra para cerrar la puerta, pero en el caso que falle el sensor no se rompería nada.

Si alguien quiere el código fuente o el archivo del circuito que me lo haga saber en los comentarios y lo cuelgo aquí.

Relacionado:

No hay comentarios:

Publicar un comentario