Pages: 1 [2]   Go Down
Author Topic: Secuenciador de transmisión  (Read 1732 times)
0 Members and 1 Guest are viewing this topic.
Vilalba, Lugo, Spain
Offline Offline
Sr. Member
****
Karma: 23
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

pacooca:

La estructura select-case es una estructura que tienen casi todos los lenguajes, y en C  necesita un break para indicar donde acaba cada case. A mi personalmente no me gusta mucho, prefiero anidar if, pero por cuestión estética  smiley

Otra cosa es el uso de break, goto o cosas así para salir de un bucle o un condicional, en programación estructurada no se usa, bueno hay que intentar no usarla. Y la programación no estructurada es ... como te diría yo ... una chapuza, pero cuidado, una chapuza que puede funcionar tan bien o mejor.

En resumen, es solo una opinión.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola de nuevo,

Disculpad pero he estado unos días sin poder ponerme con el circuito del sequenciador.

El código de Marcial es el mas sencillo para mi, que soy muy novato y que solo recuerdo algo de C que estudie de un libro que se llamaba Programacion en C para ingenierias y ha llovido mucho ya desde aquello smiley   (sude tinta para hacer un tres en raya que corria en MS-DOS.....)

Pacooca, este circuito es casi "fundamental" en una estación seria que funcione de 144 Mhz para arriba y fundamental, sin el casi, si quieres hacer rebote lunar. Lo que hace es que cuando estas recibiendo tienes intercalado un previo de recepción en la linea coaxial, cuando el PC manda transmitir desde el puerto serie, usb etc.. lo que hace es que deja de alimentar al previo, conmuta unos relés que le sacan de la linea coaxial para que la potencia pueda llegar a la antena sin que el previo de recepción se entere, después activa el amplificador y finalmente activa el transmisor.

Cuando pasa a RX de nuevo, lo hace a la inversa: deja de transmitir, apaga el amplificador, mete el previo en la linea coaxial (RELES) y vuelve a alimentar el previo de recepción. Todo esto es necesario para no machacar los HEMTs (transistores con un factor de ruino muy bajo).

Voy a ponerme de nuevo Marcial, a ver si consigo hacer que el primer relé funcione al revés que el resto, el ultimo día casi lo consigo pero al final me quede atascado.

Saludos

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Marcial no habia visto lo de las PCB.

Si es casera, me hice una insoladora usando la caja de un scaner, unos fluorescentes pequeños y un cristal translucido blanco.

En mi caso con 6 minutos de exposición me salen bastante bien, revelado con agua mas sosa caustica y al ácido (agua oxigenada 110 vol + salfumant + un poco de agua para rebajar jajajaja, es cosa de pillar el tiempo  y aun así, alguna deja un poco que desear.

El diseño de las pistas es otro cantar, nunca me he puesto con ningún programa especifico para ello, las diseño en autocad (por deformación profesional smiley y solo a una cara.

Saludos

Logged

Vilalba, Lugo, Spain
Offline Offline
Sr. Member
****
Karma: 23
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-razz
Code:
const bool ON[]={LOW,HIGH,HIGH};                 // Cambiar aqui para logica positiva/negativa
const bool OF[]={HIGH,LOW,LOW};                  // Cambiar aqui para logica positiva/negativa
byte Entrada=12;                                 // Pin señal inicio
byte Pin_Out[]={2,3,4,5};                        // Pines de salida
boolean Senal;                                   // Para amecenar el estado de la entrada
unsigned long T_Espera=1000;                     // Tiempos de espera tras cada señal
int Pin=0;

void setup()
{  
  pinMode (Entrada, INPUT);                     // Establecer pines de entrada
  for (int x=0;x<4;x++)
  {
    pinMode (Pin_Out[x], OUTPUT);               // Establecer pines de salida
    digitalWrite(Pin_Out[x], OF[x]);            // Pines de salida a low para iniciar programa
  }
}
void loop()
{
  Senal=digitalRead(Entrada);                  // Almacenar el estado del pin de entrada  
  if (Senal && Pin<4)                          // Tenemos señal de encender y no esta todo encendido
  {
    digitalWrite(Pin_Out[Pin],ON[Pin]);        // Activar pin
    delay(T_Espera);                           // Tiempo de espera
    Pin++;                                     // Siguiente pin
  }  
  else if (!Senal && Pin>0)                    // No hay señal y no hemos desconectado todo
  {
    Pin --;                                    // Anterior pin
    digitalWrite(Pin_Out[Pin],OF[Pin]);        // Desactivar pin
    delay(T_Espera);                           // Tiempo de espera
  }
}

Yo localice un programa para diseño (incluso mullicara) lo localizo y te digo, pero mi problema es el quemado, me salen mal con ganas, ya tire con 6 intentos con ácido, pero me cortan las pistas muy facil.
« Last Edit: January 08, 2014, 04:12:30 am by Marcial » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas noches,

Ya estoy probando el nuevo código y funciona, gracias de nuevo Marcial, pero te agradecería que me explicaras un poco una cosa que no entiendo.

Eso de const bool ON[]={LOW, HIGH,HIGH};

Por lo que he visto, ya que no sabia que eso existía, es un ARRAY BOOLEANO, entonces cuando vas llamando a cada posición del array, toma el valor correspondiente.

¿entonces por que solo hay declarados 3 estados en el array, si resulta que tenemos 4 pines de salida?

Respecto al tema de fusilar una pista posiblemente sea por que el ácido este muy fuerte y se coma rápidamente las pistas mas finas y necesite mas tiempo para superficies mas grandes, yo lo rebajo con agua, prefiero tardar mas smiley y hacer pistas de 0,4 mm o 0,3 mm ya es jugársela.

De todas formas si necesitas algún PCB que ya este diseñado y sea a una sola cara, te lo hago.

Saludos
Logged

Vilalba, Lugo, Spain
Offline Offline
Sr. Member
****
Karma: 23
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ups, eso es un error, mete un higt y un low mas en cada array.   smiley-mr-green

Con cualquier variable puedes crear array, de n dimensiones.

El tema de las pistas, prueba este software: CadSoft Eagle, te puedes descargar la versión demo de la pagina oficial y te deja hacer placas hasta un tamaño máximo creo que 100*120 mm o algo asi.
También tienes esta versión : CadSoft Eagle Professional 6.1.0.exe, que algún desalmado ha hecho un programita que desbloquea la restricción de tamaño con fines meramente educativos  smiley
El circuito lo tengo hecho, y a dos caras,  Mi problema es el acido y el tamaño de las pistas, creo recordar que use agua fuerte y agua oxigenada al 50% (eso sera agua medio fuerte  smiley-razz)

Si no te molesta hacerme un intento, seria un puntazo, pues tengo un tema aparcado por falta de hardware. Dime tu teléfono por mp y a que horas te puedo llamar para no molestar.
Logged

Sarria,Lugo,Spain
Offline Offline
Newbie
*
Karma: 1
Posts: 24
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

hola a todo el foro,yo me hice este pero con un pic,http://www.ea1uro.com/web2/foro/index.php?topic=1112.0
Logged

Skype:EA1HXG

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola Miguel Angel,

Que maravilla de secuenciador, he estado viendo URO y he pasado un buen rato de verdad.

Voy a ver si encuentro algun otro video.    :-)

Gracias,
Logged

Pages: 1 [2]   Go Up
Jump to: