Pues eso... que estoy inspirado.
Hoy me ha dado por hacer un diseño de un enfocador controlado por microcontrolador... destinado para el Mots2... y todo eso. ¿qué diferencia hay con el que hice hasta este momento...?
Pues...estas
1.- Me ahorro el LM555.. aunque pongo un cristal
2.- El 16f84 es mas barato que el UCN5804b
3.- Controlo la lógica y todo lo que hay en el chip.
4.- puedo habilitar una comunicación serie con otro dispositivo... Igual es útil.
5.- Puedo variar su comportamiento alterando el programa...
6.- Es mas divertido... por que hay que programarlo....
7.- Así amortizo el programador que me hice.
8.- Me ahorro el potenciómetro...
...
Claro... lo acabaré haciendo... pero de momento sólo está en el simulador.
Y el programita... lo pongo por que no es muy largo y me ha quedao... bordao!!
----- PICC de CCS -----
#include <16F84A.h> #FUSES NOWDT //No Watch Dog Timer #FUSES XT //Crystal osc <= 4mhz #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #use delay(clock=1000000) #use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8) #define SLOW 500 #define MIDD 100 #define FAST 10 int8 paso=0; int8 botones; void excita_motor(int8 paso) { switch(paso) { case 0: //paso 0 output_bit(PIN_B0, 1); output_bit(PIN_B1, 0); output_bit(PIN_B2, 0); output_bit(PIN_B3, 0); break; case 1: //paso 1 output_bit(PIN_B0, 0); output_bit(PIN_B1, 1); output_bit(PIN_B2, 0); output_bit(PIN_B3, 0); break; case 2: //paso 2 output_bit(PIN_B0, 0); output_bit(PIN_B1, 0); output_bit(PIN_B2, 1); output_bit(PIN_B3, 0); break; case 3: //paso 0 output_bit(PIN_B0, 0); output_bit(PIN_B1, 0); output_bit(PIN_B2, 0); output_bit(PIN_B3, 1); break; } } void main() { // inicializaciones SET_TRIS_B( 0xF0 ); // B0-3 salida B4-7 entrada excita_motor(paso); // programita while ( TRUE ) { botones = (input_state(pin_B4)? 0: 0b00010000) | (input_state(pin_B5)? 0: 0b00100000) | (input_state(pin_B6)? 0: 0b01000000) | (input_state(pin_B7)? 0: 0b10000000) ; switch( botones ) { case 0b00100000: // boton up delay_ms(SLOW); // no break a propósito. case 0b00010000: // boton superup delay_ms(MIDD); // no break a propósito. case 0b00110000: // si se aprietan up y superup a la vez if ( paso < 3 ) paso++; else paso = 0; break; // aquí si se rompe. case 0b01000000: // boton down delay_ms(SLOW); // no break a propósito. case 0b10000000: // boton superdown delay_ms(MIDD); // no break a propósito. case 0b11000000: // si se aprietan down y superdown a la vez if ( paso > 0 ) paso--; else paso = 3; break; // aquí si se rompe. } delay_ms(FAST); if ( botones !=0 ) excita_motor(paso); } }
LXD75 N-6EC, WO ZS80IIED, ETX70AT,
SPC900, Canon 350d (mod), Canon 400d, adaptador M42-EOS
Cosinon 50mm, Takumar 100mm, y Sigma 200mm todos m42 (de rosca)
Cosina 100-400 AF
8.
---
#include <16F84A.h>#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading#use delay(clock=1000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)
#define SLOW 500
#define MIDD 100
#define FAST 10int8 paso=0;
int8 botones;void excita_motor(int8 paso)
{
switch(paso)
{
case 0: //paso 0
output_bit(PIN_B0, 1);
output_bit(PIN_B1, 0);
output_bit(PIN_B2, 0);
output_bit(PIN_B3, 0);
break;
case 1: //paso 1
output_bit(PIN_B0, 0);
output_bit(PIN_B1, 1);
output_bit(PIN_B2, 0);
output_bit(PIN_B3, 0);
break;
case 2: //paso 2
output_bit(PIN_B0, 0);
output_bit(PIN_B1, 0);
output_bit(PIN_B2, 1);
output_bit(PIN_B3, 0);
break;
case 3: //paso 0
output_bit(PIN_B0, 0);
output_bit(PIN_B1, 0);
output_bit(PIN_B2, 0);
output_bit(PIN_B3, 1);
break;
}
}void main()
{
// inicializaciones
SET_TRIS_B( 0xF0 );
// B0-3 salida B4-7 entrada
excita_motor(paso);
// programitawhile ( TRUE )
{
botones = (input_state(pin_B4)? 0: 0b00010000) |
(input_state(pin_B5)? 0: 0b00100000) |
(input_state(pin_B6)? 0: 0b01000000) |
(input_state(pin_B7)? 0: 0b10000000) ;switch( botones )
{
case 0b00100000: // boton up
delay_ms(SLOW); // no break a propósito.
case 0b00010000: // boton superup
delay_ms(MIDD); // no break a propósito.
case 0b00110000: // si se aprietan up y superup a la vez
if ( paso < 3 )
paso++;
else
paso = 0;
break; // aquí si se rompe.
case 0b01000000: // boton down
delay_ms(SLOW); // no break a propósito.
case 0b10000000: // boton superdown
delay_ms(MIDD); // no break a propósito.
case 0b11000000: // si se aprietan down y superdown a la vez
if ( paso > 0 )
paso--;
else
paso = 3;
break; // aquí si se rompe.
}
delay_ms(FAST);
if ( botones !=0 )
excita_motor(paso);}
}
nando tienes que tener un problema pues no se pueden leer tus mensajes, salen ilegibles..
Cada dia me sorprendes más macho
FS-78, EQ6, tubo guia skylux 70/700. Nikon D50.prismáticos meade 10x50.
http://astrosurf.com/prometeo/
Ok, lo probaré... no conocía para que servía esto. Voy a editar el post anterior.
LXD75 N-6EC, WO ZS80IIED, ETX70AT,
SPC900, Canon 350d (mod), Canon 400d, adaptador M42-EOS
Cosinon 50mm, Takumar 100mm, y Sigma 200mm todos m42 (de rosca)
Cosina 100-400 AF
que te voy a decir yo...
solo felicitarte...
buena mejora!!!!
tele: lx 200 8", nikon d70, phlps scp 900 nc,modificada, sw ed 80, luna 0.4, reductores meade 3.3 y astroph .67. Dx x2 vixen, reloj a pilas...;-P
Hola Nando,
Muy bien, con el microcontrolador es un diseño mucho más limpio.
Otra cosa, cara al montaje real yo le pondría unos diodos en inversa en paralelo con los devanados del motor para evitar que los picos de tensión que se producen en la conmutación te frian los transistores.
Saludos,
Antonio.
http://www.datsi.fi.upm.es/~aperez/astronomia.html
Tubos: LX200R 8", Megrez II 80ED, MiniBorg 50
Montura: Titan 50
Cámaras: Artemis11002, Toucam SC3. Luna0.4
Bueno...pues eso... que he puesto los diodos.
ahora casi está....
Y los botones... los he puesto ergonómicos...
Saludos.
LXD75 N-6EC, WO ZS80IIED, ETX70AT,
SPC900, Canon 350d (mod), Canon 400d, adaptador M42-EOS
Cosinon 50mm, Takumar 100mm, y Sigma 200mm todos m42 (de rosca)
Cosina 100-400 AF
que nada nuevo, un campeón.
con diodos y toooo....!
tele: lx 200 8", nikon d70, phlps scp 900 nc,modificada, sw ed 80, luna 0.4, reductores meade 3.3 y astroph .67. Dx x2 vixen, reloj a pilas...;-P
A ver... ¿cómo lo diría?.... esto.... VA PERFECTO!!!!
Sólo un pequeño detalle que tengo que ajustar... la velocidad, cuando pulso los dos de arriba o de abajo va al máximo... y creo que lo puedo hacer correr un poco más, y la velocidad lenta... va quizá demasiado despacio. Eso podría ser bueno para los neuróticos del enfoque como yo... pero con unos 2000 pasos por vuelta... que vaya muy poco a poco, quizá es excesivo.
#define SLOW 500 #define MIDD 100 #define FAST 10
quizá probaré con 250, 50, 5
por hoy ya he acabado con los inventos.
Saludos.
LXD75 N-6EC, WO ZS80IIED, ETX70AT,
SPC900, Canon 350d (mod), Canon 400d, adaptador M42-EOS
Cosinon 50mm, Takumar 100mm, y Sigma 200mm todos m42 (de rosca)
Cosina 100-400 AF
Eres el p... amo!
M615 152/2250, Megrez 80/500 II SD, Skylux 70/700, SW HEQ5 SkyScan (Mod)
Canon 350D (No Mod)+Sigma Apo 70-300mm+Canon EF-S 18-55mm, Phillips SPC900NC
Bueno... he retomado este diseño para ponerle un puerto RS232 con un max232 e implementar la parte del protocolo LX200 de enfocador... y de momento he conseguido esto...
Selecciono la velocidad, y a enfocar!!
Bueno, tengo que depurarlo... pero ya está en camino!!! El otro día ya compré los chips que tengo que usar...
LXD75 N-6EC, WO ZS80IIED, ETX70AT,
SPC900, Canon 350d (mod), Canon 400d, adaptador M42-EOS
Cosinon 50mm, Takumar 100mm, y Sigma 200mm todos m42 (de rosca)
Cosina 100-400 AF
no vas a parar ?
cuenta, como funciona ?
lo probaste virtualmente ?
cuenta mas...
tele: lx 200 8", nikon d70, phlps scp 900 nc,modificada, sw ed 80, luna 0.4, reductores meade 3.3 y astroph .67. Dx x2 vixen, reloj a pilas...;-P
Hola, le pongo un puerto serie e implemento los siguientes comandos...
F – Focuser Control :F+# Start Focuser moving inward (toward objective) Returns: None :F-# Start Focuser moving outward (away from objective) Returns: None :FQ# Halt Focuser Motion Returns: Notrhing :FF# Set Focus speed to fastest setting Returns: Nothing :FS# Set Focus speed to slowest setting Returns: Nothing :F<n># Autostar & LX200GPS – set focuser speed to <n> where <n> is an ASCII digit 1..4 Returns: Nothing LX200 – Not Supported
En el simulador se ve que le envío un :F3# que significa que ajuste la velocidad a 3... y un :F-# para que haga un focus-in... y el motor se pone a girar en esa dirección a la velocidad seleccionada.
Pero, voy a reescribir todo el código, haré "pooling" del puerto serie y controlaré los motores desde la interrupción de reloj.
Además extenderé los comandos con instrucciones como esta...
:F?a# para mostrar todos los parámetros activos, dirección, velocidad, y sentido de giro .
:F{I|N}# para que si se monta el enfocador en la parte derecha o izquierda se pueda invertir el sentido de giro para que realmente el focus-in sea un focus-in
:F?s# consulta la velocidad..
:F?d# consulta la dirección
:F?g# consulta el sentido de giro.
También llevaré un conteo de los pasos que dará hacia un lado y otro... de manera que si hago esto...
:FcR# reset del contador interno
:Fc?# devuelve el valor en pasos que se han ejecutado negativos focus-in positivos focus-out
:FcS<N># almaceno un valor en un contador auxiliar
:FcG# voy al valor almacenado, parará cuando el contador interno y el auxiliar contengan el mismo valor. Con ello podré posicionar el enfocador donde quiera....
Se admiten propuestas
Saludos.
LXD75 N-6EC, WO ZS80IIED, ETX70AT,
SPC900, Canon 350d (mod), Canon 400d, adaptador M42-EOS
Cosinon 50mm, Takumar 100mm, y Sigma 200mm todos m42 (de rosca)
Cosina 100-400 AF
eres un crack tio....
Yo propongo que te den un premio porque esto que haces es la leche..
Un saludo, Vicente
SW 80ED, ETX 90 MEADE, SW 200/1000, HEQ5 Syntrek, LPI MEADE, PRISMÁTICOS MEADE 10X50, PANASONIC LUMIX FZ30...
Hola nando
Buen trabajo. a ver si consigues un autoenfocador será un gran trabajo. Por cierto donde se puede descargar el programa que utilizas para simulador del pic?
Veo que tienes el protocolo lx200, alguna web donde se puedan ver el funcionamento de dicho protocolo ?
Saludos
SW 200/100 , Sw 114/900 , SW 80/400 Losmandy G11, FS2
Toucam II , Canon 350D(sin mod), DBK 31AF03
Hola Wito,
El protocolo LX200 lo puedes descargar directamente de Meade...
http://www.meade.com/support/CommandSet.html
El emulador... pues... me puse a buscarlo, creo que me descargué una versión de prueba... pero me daba algún problemilla... miré un montón webs de gente que hacía cosas con PICs y creo que el Proteus era el que ganaba por goleada, así que decidí "conseguirlo"... en esa tienda del burro.... sí la del P2P... esa que la gente se baja películas...
Hola David
Creo que el esfuerzo para hacer una base de datos es desproporcionado para quizá almacenar 10, 15 configuraciones.... casi que... una libreta ya valdría. ¿no?
Espero que no te tomes mi comentario a burla, nada más lejos de mi intención, pero creo que incluso por disponibilidad tenerlo apuntado es más adecuado... incluso un pequeño fichero de texto con todas las instrucciones seguidas, que lo "tiras" contra el puerto serie... y te lleva el enfocador al punto que quieres.... Sé que Perl es muy potente y podría servir perfectamente.
Saludos.
LXD75 N-6EC, WO ZS80IIED, ETX70AT,
SPC900, Canon 350d (mod), Canon 400d, adaptador M42-EOS
Cosinon 50mm, Takumar 100mm, y Sigma 200mm todos m42 (de rosca)
Cosina 100-400 AF