El proyecto trata de una luz estrobo para el balance de rotores.
Lo que trato de hacer es que la luz estrobo que tenga un frecuencia igual a las RPM del motor.
Que en todo caso 1 hertz = 1 revolución/segundo = (1 revolución/segundo) (60 segundos/minuto) = 60 rev/minuto.
Entonces lo que yo necesito es hacer que la frecuencia de la lampara sea variable ya que el motor no trabaja a una velocidad constante si no variable y la frecuencia debe variar de 0 a 3500hz
Y según para esto necesito de interrupciones.
Encontré algunos ejemplos que utilizan teclado pero en mi caso quisiera utilizar un potenciómetro como variador de frecuencia.
Otra forma en que lo vi, fue que por medio del teclado se colocara la frecuencia a la que deseo que oscile.
Por ejemplo.
¿Pero cómo meto por el teclado el valor que deseo y además cómo lo acoplo a la variable tiempo y realmente la respete?
El tiempo lo puse así ya que lo quiero en us y para convertir frecuencia a us la fórmula es la de tiempo.
Esa era la forma en la que yo pensaba que se podía pero la verdad es que no sé si realmente se puede acoplar.
También el problema es que no he llevado mucho pcw y el proyecto lo intenté hacer en microcode y funcionó, pero el problema es que en microcode no se puede sobrepasar el valor de las variables y cuando la división que realizo en la parte de arriba, se hace un valor que ya no es legible para el programa, lo bota y se reinicia desde un valor de cero.
El programa en microcode utilizando el PIC16F873A
Y este otro lo realicé en PCWHD pero no funcionó.
Lo que trato de hacer es que la luz estrobo que tenga un frecuencia igual a las RPM del motor.
Que en todo caso 1 hertz = 1 revolución/segundo = (1 revolución/segundo) (60 segundos/minuto) = 60 rev/minuto.
Entonces lo que yo necesito es hacer que la frecuencia de la lampara sea variable ya que el motor no trabaja a una velocidad constante si no variable y la frecuencia debe variar de 0 a 3500hz
Y según para esto necesito de interrupciones.
Encontré algunos ejemplos que utilizan teclado pero en mi caso quisiera utilizar un potenciómetro como variador de frecuencia.
Otra forma en que lo vi, fue que por medio del teclado se colocara la frecuencia a la que deseo que oscile.
Por ejemplo.
Código:
FLOAT TIEMPO
TIEMPO=(100000/FRECUENCIA)/2
HIGH PORTB.0
PASUSE (TIEMPO)
LOW PORTB.0
PAUSE (TIEMPO)
El tiempo lo puse así ya que lo quiero en us y para convertir frecuencia a us la fórmula es la de tiempo.
Esa era la forma en la que yo pensaba que se podía pero la verdad es que no sé si realmente se puede acoplar.
También el problema es que no he llevado mucho pcw y el proyecto lo intenté hacer en microcode y funcionó, pero el problema es que en microcode no se puede sobrepasar el valor de las variables y cuando la división que realizo en la parte de arriba, se hace un valor que ya no es legible para el programa, lo bota y se reinicia desde un valor de cero.
El programa en microcode utilizando el PIC16F873A
Código:
FREC VAR WORD
MICRO VAR word
FREC=1
MICRO=1000
ON INTERRUPT GOTO VERDE
INTCON=%10010000
WHILE(1)
HIGH PORTC.0
PAUSE (MICRO/FREC)
LOW PORTC.0
PAUSE (MICRO/FREC)
WEND
Código:
#include <16F873a.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock=2000000)
#use fast_io(B)
float frec=0;
float micro=1000000;
float res;
#INT_EXT
est_isr(){
frec=frec+1;
res=(micro/frec)/2;
}
void main(){
while(1){
set_tris_B(0x01);
output_high(PIN_B7);
delay_us (res);
output_low(PIN_B7);
delay_us (res);
}
enable_interrupts(int_ext);
ext_int_edge(H_TO_L);
enable_interrupts(GLOBAL);
}
Última edición por un moderador: