Condensador variable alta tensión HF
Para recuperar una vieja afición y poner en uso en equipo de radioaficionado, que no disfruto desde hace demasiados años, me he planteado realizar una antena para bandas de HF de espacio reducido. Hay una bastante interesante pero que requiere de componentes especiales, la antena ‘ Loop Magnetica‘ o ‘Magnetic Loop Antenna‘.
Revisión: Este diseño ha quedado descartado para su uso debido en la antena debido a que las “loop magnética” requiere unas resistencias casi nulas de contacto y este condensador tiene un cursor que hace que baje su rendimiento. El condensador no pierde su utilidad por ello, pasará a ser parte de un acoplador de antena de hilo largo. Para la antena se diseñará un condensador tipo ‘mariposa’ que no requiere contactos con un cursor.
Este tipo de antenas requiere un condensador variable que soporte altas tensiones, del orden de miles de voltios, que se producirán entre las placas del mismo. Existe la opción de comprar unos magníficos condensadores de vacío que son ideales para este uso pero que cuestan entre 200 y 300 €, con lo que había una motivación superior para intentar realizar el proyecto.
Viendo algunos tutoriales por internet pensé en cortar yo mismo las placas de aluminio partiendo de chapas compradas en alguna tienda de bricolaje. También vi la posibilidad de pedir por Internet las placas cortadas e empresas especializadas, pero por casualidades de la vida encontré una empresa local que trabaja mecanización y corte y que me suministraba placas cortadas según un fichero CAD a un precio mucho más que aceptable (aprox. 50€ por material para dos condensadores de diferente tamaño) y el trato ha sido fabuloso para la importancia nula de mi pedido en su ‘agenda’. Se trata de ‘Anfilaser’ , en Aznalcóllar (Sevilla).
Con estas placas, varillas roscadas, tuercas a montones, arandelas, una ‘tabla’ de cocina para soporte y algún pequeño material me puse a fabricar el condensador.
Ya solo quedaban los detalles de barras y piezas de soporte para crear un bloque, así como mejorar los contactos eléctricos, para ello hacía falta aumentar la superficie de contacto y asegurarlo cuando el eje central gire, para ello recurrí a una chapa de bronce para uso en electrónica y a un viejo condensadores ajustable.
Ya fijadas todas las partes y con la misma operación en la otra cara, tenemos que tener en cuenta como mover las placas con el eje de control, dado que el movimiento de estas placas será remoto es necesario disponer de un motor que realice esta función y que además esté aislado del condensador debido a las tensiones que operará, para ello realizamos un acoplamiento con piezas de un scanner viejo , un motor paso a paso y un trozo de tubo de PVC con cortes en espiral para compensar posibles desajustes de giro:
Para controlar el motor paso a paso de forma remota y no recurriendo al típico cable, se ha realizado un circuito basado en dos componentes muy económicos (de origen chino), un microcontrolador con capacidad WiFi y una controlador de motor paso a paso, de esta forma, el sistema solo requiere que le llegue la alimentación de 12 V.
Efectuado el montaje, el condensador presenta una capacidad variable que va de los 20 a los 190 pF.
Los módulos son el famoso ESP8286 y el DRV8825, a los que solo he tenido que añadir un regulador de tensión y algún condensador, nada más:
Con esto ya solo queda escribir el código que permita convertir al microcontrolador en un servidor Web conectado a mi red WiFi y que me permita mediante una página ajustar el condensador en la posición deseada desde un móvil o un ordenador.
Buen dia un saludo.Necesito contactarte, estoy en Venezuela, es para construir un condensador variable y necesito favor me orientes. Saludos
¿Qué tipo de ayuda?
Yo he usado páginas y ayudas de Internet para realizarlo.
https://www.youtube.com/watch?v=yAUPgUcJBOI
https://www.youtube.com/watch?v=2aSJSV-azkM
https://www.youtube.com/watch?v=6u8w7UIFI44
Saludos
Hola.
Me gustaría ver el código para implementarlo en un sistema parecido que tengo en marcha.
Saludos
/*
* ESP8266 NodeMCU AJAX
* Updates and Gets data from webpage without page refresh
*/
#include
#include
#include
#include “index.h” //Our HTML webpage contents with javascripts
#define IZQ LOW // Mirando desde el condensador, sentido de giro
#define DCHA HIGH
//SSID and Password of your WiFi router
const char* ssid = “Micronica”; // your connection name
const char* password = “123345678!”; // your connection password
IPAddress ip(192,168,0,73);
IPAddress gateway(192,168,0,1);
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(80); //Server on port 80
int dir_motor = 2; // D4 de nodemcu – DIR
int step_motor = 14; // D5 de nodemcu – STEP
int ena_motor = 12; // Inhabilitar corriente motor – Alto – Disable
int pos_inicio = 13; // D7 de nodemcu – Fin carrera
unsigned int ciclo = 0; // Límite para cada test de arco.
unsigned int Pasos = 0; // Medir tamaño de arco en pasos
int PosAct = 0;
unsigned int error = 0;
void paso(){
digitalWrite(step_motor, HIGH);
delay(10);
digitalWrite(step_motor, LOW);
delay(10);
ESP.wdtFeed(); // Patear al perro
}
//————————————–//
// Buscar posición de inicio del motor //
//————————————–//
bool busca_inicio(){
ciclo=0;
// Si está en inicio, detector de posición, salir de ahí
if(digitalRead(pos_inicio)==LOW){ // Sacar el motor de la zona de Inicio
digitalWrite(dir_motor, IZQ); // Dirección izquierda
while( (digitalRead(pos_inicio)==LOW) and (ciclo < 100)){ paso(); // Dir XX ciclo++; } if(ciclo>99){ error = 1;} // No ha salido de la sombra o hay problema eléctrico.
}
//———————————————————————————-
// Buscar posición de Inicio para calcular pasos totales
ciclo=0;
digitalWrite(dir_motor, DCHA); // Dirección derecha para buscar inicio
while( (digitalRead(pos_inicio)==HIGH) and (ciclo < 4000)){ paso(); ciclo++; } // --------------------------------------------------------------------------------- Serial.print("a Inic:"); Serial.println(ciclo); // Si la vuelta a inicio es mayor de ??? dar error if(ciclo > 3999){ error = error|2;}
// Buscar el giro completo hasta encontrar tope
ciclo=4;
digitalWrite(dir_motor, IZQ); // Dirección izquierda
paso(); // Para sacarlo de la sombra
paso();
paso();
paso();
while( (digitalRead(pos_inicio)==HIGH) and (ciclo < 4000)){ paso(); ciclo++; } Serial.print("Pasos ciclo:"); Serial.println(ciclo); if(ciclo > 3999){ error = error|4;}
// Volver a inicio sabiendo cuantos pasos hay que retorceder
digitalWrite(dir_motor, DCHA); // Dirección derecha buscando inicio
if(error==0){
for (int i=ciclo; i>0; i–){
paso();
}
}
Serial.print(“Error:”);
Serial.println(error);
Pasos=ciclo/2;
Serial.print(“Pasos:”);
Serial.println(Pasos);
// Si hay error devolver false
if(error > 0){ return false; } else { return true;}
}
//————————————–//
//===============================================================
// This routine is executed when you open its IP in browser
//===============================================================
void handleRoot() {
String s = MAIN_page; //Read HTML contents
server.send(200, “text/html”, s); //Send web page
}
void readCAP() {
int a = PosAct;
String capValue = String(a);
server.send(200, “text/plane”, capValue); //Send CAP value only to client ajax request
}
// Manejar la peticion de nuevo estado del capacitor sobre
void handleCAP() {
String capState = “OFF”;
String t_state = server.arg(“CAPstate”); //Refer xhttp.open(“GET”, “setCAP?CAPstate=”+cap, true);
Serial.println(t_state);
if(t_state == “Max”){
digitalWrite(dir_motor, DCHA);
while(PosAct > 0){
paso();
PosAct–;
}
delay(100);
}
if(t_state == “Min”){
digitalWrite(dir_motor, IZQ);
while(PosAct < Pasos){ paso(); PosAct++; } delay(100); } if(t_state == "10"){ digitalWrite(dir_motor, DCHA); if(PosAct>5){
paso();
paso();
paso();
paso();
paso();
PosAct=PosAct-5;
delay(100);
}
}
if(t_state == “1”){
digitalWrite(dir_motor, DCHA);
if(PosAct>0){
paso();
PosAct–;
delay(100);
}
}
server.send(200, “text/plane”, capState); //Send web page
}
//==============================================================
// SETUP
//==============================================================
void setup(void){
// Mi SetUp
// preparing GPIOs
pinMode(dir_motor, OUTPUT);
digitalWrite(dir_motor, LOW);
pinMode(step_motor, OUTPUT);
digitalWrite(step_motor, LOW);
pinMode(ena_motor, OUTPUT);
digitalWrite(ena_motor, LOW);
// Entrada fin carrera
pinMode(pos_inicio, INPUT);
// digitalWrite(pos_inicio, LOW);
delay(1000);
Serial.begin(115200);
Serial.println(“”);
WiFi.mode(WIFI_STA);
WiFi.hostname(“LoopAnt”); // DHCP Hostname (useful for finding device for static lease)
WiFi.config(ip, gateway, subnet); // (DNS not required)
WiFi.begin(ssid, password);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.print(“Connected to “);
Serial.println(ssid);
Serial.print(“IP address: “);
Serial.println(WiFi.localIP());
// Hasta aquí WiFi Start
//– Perro guardian
ESP.wdtDisable();
ESP.wdtEnable(WDTO_8S);
// Posicionar motor
busca_inicio();
// Web Server
server.on(“/”, handleRoot);
server.on(“/setCAP”, handleCAP);
server.on(“/readCAP”, readCAP);
server.begin(); //Start server
Serial.println(“HTTP server started”);
}
//==============================================================
// LOOP
//==============================================================
void loop(void){
server.handleClient(); //Handle client requests
}
Este código no está muy depurado aún pero yo no tengo problema en usarlo para posicionar el condensador, a continuación te incluyo el código de la página:
const char MAIN_page[] PROGMEM = R”=====(
Magnetic Loop EA7EQQ
STP State is : NA
)=====”;
Espero que te sea útil.
Hola , he hablado con Anfilaser y me piden el archivo Cad para poder hacer las piezas.
Podrias fecilitarmelo.
Gracias
Enviado por correo.
Buenas, me podrías facilitar el fichero CAD para las piezas. Muchas gracias. 73
Enviado por correo.
Saludos
Hola gasensio. El mismo pedido que los colegas anteriores. Podras enviar al correo los planos CAD? desde ya, muchas gracias . Saludos
Lo envío por correo personal
Boa noite. Seria possível enviar o código fonte (arduino) e arquivo CAD para confecção de peças e montagem do controlador? Me ajudaria muito! Obrigado
Aquí está:
/*
* ESP8266 NodeMCU AJAX
* Updates and Gets data from webpage without page refresh
*/
#include
#include
#include
#include “index.h” //Our HTML webpage contents with javascripts
#define IZQ LOW // Mirando desde el condensador, sentido de giro
#define DCHA HIGH
//SSID and Password of your WiFi router
const char* ssid = “Micronica”; // your connection name
const char* password = “123345678!”; // your connection password
IPAddress ip(192,168,0,73);
IPAddress gateway(192,168,0,1);
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(80); //Server on port 80
int dir_motor = 2; // D4 de nodemcu – DIR
int step_motor = 14; // D5 de nodemcu – STEP
int ena_motor = 12; // Inhabilitar corriente motor – Alto – Disable
int pos_inicio = 13; // D7 de nodemcu – Fin carrera
unsigned int ciclo = 0; // Límite para cada test de arco.
unsigned int Pasos = 0; // Medir tamaño de arco en pasos
int PosAct = 0;
unsigned int error = 0;
void paso(){
digitalWrite(step_motor, HIGH);
delay(10);
digitalWrite(step_motor, LOW);
delay(10);
ESP.wdtFeed(); // Patear al perro
}
//————————————–//
// Buscar posición de inicio del motor //
//————————————–//
bool busca_inicio(){
ciclo=0;
// Si está en inicio, detector de posición, salir de ahí
if(digitalRead(pos_inicio)==LOW){ // Sacar el motor de la zona de Inicio
digitalWrite(dir_motor, IZQ); // Dirección izquierda
while( (digitalRead(pos_inicio)==LOW) and (ciclo 99){ error = 1;} // No ha salido de la sombra o hay problema eléctrico.
}
//———————————————————————————-
// Buscar posición de Inicio para calcular pasos totales
ciclo=0;
digitalWrite(dir_motor, DCHA); // Dirección derecha para buscar inicio
while( (digitalRead(pos_inicio)==HIGH) and (ciclo 3999){ error = error|2;}
// Buscar el giro completo hasta encontrar tope
ciclo=4;
digitalWrite(dir_motor, IZQ); // Dirección izquierda
paso(); // Para sacarlo de la sombra
paso();
paso();
paso();
while( (digitalRead(pos_inicio)==HIGH) and (ciclo 3999){ error = error|4;}
// Volver a inicio sabiendo cuantos pasos hay que retorceder
digitalWrite(dir_motor, DCHA); // Dirección derecha buscando inicio
if(error==0){
for (int i=ciclo; i>0; i–){
paso();
}
}
Serial.print(“Error:”);
Serial.println(error);
Pasos=ciclo/2;
Serial.print(“Pasos:”);
Serial.println(Pasos);
// Si hay error devolver false
if(error > 0){ return false; } else { return true;}
}
//————————————–//
//===============================================================
// This routine is executed when you open its IP in browser
//===============================================================
void handleRoot() {
String s = MAIN_page; //Read HTML contents
server.send(200, “text/html”, s); //Send web page
}
void readCAP() {
int a = PosAct;
String capValue = String(a);
server.send(200, “text/plane”, capValue); //Send CAP value only to client ajax request
}
// Manejar la peticion de nuevo estado del capacitor sobre
void handleCAP() {
String capState = “OFF”;
String t_state = server.arg(“CAPstate”); //Refer xhttp.open(“GET”, “setCAP?CAPstate=”+cap, true);
Serial.println(t_state);
if(t_state == “Max”){
digitalWrite(dir_motor, DCHA);
while(PosAct > 0){
paso();
PosAct–;
}
delay(100);
}
if(t_state == “Min”){
digitalWrite(dir_motor, IZQ);
while(PosAct 5){
paso();
paso();
paso();
paso();
paso();
PosAct=PosAct-5;
delay(100);
}
}
if(t_state == “1”){
digitalWrite(dir_motor, DCHA);
if(PosAct>0){
paso();
PosAct–;
delay(100);
}
}
server.send(200, “text/plane”, capState); //Send web page
}
//==============================================================
// SETUP
//==============================================================
void setup(void){
// Mi SetUp
// preparing GPIOs
pinMode(dir_motor, OUTPUT);
digitalWrite(dir_motor, LOW);
pinMode(step_motor, OUTPUT);
digitalWrite(step_motor, LOW);
pinMode(ena_motor, OUTPUT);
digitalWrite(ena_motor, LOW);
// Entrada fin carrera
pinMode(pos_inicio, INPUT);
// digitalWrite(pos_inicio, LOW);
delay(1000);
Serial.begin(115200);
Serial.println(“”);
WiFi.mode(WIFI_STA);
WiFi.hostname(“LoopAnt”); // DHCP Hostname (useful for finding device for static lease)
WiFi.config(ip, gateway, subnet); // (DNS not required)
WiFi.begin(ssid, password);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.print(“Connected to “);
Serial.println(ssid);
Serial.print(“IP address: “);
Serial.println(WiFi.localIP());
// Hasta aquí WiFi Start
//– Perro guardian
ESP.wdtDisable();
ESP.wdtEnable(WDTO_8S);
// Posicionar motor
busca_inicio();
// Web Server
server.on(“/”, handleRoot);
server.on(“/setCAP”, handleCAP);
server.on(“/readCAP”, readCAP);
server.begin(); //Start server
Serial.println(“HTTP server started”);
}
//==============================================================
// LOOP
//==============================================================
void loop(void){
server.handleClient(); //Handle client requests
}
Enviado por email.
Hola! Te agradeceria facilitar el archivo CAD de las placas
Lo envío a tu correo.
Saludos
Hola buenas,me podrías mandar el archivo CAD del condensador,gracias