Dado que en realidad hacer un stroboscopio es un juego de niños, no entiendo, como no hay más documentación en la red.
Yo la busqué y nada que valiese la pena ver.
Por eso tuve que hacer el mío.
Le voy a poner aquí para devolver los favores que otros me hacen colocando si información que si me sirve.
En este caso realizaré un stroboscopio LED. Pero eso si con led de alta potencia, por lo que no tendremos problemas de luz. De hecho superará a uno flash.
Hardware
Para ello vamos a utilizar tres led de 30w. No necesitaremos disipadores, pues al ser pulsos muy cortos los que da el stroboscopio, no se calentaran ni un ápice.Los leds los podéis comprar en ebay por el módico precio de 1,07€ cada uno... Yo necesitaba mucha luz y coloque tres. Ya van 3€ para mi flash... vamos a ver si me gastaré los 400€ que me pidieron por uno... jaja, ni en sueños.
Aquí los podéis conseguir: LEDS.
Ya tenemos las iluminación... y para el control.... que puedo hacer... como yo lo quiero todo, quiero que tenga display y me indique la frecuencia y las revoluciones.
Bueno tendréis que comprar un display Para poder escribir mucho que sea de 20x4. Aquí teneis el que puse yo. Display Ya llevo 8,5€.
¿ Y como lo controlo? Pues vamos a poner un PIC 16F88. ¿Para que más?.
Ya está todo lo importante, solo necesitaremos añadir un par de transistores y una fuente de alimentación de 48V suficientemente grande para poder con los LEDS.
Cada led consume 1A, por lo que si usáis 3, como yo, necesitareis una fuente de alimentación de 3,5A.
Si en vez de usar leds de 30W usáis leds de 10w, porque no necesitáis tanta luz, podréis encontrarlos a 12V.
La parte más cara del sistema es precisamente esta fuente.
Para los leds existen unos módulos de alimentación, pero para este caso no sirven, pues no son capaces de dar la corriente necesaria en un periodo tan corto como necesitamos. Si los usamos como fuente no conseguiremos encender los leds. Hace falta una fuente más estabilizada y rápida. Una Fuente conmutada.
Aquí la tenéis de 48V 5A... para que sobre: Fuente
Con esto llevamos 29€.
El resto os lo dejo a vosotros, pues son componentes simples, fáciles de conseguir en cualquier tienda de electrónica.
Montaje
Ahora hay que saber que hacer y como conectarlo todo.
Aquí os dejo el esquema. El display que he usado es paralelo, así que hay que conectar un poco más, pero como le sobra al pic entradas, no importa, gano velocidad de proceso.
Como podéis ver... no puede ser mas sencillo.
Aunque sí, puede ser más sencillo si en vez de usar un trnasistor de unión usamos un Mosfet. Entonces nos ahorramos el ULN.
Aunque sí, puede ser más sencillo si en vez de usar un trnasistor de unión usamos un Mosfet. Entonces nos ahorramos el ULN.
U4 es un regulador para tomar la alimentación y pasarla a 5v para alimentar el circuito. En este caso yo disponía de 24V a parte, Si se parte de los 48V es mejor usar dos reguladores en cascada ya que regular a 5 desde 48V con el 7805 es demasiado, así que deberíais poner uno para pasar a 24V.
Si en vez de comprar una fuente de 48V usáis 2 de 12 en serie, pues ya está tomais la que de el voltaje bajo para el circuito.
Para asegurar la frecuencia el PIC va controlado por cristal, en este caso de 20Mhz, para que me de suficiente margen para controlar la secuencia a 100Hz.
RV1 es la resistencia variable que configura el contraste del display
RV3 es un potenciómetro multivuelta para seleccionar la frecuencia elegida. Sw2 permitirá indicar la ventana de selección del potenciómetro.
Debido a que el valor total del potenciómetro solo se puede leer como 1024 valores por la entrada analógica, usaré el SW2 para indicar si el potenciómetro lo uso para frecuencias bajas o altas. Así con un solo potenciómetro podré dar 2048 puntos de resolución, aunque la entrada solo sea de 1024. Además invertiré el sentido del potenciómetro de manera que el cero quedará donde termina el maximo de la excala anterior.
Y ya solo queda la salida a potencia. Como soy algo vago... tenía ya una unidad preparada con un uln2003. Por ello le tenía conectado ya dos salidas del PIC. Una de esas salidas la conecto a dos transistores para llevar el segundo a conmutación a 2A y dejar el sistema en lógica positiva. Es decir enciende el led cuando yo pongo 1 en la salida del PIC.
Como veis arriba hay un conector para acoplar los 48V que necesitarán los leds.
Aquí le tenéis montado y en plena acción deteniendo el giro de una Turbina Pelton. Podéis ver los tres led. La banda oscura se produce por la sincronización entre la cámara y el destello.
En este caso no necesito más de 58 Hz, pero es fácil subir a más si lo deseamos. Pero si no subimos el mínimo deberá ser a costa de perder resolución. Habrá que usar un PIC con mas bit en su conversor analógico o usar botones para aumentar y disminuir el valor de periodo. Eso ya queda en vuestras manos si lo necesitáis. Si por ejemplo lo programáis sobre un PIC2550 podréis dar 16 bits de resolución con lo que será facil ampliar el rango de frecuencias sin perder resolución.
Al ser el cristal de 20Mhz cada pulso lo podemos definir de 51,2uS, pero ese pulso es demasiado pequeño para iluminar suficiente cuando el pulso se produce a velocidades bajas. La persistencia del ojo no es suficiente para llegar a ver la máquina. El ojo no llega a percibir lo que ve. Por eso el programa tiene un truco. Aumenta la duración del pulso en frecuencias bajas, para que se mantenga la misma impresión de iluminación.
Como a frecuencias bajas el móvil se mueve más lento, no se percibe movimiento, aunque el pulso sea más largo.
Para lograr este truco tenemos dos variables:
Periodo --- define la frecuencia del stroboscopio
Ancho_pulso -- define la longitud del destello, programado según la frecuencia
Programa
El programa está realizado en PICC.
#include "STROBO_INT_AN.h"
#include <LCD420.C>
struct strobo_pin_map { // estructura estroboscopio Puerto A
BOOLEAN ADC; // no usado
BOOLEAN unused1; // no usado
BOOLEAN FBaja; // Desplaza la frecuencia de 14Hz a 0Hz
BOOLEAN led; // salida led
BOOLEAN Pulsador; // bajar frecuencia
BOOLEAN unused2; // no usado
BOOLEAN unused3; // no usado
BOOLEAN unused4; // no usado
} strobo;
#locate strobo = getenv("sfr:PORTA")
#define set_tris_strobo(x) set_tris_a(x)
struct strobo_pin_map const normal = {1,1,1,0,1,0,0,0}; // For write mode all pins are out
long periodo=0; //guardará el numero de pulsos para formar el periodo Se usará solo 10 bits
long strobo_tmp=0;
long ancho_pulso;
#int_RTCC
void RTCC_isr(void)
{int1 led;
//Interrupción cada 51.2us
// periodo_min=0... T=350 pulsos ->17,92ms ->55,8 Hz
//si periodo maximo 17408... T=17408+350=7408 pulsos ->909.2ms ->1.09 Hz
led=0;
if (--strobo_tmp==0)
{led=1;
strobo_tmp=periodo;
strobo_tmp+=350;} // 350 para posicionar a Fmax 55.8Hz
if(strobo_tmp<ancho_pulso) led=1; //primeros 2 pulsos a 1. Por lo tanto pulso de 102.4us a 1
strobo.led=led;
// output_bit( PIN_B3,!led);
}
void main()
{
long hz,rpm,b;
set_tris_strobo(normal);
//Analogica
setup_adc_ports(sAN0|sAN1|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SS_DISABLED);
//timer para pulsos
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
//comparadores
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init();
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_adc_channel( 0 );
delay_ms(20);
// TODO: USER CODE!!
while (TRUE) {
set_adc_channel( 0 );
delay_ms(100);
b= Read_ADC();
/*En frecuencias bajas el potenciometro funciona en sentido contrario, comenzando en 14Hz->1024
sube una resolución más alta 16 por cada valor del potenciometro, llegando a 1.09Hz-> 65rpm
En frecuencias bajas periodo va de 1024->14,22Hz(853rpm) a 17408->1,09hz(65rpm)
/Frecuencias altas peridodo va de 0 a 1024 55,8(3348rpm) a 14,22(853rpm)*/
if (strobo.FBaja)
{periodo=(1024-b)*16+1024;
ancho_pulso=periodo/1000+1;}
else {periodo=b; //Frecuencias altas peridodo va de 0 a 1024 55,8(3348rpm) a 14,22(853rpm)
ancho_pulso=periodo/500+2;}
/*si timer 51.2 us T=(periodo+350)*51.2/1000000 F=1/T=1000000/(periodo+350)*51.2
Como deseamos presentar 2 decimales y solo podemos poner enteros vamos a calcular F*100
F100=100000000/(periodo+350)*51.2= 100000000/512 /(periodo+350)=195312/(periodo+350)*/
hz=1953125/(periodo+350);
rpm=hz*6;
rpm/=10;
printf(lcd_putc,"\f" );
printf(lcd_putc,"ESTROBOSCOPIO PELTON\n Departamento X.X.X.\n" );
printf(lcd_putc,"RECUENCIA:%4.2w Hz,\nR.P.M.: %6.0lu rpm" ,hz,rpm);
}
}
Espero que os haya gustado.