Utilizo arruino nano conectado a un ad9850 generador de señal. Los datos de paso de frecuencia los ingreso a través de un encoder . Quiero que el encoder según la velocidad de giro pase de décima a unidad y a cierto tiempo de giro a decena y después a centena. O sea giro rapido : cambia Hertz, dos segundos :cambia kilohertz ,dos segundos cambia megahertz. Sin dejar de girar en velocidad alta.
Si giro en velocidad baja no haga el cambio de unidad
Sea en cualquiera que esté
Si pase de Hertz a kilohertz y giro lento que no cambie a megahertz o a Hertz se quede cambiando en kilohertz
Y después de dejar 2 segundos reinicie a la medida más baja Hertz
Si alguien tiene una idea como hacer la programación de giro y cambio de unidades en el encoder se los agradezco
El enconder cuenta pasos, asi que tantos pasos por segundo será tu velocidad dada en pasos/seg
Establece cual es el limite o umbral para una cosa u otra y tienes casi todo tu programa en marcha.
supongamos que lees algo como
velocidad = vEncoder(); // tal que esto fuera la velocidad y
pasos = encoder(); // con esto estableces el valor qeu deseas.
asi que si
#define UMBRAL 20 // pasos/seg por dar un valor, eso fijalo tu.
if (velocidad > UMBRAL) {
Modo++; // con esto paso de Hz a KHz a Mhz
}
else
Modo = 0; // es el que usas para ajustar los digitos
pero claro esta consulta no puede hacerse todo el tiempo sino cada 2 segundos o mas.
Me parece muy clara y simple y me gusta la forma del programa . Pondré las variables dentro del programa original a ver cómo va . Gracias !!!
Son mis primeros pasos en Arduino y estoy leyendo manuales ,o mejor dicho repasando manuales leidos.
De algunas cosas me doy cuenta y voy adaptando un codigo ya compartido en red
De lo que me has explicado entiendo que debo buscar lo que ordena la velocidad de giro y pasos y cambiarlo por la orden que encuentre en el programa que realice estos cambios
O sea si el programa dice step y sin dudas se refiere a los pasos del encoder debo cambiar pasos por step .Es asi?(La pregunta es para aprender como funciona la cosa)
Y expresamente te paso el programa original y el modificado por mi ;porque no encuentro los comandos que necesito cambiar
dds_multi.ino (7.29 KB)
dds_multi.ino (7 KB)
rotary.cpp (4.89 KB)
rotary.h (577 Bytes)
No creo que exista nada que te de velocidad. Eso debes crearlo..
Mides velocidad como pasos por unidad de tiempo. Si quieres cada 250mseg o cada 500mseg asi tienes tiempo para decidir en tu ventana de 2 segundos.
Ahora miro el código!
Ademas del codigo subi todo lo relacionado con el proyecto
alli hay dos codigos con el mismo nombre (olvide cambiar el nombre de uno para diferenciar perdon)
Uno de ellos es el original .Tiene mas lineas
Adapte el original porque esta pensado como oscilador externo de radios
Yo lo utilizo con una sola radio colocado en su interior