Show Posts
Pages: [1]
1  Forum 2005-2010 (read only) / Syntax & Programs / Re: serial questions... ir remote? on: July 05, 2007, 07:57:13 am
The output signal of a conventional ir remote receiver chip is not, in general, a serial port signal so you can't conect it to arduino serial port.

You should use timer interrupt service routine o external INT0.
See an example at
http://hklab.net/wiki/Acoplar_un_mando_a_distancia_en_Arduino

Sorry, it's written in spanish, try "Automatic Translatioin To English"
I hope this will help you.
2  Forum 2005-2010 (read only) / Italiano / Re: Infrarossi on: July 02, 2007, 04:17:03 pm
Chao Fabrizio, sento ma il mio italiano e horribile (sono espagnolo).

So I will continue in english. You can find a working example of howto decode an Xbox IR remote control in my web page, but sory, It's written in spanish ;-)

http://hklab.net/wiki/Acoplar_un_mando_a_distancia_en_Arduino

Try "Automatic Translation To English" link.

I hope this will help you,
Javi
3  Forum 2005-2010 (read only) / Español / Re: programar arduino en ensamblador on: November 18, 2007, 05:07:33 pm
Por supuesto que puede programarse en ensamblador, pero NO directamente desde el entorno Arduino. Usa por ejemplo el AVR Studio 4 o bien un editor de texto + toolchain (avr-as, avr-gcc, make, etc) que viene en el directorio C:\arduino-0009\tools y... ¡a currar! El micro es el ATmega168.

Pero antes de ponerte a ello piensa si realmente merece la pena escribir en ensamblador. Desde C tienes acceso total al hardware del micro: interrupciones, periféricos, todo. Los micros AVR, además, fueron diseñados para ejecutar de forma eficiente programas escritos en C.

Escribir el software en ensamblador realmente no merece la pena a no ser que necesites "contar los ciclos de reloj" que consume cada parte del código, es necesario por ejemplo si tu aplicación es de tiempo real y tiene unas restricciones temporales muy fuertes. Para todo lo demás... C.  smiley-wink

Yo personalmente escribo casi todo el software en C, uso Emacs, avr-gcc y avrdude para programar el ATmega168, invoco a todas las herramientas desde un Makefile.
4  Forum 2005-2010 (read only) / Español / Re: arduino y corriente alterna????? on: July 27, 2007, 02:20:52 pm
Hola.
Qué pregunta más interesante, veamos...
 
OPCIÓN 1
********
Esta es la opción más complicada.
 
No puedes conectar esa señal de 12VAC directamente al CAD de Arduino (ATmega8) por varias razones:
# La tensión de entrada a ese CAD debe estar entre 0 y 5V. Por tanto, antes tienes que reducirla mediante un divisor de tensión (2 resistencias).
# La tensión de entrada a ese CAD debe ser unipolar (sólo positiva, entre 0 y 5V como ya he dicho). Por tanto, además de reducir la tensión tendrás que sumarle una componente continua (DC) de 2.5V.
 
Una vez que hayas conectado correctamente la señal AC al ADC de Arduino y tengas las muestras de señal, debes escribir un algoritmo de procesado de señal que detecte sus cruces por cero (para saber donde termina un semicilo y empieza el siguiente). El más simple es:
 

    * La muestra x[n] = analogRead() - 512
          
    * Habrá un cruce por cero cuando x[n] y x[n-1] tengan distinto signo


 
Cada vez que detectes un cruce por cero, usa las salidas digitales de Arduino para generar un pulso que dispare el TRIAC. En realidad, el pulso deberás generarlo no inmediatamente sido con el retardo que tu quieras para regular la potencia que recibe la lámpara. Cuando más tarde generes el pulso menos potencia recibirá la lámpara.
 
OPCIÓN 2
********
Creo que esta es más simple. Es la que te recomiendo.
 
Usa el siguiente (y muy simple) circuito detector de cruce por cero:
Un amp-op como comparador que se sature a +5V cuando la onda AC está en su semiciclo positivo y a +0V cuando esté en su semiciclo negativo. Lo que hace este circuito es convertir la señal AC sinusoidal en una onda cuadrada de la misma frecuencia.  
 
Ahora conecta esta onda cuadrada al pin 2 de Arduino y haz que dispare una interrupción cada vez que en la señal haya un flanco (ascendente o descendente)
 
Cada vez que la interrupción dispare, sabrás que la señal AC ha pasado por cero, en ese momento podrás usar la salidas digitales de Arduino para generar el pulso que dispare el TRIAC (igual que lo que te comentaba anteriormente).

O mejor aun, en vez de utilizar un amp-op externo, prueba a usar el comparador que ya trae consigo el ATmega (menos cables) pero antes reduce la tensión con un divisor de resistencias, entre [-5, +5].
 
Es más fácil de lo que parece (explicarlo con palabras es un lio)
¡Buena suerte!  
 
PD.
Piensa también en la posibilidad (pregúntale a tu profesor) de usar un transformador 1:1 que sirva para aislar (aislamiento galvánico) la electrónica de control de la electrónica de potencia. De esta forma evitarás que Arduino se queme si algo sale mal. La electrónica de potencia es cosa muy seria así que cuidadito
5  Forum 2005-2010 (read only) / Español / Re: Aumentar alcance sensor infrarojos? on: July 24, 2007, 09:31:31 am
Hola.

Pongo aquí un enlace en español a un artículo que explica cómo hacer receptor de mando a distancia con Arduino, por si sirve de ayuda.

http://hklab.net/wiki/C%C3%B3mo_acoplar_un_mando_a_distancia_en_Arduino

Lo mejor, como comentan más arriba es usar un receptor de IR ya integrado porque el hacerlo tú mismo es muy complicado. En el artículo de  CNX que mencionas, la demodulación la hacen por software (usando el dichoso LabView), pero aun así no es una tarea trivial.

Respecto al transmisor, puedes usar Arduino + resistencia + el típico LED IR L-53 (lambda = 940nm) de KingBright de carcasa azul que te venden en todas partes. Aunque en la tienda no sepan decirte la marca del LED ni qué longitud de onda emite seguro que te venden ese, es el más común. Y escribir el software claro. En el foro francés hay un hilo que indica paso a paso cómo hacerlo.

Si quieres más alcance puedes comprar un LED IR de alta potencia (los hay hasta de varios amperios) pero son carísimos :-(

Un saludo,
Javi
6  Forum 2005-2010 (read only) / Frequently-Asked Questions / Re: Generating Composite Video on: July 24, 2007, 05:46:06 am
Quote
Just output directly to the port
e.g portb=00000011;
instead of calling digitalwrite() twice.

Good idea!
With this trick, now, there is not a thin white border in the gray bars caused for micro-transient pulses.
Thanks.
7  Forum 2005-2010 (read only) / Frequently-Asked Questions / Re: Generating Composite Video on: July 23, 2007, 10:27:12 pm
Quote
Its much more precise using ASM or C but you can generate a valid video signal using arduino.

Yes. I agree with you but when I tried Processing transient pulses appeared and they corrupted my tv signal. See this picture in which I show you the transient pulses (in a red circle) due to slowly digitalWrite() calls, the signal timing using delayMicroseconds() is very bad also.



I don't know yet AVR assembly so I decided to use C

Regads,
Javi
8  Forum 2005-2010 (read only) / Frequently-Asked Questions / Re: Generating Composite Video on: July 22, 2007, 06:59:32 pm
Yet another link, this one is written for Arduino in pure C (not Processing nor assembly)

http://hklab.net/wiki/TV_Video_Signal_Generator_with_Arduino

I'm a fortunate man because I have an oscilloscope and I have seen that
  • delayMicroseconds doesn't work for delays lower than ~5us
  • digitalWrite() is terribly sloooooow so don't use it
  • When the loop() function finishes, there is a 10us extra delay (?)
Conclusion: don't use Processing to accomplish a hard real-time task like this. Use C or assembly.

Sorry for my poor english.
Regards,
Javi
Pages: [1]