miércoles, 9 de mayo de 2018

I2C y 1-Wire con ESP-12E. Ejemplo con sensor DS18B20 y pantalla OLED


I. Introducción.

En la siguiente entrada se mostrará como comunicar el chip WIFI ESP-12E con dispositivos que trabajan de manera diferente a los tradicionales elementos analógicos o digitales que necesitan de un convertidor analógico-digital o de cuatro o más entradas/salidas digitales para comunicarse. La primera forma de comunicación que se presentará es por medio del protocolo 1-Wire el cual permite la comunicación utilizando una sola linea de datos más tierra, para ello se utilizará el sensor de temperatura DS18B20 que se conecta a una pin de entrada/salida propósito general (GPIO) del chip. Otra forma de comunicación que se mostrará es por medio del protocolo I2C con el cual el chip es capaz de trabajar teniendo pines específicos para este fin, se utilizará una pantalla OLED monocromática de 128x64 pixeles en la cual se mostrará el valor leído de temperatura y para aprovechar que este tipo de pantallas permiten mostrar imágenes también se mostrará el logo de la institución. 
El valor de temperatura además de ser mostrado localmente será enviado vía WiFi a una página web propia.

II. Comunicación 1-Wire.

Como se indica en [1] la base de la tecnología 1-Wire es un protocolo serial que utiliza una sola linea mas tierra para la comunicación, además es posible tener una red maestro-esclavo con varios dispositivos de este tipo.
La tecnología fue creada por la empresa Dallas Semiconductor y actualmente existen muchos dispositivos que trabajan con este protocolo tales como: dispositivos de identificación, tiempo, memorias EPROM, sensores de temperatura y datalogger de temperatura entre otros [2].
Para el ejemplo de esta entrada se utilizó el sensor DS18B20, el cual es un sensor que provee medidas de temperatura en grados Celsius con una resolución de 9 a 12 bits, puede alimentarse de dos formas con una fuente externa o de manera parásita (toma el voltaje del bus 1-Wire), en el caso de esta entrada se utilizará la fuente externa que será el mismo voltaje con el que se alimenta el chip (3.3V) y la resistencia pull-up de 4.7kohms que se indica en el datasheet [3] y que se muestra en la Fig. 1.

Fig.1. Alimentación del sensor DS18B20 con una fuente de voltaje externa.

La linea de datos puede ser conectada a cualquier GPIO libre del chip, para este ejemplo se utilizó el GPIO14.

En el programa del chip es necesario primero instalar las librerías OneWire.h y DallasTemperature.h, definir el pin a utilizar, establecerlo como el bus de comunicación y luego instanciar la librería de DallasTemperature con la configuración OneWire. Ver Fig. 2.

Fig.2. Sentencias del programa para configurar la comunicación OneWire.

En el programa debe de inicializarse el sensor, esto se hace una sola vez, luego para leer los valores es necesario cada vez hacer una petición de lectura y luego leer el valor y guardarlo en una variable tipo float. En el programa también se verifica si el valor es mayor a 33°C, si es así coloca el valor de 1 en la variable alarma. Las sentencias se muestran en la Fig. 3.

Fig.3. Inicializar el sensor, hacer petición de lectura y lectura de valor.


III. Comunicación I2C.

I2C (Inter-Integrated Circuit) es un protocolo de comunicación serial síncrono para comunicar un maestro con uno o más esclavos, solamente utiliza dos cables para la comunicación: SCL (Serial Clock) es donde viaja la señal de reloj necesaria para que se sincronicen los dispositivos que se están comunicando y SDA (Serial Data) donde viajan los datos.
El ESP-12E posee pines específicos para esta función SCL está multiplexada con GPIO5 y SDA con GPIO4. Ver Fig. 4.


Fig.4. Disposición de pines del módulo ESP-12E.

El dispositivo con comunicación I2C a utilizar será una pantalla OLED (Diodo orgánico de emisión de luz) monocromática de 0.96 pulgadas con 128x64 pixeles [5], la cual es capaz de mostrar texto de diferente tamaño e imágenes. (Ver Fig. 5).


Fig.5. Pantalla OLED monocromática de 128x64 pixeles con comunicación I2C.

La pantalla se alimenta con la misma fuente de voltaje que el chip ESP-12E (3.3V) y los pines SDA y SDL se conectan a los pines respectivos en el ESP-12E SDA (GPIO4) y SCL (GPIO5).

A) Configurar imagen para ser mostrada en pantalla OLED 128x64 pixeles.

Como se mencionó anteriormente esta pantalla además de texto en diferentes tamaños puede mostrar gráficos, para ello es necesario convertir la imagen a blanco y negro (o transparente y negro), reducirla a 128 pixeles de ancho y 64 de alto o menor a este tamaño y por último exportarla como .xbm, todo esto puede realizarse con diferentes programas de edición de imágenes, pero aquí se explicará como hacer todo el proceso con el programa de edición de imágenes, libre y gratuito GIMP el cual está disponible para Windows, Linux y Mac. 

Primero es necesario volver la imagen blanco y negro (o transparente y negro), siendo lo que queda en negro los pixeles que se van a iluminar, en el caso de esta entrada se utiliza el logo de la institución el cual es celeste con fondo transparente de un tamaño de 141x141 pixeles, por lo que será necesario volver el color celeste en negro, con el fondo no hay problema ya que es transparente, entonces lo primero que se debe hacer es convertir la imagen a gris con la opción "Desaturar" del menú "Colores". Ver Fig. 6.


Fig.6. Convertir la imagen a escala de grises.

Ahora para volver negra la imagen es necesario cambiar su nivel de color, para ello del menú "Colores", se selecciona la opción "Niveles" y en la parte de "Niveles de entrada" mover el cursor que aparece en el centro totalmente a la derecha. Ver Fig.7.

Fig.7.Cambiar nivel de color de la imagen.


Luego es necesario convertir la imagen con un mapa de colores únicamente blanco y negro, para ello del menú "Imagen" seleccionar "Modo", después "Indexado" y dentro de este seleccionar la opción "Usar paleta en blanco y negro (1-bit)". Ver Fig. 8.

Fig.8. Convertir el mapa de colores de la imagen solamente blanco y negro.

Es necesario ajustar el tamaño de la imagen para que quepa en la pantalla, en el caso de la imagen de ejemplo es de 141x141 pixeles y la pantalla es de 128x64, como en la imagen largo y ancho son iguales para que se muestra en pantalla correctamente lo más grande que se puede dejar es 64x64 pixeles. Para cambiar el tamaño, del menú "Imagen" seleccione "Escalar la imagen" y ahí verifique que esté en pixeles (px) y modifique la anchura y altura deseada. Los eslabones a la derecha de los valores si están unidos automáticamente al cambiar anchura o altura coloca el valor de la otra para no perder la proporción de la imagen, pero si están separados deja que coloquemos anchura y altura sin que una dependa de la otra.

 
Fig.9. Convertir tamaño de imagen.

Todos estas modificaciones pueden hacer que la imagen pierda calidad y que sea necesario retocarla, GIMP cuenta con herramientas para esto. El último paso es exportar la imagen como .xbm, para ello del menú "Archivo", seleccionar "Exportar como" y ahí guardar la imagen como .xbm. Ver Fig. 10.

Fig.10. Exportar la imagen como .xbm.

B) Programa para mostrar imagen, texto y variables en pantalla OLED.

Para poder trabajar con gráficos en la pantalla es necesario utilizar la librería U8g2 disponible en [8], una vez descargada es necesario ubicarla en la carpeta de librerías de arduino y luego ingresar a: C:......\Arduino\libraries\U8g2-2.21.8\examples\page_buffer y ahi abrir el archivo GraphicsTest.ino con un editor de texto o para que se vea de manera ordenada mejor con un editor de código como Notepad++ que es un programa gratuito y puede descargarse de [11] , en este es necesario quitar el comentario a la sentencia del constructor [9] que corresponde a la pantalla que se utilizará, que en el caso del ejemplo es: U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE), al modificarlo debe guardar los cambios (ver Fig. 11). Este constructor indica lo siguiente : Controlador (SSD1306), Display (128x64_noname), Tipo de comunicación (I2C), La imagen no estará rotada (U8G2_R0), sin pin de reset (/* reset=*/ U8X8_PIN_NONE). Copie la sentencia en alguna parte ya que posteriormente la vamos a utilizar en el programa. Cierre el archivo .ino.


Fig.11. Quitar comentario a sentencia necesaria para trabajar con la pantalla OLED 128x64.

En el programa inicialmente debe incluirse la librería U8g2lib.h, luego debe colocarse el constructor que se copio del archivo GraphicsTest.ino . Ver Fig 12.


Fig.12. Incluir librerías U8g2 y constructor para la pantalla.

El archivo .xbm se debe abrir con cualquier editor de texto o editor de código, verá que se han definido unas variables con el ancho y alto de la imagen y otra con los bits de la imagen.

Fig.13. Código del archivo .xbm.


Se debe copiar todo el contenido de este archivo y pegarlo en el programa en la parte donde se definen las variables.

Fig.14. Colocar todo el contenido del archivo .xbm en el programa.

Cuando el programa inicia se debe inicializar U8g2, esto solamente es necesario hacerlo una vez. Para mostrar en pantalla imagen y datos es necesario limpiar la pantalla y en un lazo entre las sentencias u8g2.firstPage y u8g2.nextPage colocar la sentencia .drawXBMP indicando: columna, fila, ancho, alto y bits, estos últimos datos son las variables que se generaron al exportar el archivo .xbm.
Luego con .SetFont se indica la fuente y tamaño del texto a utilizar, para imprimir un texto se utiliza la instrucción .drawStr indicando columna, fila y el texto a imprimir que en este caso es la palabra TEMP y dos puntos iniciando en la columna 70 y fila 20. Para imprimir una variable se utilizan otras funciones, primero con .setCursor ubicamos donde iniciará, en este caso columna 68 y fila 40 y luego con .print indicamos la variable que en este caso es una variable de tipo float llamada temperatura y se solicitan dos decimales.

Luego se verifica si ha habido una alarma de temperatura si es así también se imprime en la columna 68, fila 56 el texto "Alerta".


Fig.15. Inicializar U8g2, limpiar la pantalla y mostrar imagen y texto en pantalla.


IV. Envío del dato leído a Página Web

El código de la página web es el mismo explicado en la entrada anterior "Enviar datos desde el Chip wifi ESP-12E a página web propia y alertas por correo" , solo se modificó el color de fondo de la página.

De igual forma las sentencias en el programa del ESP-12E para enviar los datos son las mismas que se explicaron en la entrada anterior con excepción de que la variable ahora se llama Temperatura, pero a la hora de enviarla se guarda en otra llamada valor que es la que entiende la página web anterior. Ver Fig. 16.

Fig.16. Envío de valor de temperatura y alarma a página web propia.

V. Circuito utilizado

El circuito completo que se armó es el que se muestra en la Fig.17 (la placa de Arduino como en todos los ejemplos que se han explicado en este blog solo sirve para enviar el programa al ESP, monitorear el puerto serial y brindar la fuente de 3.3V).


Fig. 17. Circuito implementado, una vez programado el ESP se puede retirar la placa de arduino y colocar una fuente externa de 3.3V para alimentar el sistema.

VI. Resultados obtenidos

En la Fig. 18 se muestra lo que se observa en la pantalla OLED, se puede ver el logo y el valor de temperatura leído, en la Fig. 19 se muestra lo que presenta la página web, que es el mismo valor, si hay algún cambio se muestra primero en la LCD ya que está directamente conectada al ESP y con unos segundos de retraso se actualiza en la página web.

Fig. 18. Información en la pantalla OLED temperatura normal.

Fig 19. Información en la página web temperatura normal.

La temperatura cerca del sensor se aumenta para que sobrepase los 33 °C que se colocaron para la alarma, en la LCD se mostró el valor inmediatamente y luego en la página web. Ver Fig.20 y 21.

Fig. 20. Información en la pantalla OLED cuando se genera la alarma.

Fig 21. Información en la página web cuando se genera la alarma.

El código de la página web lo puede descargar de la entrada anterior, sin necesidad de hacerle ningún cambio, y el código del ESP-12E se puede descargar aquí.

En el siguiente vídeo podrá observar lo explicado en esta entrada y los resultados obtenidos:



VII. Conclusiones.

Con esto se comprueba la versatilidad del chip ESP-12E que permite una comunicación con sus periféricos usando otros protocolos a los tradicionales, ahorrando pines para hacer posible la conexión de más elementos para elaborar sistemas más complejos. Todo esto gracias al esfuerzo de empresas y desarrolladores de software particulares que crean librerías Arduino para facilitar estos procesos.

El sensor DS18B20 es una gran opción para sensar temperatura ya que se obtiene una respuesta estable con muy buena resolución, con respecto a la pantalla OLED es una muy buena alternativa para mostrar datos localmente, ya que a diferencia de una pantalla LCD común permite mostrar texto en diferentes tamaños e incluso imágenes.

 Referencias

[1] Maxim Integrated Products, Inc. (2008). Overview of 1-Wire Technology and Its Use. Disponible online en: https://www.maximintegrated.com/en/app-notes/index.mvp/id/1796
[2] Maxim Integrated Products, Inc. (2016). 1-Wire Products. Disponible online en : https://www.maximintegrated.com/en/pl_list.cfm/filter/21
[3] Maxim Integrated Products, Inc. (2015). DS18B20 Programmable Resolution 1-Wire Digital Thermometer Disponible online en: https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
[4] Morales, M. (s.f). Tema 1. Qué es I2C. T-BEM. Disponible online en: http://learn.teslabem.com/fundamentos-del-protocolo-i2c-aprende/2/
[5] Dealextrem. (s.f).0.96 128x64 I2C interfaz de color blanco módulo de visualización OLED para arduino . Disponible online en: http://www.dx.com/es/p/0-96-128x64-i2c-interface-white-color-oled-display-module-board-for-arduino-419230#.WuyzK6Qvzcd
[6] Sandhan.(2017).Interfacing & displaying a custom graphic on an 0.96? I2C OLED with Arduino. Disponible online en: https://sandhansblog.wordpress.com/2017/04/16/interfacing-displaying-a-custom-graphic-on-an-0-96-i2c-oled/
[7] Gimp (s.f). Descargas para Gimp. Disponible online en: http://www.gimp.org.es/modules/mydownloads/
[8] Oliver (2018). Arduino Library List: U8g2-2.22.18.zip. Disponible online en: https://www.arduinolibraries.info/libraries/u8g2
[9] Olikraus (2018). U8g2setupcpp. Disponible online en: https://github.com/olikraus/u8g2/wiki/u8g2setupcpp#ssd1306-128x64_noname
[10] Olikraus (2018). fntlistall. Disponible online en: https://github.com/olikraus/u8g2/wiki/fntlistall
[11] Notepad++team (2015). Notepad++ 7.5.6. Disponible on line en: https://notepad-plus-plus.org/download/v7.5.6.html

martes, 20 de mayo de 2008

Encendido y Apagado de un Relé II

Ahora se verá como encender y apagar un relé con un circuito con transistor, utilizaremos el mismo relé del ejemplo anterior que necesita una alimentación de +12V, en el ejemplo anterior no tomamos en cuenta la corriente que demandaba el relé puesto que utilizamos una compuerta colector abierto, capaces de manejar estos dispositivos, esta vez para los cálculos de los elementos a utilizar si vamos a tomar en cuenta la corriente que consume el relé. El circuito base es el que se muestra en la figura 3:

Figura 3.


Sólo hay que seleccionar el tipo de transistor NPN adecuado y calcular el valor de Rb necesario. Este circuito trabaja llevando al transistor entre la zona de corte y saturación, cuando esta en la zona de saturación, la corriente de base es mayor que cero, el transistor se comporta como un alambre, hay diferencia de potencial en la bobina y el switch se cierra, ver figura 4(a), en cambio cuando esta en la zona de corte la corriente de base es cero , el transistor se comporta como un circuito abierto, ver figura 4(b) y en la bobina no hay diferencia de potencial ya que los dos extremos tienen 12 voltios, no hay corriente eléctrica ni campo magnético y por ende el switch no se mueve.
Figura 4(a)

Figura 4(b)

Para Iniciar con los cálculcos debemos tener en cuenta que voltaje llegará a la resistencia Rb, supongamos que nuestro circuito entregará +12 voltios cuando se necesite que el motor se encienda y -12 voltios cuando no se quiera encendido, este voltaje negativo puede resultar problematico por lo que seria mejor colocar un diodo en serie con Rb, por el momento omitiremos ese caso. Medimos la resistencia de la bobina del Relé con el ohmetro, se obtuvo una resistencia de 280 ohms, sabiendo que la alimentación del relé es de 12 voltios calculamos la corriente que consume, que también será la corriente de colector Ic = 12/280 = 42.86mA aproximando 43mA, este parámetro nos servirá para elegir nuestro transistor, por accesibilidad elegimos el 2N2222 que es el mismo NTE123 verificamos en su hoja de datos (datasheet) ver fragmento en figura 5 y observamos que es capaz de dar 800mA, entonces lo podemos escoger, ahora en la misma hoja de datos, figura 5, tenemos que ver los posibles valores de hfe disponibles vemos que la mínima es 75.


figura 5

Siguiendo la hoja de datos, figura 6, encontramos que a IC = 150 mA y VCE = 10 V; hfe esta entre 100 mínimo y 300 máximo, IC a 150 mA es suficiente, siempre se recomienda escoger el hfe mas pequeño para asegurarse que el transistor se sature, pero en la práctica a veces no es conveniente.
Encontremos Ib para los tres valores de hfe 75, 100 y 300 ; Ib= Ic/hfe:

  • Ib(75)= 43mA/75 = 573uA.
  • Ib(100)= 43mA/100 = 430uA.
  • Ib(300)= 43mA/300= 143uA.

Ahora calculemos los tres posibles valores de Rb; Rb= Vb/Ib, el voltaje de base dijimos que iba a ser +12 voltios donde se quería que el transistor entrará a saturación

  • Rb(75)= 12/573uA = 20.94 Kohms.
  • Rb(100)= 12/430uA = 27.9 Kohms.
  • Rb(300)= 12/143uA = 83.9 Kohms.

Con un potenciómetro de 100Kohms (resistencia variable de 0 a 100Kohms) veremos que resistencia nos conviene más. Resultado de las pruebas:

  • Con Rb=20.94Kohms el relé se activaba a los 4.12 voltios no a los +12 voltios.
  • Con Rb=27.9Kohms el relé se activaba a los 5.34voltios no a los +12 voltios.
  • Con Rb=83.9Kohms el relé no se activó aunque llegue a los +12 voltios.

Eso quiere decir que hay un valor entre 27.9 K y 83.9K que hará que el transistor se sature exactamente en 12 voltios y el relé se active, para saber ese valor debemos colocar el potenciómetro en su máximo valor y con los 12 voltios en la resistencia de base ir reduciendo lentamente el potenciómetro hasta que se cierre el relé y medir el valor al que quedo el potenciómetro, habiendo hecho la prueba quedo que el relé se cerrara justo en 12 voltios cuando la Rb sea de 77.8 Kohms, solo por curiosidad se puede calcular con que hfe daba ese valor de resistencia y se obtuvo: hfe = Ic/(Vb/Rb) = 278, el circuito ya esta listo, valores menores que 12 voltios hacen que el transistor este en corte y el relé no se cierre.

NOTA: ese diodo en paralelo con la bobina del rele en el circuito digital y en este se utiliza como proteccion para la compuerta o el transistor, como se sabe una bobina no permite cambios bruscos de corriente, cuando el transistor o la compuerta han activado a la bobina y subitamente la desactivan, la bobina induce voltaje con la direccion de Vcc al transistor o compuerta, y si este voltaje excede los niveles maximos que soporta el transistor o la compuerta los dañará, por eso se pone el diodo de esa forma, cuando se activa la bobina el diodo no conduce esta en circuito abierto y no hay problema, cuando se desactiva la bobina y se genera el voltaje, el diodo se polariza en directa y conduce. La corriente a tráves de la bobina cuando se encendio continua a tráves del diodo , eliminando el cambio brusco de corriente y claro por causa de la resistencia de la bobina y la del diodo el nivel de voltaje de la bobina decaera a cero y el sistema se apagará


Encendido y Apagado de un Relé I

Partimos asumiendo que ya se sabe que es un relé y como trabaja, sino, pinche aquí

A continuación se presenta uno de los dos circuitos básicos para la activación de un Relé:

El primero es para sistemas digitales simples que trabajen únicamente con 0 y 5 Voltios y se desea activar algún dispositivo por medio de un Relé para ello necesitaremos una compuerta de Colector abierto, que son una variante técnica de las compuertas TTL comunes que se caracterizan, entre otras cosas, por manejar voltajes de salida superiores al de alimentación y por lo tanto capaces de manejar un Relé, el relé que utilizaremos necesita una alimentacion de 12 voltios y utilzaremos el interruptor normalmente abierto, que solo se cerrará cuando lo necesitemos.

Supongamos que tenemos un circuito que al activar una serie de switches deba activar un motor pequeño, con las compuertas TTL hacemos el circuito de tal manera que mientras los switches no son activados el esta enviando un cero a la salida, pero cuando se activan los switches manda un uno lógico (3-5 voltios aprox), el motor no se puede conectar directamente debido a que necesita una alimentación de 12 voltios para poder operar y los 5 voltios no tendrán efecto sobre él, por lo que necesitamos poner a la salida del circuito una compuerta colector abierto, dos ejemplos de ellas son la 7405 (Inversor, niega la entrada) y la 7407 (Buffer, lo que tiene en la entrada da a la salida), seleccionamos la 7405, porque necesitamos que de cero cuando se desea activar el motor y uno cuando se necesite desactivado, ya explicaremos porque, si quisiéramos que el circuito operará al revés podríamos poner la 7407, la alimentación de estas dos compuertas es la misma que la de todo el circuito, es decir +5v y tierra, luego a la salida de la compuerta iría el relé con su respectivo diodo de protección alimentado con 12 voltios y el motor conectado al switch que conectamos a 12 voltios también, pues 12 voltios es lo que necesita el motor para funcionar, si nuestro motor necesitara otro voltaje mayor y el relé lo permitiera el switch se conectaría a ese voltaje y la bobina siempre a los 12 voltios ( clic aqui para ver figura donde se conecta un Rele de 12 a 120 voltios a un motor con alimentacion 120 voltios).
el circuito se muestra en la figura 1:

Figura 1.

Ya tenemos el circuito que opera de la siguiente forma: Cuando el circuito esta dando cero voltios, es decir, no se cumplen las condiciones para que se active el motor, el 7405 tiene un cero en la entrada y esta dando un "uno" a la salida, ese "uno" no es 3 o 5 voltios sino los 12 Voltios que le demanda el relé, y como la bobina del relé esta al mismo potencial no se genera ninguna corriente, por lo que no se genera el campo magnético que cierra el switch por lo que permanece abierto y el motor no se activa, ver Figura 2.

Figura 2.

Cuando se cumplen las condiciones para que se active el motor el circuito manda un “uno” a la entrada de la compuerta 7405 y por ende este tiene un cero a la salida, ahora si existe diferencia de potencial en la bobina por lo que se genera la corriente eléctrica, el campo magnético cierra el switch y el motor ya esta alimentado y enciende, ver figura 3, por esta razón es que se necesitaba un inversor.
Figura 3.

En la próxima entrada se mostrará otro tipo de circuito para la activacion de un relé, pero ahora utilizando un transistor.

sábado, 15 de diciembre de 2007

Respuesta al comentario

Debido a una duda que surgio posponemos lo del area de tierra un momento y damos paso a contestar esta duda, lamento la tardanza, para evitar que se te coloquen puentes bajo componentes, en este caso bajo el conector del puente serial debes utilizar la propiedad Vrestrict, primero seleccionas el icono de polygon Luego te aparece la barra siguiente donde debes seleccionar vRestrict

y se procede a dibujar el poligono sobre el area donde se quiere evitar que se coloque el puente, en este caso el conector serial , dando clic una vez , soltamos nos movemos hasta el final del conector bajamos damos otro clic y asi hasta terminar el cuadrado ahora si procedamos a dar el autoroute:
como ven el puente ya lo pone en otro lado y ya no bajo el conector serial en donde pusismos la zona de restriccion.
aclarando eso pasamos a rellenar zonas vacias con zonas de tierra, para ello utilizamos la herramienta polygon que utilizamos arriba solo que no seleccionamos vRestrict sino la pista que queramos rellenar en nuestro caso Bottom, dibujamos el poligono damos autoroute y obtenemos


Como ven la distancia entre la zona de tierra y las pistas es muy chica esto se puede ajustar con la opcion Tools ---Drc-----en Drc se selecciona la opcion Cleareance y aparece la siguiente figura:

modificamos los de la columna que dice wire modificamos los tres valores a 32mil damos ok, puede aparecer una ventanita que dice drc error darle Dell_All y luego autoroute y obtenemos lo siguiente:

como ven la distancia se hizo mas grande, ahora para conectar esta parte a Tierra debimos haber colocado un simbolo de tierra en el esquematico y ponerle de nombre GND al poligono y el programa lo hacia automatico, pero da algunos problemas por lo que yo prefiero hacerlo manual.
Con esto finalizamos este minitutorial de Eagle, hay muchas mas cosas sobre este programa para alegria de muchos de nosotros en la siguiente direccion muchas personas han posteado diferentes truquitos de Eagle (incluidos los que se dieron aqui con algunas pequeñas diferencias), incluso de otros programas para hacer impresos, es un excelente foro de programacion de microcontroladores Pic en su mayoria, pero hay apartados para otros microcontroladores, lenguajes de programacion y muchas cosas variadas entre ellas el apartado para el diseño de placas PCB donde hay una seccion exclusiva para trucos de eagle, a continuacion les dejo la direccion del foro Todopic a la seccion de trucos para eagle http://www.todopic.com.ar/foros/index.php?topic=11481.0
y ya que estamos en esas de mencionar excelentes foros que hay por la web, les dejo la direccion a otro excelente foro pero este de programacion, hay una seccion para casi cada lenguaje de programacion existente es el foro SoloCodigo
saludos

miércoles, 28 de noviembre de 2007

Pistas mas gruesas

Hasta ahora las pistas que hemos creado con el autorouter o de forma manual han tenido el grosor que tiene por default el Eagle, ahora vamos a mostrar como cambiar el grosor de las pistas, podemos hacerlo manual en el caso de que solo sean algunas pistas las que queremos hacer gruesas, se debe dar clic en el icono que muestra la figura:luego en Layer seleccionamos si es a las pistas de abajo o a las de arriba:luego seleccionamos width y el ancho que deseamos:Luego damos Clic encima de la pista que queremos hacer mas gruesaPero si queremos que todas las pistas sean gruesas y que se haga el proceso automatico una forma de lograrlo es la siguiente: Deshacemos el autoroute si ya lo teniamos hecho, damos clic en Tools luego en Drcclic en la pestaña Size y luego en Minimum Width el valor deseado por ejemplo 40mil damos aceptar y luego damos clic en autoroute y obtenemos el siguiente esquema: como vemos las pistas quedaron del grosor deseado

Para la proxima se mostrara como rellenar zonas vacias con areas de tierra.

jueves, 22 de noviembre de 2007

Crear un impreso de una sola cara con el Autoroute

Hasta ahora se vio la creacion de un pequeño circuito impreso, primero con el autoroute y luego manualmente, cuando se hizo con el autoroute las pistas no se crearon de manera optima, en cambio cuando se hizo manual se trato de dejar lo mejor posible incluso puede ponerse de una sola cara con uno que otro pequeño puente por ahi, ahora esto resulta para circuitos pequeños, pero para un circuito de mayor tamaño rutearlo manualmente llevaria demasiado tiempo, por eso ahora vamos a a aprender a rutear un circuito con el autoroute para una sola cara y que las pistas queden optimas, generalmente es en la cara de arriba (TOP) en la que se ponen los elementos y abajo se hace la soldadura, por lo que las pistas se haran en la cara de abajo (BOTTOM), mas de algun puente sera necesario hacer por la parte de arriba. obviando los pasos hasta que tenemos los elementos ya en el .brd sin rutear. Damos clic en el autoroute pero ahora no solo daremos clic en OK sino que cambiaremos algunas propiedades, la primera pestaña GENERAL en 1 Top (cara de arriba), que es en la que no queremos que ponga pistas se puede poner la orientacion de como queremos los puentes, inicialmente tiene una linea vertical dejemosla asi para que los puentes nos salgan verticales, pero en Bottom ponemos el asterisco (*) lo que indica que puede poner las pistas en la cara de abajo de cualquier forma, ver figura.
la siguiente Pestaña es Busses como se muestra en la figura, esta dividida en LAYER COSTS, COSTS y MAXIMUM, nos ubicamos en LAYER COST justo en 1 Top inicialmente esta ahi un cero, eso le indica al autoroute que puede poner pistas en la cara de arriba y eso es precisamente lo que queremos evitar por lo que pondremos el costo mas alto posible 99 ,para que evite poner una pista en esa cara excepto si no hay otra opcion, tambien debe modificarse el costo de Via pues aunque puede que se necesiten puentes tampoco se quieren tantos esto minimizara el numero de puentes que pondra el autorouter, otro valor a modificar es el NonPref (abajo de via) que es el costo de hacer las pistas de la cara Top o sea los puentes de otra forma que no sea la que pusimos en nuestro caso de forma vertical , si obviamos esto los puentes puede que no queden verticales. Esto de colocar en TOP, VIA y NONPREF el valor de 99 debe hacerse para las otras pestañas: Route, y Optimize 1,2,3 y 4 tambien.

ver figura.
despues de darle OK obtenemos lo siguiente.
Quedaron apenas dos puentes, totalmente verticales y pequeños y nos llevo en hacerlo maximo un minuto.


En la proxima publicacion mostraremos como cambiar el grosor de una pista y como rellenar zonas vacias con areas de tierra.

lunes, 8 de octubre de 2007

Siguiendo con el Impreso

Hicimos un impreso automatico el programa puso como quizo las pistas, ahora vamos a aprender hacer un impreso de forma manual colocando las pistas como nosotros queramos, primero vamos a deshacer el autoroute para ello hay que dar clic sobre el icono Ripup que se muestra a continuacion y luego sobre el semaforo con luz verde (GO) mostrara un mensaje de advertencia que dice Ripup all signals se le da yes y se deshace el Auto RouteAhora con la siguiente herramiente llamada Route vamos a trazar las pistas manualmente, como queramos.
si las queremos arriba o abajo digamos que la mayoria la queremos en la cara de abajo (BOTTOM) ya que vamos a poner los elementos arriba y soldaremos abajo.
damos clic aqui y elegimos 16 BOTTOM todo lo que dibujemos lo hara en la cara de abajo, no cruzemos pistas por ahora dejemoslas asi ya les dire que hacer con ellas mas adelante.
Si damos clic derecho mientras dibujamos la pista los quiebres cambian como se muestra en la figura asi los hacemos como nosotros queramos.
si nos equivocamos damos clic en ripup y sobre la pista que queremos borrar (NO sobre Go porque sino se nos iran todas las pistas).
el circuito me quedo asi, claro que puede quedar mejor pero por ahora quedamos asi, no pude evitar que estas pistas me quedaran cruzadas ver figura:
Obviamente no vamos a desperdiciara una tableta doble cara para hacer esas dos pistas, solo las dibujaremos para saber donde pondremos los puentecitos (alambres), tampoco vamos a poner grandes alambres para que se vea poco estetico para ello usaremos estar herramienta que se llaman vias damos clic en el icono y las ponemos donde deseamos y halamos las pistas que queden asi:

Bueno por el momento nos quedamos hasta aqui, los circuitos pequeños es muy facil rutearlos manualmente pero cuando son grandes es en exceso engorroso, afortunadamente el autorouter nos puede ayudar, mas adelante veremos como se configura para trazarnos las pistas de una manera optima.