Estrobo de frecuencia e intensidad variable

Hola amigos, les comento mi problema.

Estoy tratando de programar el control de una luz estroboscópica de frecuencia variable y pretendo que en el ciclo encendido tenga una intensidad variable, se aplicar el código para variar la frecuencia con un pot, y también el código para variar la intensidad con otro pot, pero no consigo unirlos.

Este es el código para variar la frequencia del estrobo y mi idea era meter el código de pwm dentro del ciclo que se mantiene encendido, pero no consigo idear la forma de que se mantenga en loop durante lo que dura el tiempo de encendido del estrobo.

Código:
int analogValue;
void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:
  

 
int val = analogRead(1);  //Read in analog input #0 (0-1023)
 val = map(val, 0, 1023, 0, 255);
if (val>=200) {
   digitalWrite(1, HIGH);
} else {
  digitalWrite(1, HIGH);
   delay(val); 
   digitalWrite(1, LOW); 
   delay(val); 
}
 
 
   


}

Se que el código tiene una pinta rara, es por que estoy programando una placa digispark con un attiny85 por lo que el analogRead(1)se refiere al puero 1 de lectura analogica alojado en el pin 2 que lee la tensión de un potenciometro, el If está ahí por que quiero que tenga una zona donde en vez de parpadear muyyy lentamente se mantenga encendida la luz.

Con que me digais como debería montar el código me basta, pero si alguien se quiere lucir, el pin de lectura de potenciometro dos sería la entrada analógica 2 osea analogRead(1).


Creo que no me dejo nada, muchas gracias a cualquiera que me pueda prestar la mas mínima ayuda.
 
hablas de variaciones pero entre que y que el uso que le prentes dar y un esquema de la parte electrónica serian datos que deberias aportar para poder ayudarte
 
Estos son los esquemas por los que me estoy guiando, el pinout y el esquema de la propia placa, la única salida de momento es para un led de prueba ( uso el integrado en la propia placa), pero cuando esté todo funcionando irá a un driver para mosfets, se trata de un foco led de 60w

schematic.jpg


Notese que en Ic del esquema los pines esta indicados como PB0,PB1 etc, no están en orden respecto a los números indicados en el exterior del ic en el esquema, el led integrado está conectado al PB1 por lo tanto se accede desde el pin1 ej: digitalWrite(1, HIGH);

Digispark-Pinout.png
 
Que frecuencias deseas alcanzar, mínima y máxima y en cuanto a la intensidad que variaciones pretendes alcanzar

Tienes un problema básico, ya que al poner a alternar el foco, este recibira una tensión media menor que cuando esta conectado y eso es lo que quieres hacer por otro lo cual se contrapone.
En todo caso si persistes aplica el pwm a la salida de la fuente, un pwm a la lámpara y el otro a la fuente y ve que resulta
 
Última edición:
No me importa mucho la frecuencia mínima ni máxima puesto que voy a usar un pot para ir variándola, pero he estado leyendo que el attiny85 tiene problemas por encima de 1kz y dudo que necesite de mas de 300hz, el uso estará entre 5 y 20 hz durante el el 90% del tiempo.

Lo que dices se traduce a un sistema muy complejo y a primera vista no veo que vaya a funcionar muy bien, ya lo pensé yo cuando comencé el proyecto y acabé pensando en lo que trato de hacer ahora mismo.

Para aclarar es que el estrobo esté siempre en un duty cycle del 50% pero para variar su intensidad lumínica lo que intento es fragmentar su ciclo positivo metiendo otro código de pwm ahí, de manera que así podría variar su intensidad lumínica.

Si la frecuencia de estrobo fuese fija no tendría problema, con un delay y un for que el for ejecute tantas veces haga falta para que el tiempo total que ha estado el ciclo de pwm sea igual al tiempo que está el foco apagado bastaría pero el problema lo tengo en que el Ton y Tof para el estrobo varían.
 
te conviene tratarlos por separados si no te haras una galleta, piensalo asi, tienes tu estrobo trabajando a 100Hz, tendra una luminosidad determinada, quieres bajarla un poco más, en ese caso reducirias la fuente para que baje la intensidad, eso lo puedes hacer linealmente o con otro pwm pero en la forma citada, con el primero lo pones en alternancia, con el segundo manejas el valor de la fuente.
Un Attiny85 es muy tentador por su tamaño y lo fácil que es programarlo.
Si intentas fragmentar la parte positiva se te va a complicar bastante
 
el foco trata de dos leds de 30w que funcionan a 32v, por lo que el ajuste lineal por tension esta complicado.

Lo que estoy pensando es en dos ciclos de pwm por separado , uno para el brillo y otro para el estrobo cada uno que actue sobre un mosfet y poner ambos en serie, pero llego al problema inicial, por la naturaleza de la ejecución del codigo de arduino no puedo llevar dos pwm por separado (o eso creo).

Me gustaría evitar tener que usar dos micros o recurrir a dos lm555.
 
Lo que te dije lineal era solo una idea para que se entendiera, por eso te decia que no hicieras los ciclos pwn encadenados porque se te va a complicar mucho, por separado vas conseguir lo mismo, con el Attiny 85 te tiene que sobrar.
tenes a tu disposición 6 pines I/O
 
Atrás
Arriba