Intento de desarrollo posicionador diseqc de codigo abierto

Moderador: SergioDanielG

Alf
Moderador Global
Mensajes: 1123
Registrado: 07 Oct 2015 09:58
Receptor: Placa Satelital
Has thanked: 28 times
Been thanked: 20 times
Argentina

Re: Intento de desarrollo posicionador diseqc de codigo abierto

Mensaje por Alf »

Hola
rodrigocn escribió: 07 Dic 2019 22:45
.... Yo lo hice en base a como uso/oriento mis parabolicas, ni se me ocurrio ese detalle.
Siempre la oriente para que la "referencia" mecanica del actuador sea cuando se va hasta el este.
Tengo el concepto de que mover la parabolica hasta el este es "bajar" y "subir" al oeste.

Lo que me dices seria suficiente con invertir los cables del motor?.
O agregar una opcion que invierta el movimiento recibido por comando DISEQC? y por botonera?
Estaria bueno agregar esa funcion....
Si con invertir la loscables es suficiente. Pero suele pasar que algunos softwares no están bien implementados tener por soft esa opción (aunque sería muy poco usada) no estaría de más, en especial si se usa una PC se desea probar con distintos programas y evitar estar cambiando la posición de los cables que te puede llevar a un error cuando uno esta cansado o distraido.

rodrigocn escribió: 07 Dic 2019 22:45 ... Ahora estoy viendo la posibilidad de hacer los diseños de la PCB para poder subirlos a PCBway o similares.
Asi facilitaria mucho el armado ya que solo deberian comprar la PCB y los componentes para ensamblar.
eso ahorra muchas pruebas y desperdicio de material con el metodo de la plancha (del cual nunca sali :jaja )....
El método de la plancha de ropa es genial, es simple y al alcance de la mayoría de los proyectistas.

rodrigocn escribió: 07 Dic 2019 22:45 ... Estaría bueno si pueden informarme precios/alternativas mas económicas a los siguientes componentes y que se consigan es sus países:
IRF3205 -> mosfet con rdsOn de 8miliOhms, soporta 55v y 100A,uso este mosfet porque ya tenia y ademas casi que no es necesario usar disipador de calor.
optoacoplador 4n25 y pc817
pic 16f628a ....
Hace más de una década que estoy fuer de ese mercado, por lo que no te puedo ayudar; pero piensa que cambiar algunos componentes hace que se requiera en general recalcular la polarización si son transistores y hasta tener que agregar o quitar componentes, por ejemplo diodos de rueda libre.
rodrigocn escribió: 07 Dic 2019 22:45 ... , con un código que no es de mi autoria. ....
En esto casos en el código cuando empieza lo que uno no ha escrito conviene y es una buena práctica poner unas lineas indicado su autor. Ejemplo de como se hace en C con código GNU:

/*
* Codigo diseqc
* Version 0.81 August, 2019
* Copyright 2019 rodrigocn <rodrigocn@ftatv.org/>
* For details, see posting.php?f=45&mode=quote&p=123479&si ... 97b877a167
*
* Modified by Paulo <paulo@ftatv.org/>
* Modified by Fulano <fulano@ftatv.org/>
*
*/
rodrigocn escribió: 07 Dic 2019 22:45 ...
Para armar la version mas completa habria que agregarle el modulo wifi esp8266 y un receptor IR para el control remoto.....
Eso esta genial, pero te sugiero que te concentres en que lo que a tienes este totalmente funcionando y sin errores, luego en una nueva versión agregar esas funcionalidades. Esto es útil por si por alguna razón de la vida no puedes continuar con el proyecto dejas hecho y publicado algo 100 x 100 funcional.


rodrigocn escribió: 07 Dic 2019 22:45 ...
En mi caso lo mas costoso fue el transformador. ....
Sugiero dejar toda la fuente de alimentación en una plaqueta separada junto al transformador. Esto permitiría que otra persona pueda ayudar al proyecto diseñando una fuente conmutada en reemplazo de la que estas poniendo, esto haría bajar mucho el costo de implementación.

rodrigocn escribió: 07 Dic 2019 22:45 ...

Olvide mencionar algo.
Estuve haciendo algunas pruebas porque se me ocurrió la loca idea de implementar algo como USALS
La idea no es mala, pero insisto en lo anterior, centrarse en una primera parte y en una posterior agregar más funcionalidades.

¡SIGUE ADELANTE CON EL PROYECTO!

Saludos


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


rodrigocn
Mensajes: 1013
Registrado: 14 Nov 2012 12:02
Receptor: Otros
Ubicación: Mi casa
Edad: 28

Re: Intento de desarrollo posicionador diseqc de codigo abierto

Mensaje por rodrigocn »

Tengo unos pocos avances con el control WIFI y corrección de algunos errores.
Pude hacer una app android sencilla que envie un paquete a la IP broadcast y de esa forma el modulo WIFI devuelve la IP actual.
Entonces solo basta con estar conectado a la misma red del posicionador y al abrir la aplicacion ya funciona sin tener que ingresar la IP manualmente.
La primera ve que se configura la red WIFI o cuando no se puede conectar a la misma, el posicionador emite su propia red.
les dejo el fragmento de codigo de esto porque me llevo bastante tiempo hacerlo funcionar y por ahi le sirve a alguien:

Código: Seleccionar todo

//ENVIAR MENSAJE BROADCAST PARA ENCONTRAR LA IP DEL POSICIONADOR EN LA RED ACTUAL
    void buscarPosicionadorRed() {
        class broadCast extends AsyncTask<String, Void, String> {
            @Override
            protected String doInBackground(String... params) {
                String ipEncontrada = "";
                try {
                    //Preparo y envio el comando a todos los dipositivos en la RED,si hay un posicionador nos va a responder con la IP
                    String comando = "*ip!"; //comando para que nos devuelva la IP
                    byte[] comandoBytes = comando.getBytes();
                    InetAddress ipBroadcast = InetAddress.getByName("255.255.255.255"); //IP de broadcast
                    DatagramSocket socket = new DatagramSocket();
                    DatagramPacket paquete = new DatagramPacket(comandoBytes, comandoBytes.length, ipBroadcast, 4567);
                    socket.send(paquete);

                    //Esperar la respuesta
                    while (true) {
                        try {
                            byte[] respuesta = new byte[16000];
                            DatagramPacket paqueteRespuesta = new DatagramPacket(respuesta, respuesta.length);
                            socket.setSoTimeout(5000);
                            socket.receive(paqueteRespuesta);
                            ipEncontrada = new String(respuesta, 0, paqueteRespuesta.getLength());
                        } catch (Exception e) { //si se genera una excepcion rompo el bucle
                            //e.printStackTrace();
                            break;
                        }
                    }
                    socket.close(); //cierro la conexion
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return ipEncontrada;
            }

            @Override
            protected void onPostExecute(String result) {
                //Verifico si la ip no es nula y me conecto a el
                if (!result.equals("")) {
                    Log.d("IP encontrada:", result);
                    ipPosicionador = result;
                } else {
                    Log.d("log", "No se encontro posicionador");
                    //Como no encontre un posicionador en la red tengo que pedir la IP

                }
            }

            @Override
            protected void onPreExecute() {
            }

            @Override
            protected void onProgressUpdate(Void... values) {
            }
        }
        new broadCast().execute();
    }


Lo otro es una simple prueba de lo que había comentado antes con la regla de 3, esta muy limitado porque no funcionaria por ejemplo con las posiciones 3.0E,5.0E,10E, etc
Pero me parece útil, porque solamente guardando la posicion en un satelite podemos ir a los demas, en mi caso cubre todo el arco visible :ok
Tengo que leer mas sobre USALS, en los pdf de Eutelsat hay un poco de información y tendría que ver si se puede hacer algo con eso o es muy complejo (como podrán imaginarse mis conocimiento matemáticos son nulos).


Tengo pendiente:
terminar el control WIFI
hacer que sea configurable el hemisferio donde esta el posicionador para invertir el giro
hacer la documentacion del armado y funcionamiento
seguir buscando errores
Creo que no implementare control remoto por IR

Otra cosa que olvide mencionar, no se si recuerdan una vieja discusion aca en el foro sobre el tema del "autoposicionamiento en motores H-H"
Donde en algunos receptores y motores se puede comprobar que al colocar un TP sin señal el motor se mueve 1 pulso o 2 para cada lado infinitamente.
O tambien occure al conmutar de polaridad (depende de como este implementado el software del receptor)
Bien, llegue a la conclusion de que no es ninguna funcion de "autoposicionamiento", en realidad es un error de posicionamiento en el motor y no todos lo hacen porque depende de como este implementado el software del receptor y el motor.
Me di cuenta de esto porque mientras estaba en etapas de pruebas con el conteo de pulsos, el posicionador siempre se paraba unos pulsos antes o despues.
entonces el receptor cuando no tiene señal continuamente envia el comando para posicionarse nuevamente y lo que sucede es que como el posicionador tiene mas o menos pulsos de los necesarios intenta nuevamente posicionarse, pero otra vez lo hará mal y asi seguira infinitamente, todo esto es causado por la velocidad de rotación, al ser muy alta y enviarle el comando para parar el motor, por la misma inercia avanza 1 pulso o 2 mas.
Si alguien desarmo un motor H-H notaran que el sensor hall y el iman estan acoplados directamente al eje del motor DC.
Por eso implemente el PWM en este posicionador y con eso se acabo el problema.
los motores H-H no regulan la velocidad.
Un poco confuso quizas, pero esa es mi teoria y estoy 99.9% seguro de que ese es el motivo del "autoposicionamiento".


rodrigocn
Mensajes: 1013
Registrado: 14 Nov 2012 12:02
Receptor: Otros
Ubicación: Mi casa
Edad: 28

Re: Intento de desarrollo posicionador diseqc de codigo abierto

Mensaje por rodrigocn »

Muestro algunos avances que no habia mostrado antes:
La pcb "definitiva" soporta conteo de pulsos con reed switch y con sensor optico/hall NPN,se puede usar cable UTP sin blindar sin ningun problema, Maximo 50v y 3 Amperes:


El modulo DISEQC lo hice simple con una salida para receptor y 1 lnb, le medi maximo 2 db de perdida, yo solo diseñe la PCB y le hice una minima modificacion al codigo del PIC para comunicarlo con el arduino.
Lo probe en Azamerica s2010,s1009,Azbox bravissimo,Tocomsat combate y funciono en todos bien.



La nueva fuente, ahora tiene 1 salida de 5v, 2 salidas de 12v "independientes" y la salida para el motor


El modulo wifi esp8266 funciona a 3.3v, la salidad de 3.3.v del arduino no es suficiente asi que tiene su propio regulador y un divisor resistivo para la comunicacion serial.



rodrigocn
Mensajes: 1013
Registrado: 14 Nov 2012 12:02
Receptor: Otros
Ubicación: Mi casa
Edad: 28

Re: Intento de desarrollo posicionador diseqc de codigo abierto

Mensaje por rodrigocn »

Hola :hello
Hace tiempo que no escribía.
Como llevan la cuarentena?

El proyecto sigue en pie, lento pero seguro.
En estos días lo estuve probando con diferentes receptores y solo encontré un problema que ya lo solucione, con el azamerica s1009 cuando se hacia un Goto X, mientras la antena se movía y no tenia señal en el TP porque aun no se posiciono, el receptor seguía enviando el comando GOTO entonces se movía unos segundos y paraba, así sucesivamente.

Estoy terminando la App móvil y la documentación.

Conocen algún programa para hacer diagramas de conexionado satelital?, donde se puedan poner DISEQC por ejemplo porque como podrán ver acá, no soy muy bueno dibujando :jaja







Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Alf
Moderador Global
Mensajes: 1123
Registrado: 07 Oct 2015 09:58
Receptor: Placa Satelital
Has thanked: 28 times
Been thanked: 20 times
Argentina

Re: Intento de desarrollo posicionador diseqc de codigo abierto

Mensaje por Alf »

Hola
rodrigocn escribió: 28 Mar 2020 14:50 ....Conocen algún programa para hacer diagramas de conexionado satelital?, donde se puedan poner DISEQC por ejemplo porque como podrán ver acá, no soy muy bueno dibujando ...
¡De 10!

No creo que haya programas específicos, si usas alguna distribución Linux suelen tener varios programas, pero tendrás que hacer algún cambio para que quede como te gusta. No obstante lo que has mostrado no necesita mejora, desde mi punto de vista.

¡Gracias!


rodrigocn
Mensajes: 1013
Registrado: 14 Nov 2012 12:02
Receptor: Otros
Ubicación: Mi casa
Edad: 28

Re: Intento de desarrollo posicionador diseqc de codigo abierto

Mensaje por rodrigocn »

Hoy estaba probando la funcion para posicionarme con una regla de 3 que mostre anteriormente
Por ejemplo, para posicionarme en el 55.5W necesito 583 pulsos y para posicionarme en el 43.1w necesito 452 pulsos.
Si hago una regla de 3 simple, da esto:
55.5 -> 583
43.1 -> X

(43.1x583) / 55.5 = 452.74

Otra prueba mas al oeste, para ir al 89w, con 930 pulsos tengo buena señal
55.5 -> 583
89 -> X

(89x583) / 55.5 = 934.90 -> con 934 pulsos tengo baja calidad pero igual la prueba es valida

Otra prueba mas al este, para capturar el 3W necesito 43 pulsos
55.5 -> 583
3 -> X

(3x583) / 55.5 = 31.51 -> lo mismo, baja calidad pero se posiciona igual
No me funciono mas.
Ayer le hice un mantenimiento a la parabolica y ajuste los limites de nuevo, entonces el conteo de pulsos que tenia antes ya no es el mismo.
Antes necesitaba 583 pulsos para ir al 55.5W, ahora son 520 pulsos.
Para el 43.1W antes eran 452 pulsos ahora son 389.

Si hago la regla de 3 me da:
55.5 -> 520
43.1 -> X

(43.1x520) / 55.5 = 403.81

Y no funciona :cabezadura

La diferencia de pulsos entre un satelite y otro sigue siendo la misma

583 - 452 = 131 (55.5W - 43.1W)
520 - 389= 131 (55.5W - 43.1W)

En fin, una simple casualidad que funciono en su momento y era útil.


Alf
Moderador Global
Mensajes: 1123
Registrado: 07 Oct 2015 09:58
Receptor: Placa Satelital
Has thanked: 28 times
Been thanked: 20 times
Argentina

Re: Intento de desarrollo posicionador diseqc de codigo abierto

Mensaje por Alf »

Holao

Tengo un sistema comercial y siempre algunos pulsos se corren. En mi caso particular, como tengo una antena pequeña en un mismo satélite (ojo que esto no siempre es cierto, por ej. los Amazonas en los 61°O) algunos TP se cazan mejor en una posición y otros hasta 5 pulsos de diferencia.Que con el tiempo se pierda algún pulso puede ser normal (culpa de esto pueden ser interferencia electromagnética como la de los relámpagos) o en mi caso si cambio el movimiento de este a oeste, o al revés, se me corre 1 o 2 pulsos.

Saludos


rodrigocn
Mensajes: 1013
Registrado: 14 Nov 2012 12:02
Receptor: Otros
Ubicación: Mi casa
Edad: 28

Re: Intento de desarrollo posicionador diseqc de codigo abierto

Mensaje por rodrigocn »

Alf escribió: 31 Mar 2020 14:10 Holao

Tengo un sistema comercial y siempre algunos pulsos se corren. En mi caso particular, como tengo una antena pequeña en un mismo satélite (ojo que esto no siempre es cierto, por ej. los Amazonas en los 61°O) algunos TP se cazan mejor en una posición y otros hasta 5 pulsos de diferencia.Que con el tiempo se pierda algún pulso puede ser normal (culpa de esto pueden ser interferencia electromagnética como la de los relámpagos) o en mi caso si cambio el movimiento de este a oeste, o al revés, se me corre 1 o 2 pulsos.

Saludos
Si esto que comentas me paso siempre tal cual.
Pero lo de posicionarme en un satélite "desconocido" haciendo la regla de 3 por lo que estuve probando fue una simple casualidad que me funciono.
Me puse a hacer cálculos y funciona bien cuando por ejemplo tomo como referencia el 55.5W pero solo con un valor muy cercano a 583 pulsos
por ejemplo (redondeando):
55.5 - 583
43.1 - 452
la diferencia entre ellos es de 583-452 = 131 pulsos (esto funciona perfecto, es la diferencia que tengo realmente entre ellos)

Pero suponiendo que el 55.5 lo tenga con 650 pulsos por ejemplo
55.5 - 650
43.1 - 504
la diferencia entre ellos es de 650-504 = 146 pulsos
Ahí ya no se posicionaría correctamente que es lo que me sucede ahora.

Adjunto algo del manual para que puedan ver que se puede mejorar
https://file.io/63wGjd


rodrigocn
Mensajes: 1013
Registrado: 14 Nov 2012 12:02
Receptor: Otros
Ubicación: Mi casa
Edad: 28

Re: Intento de desarrollo posicionador diseqc de codigo abierto

Mensaje por rodrigocn »

No me di cuenta que lo subi a un servidor que lo borra una vez descargado :fool
https://gofile.io/?c=cK9wkO


rodrigocn
Mensajes: 1013
Registrado: 14 Nov 2012 12:02
Receptor: Otros
Ubicación: Mi casa
Edad: 28

Re: Intento de desarrollo posicionador diseqc de codigo abierto

Mensaje por rodrigocn »

Me faltaba implementar un comando diseqc de los "comunes", recalcular las posiciones.
Esto hice por ahora, feo pero funcional

Recibe los pulsos actuales de cualquier posicion conocida, los pulsos que tiene ahora el motor, y el motor que debe recalcular las posiciones.
Calcula la diferencia de pulsos y si hay que restar o sumarle a las demas posiciones.
luego las lee y las edita.

Código: Seleccionar todo

//recalcular todas las posiciones
void recalcularPosiciones(int pulsosAnteriores, int pulsosActuales, byte motorPosicion) {
	pararMotorMovimiento(); //paramos los motores
	logLinea(F("recalcular posiciones"));
	escribirLCD(F("Recalculating..."));

	/*Necesitamos saber si hay que sumar o restar los pulsos a las demas posiciones
	 Si los pulsos actuales son mayores a los anteriores hay que sumar, si son menores hay que restar*/
	byte operacion = 0; //0 resta, 1 suma
	int diferencia = 0; //diferencia de pulsos

	if (pulsosActuales > pulsosAnteriores) {
		operacion = 1;
		diferencia = abs(pulsosActuales - pulsosAnteriores);
		logLinea(F("sumar diferencia"));
	} else if (pulsosAnteriores > pulsosActuales) {
		operacion = 0;
		diferencia = abs(pulsosAnteriores - pulsosActuales);
		logLinea(F("restar diferencia"));
	}

	//Leemos cada posicion, si corresponde al motor le cambiamos los pulsos al nuevo valor

	SdFile posiciones;
	SdFile posicion;

	if (posiciones.open("/positions")) {

		while (posicion.openNext(&posiciones,O_READ)) {
			//Nombre del fichero
			char nombrePos[13];
			posicion.getName(nombrePos, 13);

			//Obtenemos el nombre del satelite, pulsos y motor
			String nombreSat = "";
			int motor = 0;
			int pulsos = 0;
			char line[35]; //35 caracteres maximo
			int n;
			while ((n = posicion.fgets(line, sizeof(line))) > 0) {
				if (line[0] != '#') { //si no empieza con # carga el satelite
					//asignar datos temporales
					nombreSat = split(line, ',', 0);
					pulsos = split(line, ',', 1).toInt();
					motor = split(line, ',', 2).toInt();
				}
			}
			posicion.close();

			//Si el motor corresponde
			if (motor == motorPosicion) {
				//modificamos los pulsos
				if (operacion == 0) { //resta
					pulsos = abs(pulsos - diferencia);
				} else if(operacion == 1){
					pulsos = abs(pulsos + diferencia);
				}


				//Sobreescribimos la posicion
				logLinea(("edita posicion " + String(nombrePos) + " pulsos:" + pulsos));
				String ficheroPos = "positions/";
				ficheroPos.concat(nombrePos);
				char archivoSD[ficheroPos.length() + 1];
				ficheroPos.toCharArray(archivoSD, sizeof(archivoSD));
				File archivoPosicion = sd.open(archivoSD, O_WRITE | O_CREAT | O_TRUNC);

				archivoPosicion.println(nombreSat + "," + pulsos + "," + String(motor));
				archivoPosicion.close();

			}



		}

		posiciones.close();
	}

}
Entonces para recalcular las posiciones los pasos son:
enviar a una posicion X (que corresponda al motor que debe recalcular)
moverlo manualmente hasta tener la mejor señal
enviar el comando recalcular.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder

Volver a “Antenas”