martes, 19 de febrero de 2019

XiuaElectronics: Curso STM32F303K8 Nucleo y Plataforma Mbed OS

Curso STM32F303K8 Nucleo y Plataforma Mbed OS: Introducción


Buenas noches estimados lectores. En el día de hoy daremos comienzo al curso de programación de mcirocontroladores STM32 con la plataforma Mbed OS de la empresa ARM. Para este curso estaremos trabajando con la tarjeta de desarrollo STM32F303K8 Nucleo, una tarjeta muy práctica de conseguir y de utilizar para muchos estudiantes e ingenieros, y el público en general interesado en el tema.
En este curso vamos a programar como les mencione anteriormente la tarjeta de desarrollo nucleo basada en el STM32F303K8. Aprenderemos a configurar y usar sus diferentes perifericos, desde salidas y entradas digitales hasta llegar a USART. Tal vez I2C y SPI. Este curso será básico, así que no profundizaremos tanto en el uso de los perifericos, pero con lo visto en este podrán profundizar por su cuenta en el mundo de la programación de 32 bit. Comenzemos conociendo el software y el hardware a utilizar.

¿Qué es Mbed OS?


Mbed es una plataforma y sistema operativo para dispositivos conectados a Internet basados ​​en microcontroladores ARM Cortex-M de 32 bits. Tales dispositivos también se conocen como dispositivos de Internet de las cosas . El proyecto es desarrollado en colaboración por Arm y sus socios tecnológicos.

Las aplicaciones para la plataforma Mbed se pueden desarrollar utilizando el IDE en línea de Mbed, un editor y compilador de código en línea gratuito. Solo es necesario instalar un navegador web en la PC local, ya que un proyecto se compila en la nube, es decir, en un servidor remoto, utilizando el compilador ARMCC C / C ++. El IDE de Mbed proporciona espacios de trabajo privados con la capacidad de importar, exportar y compartir código con el control de versión de Mercurial distribuido, y se puede usar también para la generación de documentación de código.

Las aplicaciones para la plataforma Mbed se pueden desarrollar utilizando el IDE en línea de Mbed, un editor y compilador de código en línea gratuito. Solo es necesario instalar un navegador web en la PC local, ya que un proyecto se compila en la nube, es decir, en un servidor remoto, utilizando el compilador ARMCC C / C ++. El IDE de Mbed proporciona espacios de trabajo privados con la capacidad de importar, exportar y compartir código con el control de versión de Mercurial distribuido, y se puede usar también para la generación de documentación de código.


¿Qué es STM32 Nucleo?

Las placas STM32 Nucleo altamente asequibles permiten a cualquiera probar nuevas ideas y crear prototipos rápidamente con cualquier MCU STM32.

Al compartir los mismos conectores, las placas Nucleo STM32 se pueden ampliar fácilmente con una gran cantidad de complementos de hardware de aplicaciones especializadas (Nucleo-64 incluye conectores morfo de Arduino Uno rev3 y ST, Nucleo-32 incluye conectores Arduino Nano).

Las placas STM32 Nucleo integran un depurador/programador ST-Link, por lo que no hay necesidad de una sonda separada.

Con las placas Núcleo STM32 se proporciona una biblioteca HAL de software STM32 junto con varios ejemplos de software, que funcionan a la perfección con una amplia gama de entornos de desarrollo que incluyen IAR EWARM, Keil MDK-ARM, mbed y IDE basados ​​en GCC / LLVM.

Todos los usuarios de STM32 Nucleo tienen acceso gratuito a los recursos en línea de mbed (compilador, C / C ++ SDK y comunidad de desarrolladores) en www.mbed.org, lo que permite crear una aplicación completa en solo unos minutos.


Bueno muchachos ya que miramos a groso modo sobre los que es la plataforma de desarrollo Mbed OS y las tarjetas de desarrollo Stm32 Nucleo, ahora vamos a ver la introducción al curso de programación STM32 Nucle con Mbed OS:

Bien muchachos, técnicamente esta es la bienvenida y la introducción del curso que nos espera. En una nueva entrada miraremos el como actualizar firmware que posee el programador interno de la tarjeta de desarrollo STM32F303K8 Nucleo.


Escrito por: Breismam Alfonso Rueda Díaz








Bien muchachos, esto es todo por hoy. Estén pendientes de mi canal, de mi blog y de mi pagina de Facebook para más contenido.


Facebook: https://www.facebook.com/electronicalibrexc/
Youtube: https://www.youtube.com/c/breismanrueda
Twitter: https://twitter.com/BreismamR



Cualquier duda, trabajo, tutoria personalizada por correo electrónico o pagina en facebook:

Correo: ElectronicaLibreXC@outlook.com
Facebook: https://www.facebook.com/electronicalibrexc/




lunes, 18 de febrero de 2019

XiuaElectronics: Servidor web Con raspbery Pi 2 + IP Estática + Acceso a internet Parte#02

Servidor web Con raspbery Pi 2 + IP Estática + Acceso a internet Parte#02


Buenas noches estimados lectores. Hoy veremos la segunda parte del curso de como crear un servidor web con base en una Raspberry Pi. Para la primera parte vimos como esstablecer un servidor web con una dirección ip estática. esto tiene algunos problemas. Por ejemplo, no podremos asignarle un dominio por la sencilla razón de que el router nos asignará una ip direfente, y por tal motivo el dominio asignado previamente se perderá. Para solucionar esto, podemos decirle al router que nos asigne una ip estática y esto es lo que veremos en la entrada de hoy. Antes de empezar lo que haremos es ver algo de teoría para complementar los conceptos que veremos hoy y así entender mejor el vídeo que se presentará para poder asignar una ip estática.

¿Qué es un protocolo de internet?

El protocolo de internet (en inglés Internet protocol o IP) es un protocolo de comunicación de datos digitales clasificado funcionalmente en la capa de red según el modelo internacional OSI.

Su función principal es el uso bidireccional en origen o destino de comunicación para transmitir datos mediante un protocolo no orientado a conexión que transfiere paquetes conmutados a través de distintas redes físicas previamente enlazadas según la norma OSI de enlace de datos.


¿Qué es una dirección ip?

El protocolo de Internet define el formato de dirección IP. Desafortunadamente, hay un límite de cantidad de direcciones IP disponibles, debido a que la estructura de la dirección es un número binario de 32 bits. En los primeros días de Internet, no había ningún problema asignando el siguiente número disponible para un nuevo usuario. No había mucha gente navegando por Internet y parecía que había un montón de direcciones IP para todos. En este período, todas las direcciones IP eran estáticas.



¿Qué es una ip estática?


Una dirección IP estática es una dirección regular que está asignada permanentemente a una computadora localizable a través de Internet. Cada computadora conectada a una red tiene una dirección física permanente llamada dirección MAC. Esto no se puede cambiar sin tener que reemplazar el adaptador de red del equipo. La dirección IP, aunque asignada permanentemente, no se da automáticamente a una computadora. Puede ser abandonada y luego reasignada a otro equipo.


¿Que es una dirección ip dinamica?

La definición de las direcciones "Estáticas" sólo fue contundente cuando un sistema diferente llegó a existir. "Estática" sólo tiene sentido si se compara con direcciones IP dinámicas. Las direcciones IP dinámicas son un intento de ralentizar la absorción de direcciones IP. Un proveedor de servicios de Internet (ISP, por sus iniciales en inglés) tiene un menor número de direcciones IP que el número de clientes. Cuando un cliente se conecta, el ISP asigna una dirección IP temporal a ese equipo durante toda la sesión. No todos los clientes del ISP iniciarán la sesión al mismo tiempo. Cada uno utiliza una dirección IP única que no está asignada permanentemente a ellos.

Aunque la dirección IP dinámica tienen un uso más eficiente de las direcciones IP disponibles, algunos usuarios de Internet debe tener una dirección IP estática. La comunicación a través de redes requiere de dos partes: el cliente y el servidor. El cliente comienza con una solicitud de contacto. El servidor responde. La dirección IP del cliente puede cambiar con frecuencia sin ninguna consecuencia. Sin embargo, los servidores tienen una dirección permanente. Los clientes encuentran servidores señalando la dirección de un sitio visitado con regularidad o mediante la búsqueda de la dirección a través de un servicio de listado o motor de búsqueda. Una dirección IP que cambia constantemente haría un servidor ilocalizable.

Bueno estimados lectores, ya que vimos los conceptos más importantes para poder entender esta entrada lo que sigue ahora es proceder a realizar la configuración de la dirección ip como estática y verificar los cambios efectuados en esta. Esto lo veremos a través del siguiente vídeo:


Bueno mis estimados seguidores y lectores; hasta este punto ya deberán tener configurada sus Raspberry Pi como servidor bajo una red local, además con una IP estática. En la siguiente entrada procederemos a abrir puertos y establecer nuestro servidor en internet con un dominio publico gratuito para que tengan conectividad a el sin necesidad de estar bajo su red de área local conectados.

Si llegaste aquí sin ver la primera parte, através del siguiente link podrás verla: Primera parte.



Escrito por: Breismam Alfonso Rueda Díaz







Bien muchachos, esto es todo por hoy. Estén pendientes de mi canal, de mi blog y de mi pagina de Facebook para más contenido.









Cualquier duda, trabajo, tutoria personalizada por correo electrónico o pagina en facebook:




domingo, 17 de febrero de 2019

XiuaElectronics: Servidor web Con raspbery Pi 2 + IP Estática + Acceso a internet Parte#01

Servidor web Con raspbery Pi 2 + IP Estática + Acceso a internet Parte#01

Buenas noches estimados lectores, en el día de hoy vamos a tratar un tema que en la actualidd es de suma importancia, y es acerca de los servidores web. Lo que haremos en esta entrada será configurar una Raspberry Pi como un servidor web y mostrar una página html a través de el. Antes de comenzar con la configuración veremos algo de teoría que será fundamental para entender cda parte del vídeo y que puedan entender lo máximo posible el proceso.


¿Qué es un servidor web?


Un servidor web es un programa el cual procesa un programa del lado de un servidor. Entendiendo que un servidor es un computador con una conexión a internet. La finalidad de un servidor web es realizar la comunicación bidireccional de un servidor a un cliente, que en este caso seria otro computador con acceso a internet que no comparte archivos a diferencia de servidor web que si lo hace. Como el servidor web comparte archivos, podemos compartir imagenes y escritos, vídeos y demás, por tal razón los servidores web son tan ampliamente usados en el mundo, ya que a través de ellos podemos compartir nuestros archivos con interfaces gráficas como lo son las páginas web. Para la transmisión de todos estos datos suele utilizarse algún protocolo. Generalmente se usa el protocolo HTTP para estas comunicaciones, perteneciente a la capa de aplicación del modelo OSI. El término también se emplea para referirse al ordenador

¿Qué es una red local?


Una red de área local (Local Area Network, o LAN) es un grupo de equipos de cómputo y dispositivos asociados que comparten una línea de comunicación común o un enlace inalámbrico con un servidor. Normalmente, una LAN abarca computadoras y periféricos conectados a un servidor dentro de un área geográfica distinta, como una oficina o un establecimiento comercial. Las computadoras y otros dispositivos móviles utilizan una conexión LAN para compartir recursos como una impresora o un almacenamiento en red.

Una red de área local puede servir a sólo dos o tres usuarios (por ejemplo, en una red de oficina pequeña) o a varios cientos de usuarios en una oficina más grande. Las redes LAN incluyen cables, conmutadores, enrutadores y otros componentes que permiten a los usuarios conectarse a servidores internos, sitios web y otras redes LAN a través de redes de área extensa (WAN).


¿Qué es PHP?


PHP, acrónimo recursivo en inglés de PHP: Hypertext Preprocessor (preprocesador de hipertexto), es un lenguaje de programación de propósito general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. Fue uno de los primeros lenguajes de programación del lado del servidor que se podían incorporar directamente en un documento HTML en lugar de llamar a un archivo externo que procese los datos. El código es interpretado por un servidor web con un módulo de procesador de PHP que genera el HTML resultante.

PHP ha evolucionado por lo que ahora incluye también una interfaz de línea de comandos que puede ser usada en aplicaciones gráficas independientes. Puede ser usado en la mayoría de los servidores web al igual que en muchos sistemas operativos y plataformas sin ningún costo.

En lugar de usar muchos comandos para mostrar HTML (como en C o en Perl), las páginas de PHP contienen HTML con código incrustado que hace "algo" (en este caso, mostrar "¡Hola, soy un script de PHP!). El código de PHP está encerrado entre las etiquetas especiales de comienzo y final que permiten entrar y salir del "modo PHP".

Lo que distingue a PHP de algo del lado del cliente como Javascript es que el código es ejecutado en el servidor, generando HTML y enviándolo al cliente. El cliente recibirá el resultado de ejecutar el script, aunque no se sabrá el código subyacente que era. El servidor web puede ser configurado incluso para que procese todos los ficheros HTML con PHP, por lo que no hay manera de que los usuarios puedan saber qué se tiene debajo de la manga.

Lo mejor de utilizar PHP es su extrema simplicidad para el principiante, pero a su vez ofrece muchas características avanzadas para los programadores profesionales. No sienta miedo de leer la larga lista de características de PHP. En unas pocas horas podrá empezar a escribir sus primeros scripts.

¿Qué es apache?


Apache es un software de servidor web gratuito y de código abierto con el cual se ejecutan el 46% de los sitios web de todo el mundo. El nombre oficial es Apache HTTP Server, y es mantenido y desarrollado por la Apache Software Foundation.

Le permite a los propietarios de sitios web servir contenido en la web, de ahí el nombre de “servidor web”. Es uno de los servidores web más antiguos y confiables, con la primera versión lanzada hace más de 20 años, en 1995.

Cuando alguien quiere visitar un sitio web, ingresa un nombre de dominio en la barra de direcciones de su navegador. Luego, el servidor web envía los archivos solicitados actuando como un repartidor virtual.


¿Qué es Mysql?

MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo licencia dual: Licencia pública general/Licencia comercial por Oracle Corporation y está considerada como la base datos de código abierto más popular del mundo,1​2​ y una de las más populares en general junto a Oracle y Microsoft SQL Server, sobre todo para entornos de desarrollo web.

MySQL fue inicialmente desarrollado por MySQL AB (empresa fundada por David Axmark, Allan Larsson y Michael Widenius). MySQL AB fue adquirida por Sun Microsystems en 2008, y ésta a su vez fue comprada por Oracle Corporation en 2010, la cual ya era dueña desde 2005 de Innobase Oy, empresa finlandesa desarrolladora del motor InnoDB para MySQL.


Bueno, ya que vimos a groso modo que es un servidor web, red de área local, PHP, que es apache y que es mysql procederemos a ver el siguiente vídeo tutorial para poder empezar a configurar nuestraRaspberry Pi como servidor web:

Bueno mis estimados seguidores y lectores; hasta este punto ya deberán tener configurada sus Raspberry Pi como servidores bajo una red local con una IP dinamica. En la siguiente entrada procederemos a establecer una IP estática a nuestro nuevo servidor.


Escrito por: Breismam Alfonso Rueda Díaz



Bien muchachos, esto es todo por hoy. Estén pendientes de mi canal, de mi blog y de mi pagina de Facebook para más contenido.

Facebook: https://www.facebook.com/electronicalibrexc/
Youtube: https://www.youtube.com/c/breismanrueda
Twitter: https://twitter.com/BreismamR



Cualquier duda, trabajo, tutoria personalizada por correo electrónico o pagina en facebook:
Correo: ElectronicaLibreXC@outlook.com
Facebook: https://www.facebook.com/electronicalibrexc/

viernes, 8 de febrero de 2019

XiuaElectronics: Instalar Arduino IDE en Raspberry Pi 2 B (Rasbian Stretch) , compatible con todos los modelos de Raspberry.

Instalar Arduino IDE en Raspberry Pi 2 B (Rasbian Stretch) , compatible con todos los modelos de Raspberry.


Buenos días estimados lectores. En el día de hoy miraremos como poder instalar Arduino IDE en Raspberry Pi 2 B con la distribución de Rasbian Stretch (con base en Debian Stretch).

Primero que todo lo que debemos saber al momento de instalar Arduino IDE es que raspberry pi es una tarjeta de desarrollo la cual no posee muchas capacidades en cuanto a hardware, pero no es impedimento para poder instalar Arduino IDE, ya que es un entorno ligero y no consume muchos recursos al momento de compilar la programación realizada apra Arduino. Algo que debemos tener claro es la distribución o sistema operativo que va a manejear nuestra Raspberry Pi. No todos los sistemas operativos soporta  Arduino. Por ejemplo nosotros sabemos que existe una versión de windows 10 para Raspberry Pi, pero esta solo esta en modo terminal o CMD, es decir que no tiene interfaz gráfica. Por tal motivo no recomiendo la instalación del compilador de Arduino IDE para poder programarlo vía CMD, ya que se complicarán con esto. Alguna distribución que este basada en Debian estará perfecta para poder instalarlo. En este caso utilizaremos Rasbian Stretch, distribución basada en Debian 10.


Lo primero que debemos hacer es actualizar nuestra Raspberry Pi, y para esto necesitaremos modificar los repositorios que por defecto vienen en Rasbian. La ruta que utilizarán para modificar los repossitorios será /etc/apt/sources.list. Luego descomentan los repositorios existentes borrando el "#" y aplicamos los cambios. Posteriormente a esto actualizamos el cache de los repositorios y actualizamos nuestra distribución. Por último a través del comando sudo apt-get install arduino* instalamos Arduino IDE y eso sería todo. 

Para que puedan hacer todo correctamente les dejaré el siguiente vídeo donde podrán apreciar todo el proceso descrito anteriormente.



Escrito por: Breismam Alfonso Rueda Díaz



Bien muchachos, esto es todo por hoy. Estén pendientes de mi canal, de mi blog y de mi pagina de Facebook para más contenido.




Cualquier duda, trabajo, tutoria personalizada por correo electrónico o pagina en facebook:


viernes, 25 de enero de 2019

XiuaElectronics: Inteligencia artificial aplicada a microcontroladores Parte #02

Inteligencia artificial aplicada a microcontroladores Parte #02


Buenos días estimados lectores. En el día de hoy continuaremos con la segunda parte se inteligencia artificial aplicada a microcontroladores. 

Para aquellos que aún no están en contexto, a través del siguiente link podrán ver la primera parte. Analizando la entrada anterior a este tema pudimos ver que de alguna forma un microcontrolador nos daba la posibilidad de poder integrar  una red neural artificial, o en general algún método de la inteligencia artificial para optimizar algún tipo de proceso. Quedamos a la espectativa de saber si es posible o no el implementar esto; para fortuna de todos si. Resulta que tras un tiempo de consultas y estudios, pude observar que hay algo llamado programación dinamica; y aquí se encuentra un aliciente pero no el unico de la solución de este contexto.


Mapa de problema sobre diligencias

¿Qué es la programación dinámica?



La programación dinámica es un método para reducir el tiempo de ejecución de un algoritmo mediante la utilización de subproblemas superpuestos y subestructuras óptimas. El matemático Richard Bellman inventó la programación dinámica en 1953 que se utiliza para optimizar problemas complejos que pueden ser discretizados y secuencializados.

Una subestructura óptima significa que se pueden usar soluciones óptimas de subproblemas para encontrar la solución óptima del problema en su conjunto. Por ejemplo, el camino más corto entre dos vértices de un grafo se puede encontrar calculando primero el camino más corto al objetivo desde todos los vértices adyacentes al de partida, y después usando estas soluciones para elegir el mejor camino de todos ellos. En general, se pueden resolver problemas con subestructuras óptimas siguiendo estos tres pasos:

  • Dividir el problema en subproblemas más pequeños.
  • Resolver estos problemas de manera óptima usando este proceso de tres pasos recursivamente.
  • Usar estas soluciones óptimas para construir una solución óptima al problema original.
  • Los subproblemas se resuelven a su vez dividiéndolos en subproblemas más pequeños hasta que se alcance el caso fácil, donde la solución al problema es trivial.


Decir que un problema tiene subproblemas superpuestos es decir que se usa un mismo subproblema para resolver diferentes problemas mayores. Por ejemplo, en la sucesión de Fibonacci (F3 = F1 + F2 y F4 = F2 + F3) calcular cada término supone calcular F2. Como para calcular F5 hacen falta tanto F3 como F4, una mala implementación para calcular F5 acabará calculando F2 dos o más veces. Esto sucede siempre que haya subproblemas superpuestos: una mala implementación puede acabar desperdiciando tiempo recalculando las soluciones óptimas a problemas que ya han sido resueltos anteriormente.

Esto se puede evitar guardando las soluciones que ya hemos calculado. Entonces, si necesitamos resolver el mismo problema más tarde, podemos obtener la solución de la lista de soluciones calculadas y reutilizarla. Este acercamiento al problema se llama memoización (no confundir con memorización; en inglés es llamado memoization). Si estamos seguros de que no volveremos a necesitar una solución en concreto, la podemos descartar para ahorrar espacio. En algunos casos, podemos calcular las soluciones a problemas que de antemano sabemos que vamos a necesitar.

Cuando hablamos de optimizar nos referimos a buscar alguna de las mejores soluciones de entre muchas alternativas posibles. Dicho proceso de optimización puede ser visto como una secuencia de decisiones que nos proporcionan la solución correcta. Si, dada una subsecuencia de decisiones, siempre se conoce cuál es la decisión que debe tomarse a continuación para obtener la secuencia óptima, el problema es elemental y se resuelve trivialmente tomando una decisión detrás de otra, lo que se conoce como estrategia voraz. En otros casos, aunque no sea posible aplicar la estrategia voraz, se cumple el principio de optimalidad de Bellman que dicta que «dada una secuencia óptima de decisiones, toda subsecuencia de ella es, a su vez, óptima». En este caso sigue siendo posible el ir tomando decisiones elementales, en la confianza de que la combinación de ellas seguirá siendo óptima, pero será entonces necesario explorar muchas secuencias de decisiones para dar con la correcta, siendo aquí donde interviene la programación dinámica.

Contemplar un problema como una secuencia de decisiones equivale a dividirlo en problemas más pequeños y por lo tanto más fáciles de resolver como hacemos en Divide y Vencerás, técnica similar a la de programación dinámica. La programación dinámica se aplica cuando la subdivisión de un problema conduce a:

Ejemplo sobre problema de diligencia-programación dinámica
  • Una enorme cantidad de problemas.
  • Problemas cuyas soluciones parciales se solapan.
  • Grupos de problemas de muy distinta complejidad.

Pero como vimos anteriormente en la definición de programación dinámica, podemos deducir que unos de los problemas fundamentales al momento de intentar programar un algoritmo de forma dinámica es la cantidad de memoria que se necesitaría para poder programar los distintos subproblemas que conllevaría la implementación. Pero bueno, para esto hay una solución y es la implementación de una memoria flash externa controlada por algún periférico SPI que posea el microcontrolador. Entonces, en la actualidad. ¿porqué no se implementan este tipo de programación?, por una sencilla razón, y es que los compiladores no estan optimizados para este tipo de programación. Entonces, ¿si no están optimizados para este tipo de programación, porqué no los optimizan?. Resulta que este tipo de programación no es muy eficiente para distintas situaciones, por tal razón, no es viable optimizar los microcontroladores para estos tipos de algoritmos; pero bueno, no todo son malas noticias, hay situaciones que poco a poco se van presentando en la industria de una manera exponencial y que sugiere la nesecidad de implementar algún tipo de algoritmo autónomo que dependiendo de las variables, pueda decidir la mejor solución sin necesidad de intervención humana. Es en este punto donde entra a jugar las DNN (Deep Neural Networks), que son algoritmos entrenados para para realizar tareas específicas. Anteriormente mencioné que si se puede implementar inteligencia artificial en los microcontroladores; básicamente se puede hacer algunos arreglos, crear compiladores que se ajusten a la necesidad de un algoritmo tan especializado como lo son como los de programación dinámica, pero como dije anteriormente el tiempo es un recurso que no podemos olvidar, y si es para un proyecto de baja escala, posiblemente no valga la pena ponerse a realizar este trabajoso proceso.

Una solución actual y que es muy viable es implementar una DNN, que en cuestión ya es posible. Veremos este apartado de implementación de redes neurales en microcontroladores en una tercera parte para poder tratar mejor el tema.

Aquí podrás ver la Parte #03.


Escrito por: Breismam Alfonso Rueda Díaz


Fuentes:

  • http://www.konradlorenz.edu.co/images/stories/suma_digital_matematicas/Programacion%20Dinamica.PDF
  • https://www.st.com/content/st_com/en/about/innovation---technology/artificial-intelligence.html
  • Xumari, G.L. Introduction to dynamic programming. Wilwy & Sons Inc., New York. 1967.




Bien muchachos, esto es todo por hoy. Estén pendientes de mi canal, de mi blog y de mi pagina de Facebook para más contenido.




Cualquier duda, trabajo, tutoria personalizada por correo electrónico o pagina en facebook:




viernes, 28 de diciembre de 2018

XiuaElectronics: Errores más comunes al momento de crear una PCB

Errores más comunes al momento de crear una PCB


Buenos días estimados lectores. En el día de hoy vamos a ver un tema de suma importancia, y es acerca de los errores más comunes que hay al momento de diseñar y quemar una PCB o un circuito electrónico. Comencemos.

Al momento de crear una PCB lo que hacemos es utilizar con software de diseño electrónico, lo cual si no se tiene un conocimiento adecuado del funcionamiento de este, podría generar errores en cuanto al trazado de rutas y/o distribución de los componentes.

Figura 1: Tarjeta electrónica con bloque de potencia
 y componentes correctamente disipados y espaciados

Distribución de los componentes


La distribución de los componentes se da dependiendo de la estética del circuito que se este manejando, así como el tamaño y tipos de componentes. Por ejemplo, si estamos diseñando un circuito el cual va a trabajar o va a circular bastante tensión y por tal razón la disipación de corriente tendrá un efecto térmico, deberemos asegurarnos que los componentes tengan un correcto flujo de aire y que estén disipados, (Figura 1). Muchas veces las personas por el afán de dejar una tarjeta electrónica lo más diminuta posible, lo que hace es diseñarla de tal forma que los componentes queden pegados un con el otro.Esto es un error muy frecuente, por que al calentarse los componentes lo que se esta haciendo es generar más calor del que se puede dispar y por tal motivo dañaran sus componentes o acortaran la vida útil de estos.



Figura 2: Separación del bloque digital y el bloque análogo

Separación de señales análogas y digitales


Se tiende a pensar que los componentes análogos y digitales se separan, con una tierra ranurada o separada, pero la realidad es que es más importante la ubicación adecuada, en especial no contaminar las pistas digitales, cuando pasan cerca de la parte análoga, se acoplan vertical u horizontalmente a una pista análoga (o viceversa), o cuando pasa una pista digital sobre una tierra o alimentación análoga (o viceversa), (Figura 2). Recordemos que acá hay un factor importante, y es el diferenciamiento de lo que son las pistas pertenecientes a la tierra, al retorno de linea y al VCC, por consiguiente también al momento de ubicar la parte analógica y la parte digital, deberemos tener en cuenta que cerca de estas partes o hayan retornos para así evitar tensiones parásitas que nos provoquen datos inexactos, por ejemplo en un ADC.






Figura 3: Pistas no ortogonales

Ángulo de ruteo de las pistas 

Figura 4: Pistas ortogonales
Los ángulos de las pistas casi siempre las diseñan de manera ortogonal, (Figura 4), y esto es algo incorrecto. El ángulo de ruteo deberá evitar a toda costa la ortogonalidad de las pistas de cobre, (Figura 3), para así evitar que se esto generaba un efecto antena de radiación o emisión electromagnética, debido al cambio de impedancia de la pista en el ángulo de 90º. Con el tiempo y estudios, se comprobó que esto es crítico para frecuencias mas allá de 50Mhz, por tanto es suficiente con trazar ángulos de 45º, para evitar, para ángulos mayores de 45º y menores de 90º se pueden presentar perdidas entre el 5 y el 9% de la señal. Sin embargo en frecuencias de 500Mhz o más, es recomendable que los trazos empiecen a ser redondeados o curvos.


Figura 5: Etiquetado de pistas VCC y GND

Diferenciar el GND, el VCC, y retornos de señales


Usualmente se rutean las pistas pensando en conectar simplemente puntos, nodos, pads o conexiones electrónicas, sin tener en cuenta, desde donde se distribuye y hacia adonde la alimentación, o por donde viaja y como retorna la señal. Se debe tener en cuenta como se traza la alimentación y las señales, y por donde está el retorno, tierra o GND de estas. (Texas Designer, 2005). Es necesario identificar por lo menos las pistas más importantes, como lo son la de alimentación, la tierra y las de adquisición de datos, (Figura 5). En el momento de verificar el correcto funcionamiento de un circuito esto será muy importante ya que en alguna posible falla, optaremos por ver el esquemático y analizar las pistas ya identificadas, para sí encontrar con brevedad el error del diseño.





Figura 6: Zona de cobre etiquetada como GND, y
 los pads correspondientes a los tornillos que travesearán la tarjeta

Zonas de cobre o planos a tierra


Esas zonas de cobre en circuitos de una o dos capas, o planos para circuitos multicapa, tienen las ventajas de reducir la impedancia parásita de la tierra, lo que reduce ampliamente las emisiones electromagnéticas no intencionales (EMI), así como mejorar el desempeño de los circuitos. Por lo general, estas zonas son las que más olvidan al momento de diseñar una PCB, y muchas veces al momento de quemar la baquela y montar y ensamblar el circuito, y posteriormente comprobar su funcionamiento, no trabajará como deseamos.
Además de lo anterior es de tener en cuenta el diseño mecánico al momento de crear las zona de tierra de nuestra tarjeta electrónica. Cuando diseñamos las cajas, o carcasas, deberemos por lo general optar por ajustar nuestra PCB a la base de la caja con tornillos, esto con el fin de aprovechar la tierra externa que nos esta dando la estructura de la caja y poder interconectarla con la tierra de nuestra tarjeta electrónica, (Figura 6). Esto para cuando la carcasa  la caja de nuestra tarjeta es de metal, o que en algún punto de su diseño haya alguna referencia de tierra. Entonces al momento de sujetar esta tarjeta a la base de la caja, tendrá que pasar por un agujero previamente planeado y diseñado de tal forma que nos proporcione una paca o zona de cobre un poco más ancho que el diámetro del tornillo, y asegurándonos que esta interconectado con la tierra del circuito. (No para todos los circuitos es necesario esto.).


Figura 7: Ancho de pistas con respecto a la intensidad soportada

Ancho de las pistas


Las pistas son como cables, en el cableado de una casa. En electrónica, la casa son los PCB, y las pistas sus cables. La capacidad de conducir la corriente en una pista está determinada por la temperatura, el espesor del cobre (altura de la pista) y el grosor o ancho de la pista, estos dos últimos se llaman sección cruzada o área de la pista (Área=grueso x ancho).
Si la pista no tiene el área cruzada adecuada, la pista se quema o no conduce la corriente. Usualmente se consigue en internet la siguiente tabla (Figura 7), donde explica que de acuerdo a la corriente que circulara por la pista, y el cambio de la temperatura que va a sufrir la pista, se elige un área cruzada, que corresponde a un ancho de la pista si la misma pista tiene un espesor definido. Para el ejemplo 1, para 1 amperio de corriente, con 1/2 onza de cobre (17 micrómetros, 0.0007”, le corresponde una pista de alrededor de 40 mils, 0.040” – 1mm) (Electronics Exchange, 2017). Según nuestra experiencia, es muy optimista esta tabla y se da en condiciones ideales o de laboratorio. En la vida diaria, y teniendo en cuenta el peor caso, que siempre ocurre, es mejor utilizar esta tabla (para 1 onza de cobre, 35 micrómetros).






Escrito por: Breismam Alfonso Rueda Díaz


Fuentes:
  • Al Delta Innovación y tecnología. Curso virtual diseño de circuitos impresos PCB con normas Internacionales. www.aldelta.com.co 2015. Bogotá, Colombia. 
  • Altera, resource center. https://www.altera.com/support/support-resources/support- centers/board-design-guidelines.html 2017. 
  • Electronics Exchange. Julio 2017. https://electronics.stackexchange.com/questions/5403/standard-pcb-trace-widths 
  • IPC Association Connecting Electronics Industries. (2003). IPC 2221 Generic Standar of printed board Design. Bannockburn, IL: IPC. 
  • Mitzner, Krai . Complete PCB Design Using Orcad Capture and Layout. 2010. 
  • Topology Planning and Routing, Dean Wiltshire, SDD product architect - Mentor Graphics Corporation 
  • Qualiy Eco Circuits Py Ltda. (3 de 3 de 2015). PCB Design Guidelines. Recuperado el 1 de 1 de 2016, de http://www.qualiecocircuits.com.au/pcb-design-guidelines.htm 
  • Texas Designer. (2005). Experiences in PCB Design. Texas: Self.



Bien muchachos, esto es todo por hoy. Estén pendientes de mi canal, de mi blog y de mi pagina de Facebook para más contenido.




Cualquier duda, trabajo, tutoria personalizada por correo electrónico o pagina en facebook:




sábado, 8 de diciembre de 2018

XiuaElectronics: Consejos para tener en cuenta al momento de crear PCB profesional

Consejos para tener en cuenta al momento de crear PCB profesional



Buenos días estimados lectores. En el día de hoy vamos a ver un tema de suma importancia, y es acerca de algunos concejos básicos al momento de diseñar sus PCBs  sin importar el tipo que sea ni el software a utilizar. Comencemos.

Hoy en día con la proliferación de la tecnología, ha habido un aumento significativo de personas que adquieren conocimientos acerca de la electrónica. Por lo general, la gran mayoría aprende de una forma empírica, ya que por necesidad y tiempo se ven obligadas a buscar información en la red de como crear dispositivos electrónicos para poder así suplir sus necesidades. Por tal razón me veo obligado a orientar un poco en este tema, ya que al momento de crear dispositivos, las personas diseñan PCB sin seguir unas normas básicas y que esto último es muy esencial para que los dispositivos funcionen correctamente así que sin más preámbulos comencemos con el listado de normas básicas para poder crear una PCB de manera profesional.



Normas no reglamentadas para poder diseñar correctamente una PCB:

Figura 1: implementación de grid en diseño de pcb con el software Eagle 

  1. En muchos softwares electrónicos implementas una funcionalidad que es el de la rejilla (grid); esta lo que hace es proporcionarnos una guiá para que podamos alinear y configurar a nuestro gusto los componentes que van a ir en ella, (Figura 1). En todos o la gran mayoría de softwares de diseño electrónico podemos configurar el tamaño de las rejillas tanto en pulgadas como en milímetros. Esta herramienta es demasiado útil para cuando estemos trabajando con componentes superficiales o muy pequeños.
  2. El largo de las pistas y el distanciamiento que hay entre componentes debe ser lo más corto posible. Esto obedece a varias razones, una de esas son el consumo de materiales al momento de crear nuestra pcb. por ejemplo, se requiere más tiempo el crear o fabricar 1000 pcb de 10x10 cm a 100 pcb de 5x5 cm. Además que el coste energético, así como el de materiales utilizados. Además hay una razón más de tipo eléctrico, y esta es que se pueden generar corrientes parásitas en la pista de cobre, las cuales podrían afectar el funcionamiento del circuito. Esto es muy esencial para cuando estamos trabajando con circuitos ADC, DAC o cualquier circuito de altas frecuencias. Además hay que ver el cuidado del medio ambiente. Para generar una PCB estamos utilizando ácido férrico, o nítrico en su efecto. Dependiendo su elección. Esto puede generar problemas ambientales graves, y más cuando son vertidos a las aguas residuales o a un río. Mi consejo para el medio ambiente y su cuidado es que siempre traten de utilizar métodos como la extrusión del cobre inservible a través de una ruteadora CNC y por lo general intenten aprovechar correctamente los químicos (Antisolder, ácidos, estaño liquido, etc) que se utilizan para no afectar nuestro medios ambientales.
  3. Un error común que todos cometemos, y en ese error me incluyo, es que en el momento de crear nuestra pcb no tenemos en cuenta la tierra del circuito. Es indispensable poner una mascara contra tierra de tal forma que las corrientes parasitarias aterricen en ella. Además que ayuda al flujo de tensión por el circuito, llevando a que las impedancias sean mínimas.  
  4. Como mencionamos anteriormente, lo adecuado es dejar las pistas lo más cortas posibles. También en ciertos circuitos es necesario implementar un arreglo de condensadores, cristales, resistencias y demás para su correcto funcionamiento, un ejemplo de ellos son los típicos circuitos  de microcontroladores. En este caso, los microcontroladores dependen de una frecuencia que es generada por un cristal y un arreglo de condensadores. Esto cuando se trabaja con reloj externo. Podemos ver en la figura 2 como la placa de Arduino uno implementa lo mencionado en este punto. Tratan de dejarlo más cerca posible los arreglos del microcontrolador para optimizar espacio y recursos.
    Figura 2: circuito básico del Atmega 328p de una placa de Arduino uno. Configuración con reloj externo.
  5. Una recomendación en cuanto a los componentes utilizados en el diseño y creación de la pcb es que deben tener en cuenta que los componentes estén disponibles en el mercado. Esto evitará perdidas innecesarias de tiempo.
  6. Siempre es necesario tener en cuenta las reglas DRC (Design rules check) para el diseño de PCB. Por lo general los software de diseño electrónico poseen una función que nos permite evaluar el diseño que estamos creando y así verificar el DRC de nuestra PCB. En Eagle es (Figura 3).

Figura 3: función DRC de Eagle Autodesk 9.2

  1. 7. Utilizar serigrafia preferentemente de una forma inteligente. Hacer las anotaciones pertinentes sin importan que  posteriormente los componentes tapen o cubran las anotaciones. esto sirve para el fácil ensamble de los componentes en la pcb.
  2. 8. Verifique su diseño pcb en algún software 3D para poder así observar los detalles de como quedará su tarjeta y probablemente evitar errores en ella.
  3. 9. Es recomendable crear una pcb de tipo modular, siempre o casi siempre. Esto con el fin de que sus tarjetas se les pueda añadir nueva hardware, algo muy parecido a las board de los computadores. Esto tiene muchos beneficios, entre ellos, reutilización de materiales, y componentes. Cuidado con el medio ambiente al evitar botar una tarjeta desactualizada. Continuidad de soporte para un producto y dependencia de un cliente.
  4. 10. Evitar a toda costa la ortogonalidad de las pistas de cobre para así evitar que se  esto generaba un efecto antena de radiación o emisión electromagnética, debido al cambio de impedancia de la pista en el ángulo de 90º. Con el tiempo y estudios, se comprobó que esto es crítico para frecuencias mas allá de 50Mhz, por tanto es suficiente con trazar ángulos de 45º, para evitar, para ángulos mayores de 45º y menores de 90º se pueden presentar perdidas entre el 5 y el 9% de la señal. Sin embargo en frecuencias de 500Mhz o más, es recomendable que los trazos empiecen a ser redondeados o curvos

En general estos son algunos consejos muy útiles al momento de crear una PCB de manera profesional. Espero que los tomen en cuenta amigos. Esperen una proxima entrada de los errores más comunes al momento de diseñar una PCB. Esto es muy esencial para evitar futuros dolores de cabeza 😉.





Escrito por: Breismam Alfonso Rueda Díaz






Bien muchachos, esto es todo por hoy. Estén pendientes de mi canal, de mi blog y de mi pagina de Facebook para más contenido.




Cualquier duda, trabajo, tutoria personalizada por correo electrónico o pagina en facebook: