MEDIDOR DE SWR SONORO - ARDUINO (for English please scroll down)

Mais uma aplicação do Arduino, especial para radioamadores cegos.
O primeiro desta série foi o frequencimetro falante  , onde explicamos algumas coisas a mais que neste documento.
O segundo foi o medidor de SWR com voz.

Como funciona este novo equipamento :

Com uma ponte de ROE / SWR comum o arduino mede a tensão de RF incidente e a tensão refletida e calcula a relação de ondas estacionarias.
Quando a antena esta desajustada e a relação de ondas estacionarias for :

Maior que 1 : 5.0 (50 valor no Sketch) mostra um valor muito ruim e o tom é de uma sirene de advertencia.

Menor que 1 : 5.0 (50) e maior que 1 : 1.10 (11) tem um tom variando linearmente de 2400Hz com SWR a 1:5.0 e vai baixando o tom até 50Hz com SWR a 1:1.2 .

Quando a antena esta perfeita a relação de onda estacionaria é de 1 : 1.0 ou até 1 : 1.1
Ao obter esta  ROE o arduino gera um som de OK  em codigo morse.

Alguns ajustes de delay() podem ser refeitos para personalizar o aparelho.

Esquema :


Montagem :
Como fiz apenas um prototipo, eu não montei em definitivo.
A ponte de SWR pode ser uma comercial, retirando apenas 3 fios terra, voltagem incidente e voltagem refletida.
A minha ponte de SWR foi baseada no link .
Neste outro link encontram-se informações sobre outra otima ponte de SWR :
artigo do IK3OIL Francesco .
O buzzer foi retirado de um antigo modem. Mas pode ser de outro tipo testei vários e funcionaram. Para um som mais alto pode ser usado um amplificador de audio normal.
Para uma potencia mais elevada devemos ter atenção a não exceder 5V na entrada do arduino, para isto podemos usar um diodo zener de 5V em cada entrada (pinos 2 e 3).

Um video pode ser visto com este equipamento funcionando (lamento pelo meu ingles)

73 de py2ohh      mar 2020

SKETCH

float Vinc, Vref = 0, SWR;
int t;
int u = 30;
int r;
int ax;

void setup() {
  Serial.begin(9600);
  t = 5 * u;
  r = 200;
}
void loop() {
  Vinc = analogRead(2);
  Vref = analogRead(3);

  noTone(8);
  if (Vinc > 100) {
    delay(50);
    SWR = (Vinc + Vref) / (Vinc - Vref);
    SWR = SWR + 0.05;
    ax = abs(10 * SWR);
    Serial.println(ax); //4
    Serial.println();

    while (ax > 50) {
      Vinc = analogRead(2);
      Vref = analogRead(3);
      SWR = (Vinc + Vref) / (Vinc - Vref);
      SWR = SWR + 0.05;
      ax = abs(10 * SWR  );
      for (int x = 800; x < 2300; x = x + x) {
        tone(8, x);
        delay(300);
      }
      delay(500);
    }
    while ((ax < 12) && (ax > 9) ) {
      Vinc = analogRead(2);
      Vref = analogRead(3);
      SWR = (Vinc + Vref) / (Vinc - Vref);
      SWR = SWR + 0.05;
      ax = abs(10 * SWR);
      if ((ax > 11) || (ax < 9)) return;

      tone(8, 1000, t);
      delay(r);
      tone(8, 1000, t);
      delay(r);
      tone(8, 1000, t);
      delay(2 * r);
      tone(8, 1000, t);
      delay(r);
      tone(8, 1000, 3 * u);
      delay(r);
      tone(8, 1000, t);

      delay(600);

    }
    while (ax > 11 && ax < 50) {
      Vinc = analogRead(2);
      Vref = analogRead(3);
      SWR = (Vinc + Vref) / (Vinc - Vref);
      SWR = SWR + 0.05;
      ax = abs(10 * SWR);
      if ((ax < 12)) return;
      int res = map(ax, 10, 50, 50, 2400);
      tone(8, res);
      delay(500);
    }
  }
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

SOUND SWR METER - ARDUINO (for English please scroll down)

Another application of Arduino, especially for blind radio amateurs.
The first in this series was the talking frequency meter, where we explained a few more things than in this document.
The second was the SWR meter with voice.

How this new equpment works :

With a standard SWR bridge the arduino measures the incident RF voltage and the reflected voltage and calculates the stationary waves ratio.
When the antenna is out of adjustment and the ratio of stationary  is:
greater than 1: 5.0 (50 value in Sketch) shows a very bad value and the tone is that of a warning siren.

Less than 1: 5.0 (50) and greater than 1: 1.10 (11) has a tone ranging linearly from 2400Hz with SWR at 1: 5.0.....going down to 50Hz with SWR at 1: 1.2.

When the antenna is perfect, the stationary wave ratio is 1: 1.0 or even 1: 1.1
When obtaining this SWR the arduino generates an OK sound in Morse code.

Some delay() settings  can be readjusted to personalize the device.

Schematics :


Assembly :
As I only made a prototype, I did not assemble it for good.
The SWR bridge can be a commercial bridge, removing only 3 ground wires, incident voltage and reflected voltage.
My SWR bridge was based on the link.
In this other link you will find information about another great SWR bridge:
IK3OIL Francesco project.
The buzzer was removed from an old modem. But it can be of another type I tested several and they worked. For a louder sound a normal audio amplifier can be used.
For a higher power we must be careful not to exceed 5V at the arduino input, for this we can use a 5V zener diode on each input (pins 2 and 3).

A video can be seen with this equipment working (sorry for my English)

SKETCH

float Vinc, Vref = 0, SWR;
int t;
int u = 30;
int r;
int ax;

void setup() {
  Serial.begin(9600);
  t = 5 * u;
  r = 200;
}
void loop() {
  Vinc = analogRead(2);
  Vref = analogRead(3);

  noTone(8);
  if (Vinc > 100) {
    delay(50);
    SWR = (Vinc + Vref) / (Vinc - Vref);
    SWR = SWR + 0.05;
    ax = abs(10 * SWR);
    Serial.println(ax); //4
    Serial.println();

    while (ax > 50) {
      Vinc = analogRead(2);
      Vref = analogRead(3);
      SWR = (Vinc + Vref) / (Vinc - Vref);
      SWR = SWR + 0.05;
      ax = abs(10 * SWR  );
      for (int x = 800; x < 2300; x = x + x) {
        tone(8, x);
        delay(300);
      }
      delay(500);
    }
    while ((ax < 12) && (ax > 9) ) {
      Vinc = analogRead(2);
      Vref = analogRead(3);
      SWR = (Vinc + Vref) / (Vinc - Vref);
      SWR = SWR + 0.05;
      ax = abs(10 * SWR);
      if ((ax > 11) || (ax < 9)) return;

      tone(8, 1000, t);
      delay(r);
      tone(8, 1000, t);
      delay(r);
      tone(8, 1000, t);
      delay(2 * r);
      tone(8, 1000, t);
      delay(r);
      tone(8, 1000, 3 * u);
      delay(r);
      tone(8, 1000, t);

      delay(600);

    }
    while (ax > 11 && ax < 50) {
      Vinc = analogRead(2);
      Vref = analogRead(3);
      SWR = (Vinc + Vref) / (Vinc - Vref);
      SWR = SWR + 0.05;
      ax = abs(10 * SWR);
      if ((ax < 12)) return;
      int res = map(ax, 10, 50, 50, 2400);
      tone(8, res);
      delay(500);
    }
  }
}

73 from py2ohh mar 2020