Controlador de Ventiladores (ATTiny45-ATTiny85)

1,452 views
Skip to first unread message

G.W.C.

unread,
Aug 10, 2012, 9:56:02 PM8/10/12
to asrob-uc3m-i...@googlegroups.com
Controlador de Ventiladores

Iceflow me pidió que pusiera un poco documentado como había hecho el mini controlador, así que aquí está.

Características
Es un circuito muy simple basado en un ATTiny45 o ATTiny85 (que es lo mismo que el 45 pero con más memoria) y que permite manejar 4 ventiladores de 12 VDC con 4 botones táctiles o pulsadores (de los que no se mantienen), siendo cada botón táctil útil para manejar el ventilador con el mismo número (el botón 1 enciende el ventilador 1 y así).

Los botones táctiles funcionan a través de un pin analógico del ATTiny, por tanto no se entenderá que se pulsen dos a la vez (el ATTiny entenderá k se pulsa el de mayor número, y nunca generará cortocircuitos). 
 
El circuito tiene: 
    • 2 salidas PWM con (5 modos, OFF, 50%, 67%, 83% y 100% según la configuración inicial). Corresponden a los ventiladores 1 y 2
    • 2 salidas ON/OFF. Corresponden a los ventiladores 3 y 4.
    • Funciones especiales si las teclas son pulsadas durante 2 segundos (según la configuración inicial)
      • En los botones que controlan los PWM apaga totalmente el ventilador o lo enciende al 100%.
      • En los ON/OFF, uno enciende todos los ventiladores (el 3) y el otro los apaga (el 4)
Podeis ver un vídeo aquí (es un vídeo con el software antiguo, antes de añadir las funciones especiales).

El controlador visto desde arriba

El controlador visto desde abajo (los agujeros grandes marcan la orientación).

 
 

 Ingredientes
  • 4 resistencias de 1K (para los transistores).
  • 4 transistores NPN (bipolares) capaces de soportar la corriente que van a manejar (los ventiladores manejarán como mucho 500mA). Yo uso transistores de uso general de 0.8A (BC337).
  • 4 resistencias iguales (en mis circuitos de 1K) y recomendable de valor mayor o igual a 1K. Son para los divisores de potencial de los pulsadores.
  • 1 resistencia con un valor al menos 10 veces superior al de las resistencias de los pulsadores (en mis circuitos de 10K). Es para evitar que el pin analógico del ATTiny fluctúe y encienda aleatoriamente el primer ventilador (como un potergeist vamos XD). Es importante que sea al menos 10 veces superior al valor de las otras ya que si no, no funciona bien el divisor de potencia.
  • 1 ATTiny45 o 85  (el programa son 2.3KB, así que entra en los dos)
  • 20 pines macho (en grupos de 4). Quizás uno de ellos polarizado (en un grupo de 4).
  • Posiblemente 1 zócalo de 8 pines (a no ser que seas hard-core).
  • Placa preperforada (es por gusto, a mi me gusta este tipo de placa).
  • Estaño y soldador.
  • Un programador del ATTiny (si usais Arduino 1.0 como IDE tenéis que mirar esto para que podais grabar los programas a traves del Arduino ISP). Queda como el de la foto (le he puesto el jumper por tocar las narices, pork nunca voy a tener un Arduino mas viejo que el que tengo XD).
    • Si no os funciona el Arduino ISP teneis que buscar una línea en el código del Arduino ISP (en ejemplos) que ponga delay(40) y cambiarla por delay(20).
    • Hay que grabar el "bootloader" del ATTiny45-85 para que funcione a 8MHz (no es absolutamente necesario, pero no aseguro que los tiempos de pulsación coincidan). Se tarda menos de 30 segundos con el propio programador de txapuzas.

Esquema eléctrico
  • Los pulsadores en realidad son pines, a los que se les conecta los pulsadores, pero así se ve como funciona. El objetivo de esto es que se puedan poner los pulsadores en un lugar más atractivo que encima de la placa.
  • Los ventiladores sí que se representan como pines.
  • El Pin 3 del ATTiny (ADC2) se conecta por un lado a los pulsadores y por el otro a tierra a través de una resistencia (una grande). Esta resistencia es para que no fluctúe el valor y haga un efecto poltergeist sobre el primer ventilador.
  • En el esquema el pulsador 1 (correspondiente con los pines de más abajo) corresponde a el ventilador 1 (aunque en la placa el ventilador 1 sea también el de mas abajo).

 
Placa eléctrica

Algunas aclaraciones al respecto del esquema frontal:

    •  Aunque parezca que el cable de más abajo (con forma de U en el esquema) vaya conectado al terminal izquierdo de la resistencia que hay inmediatemente encima, va conectado al terminal derecho, que está conectado a su vez con el neutro. Sirve para  poner los emisores de los transistores en neutro.
    • Los agujeros que hay grandes son para montarlo en la placa de madera que hay en la parte de detrás de mi impresora, y además ayudan a explicar ya que sirven de guía al darle la vuelta para enseñar las pistas.
    • Los pines de energía (los de más abajo) son de izuquierda a derecha: 12VDC, GND, GND y 5V.
      Aviso: la placa no tiene ningún sistema de seguridad, por lo que conectar este pin al revés supondrá que el chip ATTiny se conectará a 12 Voltios (y posiblemente se queme), y los ventiladores se conecten a 5 V. Es recomendable usar un conector polarizado en vez del genérico que he usado yo (yo he pintado de blanco el pin de 12 voltios.
    • Los pines tanto de los ventiladores (a la derecha) como los de los pulsadores (a la izquierda) se conectan horizontalmente, esto es el de la derecha con el de la izquierda.
    • Hay que recordar que, si bien los pulsadores no tienen polaridad, los ventiladores sí, y ponerlo del revés puede hacer que no funcione (no creo que lo rompa de todas formas).
    • Nota: la numeración de los pulsadores y de los interruptores se hace en las dos ristras dobles de pines de abajo arriba (siendo el de más abajo el 1, y el de más arriba el 4). Los dos primeros son los PWM (los de más abajo).

En la parte de atrás:
    • Los disipadores los puse pork al hacer las pruebas el transistor se calentaba un poco. Ahora no se calienta nada, pero no creo que sean indispensables. Sin embargo también cumplen función de conexión.
    • Los cables grises se podrían poner por el otro lado, pero me resultó más fácil esta forma.


Código Arduino
int input = 0; //Variable de control
int previnput = 0; //Variable de control
int state0 = 0; //Estado inicial del ventilador 1 (0 == OFF)
int state1 = 0; //Estado inicial del ventilador 2 (0 == OFF)
boolean state2 = false; //Estado inicial del ventilador 3 (false == OFF)
boolean state3 = false; //Estado inicial del ventilador 4 (false == OFF)
int maxPWMstates = 5; //Número máximo de estados en el PWM.
int counter = 0; //Variable de control
int maxCounter = 10; //Sirve para filtrar pulsaciones muy cortas
int specialCounter = 5000; //Ciclos a mantener pulsado para activar la función especial (5000 ~ 2s)

void setup() {
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  digitalWrite(0, LOW);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  pinMode(4, INPUT);
  digitalWrite(4, LOW);
}

void loop(){
  input = analogRead(2)/256.0 + 0.5;
  if(input != previnput){
    if(input == 0 && counter >= maxCounter && counter < specialCounter){
      switch(previnput){
        case 1:
          state0 = (state0+1)%maxPWMstates;
          getPWMValue(state0, 0);
          break;
        case 2:
          state1 = (state1+1)%maxPWMstates;
          getPWMValue(state1, 1);
          break;
        case 3:
          state2 = !state2;
          getBitValue(state2, 2);
          break;
        case 4:
          state3 = !state3;
          getBitValue(state3,3);
          break;
      }
    }
    previnput = input;
    counter = 0;
  }else{
    counter++;
    if(counter == specialCounter && input > 0){
      if(input == 1){
        if(state0 == 0){
          state0 = maxPWMstates-1;
        }else{
          state0 = 0;
        }
        getPWMValue(state0, 0);
      }else if(input == 2){
        if(state1 == 0){
          state1 = maxPWMstates-1;
        }else{
          state1 = 0;
        }
        getPWMValue(state1, 1);
      }else{
        if(input == 3){
          state0 = maxPWMstates-1;
          state1 = maxPWMstates-1;
          state2 = true;
          state3 = true;
        }else{
          state0 = 0;
          state1 = 0;
          state2 = false;
          state3 = false;
        }
        getPWMValue(state0, 0);
        getPWMValue(state1, 1);
        getBitValue(state2, 2);
        getBitValue(state3, 3);
      }
    }
  }
}

void getPWMValue(int state, int pin){
  if(state == 0){
    digitalWrite(pin, LOW);
  }else if(state == maxPWMstates-1){
    digitalWrite(pin, HIGH);
  }else{
    int value = 128+127*state/(maxPWMstates-2);
    analogWrite(pin, value);
  }
}

void getBitValue(boolean state, int pin){
  if(state){
    digitalWrite(pin, HIGH);
  }else{
    digitalWrite(pin, LOW);
  }
}

nayma rescue

unread,
Aug 11, 2012, 4:45:50 AM8/11/12
to asrob-uc3m-i...@googlegroups.com
a mi me gusta mucho las páginas de inizul, entre ellas está http://txapuzas.blogspot.com.es/2009/12/paperattinyprogrammer-un-programador.html  para poder hacer el programador.

Juan Carlos



2012/8/11 G.W.C. <anes...@gmail.com>

--
 
 
 

César Augusto Fernández Cano

unread,
Aug 11, 2012, 6:04:14 AM8/11/12
to asrob-uc3m-i...@googlegroups.com
¡Pedazo de Post!... Eso es documentar y lo demás son tonterías ;-D

Saludos, Skymaker

Guillermo Welch C.

unread,
Aug 11, 2012, 6:24:44 AM8/11/12
to asrob-uc3m-i...@googlegroups.com
Juan Carlos mi programador es el de (de hecho el enlace k puse es el de txapuzas) :p es un modelo similar pero el placa preperforada (en vez de en stripboard).

Estan muy bien esos proyectillos :p

jorge montero

unread,
Aug 11, 2012, 9:38:38 AM8/11/12
to asrob-uc3m-i...@googlegroups.com
Si señor, muy buen trabajo.

Muchas gracias por compartirlo, sin dudarlo es un desarrollo muy, muy util, tanto para los calores de nuestras "impresoras" como para otras aplicaciones.

Por mi parte, muchas gracias.

Si nos vemos, recuerdarme que te invite a lo que quiereras tomar.

Un saludo.

Jorge Montero.

--
 
 
 



--
Un saludo.

Jorge Montero

nayma rescue

unread,
Aug 11, 2012, 11:08:55 AM8/11/12
to asrob-uc3m-i...@googlegroups.com
Iñigo lo documenta todo muy bien....

2012/8/11 jorge montero <cot...@gmail.com>
--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 11, 2012, 11:33:33 AM8/11/12
to asrob-uc3m-i...@googlegroups.com
Quién es íñigo? XD

nayma rescue

unread,
Aug 11, 2012, 11:49:31 AM8/11/12
to asrob-uc3m-i...@googlegroups.com
Inizul es el nick del que hace la página de txapuzas electrónicas, se llama Iñigo.



2012/8/11 G.W.C. -AnesGy SD- <g...@anesgysd.com>
Quién es íñigo? XD

--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 11, 2012, 11:54:07 AM8/11/12
to asrob-uc3m-i...@googlegroups.com
Ahhhh XD ahora entiendo todo :p

fm

unread,
Aug 12, 2012, 5:45:42 AM8/12/12
to asrob-uc3m-i...@googlegroups.com
Pues la verdad es que has hecho una publicación muy buena y bien documentada. Buen trabajo.

Lo único que me gustaría comentar son varias cosas:
- deberías poner un condensador de desacoplo en la línea que alimenta el AVR, lo más proximo a AVR de unos 100nF. Esto te evitará problemas y comportamientos erraticos en el futuro.
- deberías poner un diodo en la salida de cada ventilador (cátodo a +12V, ánodo al colector del transistor). Ahora es posible que funcione todo bien, pero con los picos inductivos que te está metiendo la bobina del ventilador se va a cargar esos transistores.
- para terminar, le podría un pequeño condensador cerámico entre los pines del ventilador. Te va a filtrar algo de ruido que imagino que no quieres que se te cuele por ningún lado en el rail de los 12V. Si además utilizas los 12V para alimentar otra placa, las variaciones y ruido que te van a meter esos cuatro ventiladores puede que haga que el otro circuito falle.

G.W.C. -AnesGy SD-

unread,
Aug 12, 2012, 6:07:09 AM8/12/12
to asrob-uc3m-i...@googlegroups.com
Lo del condensador lo había visto pero no estaba seguro de para que servía, gracias!
Lo de los diodos lo conozco pero cuando quise ponerlo ya había cortado la placa y no entraba.
Y lo del condensador para evitar el ruido me he dado cuenta, cada vez que enciendo la placa la fuente me indica que entra en régimen transitorio y no sale hasta que no apago los ventiladores.

Muchas gracias por tus aclaraciones, haré una versión 2 con los diodos y los condensadores :)

G.W.C.

unread,
Aug 12, 2012, 6:11:38 PM8/12/12
to asrob-uc3m-i...@googlegroups.com, g...@anesgysd.com
Pues lo dicho, gracias a fm he hecho una actualización al chisme este! He simplificado algunas conexiones (por ejemplo todos los cables que había por debajo ya no se necesitan) y he hecho la placa un pelín mas grande (solo un pelín) porque si no no entran las cosas, y entran de milagro XD. Si alguien tiene problemas para que le entren que haga la placa 2 agujeros más larga y que se deje de tonterías, yo esque la tuve que hacer así porque no me entra si no.

Ya los empiezo a colgar como PDF que es un tostón poner todas las imágenes aquí :p


También pongo el SCH que a Iceflow le daba problemas (no se porqué) pero a ver si a los demás les funciona.

Lo dicho, si hay dudas, preguntad!
FanDriver.sch

Iceflow

unread,
Aug 12, 2012, 6:27:00 PM8/12/12
to asrob-uc3m-i...@googlegroups.com
Pues no se si es por la version de eaglecad... yo tengo la 5.11... pero me pone otra vez lo mismo, invalid data jajaja esto de la informatica cada dia me trae mas de cabeza ;)

De todas formas un trabajo  excelente Guillermo, no me he podido poner este finde con el proyecto, pero de mañana no lo dejo pasar :)

Un saludo!!

--
 
 
 

Iceflow

unread,
Aug 12, 2012, 6:30:54 PM8/12/12
to asrob-uc3m-i...@googlegroups.com
Y el dropbox pide user y pass apra acceder.... :P

G.W.C. -AnesGy SD-

unread,
Aug 12, 2012, 6:56:26 PM8/12/12
to asrob-uc3m-i...@googlegroups.com
Yo tengo la versión 6 del EagleCad, por eso no puedes verlo. La mía es gratis, la dan en la página del desarrollador.

El enlace del dropbox:



Público y sin restricciones.

Iceflow

unread,
Aug 12, 2012, 7:42:21 PM8/12/12
to asrob-uc3m-i...@googlegroups.com
Voy a bajar entonces la version 6, debe ser por eso :D

--
 
 
 

David Estévez Fernández

unread,
Aug 12, 2012, 8:59:33 PM8/12/12
to asrob-uc3m-i...@googlegroups.com
Esto se merece cada vez más que esté documentado en la wiki. Qué gran invento!!

--
 
 
 



--
---
David Estévez Fernández

Iceflow

unread,
Aug 12, 2012, 9:01:19 PM8/12/12
to asrob-uc3m-i...@googlegroups.com
Con la version 6 de eagle ya lo puedo abrir :D genial!!  pero ahora es un lio pasar del esquematico a una placa, creo que aparecen mas conexiones de las que deberian entre varios componentes :S a ver si mañana, descansado, saco algo en claro jejeje

--
 
 
 

Iceflow

unread,
Aug 12, 2012, 9:03:19 PM8/12/12
to asrob-uc3m-i...@googlegroups.com
Se me olvidaba decir, a la wiki ya!! jejeje y quiza podemos convencer a Iñigo de txapuzas de que nos haga un paper controlador de ventiladores jejeje Made in Clone Guillermo Wars!!

G.W.C.

unread,
Aug 12, 2012, 9:08:59 PM8/12/12
to asrob-uc3m-i...@googlegroups.com
Si vas a hacer una placa o bien el ATTiny lo pones en un socket para poder sacarlo y reprogramarlo o le pones unos pines de reprogramación. Necesitas 4 pines que vayan a los pines 1, 5, 6 y 7, mas luego los de energía 5V-GND que los tienes que poner por narices :p

Por cierto sigue haciendo ruido (en la señal) a pesar de los condensadores a lo mejor no he puesto suficiente condensador XD

Esto está al mas puro estilo txapuzas, pero creo que Íñigo nunca haría las piscinas de estaño que hago yo, me da la impresión de que es más de poner cables o usar stripboards XD.

G.W.C.

unread,
Aug 12, 2012, 9:09:21 PM8/12/12
to asrob-uc3m-i...@googlegroups.com
Con placa me refiero a una placa impresa no cutre como la mía XD.

Iceflow

unread,
Aug 12, 2012, 9:15:12 PM8/12/12
to asrob-uc3m-i...@googlegroups.com
Placa de tiras si que molaria jejeje Se hacen muy sencillas y es super comodo y con menos soldaduras que en una perforada normal.

Yo si hago (si acabo pudiendo) hare una placa placa, con su cobrecito y esas cosas jejjee me gusta aplacar!!! jajaja pero solo copio y pego ;)

El 13 de agosto de 2012 03:09, G.W.C. <anes...@gmail.com> escribió:
Con placa me refiero a una placa impresa no cutre como la mía XD.

--
 
 
 

fm

unread,
Aug 13, 2012, 3:53:01 AM8/13/12
to asrob-uc3m-i...@googlegroups.com
Pues te ha quedado muy bien. Me gusta lo bien que has dejado el esquemático, muy limpio y muy claro. Buen trabajo.

Por cierto muchas gracias por la mención en la documentación de la tarjeta! No se merecen, pero muchas gracias.

A lo que iba. Hay dos tipos de ruido:
- ruido eléctrico - este es el que se provoca cuando el motor está girando o las bobinas se cargan y descargan. Este ruido por lo general no es audible, bueno lo escucha todo tu circuito ;-)
Para atenuarlo se usa el condensador que has puesto. En ver de tener picos bruscos, lo que tendrás son unos picos un poco más suaves.
- ruido acústico - este es el que se provoca al pulsar el motor con un PWM, en este caso, lo que escucharás es como un zumbido continuo. Este está provocado también por la carga y descarga brusca de las bobinas que entran en resonancia y hace que vibre el bobinado. Ese ruido no lo puedes evitar simplemente poniendo un condensador. La forma de arreglarlo es haciendo que el PWM con el que conmutas la corriente tenga una frecuencia mayor fuera del rango audible (digamos que de unos 30KHz en adelante).

En tu programa, tendrás que intentar aumentar la frecuencia de trabajo del PWM, bien por SW bien por HW usando los timers del AVR. Alternativamente puedes montarte un circuito realimentado con operacionales u otro transistor para que el ventilador vea una tensión continua y hacer trabajar el transistor en la zona activa. Pero esto es complicar el diseño que te ha quedado muy bien y muy simple.

G.W.C.

unread,
Aug 13, 2012, 6:03:12 AM8/13/12
to asrob-uc3m-i...@googlegroups.com
Lo del ruido lo tengo más que conocido, lo estudiamos en la carrera :p. El acústico no me molesta pork la impresora es muchísimo más ruidosa, y no es suficientemente agudo como para que me de dolor de cabeza (cosa que podría pasar si la frecuencia del PWM fuera más alta), además la mayoría del ruido acústico que produce es por culpa de que el ventilador tiene más de 10 años (de hecho ayer estalló XD, el plástico estaba sumamente frágil). El ruido eléctrico es el que me preocupa más, y es lo k mido con un LED que tiene mi fuente que indica cuando está en régimen permanente (cuando enciendo cualquier ventilador se apaga). De todas maneras son motores brushless DC de baja potencia, no es como si fueran a generar chispazos :p

Por otra parte lo de la frecuencia del PWM, está funcionando a 8MHz que es la frecuencia máxima a la que funciona el ATTiny sin un oscilador externo (Lo he puesto en la documentación en la parte del programador). No pienso ponerle un oscilador externo porque me quita dos pines y no me interesa (creo que es posible hacer que sólo pierda uno, pero eso implica tener una señal de pulsos, lo cual implica más volumen :p).

Luego ya lo de usar amplificadores para tener tensión continua me parece demasiado XD, son ventiladores de ordenador :p

Iceflow

unread,
Aug 13, 2012, 6:30:58 AM8/13/12
to asrob-uc3m-i...@googlegroups.com
Cierto, me olvidaba yo tambien de agradecerte la mencion :P yo si que no la merezco, que solo doy el coñazo pidiendo jajaja Pero Muchas Gracias igualmente, sobre todo por el gran trabajo, esta todo super bien documentado, hasta para dummies como yo jejeje Y como ya han dicho es un circuito bien simple, que eso tambien siempre se agradece.

Sigue haciendo cositas tan utiles y bonitas!!

Saludines!!

--
 
 
 

fm

unread,
Aug 13, 2012, 12:50:19 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Ok, ya veo cómo estás haciendo la escritura para controlar el transistor (analogWrite(pin, value);) eso era a lo que me refería de utilizar el timer interno del AVR. En este caso debes de estar generando un PWM de no más de 2KHz, seguramente 900Hz o cerca.

Esta tarde me he descargado el fichero Eagle que has publicado y he visto que tenías una pulga en la conexión de la resistencia de 10K, donde ambos pines estaba conectados a GND en el esquemático. Me he tomado la libertad de modificar esta parte del esquemático. Si lo quieres comprobar, en tu esquemático, usa la herramienta "Show" (el ojo) y pulsa en cualquier señal que va a la resistencia.

Por otro lado le he puesto un conector de 4 pines para Vin (12V, GND, 5V y GND). También he añadido un electrolítico de 220uF a modo bypass que seguro le va a gustar a tu fuente de alimentación y a lo que conectes a esta placa.

Finalmente, me he liado a la manta a la cabeza y he hecho un pequeño PCB con el esquemático. La verdad es que la placa queda muy compacta en 49mmx38mm. Lo mejor de todo, solo por una sola cara por si alguien se la quiere montar a modo DIY.

Aquí os pongo alguna imagen para que veáis como ha quedado todo el sarao y los ficheros Eagle por si os interesan. Por alguna razón que estoy explorando al hacer el rendering me ha quitado toda la serigrafía, pero en el fichero Eagle la podéis ver. Por último creo que la parte del pulsador se puede simplificar un poco pero vamos que así está bien.

Quizás comentar un poco el código para que la gente lo pueda tocar y modificar a placer. 
fanDriver.zip

Iceflow

unread,
Aug 13, 2012, 12:56:39 PM8/13/12
to asrob-uc3m-i...@googlegroups.com

Joe que envidia! Como os fuerais las cosillas! Eso es lo que intente ayer yo durante 1 hora jajaja y no fui capaz, eso de que iban más líneas a una resistencia.... Me tenía a mi mosca jajaja ahora ya puedo clonar la placa! Jejee placa placa! A ver si me pongo entre hoy y manana. Al final siempre copio y pego jejeje Ahora falta el modelo de placa de tiras jejeje ;) lo dejó caer...

--
 
 
 

fm

unread,
Aug 13, 2012, 12:59:08 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Placa de tiras?

Iceflow

unread,
Aug 13, 2012, 1:07:16 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Stripboard¿?

Como le llamas?

--
 
 
 

nayma rescue

unread,
Aug 13, 2012, 1:09:32 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
fm nos lleva muchas horas, de ventaja, y se nota.

placas de tiras se refiere a las stripboard en vez de las de topos. 
A ver si me dejan pronto actualizar el ordenador y empiezo a aprender a diseñar circuitos... 



2012/8/13 Iceflow <ais...@gmail.com>
--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 1:26:56 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
XD Topos XD

Muy chula la placa, luego actualizo el PDF y pongo tu placa (con la correspondiente acreditación).

También pondré la foto de mi placa montada en mi impresora con los botoncitos y demás XD.

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 1:27:48 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Por cierto deberíamos pensar en un nombre para la plaquita. Yo la había llamado TinyFan pero es un nombre muy tonto, a ver si se os ocurre alguno!

fm

unread,
Aug 13, 2012, 1:32:18 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Aquí os dejo la Rev B. Me gusta más, tiene unos planos de tierra un poco más cuidados y tiene en cuenta el grosor de las pistas por donde fluirá más corriente. También los componentes están mejor alineados y queda más profesional.


Un saludo a todos
fanDriverRevB.zip

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 1:33:43 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Que chulo queda, por cierto, el ATTiny tiene que ir en un socket ya k puede mejorarse el software. Si no hay k poner un puerto para programarlo.

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 1:35:58 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Una cosa, el puerto para la corriente lo has puesto 5V-GND-12V-GND no? Yo estaba siguiendo el esquema de las fuentes que es 5V-GND-GND-12V :p

alfonso lopez

unread,
Aug 13, 2012, 1:37:23 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Que os parece warfan

iPhone powered


El 13/08/2012, a las 19:34, "G.W.C. -AnesGy SD-" <g...@anesgysd.com> escribió:

Que chulo queda, por cierto, el ATTiny tiene que ir en un socket ya k puede mejorarse el software. Si no hay k poner un puerto para programarlo.

--
 
 
 

Pablo Moreno

unread,
Aug 13, 2012, 3:08:45 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Fm es un crack en diseño, vaya curradas te montas. Es una placa muy compacta.

A modo de sugerencia, seria posible que el atmel guardara el ultimo valor de los disponibles para los ventiladores 1 y 2 una vez se desconecte y que en la proxima conexion arranque directamente con ese valor?

Por curiosidad para el creador, porque usas atmel y no microchip? Igual es mas barato el de atmel y de ahi la eleccion, o por no disponer de grabador? o tiene alguna otra causa. No tengo nada en contra de atmel, que conste :)

--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 3:11:05 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Conseguí k Atmel me mandase 52 chips gratis, es el único motivo :p Tengo 10 ATTiny45 y 10 ATTiny85 y luego el resto son grandes.

Pablo Moreno

unread,
Aug 13, 2012, 3:13:03 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
O.O y cual es tu secreto, me conformo con un par de los que gasta arduino por si las moscas

El 13 de agosto de 2012 21:11, G.W.C. -AnesGy SD- <g...@anesgysd.com> escribió:
Conseguí k Atmel me mandase 52 chips gratis, es el único motivo :p Tengo 10 ATTiny45 y 10 ATTiny85 y luego el resto son grandes.

--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 3:15:16 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Los pides como muestra, tu mantente por debajo de los 100 euros para k no te pillen en Aduana. Pide ATTiny k aunque cuesten 2 euros y están muy bien.

alfonso lopez

unread,
Aug 13, 2012, 3:28:26 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Pero con q tipo de correo de empresa o gratuito. Te lo digo por que a mi me han tirado para atras varias veces. Que pones eb el proyecto?. Un saludo

iPhone powered


El 13/08/2012, a las 21:15, "G.W.C. -AnesGy SD-" <g...@anesgysd.com> escribió:

Los pides como muestra, tu mantente por debajo de los 100 euros para k no te pillen en Aduana. Pide ATTiny k aunque cuesten 2 euros y están muy bien.

--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 3:29:54 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Cualquier chorrada, yo puse k era para hacer un clon de Arduino k fue una de las finalidades XD y para mejorar la Prusa.

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 4:08:44 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Existe un problema con lo de grabar en la memoria, que no se puede hacer tantas veces como nos gustaría :S un chip de estos tiene una vida de cien mil ciclos grabar-borrar.

Si lo que quieres es que al empezar se cargue en un estado, lo que puedes hacer es cambiar el estado por defecto en la programación.

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 4:33:42 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Dios que susto me he pegado XD, estaba conectando mis pulsadores a la placa (unos que estoy pegando con cola a una lámina de madera), y la máquina se volvía loca XD Se encendían los ventiladores aleatoriamente (solo los dos primeros) y no funcionaban algunas pulsaciones.

Al final me he dado cuenta de que... la cola de madera conduce la electricidad (y todavía no está seca XD). Y que tendrá una resistencia de mas o menos 200 Kohm pero me crea divisores de tensión k lo flipas XD

Cuando se seque ya hago las pruebas.

fm

unread,
Aug 13, 2012, 6:17:58 PM8/13/12
to asrob-uc3m-i...@googlegroups.com, g...@anesgysd.com
Yo creo que duraría lo suficiente. Simplemente escribiendo en la EEPROM cuando hay un cambio de estado. Es decir, el interruptor mecánico, posiblemente no esté especificado ni para 20000 pulsaciones. La verdad es que le daría un toque simpático. Yo me he hecho un extractor de humos de soldadura, con su LCD, ... y guarda en memoria el estado del ventilador y la velocidad a la que lo configuré por última vez.

Para los nombres soy un auténtico negado. Vamos que no no se me ocurre nada.

@G.W.C. - Una cosillas que puedes probar con tu placa es ver que tal se comporta con un condensador de 220uF o 470uF en las bornas de alimentación de 12V. Es un poco lo que planteo como modificaciones en el PCB. Creo que debería funcionar bien.

En cuanto a tamaño, si lo que se busca es hacer la placa lo más pequeña posible, lo suyo sería ir a SMD, creo que en la mitad del espacio se podría tener esa placa funcionando sin problemas.

Cambiar los pines de alimentación es muy sencillo la verdad, no le voy ningún inconveniente en poner una distribución de 5V-GND-GND-12V. 

Os agradezco a todos que os haya gustado, pero el mérito de verdad es de G.W.C. que se ha currado absolutamente todo yo solo he hecho un poco de delineante.

Saludos

Guillermo Welch C.

unread,
Aug 13, 2012, 6:33:00 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Le pondre memoria de estado al código entonces.

Si puedes hacer una versión de la placa para k tenga pines en vez de pulsadores para poner los pulsadores en otro lugar mas interesante estaría bien :)

Por cierto tu te llevas gran parte del mérito x hacer la placa!

Guillermo Welch

unread,
Aug 13, 2012, 6:34:09 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Ah y si no te importa mucho, si pudieras poner el extractor de humos de soldar te estaría muy agradecido, me agobia estar con mascarilla en verano XD.

Pablo Moreno

unread,
Aug 13, 2012, 6:45:45 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Supongo que esto es rizar el rizo demasiado, se podria usar la patilla correspondiente al pin PB5 como comunicacion y controlar esta placa desde otro punto(por ejemplo que otro sistema tenga conectados sensores de temperatura y este controle la placa de ventiladores). No se si sera posible con el pin que queda libre.

De todas formas es un gran trabajo, lo de la memoria seria un buen detalle si se puede implementar con facilidad.

Saludos

El 14 de agosto de 2012 00:34, Guillermo Welch <anes...@gmail.com> escribió:
Ah y si no te importa mucho, si pudieras poner el extractor de humos de soldar te estaría muy agradecido, me agobia estar con mascarilla en verano XD.

--
 
 
 

David Estévez Fernández

unread,
Aug 13, 2012, 7:00:16 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Estaría genial que compartieseis la placa en un sitio como http://www.thingiverse.com . Seguro que a la comunidad de impresores 3D le resulta útil.

--
 
 
 



--
---
David Estévez Fernández

Iceflow

unread,
Aug 13, 2012, 7:06:58 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
TRABAJAZO!!!! y en solo un par de dias!!! Genial la currada de Guillermo y la mega placa de FM muy muy guapa!! Ademas esta genial para montar estilo casero, el irse al SMD es ya una cuestion de gustos, yo si hay que ponerse me pongo pero prefiero soldar troughole jejeje soy muy vago :P pero si que se ganaria muchisimo espacio, mejor dicho se reduciria jejeje

+1 por ese ventilador extractor!! que se rule!! yo no uso mascarilla, directamente aguanto la respiracion o cuando tal "esnifo" plomo :P (no me echeis la bronca que ya se que es malo jejeje) cuando anda mi novia por casa y me pilla se pone a soplarme los humos para otro lado :) lo que hace el amor jajaja

Lo de colgarlo en thingiverse tambien lo apoyo, creo que es algo que puede gustar y ya si te pones un instructable seria genial jajaja ya lo tienes montado en el pdf, mas o menos :D solo seria cut and paste e inglesizar... bueno, eso si quieres jejeje

Me dan ganas de ponerme a hacer la placa ahora mismo jajaja

Saludos!!

--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 7:36:45 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
PB5 es RESET, se puede usar como pin de salida, pero no lo he investigado, me da cosilla. Además de k al principio me interesaba usarlo para hacerle reset cuando se volvía loco el chip (pork no estaba la resistencia de 100K).

En cuanto a la memoria, la he implementado, y he modificado un poco los códigos para usar #defines que ocupan menos espacio que las variables (y ahorran RAM, k sobra pero para k definir constantes k ya existen XD).


/******************************************
 * TinyFan Fan Driver 1.0                 *
 ******************************************
 * Codigo:                                *
 *  + G.W.C.                              *
 * Placa de circuito:                     *
 *  + Francisco M.                        *
 *  + G.W.C.                              *
 ******************************************
 * Publicado bajo la licencia:            *
 *  + Creative Commons 3.0                *
 *    - Atribucion                        *
 *    - Compartir igual                   *
 ******************************************/
 
#include <EEPROM.h>

// Estados maximos de los vent. PWM (inlcuido el estado apagado).
#define MAXPWMSTATES 5
// Ciclos para que se tome en cuenta una accion (2500 ciclos ~ 1 sec)
#define ACTION_COUNTER 10
// Ciclos para que se tome en cuenta una accion especial
#define SPECIAL_COUNTER 5000 //~2 sec
// Utilizar memoria (al encencerse vuelve a cargar el ultimo estado)
// Si no se desea usar la memoria comentar la siguiente linea:
//#define USEEEPROM 1
// AVISO: la memoria EEPROM como la del ATTiny tiene una vida de 100.000 ciclos de borrado-grabado.
// Despues de esto no esta garantizado que guarde la memoria. El chip ATTiny45 tiene 256 bytes de
// EEPROM mientras que el chip ATTiny85 tiene 512. La memoria EEPROM no es la misma que la memoria
// donde se guarda el programa, por lo que si llega a haber un problema la constante EEPROMFROM,
// servira para establecer un punto de inicio para grabar y leer los datos.
#define EEPROMFROM 0

byte input = 0;
byte previnput = 0;
int counter = 0;
// Estado inicial (sin memoria) de los vent
byte state0 = 0; //PWM
byte state1 = 0; //PWM
boolean state2 = false;
boolean state3 = false;

void setup() {
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  #ifdef USEEEPROM
    if(EEPROM.read(4 + EEPROMFROM * 5) == 255){
      EEPROM.write(4 + EEPROMFROM * 5,0);
    }else{
      state0 = EEPROM.read(0 + EEPROMFROM * 5);
      state1 = EEPROM.read(1 + EEPROMFROM * 5);
      state2 = EEPROM.read(2 + EEPROMFROM * 5);
      state3 = EEPROM.read(3 + EEPROMFROM * 5);
    }
  #endif
  setState();
  pinMode(4, INPUT);
  digitalWrite(4, LOW);
}

void loop(){
  input = analogRead(2)/256.0 + 0.5;
  if(input != previnput){
    if(input == 0 && counter >= ACTION_COUNTER && counter < SPECIAL_COUNTER){
      switch(previnput){
        case 1:
          state0 = (state0+1)%MAXPWMSTATES;
          #ifdef USEEEPROM
            EEPROM.write(0 + EEPROMFROM * 5,state0);
          #endif
          getPWMValue(state0, 0);
          break;
        case 2:
          state1 = (state1+1)%MAXPWMSTATES;
          #ifdef USEEEPROM
            EEPROM.write(1 + EEPROMFROM * 5,state1);
          #endif
          getPWMValue(state1, 1);
          break;
        case 3:
          state2 = !state2;
          #ifdef USEEEPROM
            EEPROM.write(2 + EEPROMFROM * 5,state2);
          #endif
          getBitValue(state2, 2);
          break;
        case 4:
          state3 = !state3;
          #ifdef USEEEPROM
            EEPROM.write(3 + EEPROMFROM * 5,state3);
          #endif
          getBitValue(state3,3);
          break;
      }
    }
    previnput = input;
    counter = 0;
  }else{
    counter++;
    if(counter == SPECIAL_COUNTER && input > 0){
      if(input == 1){
        if(state0 == 0){
          state0 = MAXPWMSTATES-1;
        }else{
          state0 = 0;
        }
        #ifdef USEEEPROM
          EEPROM.write(0 + EEPROMFROM * 5,state0);
        #endif
        getPWMValue(state0, 0);
      }else if(input == 2){
        if(state1 == 0){
          state1 = MAXPWMSTATES-1;
        }else{
          state1 = 0;
        }
        #ifdef USEEEPROM
          EEPROM.write(1 + EEPROMFROM * 5,state1);
        #endif
        getPWMValue(state1, 1);
      }else{
        if(input == 3){
          state0 = MAXPWMSTATES-1;
          state1 = MAXPWMSTATES-1;
          state2 = true;
          state3 = true;
        }else{
          state0 = 0;
          state1 = 0;
          state2 = false;
          state3 = false;
        }
        #ifdef USEEEPROM
          EEPROM.write(0 + EEPROMFROM * 5,state0);
          EEPROM.write(1 + EEPROMFROM * 5,state1);
          EEPROM.write(2 + EEPROMFROM * 5,state2);
          EEPROM.write(3 + EEPROMFROM * 5,state3);
        #endif
        setState();
      }
    }
  }
}

void getPWMValue(int state, int pin){
  if(state == 0){
    digitalWrite(pin, LOW);
  }else if(state == MAXPWMSTATES-1){
    digitalWrite(pin, HIGH);
  }else{
    int value = 128+127*state/(MAXPWMSTATES-2);
    analogWrite(pin, value);
  }
}

void getBitValue(boolean state, int pin){
  if(state){
    digitalWrite(pin, HIGH);
  }else{
    digitalWrite(pin, LOW);
  }
}

void setState(){
  getPWMValue(state0, 0);
  getPWMValue(state1, 1);
  getBitValue(state2, 2);
  getBitValue(state3, 3);
}

Entonces los #defines son macros a nivel de compilador, esto es que no existen en el código compliado, se sustituyen por los valores que representan. Con esto he hecho que el programa sea más pequeño.

También se puede activar o desactivar el uso de la memoria EEPROM (que es la memoria de datos, algo así como el disco duro en un ordenador, no es donde se guarda el programa), que tiene una vida media de 100.000 ciclos borrar-grabar. Esto se hace comentando la definición de la macro #define USEEEPROM Como han dicho son muchos ciclos, pero si se llegan a alcanzar, existe una alternativa, que es usar la constante de EEPROMFROM que permite utilizar otros bits de la memoria EEPROM para guardar los datos (el ATTiny 45 tiene 256 bits de EEPROM, como se usan 4 bytes para almacenamiento, 6.4 millones de ciclos borrar-grabar, el ATTiny85 tiene el doble). Más que suficiente.

Finalmente aclarar que al cargar el programa carga primero el estado del primer ventilador (tstate0) y comprueba si es 255. Cuando no se han guardado datos el valor de la memoria es 255 (1111 1111), y es un valor anómalo para el programa ya que el máximo valor a guardar es MAXPWMSTATES - 1, y no tiene sentido hacer 256 estados (especialmente pork no tiene tanta resolución, el máximo de resolución es 127 y no tiene sentido).  Este es el motivo de esto.


Una última cosa, fm, la placa que has diseñado no tiene ningún tipo de agujeros para colocarlo en aglún sitio :p no?

Iceflow

unread,
Aug 13, 2012, 7:41:56 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Eso se le pone en cero coma jajajja los agujeros en la placa digo :D y cambiar los pulsadores por pines igual, pero como tu usaste pulsadores en el sch pues supongo que por eso los uso FM jejeje

--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 7:47:20 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Por cierto en cuanto al nombre tenemos TinyFan y WarFan, alguno mas y lo sometemos a votación? Hasta que no haya nombre no se pone en Thingyverse :p

Iceflow

unread,
Aug 13, 2012, 7:55:29 PM8/13/12
to asrob-uc3m-i...@googlegroups.com

GWCFM FAN Jejejeje o CWFan... Por Clone Wars :) aunque a mi TinyFan no me disgusta :P

El 14/08/2012 01:47, "G.W.C. -AnesGy SD-" <g...@anesgysd.com> escribió:
Por cierto en cuanto al nombre tenemos TinyFan y WarFan, alguno mas y lo sometemos a votación? Hasta que no haya nombre no se pone en Thingyverse :p

--
 
 
 

Iceflow

unread,
Aug 13, 2012, 7:56:10 PM8/13/12
to asrob-uc3m-i...@googlegroups.com

A thingiverse y a instructables!!

G.W.C. -AnesGy SD-

unread,
Aug 13, 2012, 8:32:41 PM8/13/12
to asrob-uc3m-i...@googlegroups.com
Fm he estado mirando la placa y me has cambiado un pin :p el reset no lo podemos conectar al nulo, no creo que funcione :S Para que funcione hay que desactivar el reset, pero si desactivamos el reset ya no se puede volver a programar, se convierte en un chip estático :S

Si me lo pones en su sitio me pones los pines de energía 5-0-0-12, y me haces una versión con pines (no polarizados) en vez de pulsadores estaría perfecto. Así lo subo a thingyverse y demás.


Por cierto, hay una cosa más que es que en la placa los ventiladores están conectados en orden distinto (1, 4, 3, 2). Es un poco lioso luego con los interruptores. Se que con el software se puede cambiar, pero está la pega del PWM que no está en todos, y habría k hacer un manual para los impresos y para los topos.

alfonso lopez

unread,
Aug 14, 2012, 2:02:20 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
Gracias por la informacion voy a probara a ver q tal dale hoy la cosa,
Saludos

iPhone powered


El 13/08/2012, a las 21:30, "G.W.C. -AnesGy SD-" <g...@anesgysd.com> escribió:

Cualquier chorrada, yo puse k era para hacer un clon de Arduino k fue una de las finalidades XD y para mejorar la Prusa.

--
 
 
 

fm

unread,
Aug 14, 2012, 6:07:59 AM8/14/12
to asrob-uc3m-i...@googlegroups.com, g...@anesgysd.com
Bueno, creo que he recopilado todas la información que habéis sugerido y corregido alguna que otra pulga que había. Por lo que se ve metí la pulga del reset cuando corregí el esquemático. Por otro lado, no es buena idea dejar la línea de reset flotando con lo que le he puesto un pull-up para que siempre esté activo.

Aquí os dejo la versión que he creado del circuito, he dejado los botones y también le he puesto los pines no polarizados para que se pueda controlar de forma remota con un transistor o un FET. No me termina de convencer del todo este layout ya que tiene una pista que es relativamente delgada como para hacerla en casa (una que atraviesa uno de los conectores no polarizados). La he dejado en una sola cara, pero si no se hace con fotolito, las posibilidades que salga bien con transfer es un poco baja).

Por otro lado, estaba escribiendo una guía de cómo diseñar PCBs, solo llevo la introducción y una pequeña sección sobre cómo presentar un esquemático. Aquí os dejo el borrador tal cual ha salido, está sin revisar, sin formatear y sin paginar, pero creo que parte del contenido es aplicable a este hilo. Sigue en construcción...

Por cierto, el circuito que aparece en la portada es el que diseñé para otra aplicación y es el que estoy usando para el extractor de humos. La verdad es que la placa va muy sobrada para usarse como extractor de humos, pero como tenía el PCB disponible lo reutilicé. Luego os pongo alguna foto para que veáis como queda.

Por cierto, los humos que se producen al soldar, son fundamentalmente debidos al FLUX. Digamos que el plomo no se evapora, aunque si que es posible que haya trazas. Para los que vivís en grandes núcleos urbanos estáis mucho más expuestos al plomo por los humos de los coches. Cierto es que el flux no es muy saludable. 

Un saludo
fanDriver_RevC.zip
pcb design.pdf

G.W.C. -AnesGy SD-

unread,
Aug 14, 2012, 6:31:26 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
Si tienes asma no debes respirar ese humo pork te puede dar un ataque. Por otra parte si no lo tienes también te puede causar asma XD

fm

unread,
Aug 14, 2012, 6:34:28 AM8/14/12
to asrob-uc3m-i...@googlegroups.com, g...@anesgysd.com
Eso, por tanto recomiendo que todo el que viva en una gran ciudad intente no respirar ;-)

Iceflow

unread,
Aug 14, 2012, 6:40:03 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
xDDDDDD

Tu comparte el extractor... no vaya a ser... jajaja

--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 14, 2012, 6:44:00 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
No, digo el flux, el plomo solo te mata XD

Iceflow

unread,
Aug 14, 2012, 6:44:36 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
Creo que si retiras los botones esas pistas podrias hacerlas mas adecuadas, no? o quiza, en vez de dejar los pines en el centro de los botones llevarlos al extremo de la placa apartados de los botones...

Iceflow

unread,
Aug 14, 2012, 6:44:46 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
xDDDDDD

El 14 de agosto de 2012 12:44, G.W.C. -AnesGy SD- <g...@anesgysd.com> escribió:
No, digo el flux, el plomo solo te mata XD

--
 
 
 

G.W.C.

unread,
Aug 14, 2012, 7:23:55 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
Ya está funcional! El primer prototipo del controladorcillo!!

Arriba están los 4 cables de los pulsadores y los pulsadores :p Ya no hacen poltergeist!


Pablo Moreno

unread,
Aug 14, 2012, 8:40:24 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
Ahora con las CNCs que estamos haciendo @Fm se podra apurar mas en las distancias entre pistas y planos :)

Creo que con fotolito saldran bien todas las pistas aunque hubiera dejado un poco mas de espacio entre las pistas y el plano de masa.

Saludos



--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 14, 2012, 9:19:49 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
FM he revisado la última versión del circuito y he de decir... que está chulísima! La resistencia R10 si bien es bueno ponerlo, no la he puesto y no me ha dado problemas :p

He renombrado algunas cosas (las resistencias) para que guarden más orden, y para poder explicarlo más fácilmente cuando lo pongamos en thingiverse de todas maneras, es un trabajo fantástico! No puedo esperar a k termines la guía de PCB's que siempre he kerido aprender.

Por cierto, una duda, si he entendido bien, el condensador de desacoplo sirve para filtrar frecuencias elevadas, es para proteger al circuito si la fuente oscila?

fm

unread,
Aug 14, 2012, 11:35:42 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
Las pistas y los plandos de tierra no los puedo apurar más si queremos que la gente se las pueda fabricar en casa. Ahora están al límite de lo que se puede conseguir en casa con el método de "toner transfer".

Voy a ver si se me ocurre algo para mantener los botones en la placa, y sino, pongo la Rev D quitándo los botones y dejando los conectores.

fm

unread,
Aug 14, 2012, 11:44:06 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
Pues muchas gracias por los comentarios.

Con respecto a los condensadores, dependieno del tipo tienen 2 funciones:
1. Desacoplo - estos son condensadores cuya misión es desacoplar bloques de un circuito o encapsulados. Lo que hacen es por un lado filtrar el ruido que pueda haber en el rail de alimentación y cerrar el bucle de corriente que pueda tener ese encapsulado para que no afecte al resto del circuito.
2. Bypass - este se utiliza para tener una pequeña carga de baja impedancia y poder "reaccionar" frente a transitorios de consumo que pueda tener un circuito. Al ser condensadores más grandes, también se usan para filtrar bajas frecuencias. Se puede ver como un desacoplo a nivel de circuito.

Por cierto, ¿qué tal te ha funcionado el condensador en la entrada de alimentación?

fm

unread,
Aug 14, 2012, 11:47:05 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
La guía de diseño de PCBs la estoy cocinando tal cual escribo. Es un pequeño compendio de sugerencias que he encontrado útiles a la hora de hacer cualquier diseño.

La parte de esquemáticos la he dejado intencionadamente escueta con unas reglas básicas para poder entrar en materia después. Pero al ser el punto de partida de todo diseño, lo he considerado interesante.

¿Qué os va pareciendo?

Iceflow

unread,
Aug 14, 2012, 11:56:55 AM8/14/12
to asrob-uc3m-i...@googlegroups.com
La guia la verdad es que esta genial, es algo que resulta super util, yo que no soy ingeniero de circuitos :P ni nada parecido, mas que un aficionado, fallo en muchos conceptos y una guia de este tipo ayuda a dejar cosas mas claras y guiar por el buen camino del diseño jejeje

Lo de una revision con botones y otra con pines seria la mejor idea, para que cada cual haga la que le parezca y asi poder en cada una adaptar las pistas como mejor conviene y sin forzar el tema por tener que poner los botones y los pines juntos... no?

Saludos y a seguir con el buen trabajo!!


--




G.W.C. -AnesGy SD-

unread,
Aug 14, 2012, 12:33:19 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
Hay un fallo en el código, donde pone int value = 128+127*state/(MAXPWMSTATES-2);, tiene que poner int value = 128+127*state/(MAXPWMSTATES-1);

Iceflow

unread,
Aug 14, 2012, 12:38:00 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
Bueno es saberlo :P

Gracias por la correcion!!

El 14 de agosto de 2012 18:33, G.W.C. -AnesGy SD- <g...@anesgysd.com> escribió:
Hay un fallo en el código, donde pone int value = 128+127*state/(MAXPWMSTATES-2);, tiene que poner int value = 128+127*state/(MAXPWMSTATES-1);

--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 14, 2012, 12:41:46 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
Por cierto hay k tener cuidado pork he estado apunto de cargarme un ATTiny (conecté la corriente al revés, el 12V donde el 5V) hizo un ruido como de morirse, pero luego lo volví a programar y funcionaba XD.

Lo que si me he cargado es un transistor, pork hizo corto los cables de un ventilador y ya sabeis, 1.5A de golpe por el pobre bicho.

Los componentes electrónicos rotos se tiran a la basura o se pueden llevar a reciclar?

Iceflow

unread,
Aug 14, 2012, 12:49:16 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
Hay que tener cuidado con los pobres componentes jejeje Supongo que en algun lado los recojeran para reciclar, tipo el punto limpio de tu zona... al menos ordenadores y cosas asi recojen...

--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 14, 2012, 12:50:56 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
Y puedo recoger ordenadores allí? Donde se mira donde están?

Iceflow

unread,
Aug 14, 2012, 12:53:10 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
FM estoy mirando para poder poner en una misma hoja impresa desde el eagle varias copias de la placa pero no encuentro manera... lo unico que se me ocurre es exportar a pdf y currarme algo desde ahi o en el propio eagle copiar la placa y poner varias juntas y luego imprimir... sabes si hay alguna opcion que saque multiples copias de una tacada?

Saludos!

Iceflow

unread,
Aug 14, 2012, 1:06:00 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
Llevarte tu ordenadores tirados? pues supongo que si le comes la olla un poco a los tipos del punto limpio y tienen algo alli tirado y no les importa supongo que si jejeje yo he conseguido muchas cosas por la patilla tirandome el rollo con la gente de los sitios, contandole que es para tal proyecto y tal otro y que no encuentro no se que por tal sitio y asi jejeje y dependiendo con quien des pues te puede echar un cable o mandarte a tomar por prusa!! :P

Yo por suerte o por desgracia tengo a mano plenty of basura informatica jajaja en mi oficina se tiran ordenadores enteros o piezas todas las semanas o casi... :P

Y ahora que lo pienso... no pillare nunca una buena impresora/fotocopiadora que me de unos buenos motores... :( solo saco motores enanos jajaja

fm

unread,
Aug 14, 2012, 1:24:22 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
Bueno, aquí os dejo la rev D de la placa solo con botones y la Rev A solo con cabeceras.

Con esto y un bizcocho...
fanDriver_Headers_RevA.zip
fanDriver_RevD.zip

Iceflow

unread,
Aug 14, 2012, 1:41:37 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
... a tomar por prusa pesados que no modifico nada mas... XDDDD

Muchas gracias malpar!! Me voy a poner con una en breves!! a ver si mi plastificadora aun funciona :P que hace un tiempecito que no le saco nada jejeje

El 14 de agosto de 2012 19:24, fm <fmalp...@gmail.com> escribió:
Bueno, aquí os dejo la rev D de la placa solo con botones y la Rev A solo con cabeceras.

Con esto y un bizcocho...

--
 
 
 

G.W.C. -AnesGy SD-

unread,
Aug 14, 2012, 2:04:59 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
Ya lo estoy subiendo a thingiverse, utilizando la PCB RevC con pin y pulsador a la vez (que es la que me parece más versátil).

G.W.C. -AnesGy SD-

unread,
Aug 14, 2012, 6:24:48 PM8/14/12
to asrob-uc3m-i...@googlegroups.com
Vale ya he hecho la primera acutalización en Thingiverse: He mejorado el programa

Ahora el programa ocupa un poco menos (1.96KB sin EEPROM y 2.27KB con EEPROM), y sólo guarda en la memoria el estado si lleva más de 2 segundos sin cambiar, por lo k si le das varias veces a un botón, como los PWM sólo se grabará el estado una vez (a no ser k dejes pasar el tiempo entre pulsación y pulsación). También si da la vuelta entera y acaba en el mismo sitio del que empezó, no grabará nada :p

fm

unread,
Aug 15, 2012, 5:09:06 AM8/15/12
to asrob-uc3m-i...@googlegroups.com
Pues muchas gracias por añadirme en la sección de créditos. Ha quedado muy bien el mini-proyectillo.
Buen trabajo.

Guillermo Welch C.

unread,
Aug 15, 2012, 6:43:59 AM8/15/12
to asrob-uc3m-i...@googlegroups.com
Si haces mas renders de los pcb k mi ordenador no puede cargar el programa k abre los POV

fm

unread,
Aug 15, 2012, 7:11:03 AM8/15/12
to asrob-uc3m-i...@googlegroups.com
Pues dicho y hecho. Aquí los tienes.
FanDriver.png
FanDriver_Botton.png
Screen Shot 2012-08-15 at 13.06.41.png

nayma rescue

unread,
Aug 15, 2012, 9:40:12 AM8/15/12
to asrob-uc3m-i...@googlegroups.com
Esta será fácil de soldar...


2012/8/15 fm <fmalp...@gmail.com>
Pues dicho y hecho. Aquí los tienes.



On Wednesday, August 15, 2012 12:43:59 PM UTC+2, G.W.C. wrote:
Si haces mas renders de los pcb k mi ordenador no puede cargar el programa k abre los POV

--
 
 
 

fm

unread,
Aug 20, 2012, 6:26:02 PM8/20/12
to asrob-uc3m-i...@googlegroups.com

Lo prometido es deuda. Aquí os dejo una fotico del extractor de humos. Lo que hay dentro de la caja es el PCB que os dejo adjunto.


Realmente el PCB estaba diseñado para un sistema para controlar la calefacción usando conductos de aire. Pero con no poner algunos componentes...

En la parte trasera del ventilador hay un filtro de carbón.

Iceflow

unread,
Aug 20, 2012, 6:36:01 PM8/20/12
to asrob-uc3m-i...@googlegroups.com
Tio, que pro!! ¿Te dedicas a esto profesionalmente?

Viene con LCD y toda la pesca jejeje para un extractor de humos quiza sea excesivo, pero para el controlador de calefaccion esta genial!! Aunque ya que se tiene se le pone jejeje

Lo que veo por el render de la PCB es que lleva cosillas SMD y es una placa con mogollon de vias!!, ¿hay posibilidad de una placa de una cara con troughole? Aunque el integrado estuviera en SMD...

Aun asi, pasanos esos diseños ipsoflauto!! XDDD

Prusaludos!!

--
 
 
 

fm

unread,
Aug 20, 2012, 6:57:53 PM8/20/12
to asrob-uc3m-i...@googlegroups.com
Muchas gracias por los comentarios. No, no me dedico a la electrónica de forma profesional. Lo mio son sistemas embarcados de tiempo real (satélites, cohete, móviles, instrumentación de medida, ...). Digamos que la electrónica es un más bien una afición. De todas formas, siempre he dicho: "Para ser un buen ingeniero de SW tienes que conocer muy bien el HW, y vice versa".

El rollo de esta placa es que fue un regalo de cumpleaños para mi padre: se instaló una estufa de biomasa en casa y tenía el salón como las calderas de Pedro Botero, pero el resto de la casa estaba como un témpano. Le diseñe un sistema de conductos de aire, un sistemica de control (este) y ahora tiene la casa entera a una temperatura de cine por 1€ al día en invierno (el precio del bio-combustible)! El PCB está diseñado para encajar en la caja que véis. Ahora tiene en su casa unas cuantas de estas centralitas que le distribuyen el aire caliente, en cada estancia y puede poner la temperatura que le plazca. El tema es que no había nada en el mercado y algo similar, le costaba un ojo de la cara. Eso sí, el buen hombre es tan quisquilloso que se pone a comporar la temperatura del termómetro de los chinos con el chisme este, XD

Como me sobraron placas, las use para esto. Hay componentes en la otra cara que no monto para este tipo de cosas. Las vias son simplemente para garantizar la integridad del plano de tierra.

El LCD es I2C y se ve de cine, usa una de mis librerías que anda circulando por la red.

Si queréis mañana os pongo los ficheros Eagle.

Un saludo,

fm

Guillermo Welch C.

unread,
Aug 21, 2012, 1:31:09 AM8/21/12
to asrob-uc3m-i...@googlegroups.com
Yo estaba el otro día mirando las clases para manejar LCDs en Arduino cuando me encuentro uno firmado con fm y lo pienso y digo sera el mismo? Y si, es el nuestro :p

nayma rescue

unread,
Aug 21, 2012, 4:41:49 AM8/21/12
to asrob-uc3m-i...@googlegroups.com
Y tanto que es el mismo..

2012/8/21 Guillermo Welch C. <anes...@gmail.com>
Yo estaba el otro día mirando las clases para manejar LCDs en Arduino cuando me encuentro uno firmado con fm y lo pienso y digo sera el mismo? Y si, es el nuestro :p

--




Alfonso Lopez

unread,
Aug 21, 2012, 4:52:58 AM8/21/12
to asrob-uc3m-i...@googlegroups.com
Siguiendo con este tema, que programador usais vosotros para los atmel....

saludos
--
 
 
 

nayma rescue

unread,
Aug 21, 2012, 4:57:25 AM8/21/12
to asrob-uc3m-i...@googlegroups.com
yo uso una placa duemilanove, con este circuito http://txapuzas.blogspot.com.es/2009/12/paperattinyprogrammer-un-programador.html

2012/8/21 Alfonso Lopez <eld...@gmail.com>
--
 
 
 

fm

unread,
Aug 21, 2012, 5:23:23 AM8/21/12
to asrob-uc3m-i...@googlegroups.com
Si, la librería de control de LCDs la escribí porque me parecía un auténtico engorro tener que descargarse una librería para controlar LCDs por cada tipo de driver: 4 hilos, I2C, shiftregister, ... El caso es que al final ha quedado una librería muy redonda y probablemente la más rápida a este lado del Pecos, ahora está al límite de garantizar los timings del driver del LCD. A la de 4 hilos, le queda una pequeña optimización usando la librería FastIO y me queda por publicar oficialmente la librería de control de LCDs con un solo hilo de control!
Cuanto más rápida es la librería más tiempo tiene el AVR para hacer otras cosas.

fm

unread,
Aug 21, 2012, 5:24:32 AM8/21/12
to asrob-uc3m-i...@googlegroups.com
Yo utilizo sobre todo el programador original de Atmel, es barato, muy fiable y la gracia es que Atmel lo mantiene.

Guillermo Welch C.

unread,
Aug 21, 2012, 5:31:13 AM8/21/12
to asrob-uc3m-i...@googlegroups.com
En txqpuzas hay un diseño muy muy sencillo de programador de ATTiny para Arduino (superfacil de montar)

Jorge Montero

unread,
Aug 21, 2012, 5:38:52 AM8/21/12
to asrob-uc3m-i...@googlegroups.com, asrob-uc3m-i...@googlegroups.com
Yo uso dos, o bien un Arduino, o bien el Pololu ref.1300.



Un saludo 

Jorge Montero
--
 
 
 

Iceflow

unread,
Aug 21, 2012, 9:06:17 AM8/21/12
to asrob-uc3m-i...@googlegroups.com
USBasp por aqui :D

Malpartida, eres un megacrack tiu!!

Cuelganos esos eagles, que les echemos un eye jejeje

--
 
 
 

AREN3D

unread,
Aug 21, 2012, 1:51:48 PM8/21/12
to asrob-uc3m-i...@googlegroups.com
Cada vez que veo este tema me sorprendo mas. De verdad que eres un crack, sigue aderezando esta comunidad con tus inventos que vienen muy bien.

fm

unread,
Aug 21, 2012, 4:48:38 PM8/21/12
to asrob-uc3m-i...@googlegroups.com
Hola a todos, la verdad es que vais a conseguir que me sonroje! Muchas gracias por vuestros comentarios.

Bueno, a petición popular, aquí os dejo los ficheros Eagle de esta placa. Una placa que no tenía muchas intenciones de hacer
pública, pero ...

Espero que la disfrutéis.

Un saludo,

fm
It is loading more messages.
0 new messages