Convirtiendo datos flotantes a cadenas (Arduino)

January 26th, 2012 No comments

Estaba batallando un poco para convertir tipos de datos, y la verdad me constó un poco el caér en cuenta que pasar de flotantes a cadenas dentro del entorno de programación del arduino (avr-gcc) no era tan directo como creí.

Afortunadamente la respuesta vino de los propios foros de Arduino, del foro viejo para ser preciso.

La función mágina es dtostrf y según la documentacion de la biblioteca funciona así:

char* dtostrf( double         __val,
               signed char    __width,
               unsigned char  __prec,
               char *         __s
)

Facil, no…? Mejor una explicación simple:

char* dtostrf( double        variableFlotante,
               signed char  tamañoMinimo,
               unsigned char presicion,
               char          *cadenaDondeGuardar
)

Esta función recibe la variable que queremos convertir (variableFlotante), el tamaño mínimo de la cadena resultante (tamañoMinimo) incluyendo el punto decimal y el signo negativo en caso necesario, el número de dígitos tras el punto decimal (presicion) y una cadena con suficiente espacio para guardar (cadenaDondeGuardar). Regresa un apuntador a la cadenaDondeGuardar.

Y un pequeño código de ejemplo:

...
char cadenaTemporal[6];
double temperatura;

temperatura = leerSensorTemperatura();
dtostrf(temperatura, 5, 2, cadenaTemporal);
hacerAlgoCon(cadenaTemporal);
...

Cuando menos tengo que decir que fue interesante :)

Categories: Manuscriptus digitalis Tags: ,

Cursos de microcontroladores @Digikey

January 16th, 2012 No comments

Hace unos dias vi, no recuerdo donde, que los chicos de Digikey darían unos cursos en línea sobre microcontroladores, confieso que nunca habia entrado a un webinar, así que hay que experimentar ;)

Durante este primer dia, la plática estuvo a cargo de Jon Titus, el cual se aventó una charla de 1 hora, incluyendo 15 minutos de comentarios. Los tópicos tratados fueron:

  • Introducción a microcontroladores
  • Características de los µC
  • Pulso con modulación
  • Contadores y temporizadores
  • ADC y DAC
  • UART
  • SPI
  • I2C
  • Bus CAN
  • Ethernet y USB
  • Interrupciones

Durante su platica estaba disponoble un chat para los asistentes, donde estuvieron comentanto y preguntando, donde obtuvieron respuestas al final.

Si bien, no habló del adorado Arduíno hasta el final, si fue una buena explicación para los que necesitamos de vez en cuando reforzar las bases de electrónica o si no sabes nada de esto y quieres entrar, tal vez tengas que escuchar, leer un poco y volver a escuchar.

Les invito a seguir estas pláticas, siempre viene bien un poco de conocimiento extra.

Este webinar está disponible para su consulta, pero sólamente en ingles, igual es buen recurso

Mailinator: Una alternativa al spam (?)

January 12th, 2012 No comments


Mailinator es un servicio de correo electrónico desechable. ¿Cómo? Si, correo electrónico desechable.

En su página mencionan que cada casilla es creada cuando recibe un correo y es desechado en un dia máximo. Imaginate que quieres bajar algo o suscribirte a algún sitio para obtener lo que quieres, pero no te da confianza o simplemente no quieres llenarte de spam, el uso de esta herramienta te permite olvidarte de esa casilla sin más.

Ojo, que no hay ningún tipo de seguridad en las cuentas de correo, puedes entrar a la que sea sin necesidad de clave. Puede ser muy útil en ciertas circunstancias, será cuestión de probar.

¿Cómo se fabrican los circuitos impresos?

November 2nd, 2011 Comments off

Viene bien un desempolve por estas fechas y que mejor que con una serie de videos explicativos sobre la fabricación de circuitos impresos o PCB.

El fabricante es Euro circuits y presenta los pasos que se siguen en su fábrica para procesar un lote. La verdad es que resulta muy interesante conocer con este nivel de detalle el proceso.

Enlace: http://www.eurocircuits.com/index.php/making-a-pcb-eductional-movies/

Acordeón/Chuleta de programación Arduino

August 4th, 2011 Comments off

Este es un acordeón tamaño carta en español para los programadores de Arduino. La información es tomada principalmente de la Referencia de Lenguaje Arduino. Incluye las cosas más comunes, sintáxis básica y funciones incluídas.

Esta basado en el “Arduino cheat sheet” de liffiton, que a su vez está basado en “cheat sheet” de Gavin Smith y una adaptación SVG por Frederic Dufourg. Adicionalmente, el dibujo de la placa Arduino Uno está adaptado del dibujo de Arduino Diecimila de Fritzing.

Cualquier error, favor de reportarlo :)

Este trabajo está bajo licencia Atribución-CompartirIgual 3.0 Unported (CC BY-SA 3.0)

Pueden ver más en el repositorio github.

Categories: Manuscriptus digitalis Tags:

El libro de C

June 22nd, 2011 Comments off

En el mundo de la computación y en particular en el mundillo de los microcontroladores siempre es necesario hacer uso del lenguaje de cómputo más potente y fácil de usar que ha existido: C.

Hay que agradecer a las personas GBdirect Ltd. por poner a disposición de todos el “Libro de C” de manera gratuíta. Incluso hay una versión en PDF para bajar e imprimir. Gran regalo que hay que decir, fue publicado por primera vez en 1991!

Control de temperatura con Arduino – Parte 2

May 9th, 2011 Comments off

Al igual que la entrada anterior, este escrito aún está incompleto, de hecho sigo reuniendo información para darle una buena presentación.


Siguiendo con el trabajo de la entrada anterior y tratando de ir algo más lejos, la tarea de hoy es controlar el calefactor pero usando PWM para simular una salida analógica.

Seguimos teniendo la resistencia de 300 W, pero la restricción dice que NO podemos llevarla a disipar toda la potencia por el riesgo de quemar el calefactor. Bien, usemos un pulso con modulación (PWM) para usar una fracción de dicha potecia.

A grandes rasgos está bajo el siguiente esquema:

El optorelavador que se está usando es un Crydom ODC5, un componente bastante común. Según su hoja de datos, el tiempo máximo de activación es de 50 µs y el tiempo máximo de desactivación es de 100 µs. Medido en osciloscopio, el tiempo de activación ronda los 15 µs y el tiempo de desactivación esta por los 225 µs, los hemos cachado :P

 


Tiempo de activación.


Tiempo de desactivación.

En fin, para lo que deseamos es suficiente, ya que manejaremos a este relevador a una frecuencia de ~30 Hz.

Los puertos con salida PWM que tiene el arduino se manejan a una frecuencia de ~488 Hz, por lo que hay que modificarla para poder trabajar a lo que queremos, por que si no, el relevador siempre verá como encendido este puerto.

Lo siguiente lo voy a simplificar mucho y decir que en la función setup() hay que poner:

TCCR1B = TCCR1B & 0b11111000 | 0x05;

Con esa línea basta para modificar la frecuencia del pin PB5, lo que en el arduino Mega 2560 es equivalente al pin 11.

En serio, estoy simplificando muchísimo las cosas, cuando haga el conglomerado con la información de este proyecto les explicaré como llegar a este dato.

Ahora si se puede jugar con el PWM y cambiarle la potencia de entre 25 al 100%. Por alguna razón, no puedo bajarle más del 25%.

A seguirle con este interesante trabajo :)

Control de temperatura con Arduino – Parte 1

May 8th, 2011 Comments off

Desde hace un tiempo tenia ganas de hacer este ejercicio, pero siempre le daba largas… hasta ahora ;)

El funcionamiento es bastante simple, existe un sensor de temperatura AD7814 junto a una resistencia que funciona como calefactor, el arduino lee el sensor a travez de SPI y mantiene la temperatura del calefactor en un rango de 40 a 45 centígrados.


/** Control de temperatura usando arduino
* (c) 2011. Antonio Maldonado
* Esta obra esta bajo licencia Atribución-No comercial-Licenciamiento Recíproco 2.5
*/
#include

const int MISO = 50;
const int SCLK = 52;
const int CS = 53;
const int RELEVADOR = 22;

void setup() {
pinMode(MISO, INPUT);
pinMode(SCLK, OUTPUT);
pinMode(CS, OUTPUT);
pinMode(RELEVADOR, OUTPUT);
digitalWrite(CS, HIGH);
digitalWrite(CS, LOW);

SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE3);
SPI.setClockDivider(SPI_CLOCK_DIV8);

Serial.begin(9600);
SPI.begin();
}

void loop() {
int temperatura=0;

digitalWrite(CS, LOW);
delay(1);
temperatura = SPI.transfer(0);
temperatura < <= 8;
temperatura |= SPI.transfer(0);
digitalWrite(CS, HIGH);

temperatura >>= 5;
temperatura = temperatura/4;
Serial.print("Temperatura: "); Serial.print(temperatura);

if(temperatura < 40) {
digitalWrite(RELEVADOR, HIGH);
Serial.println(" Relevador activado");
} else
if(temperatura > 45) {
digitalWrite(RELEVADOR, LOW);
Serial.println(" Relevador desactivado");
} else
Serial.println(" Temperatura en rango");

delay(1000);
}

Aún falta adecuarle el control PID y subir un par de videos más, pero lo voy poniendo el avance. Durante esta tarde que me ha llevado hacerlo (mas comida y juegos) voy contacto los progresos en twitter, así que esten atentos para la siguiente vez :P

Sobre Ladyada (y por qué apareció en Wired)

March 31st, 2011 Comments off

Limor Fried es una hacker. Y una muy buena, vamos a platicar un poco de ella.

Tambien conocina como Ladyada, autonombrada en homenaje a la primer programadora de la historia Ada Lovelace, ha sido un ícono en la cultura del Hazlo tu mismo (DIY). Fundadora de Adafruit Industries y una de las mujeres más influyentes en la cultura del hardware de código abierto. Desde su página personal nos sirve guia para hacer muchos proyectos tecnológicos y otros no tanto :P .

Aparece en la edición de Abril de la revista Wired, lo cual ha celebrado toda la comunidad hacker. Lo que ha hecho Limor y bien comentan en la revista ha sido principalmente:

  1. Ser partícipe de la revolución Arduino.
  2. Produce el programa “Ask an Engineer” (Preguntale a un Ingeniero) con conenidos altamente geeks.
  3. Ser partícipe del movimiento de hardware libre.
  4. Patrocinó el hackeo del Kinect.

Aún no entiendo bien a bien por qué casi no hay mujeres hackers y miren que conozco a varias con las habilidades necesarias. Pero esta Limor ha sido catalogada como una de las mujeres más influyentes en el mundo de la tecnología!

El modelo de negocio que sigue Adafuit es muy simple: “te doy las instrucciones para hacer un aparato, si puedes construírlo tu sólo, sino, te vendo las partes”, y en el camino se desarrollan ideas muy interesantes. Un hacker que vive de ello, genial!

Sin duda debemos de seguir este ejemplo y adaptarlo a nuestra cultura latina, buena falta nos hacen personas como ella y como muchos otros :)

Hay alguna hacker en este publico?

¿Son los hacks del Kinect buenas ideas?

March 17th, 2011 Comments off


Recuerdan la pelea entre Microsoft y Adafruit? Bueno, han salido una cantidad increíble de modificaciones y proyectos interesantes usando este dispositivo, haciendo cambiar de parecer a MS en el camino. Pero sin lugar a dudas, uno de los mejores es el NAVI (Ayuda de navegacion para débiles visuales) desarrollado en la Universidad de Konstanz.

Usando un Kinect montado en un casco, un arduino y tres motores en una especie de faja, fueron capaces de crear un sistema que ayuda a un invidente a caminar sorteando obstáculos.

Si bien la manera en que resuelven la montura es poco elegante, es muy práctica al igual que el funcionamiento con los motores.

Un sistema muy barato que puede hacer mucho por las personas, genial!