Mostrando entradas con la etiqueta STM8. Mostrar todas las entradas
Mostrando entradas con la etiqueta STM8. Mostrar todas las entradas

miércoles, 11 de abril de 2012

Aquarium: Version Final

Con este artículo acaba la serie del proyecto Aquarium.

Una vez comprobado que el prototipo funciona correctamente, es el momento de pasar a la versión final del sistema. El primer paso es realizar una placa que integre la mayor parte del hardware que no es la placa STM8L Discovery.
La placa contiene el driver L923D y el regulador de 5V 7805. Esta placa se acompaña de una placa más pequeña que incorpora los 3 pulsadores que permiten configurar el sistema.

Placa principal y Pulsadores
En la figura de arriba se aprecia la placa principal junto con la de pulsadores. En la placa también se obervan los conectores hembra que se unirán a las conexiones de alimentación, masa y GPIO de la placa STM8L Discovery.
A la derecha de la placa principal tenemos 4 puertos de conexiones con conexiones macho en ángulo recto. De arriba a abajo son:
  • Conector para el motor del alimentador de comida
  • Conector de salida para los relés
  • Conector con +5V regulados
  • Conector de entrada de alimentación no regulada de 9V a 12V
La salida de +5V regulados se ha añadido para conectar un led verde (con resistencia en serie), que no está en el esquema principal, y que sirve para indicar visualmente que el sistema se halla en marcha.

Encima de la placa principal se conecta la placa STM8L Discóvery tal y como se muestra en la figura.

Placa STM8L Discovery conectada



Con ello ya tenemos la mayor parte del sistema. Para montar el conjunto se ha empleado una caja de madera ya que es un material muy fácil de mecanizar. La siguiente figura muestra el interior de la caja con todos los componentes. La placa Discovery se ha fijado con el infalible método de la goma elástica y dos tornillos. No es la solución más elegante, pero funciona.


Se observan los siguientes elementos:

  1. Placa principal
  2. Placa de pulsadores
  3. Relés
  4. Interruptor general S4
  5. Alimentador de 12V
  6. Entrada de alimentación de 220V
  7. Salida para la luz del acuario a 220V
  8. Salida para la boba de filtrado a 220V
  9. Conector RCA para conectar el motor del alimentador de comida
Delante del conector USB de la placa Discovery se ha practicado un orificio en la caja para poder programar el sistema sin necesidad de desmontarlo. Eso si, para evitar conflictos, no conviene tener alimentado el sistema cuando se programa por USB.


La siguiente figura muestra la caja cerrada con sus conexiones externas: Entrada de 220V, enchufes de la luz y la bomba de filtrado y sistema de alimentación de comida.

Sistema con sus conexiones

La última figura muestra la parte frontal de la caja con todos sus elementos de interacción con el usuario.

Frontal del sistema
Los elementos son:

  1. Interruptor general S4
  2. Led que indica que el sistema está en marcha
  3. Display LCD
  4. Los 3 pulsadores, de arriba a abajo:  (+) (OK) (-)
Cuando el sistema está en marcha, el display muestra la hora actual y tres indicaciones usando las barras que se hallan a la derecha del LCD. En concreto se indica si está operando en modo manual o automático y si se hallan en marcha la bomba y/o la luz.

En este preciso momento el sistema está en marcha controlando el acuario.

Actualización 15/4/2012

Añado un video del alimentador en funcionamiento







martes, 10 de abril de 2012

Aquarium: Prototipo

Una vez diseñada la electrónica toca implementarla para poder ponerla a prueba. Para ello he montado el circuito con lo que se conoce como "Spread Table Integration". Esto es, juntar todos los elementos esparcidos por la mesa y con un montón de cables. Para hacer el prototipo portátil lo he puesto dentro de una maleta de plástico tal y como se muestra en la siguiente figura:

Spread table integration

Como se observa, se han fabricado diferentes módulos que pueden emplearse en distintos proyectos y se han conectado entre sí siguiendo el esquema del artículo anterior. Despues de acabar de probar el prototipo, los módulos se guardan para un uso futuro en otro proyecto.

En la figura se aprecia:

  1 - Placa STM8L Discovery
  2 - Módulo con un regulador 7805
  3 - Modulo con un driver H L923D
  4 - Módulo de pulsadores y leds (sólo se usan 3 pulsadores)
  5 - Relés

Una vez que tenemos la parte eléctrica resuelta, queda la programación.


Programando el prototipo

El documento UM0991 explica como descargar el entorno de desarrollo STVD y el compilador Cosmic Compiler.

Actualización
Actualmente tengo instaladas las versiones de evaluación, limitadas a 32k tanto del Compilador Cosmic como el de Raisonance. Ambos funcionan correctamente bajo STVD. No obstante, la versión del código indicada en esta proyecta únicamente compila sin errores bajo Raisonance.


Una vez tenemos ambas herramientas instaladas, podemos descargar el fichero:


Este fichero contiene tres proyectos, uno de ellos, denominado "Discover" contiene el código fuente del software que viene preprogramado en la placa. Ya contiene el enlace a todas las librerias necesarias para trabajar con todos los periféricos, incluido el LCD. Por tanto, para desarrollar un nuevo proyecto, basta con modificar el código contenido en main.c

El proyecto Aquarium es, desde el punto de vista del software, bastante sencillo. El software se desarrollará al estilo Arduino, lo más simple posible y sin emplear interrupciones.

Básicamente tendremos:

  1. Una rutina de inicialización que inicia los puertos de I/O y otros periféricos como el oscilador de 32kHz y el reloj de tiempo real. También leerá la configuración previa guardada en memoria no volátil.
  2. Un bucle de dentro de main ( ) que irá comprobando que no se pulse el botón OK ni tampoco se de la hora a la que se tenga que hacer alguna acción como encender o apagar la luz o la bomba o dar de comer a los peces.
  3. Diferentes rutinas que son llamadas cuando se da algún evento de interacción con el usuario o con el acuario.

Dado que el sistema no emplea interrupciones, se deberá cuidar la programación para evitar que nos saltemos algún evento cuando se está procesando otro.

El fichero "main.c" es el único fichero modificado dentro del proyecto Discovery. El contenido del fichero main modificado es accesible desde este enlace:



Desde un punto de vista funcional el sistema, cuando está en marcha, muestra la hora actual en el LCD. Por defecto la bomba de filtrado está siempre en marcha. En cada instante se verifica si la luz debe estar encendida dependiendo de la hora de encendido y apagado de la luz.
Cuando llega la hora de dar comida a los peces, el sistema  para la bomba y hace un número programable de ciclos de giro en el alimentador de comida. A continuación se programa el sistema para que la bomba se encienda un cierto tiempo mas tarde (15 minutos por defecto).

En cualquier momento, mientras se muestra la hora, se puede pulsar el botón (OK). Ello invoca el menú de configuración, el cual permite realizar las siguientes acciones:
  • Dar de comer a los peces sin esperar la hora programada
  • Cambiar entre los modos manual y automático de funcionamiento
  • Fijar la hora actual
  • Fijar la hora de encendido de la luz
  • Fijar la hora de apagado de la luz
  • Fijar la hora en que han de comer los peces
  • Fijar el número de giros que debe hacer el alimentador
  • Guardar la configuración en la memoria EEPROM del microcontrolador
El sistema arranca en modo automático y controla la luz, la bomba y la alimentación de los peces. Si se pasa a modo manual, la bomba y la luz quedan en marcha y se pueden controlar con los interruptores S5 y S6 (ver esquema). En modo manual, para alimentar los peces se puede emplear la primera opción del menú.

Cada vez que arranca el sistema, se mira si hay información de configuración en la memoria EEPROM del microcontrolador. Por tanto, cuando se apaga el sistema por completo, lo único que se pierde es la información de la hora actual.


Probando el prototipo

Una vez programado todo el sistema sólo queda ponerlo a prueba, para ello se pone sobre el acuario tal y como se muestra en la figura y se deja unos dias funcionando.

Prototipo en funcionamiento

Una vez verificado el funcionamiento del prototipo, lo último que queda es desarrollar la versión final del sistema.

Continua con la versión final


lunes, 9 de abril de 2012

Aquarium: Diseño de la Electrónica

Una vez fabricado el alimentador de comida del acuario, todo el resto del sistema es electrónica. Para empezar realizaremos las especificaciones generales del sistema. Para poder elegir el microcontrolador a emplear.

El sistema deberá poder controlar 3 elementos. El control del motor del alimentador debe ser bidireccional por lo que emplearemos un driver en H. Para controlarlo necesitaremos 2 líneas digitales.
El control de la bomba y la luz se realizará con relés y requerirá una línea de I/O cada uno.
El sistema debe sincronizar las diferentes acciones con la hora del dia por tanto, nos convendría disponer de un reloj de tiempo real. Para mostrar la hora actual y programar el sistema necesitamos un display. Con un display LCD de 6 dígitos tenemos bastante. Si puede ser alfanumérico, mejor.
Para programar el sistema se ha elegido emplear un control con 3 botones, un botón (+) un botón (-) y un botón (OK). Para ello necesitaremos 3 líneas de I/O que, sumadas a las 4 anteriores dan un total de 7.

En definitiva necesitamos:

  • 7 Líneas de I/O
    • 2 Para el control del alimentador de comida
    • 2 Para los relés de control de la bomba de filtrado y la luz
    • 3 Para los botones de control
  • Reloj de tiempo Real
  • Display LCD
La placa STM8L Discovery, de la familia de placas Discovery de bajo coste es perfecta para esta aplicación. Dispone de un LCD alfanumérico de 6 dígitos con algunos segmentos extra adicionales. Dispone también de un cristal de cuarzo de 32768 Hz y el hardware necesario para el reloj de tiempo real. Además el precio está muy bien (Menos de 11 Euros en Farnell).

La placa STM8L Discovery
La página web de ST contiene mucha información sobre esta placa, pero lo principal para trabajar con ella a nivel de hardware es el manual de usuario.


Consiguiendo las I/Os necesarias

El único problema de la placa STM8L Discovery es que, debido a la gran cantidad de líneas de I/O que emplea el LCD, quedan pocas lineas disponibles para uso externo. En concreto sólo hay 3 líneas de I/O completamente disponibles: PA2, PA3 y PC0. La placa emplea las líneas PE7 y PC7 para controlar dos leds de usuario. Podemos emplear estas dos líneas al mismo tiempo para controlar los relés de la luz y la bomba de filtrado. Adicionalmente la línea  PC1 se emplea para el botón de usuario que lleva la placa. Dado que necesitamos 3 botones, asignaremos uno de ellos a la línea PC1 y los otros dos a las dos líneas disponibles PA2 y PA3. Con ello nos queda únicamente la línea PC0 disponible pero necesitamos dos lineas todavía para controlar el motor del alimentador.

Para obtener más líneas de I/O, podemos eliminar el sistema de medida de corriente de alimentación que incorpora la placa. Este sistema emplea las líneas de I/O PE6, PC4 y PF0. Si eliminamos los puentes de soldadura SB11, SB12 y SB14 y ponemos el jumper JP1 en posición OFF, tal y como se indica en el manual, tendremos esas 3 líneas de I/O disponibles para cualquier uso externo.

Con ello las líneas de I/O empleadas serán:

  • PA2 : Botón (+)
  • PC1 : Botón (OK)
  • PA3 : Botón (-)
  • PC0, PC4 : Control del motor del alimentador
  • PE7 : Relé de la luz
  • PC7 : Relé de la bomba
Todavia nos quedan libres las líneas PE6 y PF0 para ampliaciones futuras si hace falta.


H Drivers

Ni el motor del alimentador ni los relés pueden ser directamente accionados por un microcontrolador. Para actuar sobre ellos se requiere algún tipo de driver.
Dado que el motor ha de poder ser actuado bidireccionalmente, lo mejor es emplear un driver en H. Uno de los integrados más típicos de este tipo es el L293D que incorpora 2 drivers en H completos. Por simplicidad de soldadura, emplearemos la versión DIL de 16 pines.
Tal y como muestra su datasheet, el driver puede controlar 2 motores de manera bidireccional o 4 motores en un único sentido. En nuestro diseño emplearemos un driver H para el motor del alimentador y las otras dos mitades del driver restante para controlar los 2 relés de la luz y la bomba de filtrado.
Debido a que el driver L293D ya incorpora diodos de protección flyback, no es necesario añadirlos al esquema.


Esquema completo

Juntando todo lo anterior se llega al esquema que se muestra en la figura siguiente.

Esquema eléctrico


Las conexiones en color rojo y azul son las únicas peligrosas al estar a 220V. El resto de señales trabaja por debajo de los 5V.
En el esquema se han indicado los puertos del microcontrolador empleados y la posición en la que se halla el terminal empleado. Así, por ejemplo, el pulsador (+) S1 se halla conectado a PA2 que está disponible en el quinto terminal de la fila izquierda de conexiones de la placa. En todo caso no hay pérdida porque las señales se hallan perfectamente rotuladas sobre la placa.

También se indican los pines del encapsulado DIL16 del driver L293D. Los pines 1, 8, 9 y 16 se hallan conectados a alimentación. Los pines 1 y 9 corresponden a los Enables de los 2 drivers en H que dejaremos permanentemente activos. Los pines 8 y 16 corresponden, respectivamente, a las alimentaciones de los motores y la circuitería digital, que dejaremos a +5V.

Para abaratar costes, la alimentación eléctrica del sistema se ha construido en torno a un viejo alimentador de 12V que tenía por ahí tirado. Añadiéndole un regulador 7805 disponemos de la tensión requerida por la placa STM8L Discovery. Cualquier alimentador entre 9V y 12V habría valido mientras de la corriente suficiente para alimentar el motor y los relés.

El motor del alimentador de comida se ha conectado a los pines 3 y 6 del L293D que son la salida del primer driver H. Para girar en un sentido se ha de poner PC0 alto y PC4 bajo. Para girar en el sentido contrario se ha de poner PC0 bajo y PC4 alto, para parar el motor basta poner PC0 y PC4 en el mismo nivel lógico.



Como se observa, las conexiones de la luz y la bomba se toman de las salidas NC (Normally Closed) de los relés. Eso significa que ambos elementos se hallan activos cuando los relés están apagados. La conexión se ha realizado así para que cuando el sistema está apagado (con S4 abierto) tanto la luz como la bomba se puedan controlar manualmente con los interruptores S5 y S6. Lógicamente cuando es sistema funciona tanto S5 como S6 deben permanecer cerrados para que el sistema pueda controlar la luz y la bomba.


Los relés empleados son de tipo G5LA. La elección de estos relés se ha hecho porque son muy baratos, a menos de 1€ cada uno. En encendido de cada relé provoca el apagado del sistema que alimenta (luz o bomba de filtrado). Debido a que uno de los terminales de la bobina del relé se halla a +5V, los relés se encenderán con un nivel bajo de las salidas que lo controlan (PE7 o PC7). Por tanto, los leds de la placa LD3 y LD4 asociados, respectivamente, a PE7 y PC7, se encenderán al mismo tiempo que lo haga la luz o la bomba. A modo de ejemplo, para el control de la luz:

  • Nivel alto en PE7: Apagado de RL1 y encendido de la Luz y del LED LD3 (Verde)
  • Nivel bajo en PE7: Encendido de RL1 y apagado de la Luz y del LED LD3 (Verde)

Y para la bomba de filtrado:
  • Nivel alto en PC7: Apagado de RL2 y encendido de la Bomba y del LED LD4 (Azul)
  • Nivel bajo en PC7: Encendido de RL2 y apagado de la Bomba y del LED LD4 (Azul)

Con ello acaba la descripción del esquema eléctrico. En el proximo artículo hablaré del primer prototipo y del programa que controla el microcontrolador.

Continua con el prototipo

El proyecto Aquarium

Este artículo fué reseñado en hackaday el 14 de abril de 2012.

Con este artículo empiezo la explicación del proyecto Aquarium. Se trata de un proyecto relativamente sencillo que permite automatizar los cuidados diarios de un acuario usando un microcontrolador de 8 bits.

Acuario a automatizar



El acuario al que hacer referencia el proyecto es el de la figura de arriba. Un pequeño acuario de agua dulce caliente de unos 20 litros. El acuario cuenta con un sistema de control de la temperatura del agua, una bomba de aire para oxigenar el agua, una luz fluorescente y una bomba para el filtrado del agua.

El sistema de control de temperatura está permanentemente en marcha para mantener a los peces en la zona de confort entre los 26 ºC. Igualmente la bomba de aire está también permanentemente en marcha para garantizar a los peces un suministro continuo de oxígeno.

El cuidado diario del acuario consisten en:

  • Apagar la luz por la noche y encenderla por el dia
  • Dar de comer a los peces una vez al dia
  • Apagar la bomba mientras los peces comen para evitar ensuciar el filtro con comida

Lo que se pretende en este proyecto es automatizar los tres puntos anteriores de manera que se pueda gestionar el acuario automáticamente durante unos dias de viaje o vacaciones. Eso no evita tener que limpiar el filtro o cambiar parte del agua de vez en cuando, pero automatiza el trabajo del dia a dia.

La siguiente figura muestra un esquema general del sistema a diseñar:

Esquema general

El sistema contará con un LCD y algunos botones para controlar sus funciones.
La bomba de aire y el control de temperatura se dejarán siempre en marcha, por lo que nuestro sistema únicamente tendrá que gestionar la luz, la bomba de filtrado y la alimentación de los peces.
Como tanto la bomba de filtrado como la luz son sistemas eléctricos, bastará un relé para controlar cada uno. El principal problema es la alimentación de los peces, dado que esta se hace actualmente de manera completamente manual, por lo que se ha de diseñar un sistema completo.


Dando de comida a los peces

Existen en el mercado sistemas para dar de comer a los peces de manera automática. En general se trata de sistemas que tienen un depósito más o menos grande de comida que se va dosificando poco a poco en tomas controladas por un temporizador horario.

Uno de los sistemas típicos, esquematizado en la figura siguiente, se basa en emplear un depósito grande "A" de comida unido a otro pequeño "B" en el que cabe sólo una dosis.


Dando un giro completo al depósito grande, se transfiere una pequeña cantidad de comida al depósito pequeño, la cual cae dentro del acuario al acabar una vuelta completa. Tal y como se muestra en la siguiente figura.

Funcionamiento de un alimentador típico

La rotación del depósito normalmente es contínua y lenta por lo que cada vez que el depósito pequeño "B" queda en la parte de abajo del depósito grande "A", cae una dosis de comida.

Para implementar esta solución se requeriría de:

  • Un depósito
  • Un motor
  • Un desmultiplicador
  • Un sistema de detección de origen

El motor hace girar el depósito, pero dado que los motores eléctricos normales giran demasiado rápidamente, es necesario desmultiplicarlos mediante engranajes para lograr la lenta velocidad de rotación que requiere el sistema. Adicionalmente, para saber cuantas vueltas se han dado y para dejar siempre el sistema en la misma posición de reposo, será necesario un sistema que permita indicar cuando el depósito pasa por una determinada posición.

Como deseamos un sistema lo mas sencillo posible, vamos a eliminar el desmultiplicador y el sistema de detección de origen. La propuesta es la mostrada en la siguiente figura:

Alimentador a implementar
Con la solución propuesta el depósito grande "A" ya no puede dar vueltas completas porque tienen un tope. En la posición de reposo "Stop 1" el depósito se halla contra el tope que limita el giro en la dirección horaria. A partir de ese punto se hace girar el depósito en dirección antihoraria hasta que llegue al tope en sentido contrario y se detenga en la posición "Stop 2". Después de que se alcance esta posición, se puede volver a mover el depósito, esta vez en sentido horario, para volver a la posición "Stop 1". Cada vez que el motor gira y pasa de una posición "Stop" a la otra, cae algo de comida en el acuario.

Con esta solución simplificada únicamente necesitamos:

  • Un depósito
  • Un motor

 Lo cual es realmente sencillo.

Para implementar el depósito "A" se ha elegido un bote cilíndrico de los que antes se empleaban para película fotográfica de 35mm. Para el depósito dosificador "B" pequeño se ha elegido un recorte de un blister de comprimidos de ibuprofeno. La siguiente figura muestra  el detalle del posicionamiento del depósito "B".

Detalle del depósito "B"

 Al depósito le insertaremos un eje que lo atraviesa para poder girarlo. La siguiente figura muestra el depósito con el eje y el tope que evita que pueda dar vueltas completas.

Depósito alimentador

Para garantizar que la comida llega siempre al depósito pequeño, situaremos el eje inclinado con el orificio de salida en la parte mas baja.
La siguiente figura muestra el soporte para el depósito de comida con el motor montado. El motor se ha recuperado de un radiocasette desmontado hace ya bastante tiempo.
El soporte se ha realizado sobre una plancha de aluminio. El motor (1) se ha pegado con cola de impacto. La pieza (2) es el tope que limita el giro del depósito. Las guías (3 ) y (4) encajan con el eje del depósito. Finalmente, el orificio triangular de la parte inferior (5) es por donde cae la comida.

Elementos del soporte del alimentador


En la siguiente figura se muestra un detalle del encaje del eje del depósito. El uso de una goma elástica para la transmisión del motor obliga al eje a apoyarse en el lado izquierdo del soporte.


Detalle del soporte del eje

La siguiente figura muestra el sistema alimentador completo. La transmisión entre el motor y el depósito se realiza mediante una goma elástica. Al motor se ha añadido un pequeño disco de madera que evita que la goma se salga del eje del motor.

Alimentador completo


Una vez diseñado el sistema alimentador, que es la única parte con una cierta complejidad mecánica, el resto es prácticamente todo electrónica.

En el siguiente artículo de sobre el acuario explicaré el esquema eléctrico empleado para el sistema.

Sigue con el diseño de la electrónica


domingo, 18 de marzo de 2012

La familia Discovery

Los fabricantes de Microcontroladores acostumbran a vender placas basadas en sus dispositivos que permiten evaluar el comportamiento de éstos. La compañia STMicroelectronics dispone de múltiples placas entrenadoras, pero, entre todas ellas, la familia Discovery se caracteriza por su bajo precio. Todas las placas de la serie Discovery se hallan por debajo del precio del famoso Arduino y, algunas de ellas lo superan funcionalmente en múltiples aspectos. Como todo pro suele tener un contra, la programación de estas placas está lejos de la gran simplicidad que aporta Arduino.

La serie Discovery tiene 5 placas actualmente. Dos de ellas corresponden a la serie de microcontroladores de 8 bits STM8, mientras que los tres restantes pertenecen a la serie de procesadores ARM Cortex de 32 bits STM32.

Empezaremos por las placas de 8 bits.


STM8S Discovery

La placa STM8S Discovery está basada en el Microcontrolador de 8 bits STM8S105 de la familia STM8S. El chip dispone de 32kB de memoria Flash, 2kB de RAM y 1kB de memória EEPROM de datos. Con un precio que no llega a 10€, es la placa mas barata de la serie Discovery.



Los periféricos que incluye la placa son muy sencillos. Apenas un LED controlable por software y un pulsador sensible al tacto. Precisamente por ello la placa dispone de numerosas líneas libres que permiten conectar con los periféricos internos del Microcontrolador (ADC, Timers y comunicaciones SPI, I2C y USART) o sus líneas de I/O Digital (GPIO).

La placa está dividida en dos partes. La parte principal, a la derecha en la figura anterior, contiene el Microcontrolador, sus dos periféricos, un cristal de cuarzo de 16MHz y una pequeña zona de prototipado que incluye una huella para un chip en formato SMD SO16.
La segunda parte, a la izquierda en la figura anterior, contiene un emulador/programador ST-Link que permite programar el microcontrolador usando un interfaz SWIM. El emulador se conecta al PC de desarrollo usando un conector USB de tipo B y opera empleando un microcrocontrolador de 32 bits STM32F103 preprogramado. El programador ST-Link se puede emplear para programar no sólo el microcontrolador de 8 bits sino cualquier otro microcontrolador de ST compatible con el interfaz SWIM. 
La placa se puede partir en dos separando físicamente sus dos partes, separando el emulador/programador ST-Link del resto de la placa. Después de separarlas, se puede seguir usando de manera conjunta usando los conectores de comunicación que disponen.

Las líneas de entrada/salida del microcontrolador están disponibles en 4 conectores que lo rodean. En total hay un máximo de 32 líneas que pueden usarse como I/O digital. Una de ellas está compartida con el LED de usuario y 3 más, hasta un total de 35, están disponibles si se desactiva el pulsador táctil que incluye la placa.




STM8L Discovery

Esta placa STM8L Discovery es el segundo peldaño en la serie. Está basada en el Microcontrolador de 8 bits de bajo consumo STM8L152 de la famila de baja potencia STM8L. Igual que en caso anterior, el microcontrolador dispone de 32kB de memoria Flash, 2kB de RAM y 1kB de memória EEPROM de datos. Con un precio ligeramente por encima de 10€, apenas supera en precio la otra placa de 8 bits de la serie Discovery.



La placa incorpora dos leds programables, un pulsador de usuario y un display LCD Alfanumérico de 6 carácteres. Teniendo en cuenta que la placa incorpora también un cristal de cuarzo de 32768 Hz, resulta ser el entorno ideal para diseñar aplicaciones sencillas de bajo coste que requieren de un reloj de tiempo real.
Adicionalmente la placa incorpora el hardware necesario para que el microcontrolador pueda medir la potencia consumida. Este elemento se ha incorporado en la placa para demostrar el bajo consumo de su procesador.

Igual que la placa anterior, ésta incorpora también un interfaz ST-Link de programación/emulación basado en un STM32F103 preprogramado, sólo que, en este caso, el interfaz ST-Link no se puede separar de la placa del microcontrolador principal.

Debido a que el LCD que incorpora la placa ocupa una buena parte de las líneas de I/O disponibles en el microcontrolador (24 Segmentos con 4 comunes), el número de líneas de I/O adicionales disponibles está bastante limitado, reduciéndose a 6, de las cuales 3 están compartidas con el pulsador y los dos leds de usuario, uno verde y otro azul. Si necesitamos más líneas de I/O, se puede desactivar el circuito de medida de corriente quitando 3 puentes de soldadura teniéndose acceso a 3 líneas de I/O adicionales.


STM32 VL Discovery

La placa STM32 VL Discovery es la primera de 32 bits de la familia Discovery. Esta placa contiene un microcontrolador STM32F100 de la familia STM32F1 que contiene un núcleo ARM Cortex-M3. La memoria disponible es de 128 kB de flash de programa y 8kB de RAM. Con un precio de poco más de 11€, se dispone de un sistema de 32 bits apenas un par de euros por encima de la placa de 8 bits más sencilla de la familia.



La placa incorpora dos leds programables y un pulsador de usuario. La ausencia de periféricos externos integrados en la placa hace que queden 42 líneas de I/O disponibles.
Dentro de la placa se hallan también dos osciladores de cuarzo en torno al procesador principal, uno a 8 MHz que permite, usando el PLL interno del procesador, operar a una frecuencia máxima de 24 MHz, y otro de 32768 Hz que permite disponer de una base de tiempos para el reloj de tiempo real. De hecho, esta placa es un tanto especial porque incorpora, en realidad 3 cristales de cuarzo. Dos para el procesador principal y uno más para el procesador del interfaz de programación/emulación ST-Link.

El microcontrolador de esta placa incorpora ya un conjunto de periféricos internos bastante completo: 7 Timers de 16 bits con capacidad de generación de PWM. Un convertidor A/D de 12 bits y 16 canales. Dos convertidores DAC de 12 bits. Dos interfaces I2C, dos SPI y tres USARTs.


STM32 L Discovery

Igual que en la familia de 8 bits teníamos dos placas, una (STM8S) con pocos periféricos y muchas líneas de I/O y otra (STM8L) con LCD y medida de corriente que dejaba pocas líneas de expansión libre, en la serie de 32 bits hay 2 placas equivalentes. La primera, comentada anteriormente (STM32 VL) sería una versión con esteroides de la STM8S, mientras que la placa STM32 L Discovery sería la hermana grande de la STM8L. Algo por encima de 15 €, es un 50% más cara que su hermana de 8 bits.
Esta placa incorpora un microcontrolador STM32L152 de la família baja potencia STM32L1 basado, igual que la placa anterior, en un núcleo ARM Cortex-M3. La memoria disponibles es de 128 kB de flash de programa, 16 kB de RAM y 4kB de EEPROM de datos.


La placa incorpora diversos periféricos externos: 2 Leds de usuario, un pulsador de usuario, un display LCD alfanumérico de 6 carácteres (el mismo de la placa STM8L), un área táctil que puede operar como una zona lineal o 4 pulsadores independientes y un circuito de medida del consumo de corriente.
El hecho de que hayan tantos periféricos externos deja pocas líneas de I/O libres. En concreto se disponen de 8 líneas, tres compartidas con los leds y el pulsador, que pueden subir a 10 si se desactiva el circuito de medida de corriente.

Como en las otras placas, se incorpora un programador/emulador integrado, pero en este caso es ST-Link/V2 aunque también basado en un STM32F103.
Igual que en la placa STM8L, disponemos también de un reloj de cuarzo de 32768 Hz por lo que, añadido al LCD, hace a esta placa una buena candidata para aplicaciones de temporización que requieren de un RTC de tiempo real.


STM 32F4 Discovery

La placa STM32F4 Discovery es la última incorporación a la familia Discovery y es un importante salto adelante respecto a las otras placas. Incorpora un procesador STM32F407 de la família de altas prestaciones STM32F4 con núcleo ARM Cortex-M4 capaz de trabajar a 168 MHz  y que incorpora una FPU y funcionalidades de DSP. Lo acompaña 1Mb de memoria flash y 192 kB de RAM. Todo ello por prácticamente el mismo precio que la placa STM32L anterior.



La placa está bastante servida también de periféricos y es, con mucho, la más potente de la serie. Incorpora 4 leds y un pulsador de usuario, un acelerómetro MEMS, un micrófono MEMS, un DAC de audio con etapa de salida en clase D y un puerto USB OTG. Pese a los periféricos disponibles, la placa dispone también de múltiples líneas de I/O digital libres. Igual que la placa STM32L, disponemos también un interfaz de programación/emulación ST-Link/V2.

El conjunto de placas de la serie discovery constituye una alternativa de bajo precio, y en el caso de STM32 mucha más potencia, a proyectos basados en Arduino, pero eso sí, con bastante mayor dificultad de uso.

En proximos artículos hablaré sobre la programación de estas placas.