Problema PWM Attiny85 Habilitar Clock Externo????

Hola, Estoy utilizando un Attiny85 Programado mediante un Arduino. Cuando utilizo la salida PWM, si se trata de controlar un Led típico con un potenciómetro, todo va perfecto. Pero cuando quiero controlar Leds de potencia (40Leds de 1W cada uno, utilizo MOSFET ), hasta que la salida PWM no supera cierto valor (240 de 255 o rondando ), noto un parpadeo molesto. He probado el circuito con un arduino normal (328P) y es imposible ver el parpadeo, pero al utilizar el Attiny 85, es molesto. He pensado que puede ser por culpa del Clock Interno del Attiny85. Intento conectar un Cristal(16MHz) donde corresponde con dos condensadores, pero todo sigue igual, +¿Es posible que deba insertar una linea de codigo para habilitar un cristal externo? También he probado a que internamente el Attiny85 tenga un factor de división de 1 escribiendo en void setup esto:

CLKPR = 0b10000000; CLKPR = 0b00000000; Pero ni así funciona. He escrito mal estas dos lineas de código? como debería escribirlas? Muchas Gracias Víctor.

Seguramente tengas que modificar los fuses de tu attiny

Si lo haces con avrdude te recomiendo que te mires esto
http://www.engbedded.com/fusecalc/

La configuración del cristal suele estar en los fuses

¿Activar los leds con mosfet? ¿Podrías subir un esquemilla de como los tienes conectados?

Hola,
Muchas gracias por las respuestas.
Por el momento programo mediante el propio entorno de Arduino. De que modo podria cambiar los Fuse? he probado copiando y pegando el codigo que me dice la web, pero no lo reconoce.

Aqui subo los esquemas:
No he conectado resistencias a los Leds, ni imitadores de corriente.
Para que funcione sin que se quemen los Leds, he comprado una fuente conmutada con un ajuste de ±10% de la tensión, y conecto los Leds con una tensión inferior a la nominal. A medida que se calientan, se puede apreciar como la intensidad que cirucla por los Leds va augmentando, así que espero a que el sistema se estabilice (a que se calienten hasta que la intensidad no aumenta). Entonces subo la tension hasta que se acerca a la intensidad nominal (Según mi Datasheet la Intensidad de los leds es de 300mA) así que ajusto la fuente de alimentacion y espero a que se calienten hasta alcanzar los 250mA (dejando margen a temeperaturas ambienales extremas etz…) (Según el datasheet, cada uno de estos Leds tiene una variación de la caída de tension de -2mV/ºC)
De este modo no hago trabajar los Leds al 100%
Disipo el clor de los Leds mediante una plancha de aluminio.

Muchas Gracias
Víctor.

victornillo: Hola, Estoy utilizando un Attiny85 Programado mediante un Arduino. Cuando utilizo la salida PWM, si se trata de controlar un Led típico con un potenciómetro, todo va perfecto. Pero cuando quiero controlar Leds de potencia (40Leds de 1W cada uno, utilizo MOSFET ), hasta que la salida PWM no supera cierto valor (240 de 255 o rondando ), noto un parpadeo molesto. He probado el circuito con un arduino normal (328P) y es imposible ver el parpadeo, pero al utilizar el Attiny 85, es molesto. He pensado que puede ser por culpa del Clock Interno del Attiny85. Intento conectar un Cristal(16MHz) donde corresponde con dos condensadores, pero todo sigue igual, +¿Es posible que deba insertar una linea de codigo para habilitar un cristal externo? También he probado a que internamente el Attiny85 tenga un factor de división de 1 escribiendo en void setup esto:

CLKPR = 0b10000000; CLKPR = 0b00000000; Pero ni así funciona. He escrito mal estas dos lineas de código? como debería escribirlas? Muchas Gracias Víctor.

Hola, el attiny85 (y 84) funciona hasta 8 MHz sin cristal externo, solo hay que habilitar los fuses mira a a ver aquì: http://www.gioblu.com/tutorials/programmazione/214

lo unico es que està escrito en italiano. Pues si necesitas algo pide. ciao

Tienes que usar un programador, ¿el chip ya lo compraste con el bootloader de Arduino?

Ah! Si usas una fuente regulable y lo regulas tal como dices entonces no hay problema ;)

Un saludo

chiva: Tienes que usar un programador, ¿el chip ya lo compraste con el bootloader de Arduino?

Ah! Si usas una fuente regulable y lo regulas tal como dices entonces no hay problema ;)

Un saludo

tambien se pued programarlo con Arduino Uno, en la guia lo explica todo XD

ciao

Hola,
Gracias a todos.
Lo programo mediante Arduino Duemilanove, con una librería que descargué. Muy sencillo.

He conseguido utilizar el clock interno SIN dividir su frecuencia con estas lineas de codigo:
void setup() {

CLKPR &= ~(1<<CLKPS0 | 1<<CLKPS1 | 1<<CLKPS2 | 1<<CLKPS3);
TCCR0B |= 1 << CS00;
TCCR0B &= ~(1 << CS01 | 1 << CS02);
}
Ahora en la Salida PWM para los valores de 80 a 255 no noto el parpadeo, pero para valores inferiores a 80 el parpadeo es molesto.
He intentado colocar un cristal de 16MHz con sus condensadores, pero no funciona, sabéis que lineas de código tengo que escribir para que active la entrada del cristal?
Muchas gracias.
Víctor.

Hola, Haciendo que la frecuencia del clock interno no se divida, según he experimentado, Aproximadamente 60000 miliSegundos equivalen a menos de 2 segundos reales. Es normal? No debería ajustarse automáticamente el cambio? Gracias Víctor.

victornillo: Hola, Haciendo que la frecuencia del clock interno no se divida, según he experimentado, Aproximadamente 60000 miliSegundos equivalen a menos de 2 segundos reales. Es normal? No debería ajustarse automáticamente el cambio? Gracias Víctor.

Me parece que no. Deberia ser 1 minuto, no? Segun lo que he experimentado siguiendo la guia, hay que hacer un par de cambios tambien en el file boards.txt. La manera mas sencilla para saber si el micro esta trabajando a la velocidad justa es cargar el exemplo BLINK con delay 1000 y ver si parpadea 1 vez al segundo. Si va mas rapido o despacio hay un problema en el clock que arreglar con susodichas modificas. Pido perdon si hay errores de escritura XD

Solucionado:

Utilizaba un regulador de tensión de 5V para alimentar el Attiny (L7805CV). Para resolverlo he tenido que conectar un condensador en la entrada, i otro en la salida. Ahora ya no vibra, y lo puedo ajustar desde el 0% hasta el 100%.

Muchas Gracias. Víctor.