Skocz do zawartości

Testowanie aparatury i odbiornika


AndyCopter
 Udostępnij

Rekomendowane odpowiedzi

Jakiś już czas temu, przymierzałem się do opracowania metody przetestowania jakości "trzymania" parametrów drążków i przełączników pod kątem drgań własnych.

Celem było wybranie z pośród posiadanych aparatur, tych z najlepszymi potencjometrami oraz przełącznikami, a te najgorsze oczywiście do pudeł i do piwnicy ;)

Jednakże, po wykonaniu całego szeregu testów, okazało się że nie tylko jakość potencjometrów i przełączników można ocenić - także typ modulacji transmisji, co akurat dla mnie okazało się być dość sporym zaskoczeniem.

 

Do wykonania i przeprowadzenia testów, posłużyłem się płytką Arduino - jako moduł odczytu PWM z wyjść odbiorników, oraz darmowym oprogramowaniem Processing, do wyświtlenia wyników w komputerze.

Processing do pobrania ze strony https://processing.org/

 

Przygotowanie

 

Poniżej sposób połączenia

AOFHJQa.jpg

 

Arduino podłączone poprzez USB do komputera, a odbiornik do BEC.

Połączenie odbiornika z Arduino dwoma przewodami: masa oraz sygnał z badanego kanału do wejścia Arduino, w przedstawionym przykładzie pin 12.

 

Poprzez IDE Arduino, załadowany został poniższy program do modułu Arduino Uno

/*
  Read PWM data from the pin port and assign it to a variable and send to serial. 
  Arduino Uno
  
  @author  AndyCopter
  @version 0.1.5
  @date    151201  
*/

const byte inputPin = 12;  // Arduino Uno Pin to read pwm signal from receiver

void setup() {
  pinMode( inputPin, INPUT);
  Serial.begin(115200);
}

void loop() {
  int pwm = pulseIn( inputPin, HIGH);
  Serial.println( pwm );
  delay( 90 ); // serial delay
}

Następnie dla środowiska Processing, załadowany został poniższy kod

/*
  Read PWM data from the serial port and assign it to a variable. 
  Processing

  @author   AndyCopter
  @version  0.1.5
  @date     151201
  @licence  OpenSource
*/

import processing.serial.*; 
 
Serial port;
byte LF = 10;

PWMRead pwm = new PWMRead();  

void setup() { 
  background(0);
  size(600, 600); 
  noStroke(); 
  frameRate(20); // Run 20 frames per second
  // Open the port that the board is connected to and use the same speed (9600 - 115200 bps) 
  port = new Serial(this, Serial.list()[1], 115200);
} 

void draw() {   
  if (0 < port.available()) {    // If data is available to read
    String sval = port.readStringUntil(LF);
    if (sval != null)   
      if (sval.length() > 2) 
        pwm.Display(sval);
  } 
} 

class PWMRead {
  int value;
  int valueMin;
  int valueMax;
  int fgColor;
  int x;
  int y;
  int lastPointX;
  int lastPointY;

  PWMRead () {
    value = 0;
    valueMin = 1500;
    valueMax = 1500;
    fgColor = #F6FF00;  
    x = 0;
    y = 0;
    lastPointX = x;
    lastPointY = y;
  }
  
  void Display (String sValue) {
      value = int( sValue.substring( 0, sValue.length()-2) );
      if (value < valueMin) valueMin = value;
      if (value > valueMax) valueMax = value;
      fill(fgColor);
      rect ( 0, 0, 600, 40);
      textSize(32);
      fill(0);
      sValue = "PWM => " + value + " min=" + valueMin + " max=" + valueMax;
      text( sValue, 10, 30); 
      // only for debug
      println(sValue);        
 
      strokeWeight(8);      
      y = int( map (value, valueMin, valueMax, 200, 600));
      stroke(fgColor); 
      point (x++, y);
      lastPointX = x;
      lastPointY = y;
      if (x > 600) x = 0;

      strokeWeight(1);
      stroke(0); 
      line (x+5, 195, x+5, 600);
      noStroke();  
  }
}

W powyższym kodzie, użyty został port szeregowy nr 1 (numeracja od 0), dlatego jeśli posiadacie inną ilość portów, należy zmodyfikować wiersz zawierający poniższy kod, podając właściwy numer portu szeregowego usb, do którego podłączone jest Arduino.

port = new Serial(this, Serial.list()[1], 115200);

 

 

Uruchomienie

 

po załadowaniu programu do Arduino Uno, wykonaniu odpowiednich połączeń i wgraniu programu do Processing, uruchomiona została aparatura będąca przedmiotem testów, a na koniec uruchomiony został program w Processing.

 

 

Rezultaty

 

Program dla Processing, jest dość trywialny, wyświetla wartości PWM na ekranie komputera, przekazywane z odbiornika RC poprzez Arduino, oraz w skali min-max bieżącą wartość.

 

Wyniki

 

W programie Processing, podczas odczytu wartości PWM, rysowana jest wartość odczytu PWM. Wynik bardzo dobry, to linia płaska.

 

Wnioski

 

Po przeprowadzeniu całego szerego testów z różnymi aparaturami i odbiornikami, okazuje się, że powodem wahań odczytywanych wartości PWM, są nie tylko słabej jakości potencjometry drążków czy miernej jakości przełączniki, ale także i same zestawy mogą okazać się wyjątkowo mierne, stosujące przestarzałe techologie modulacji. Szczególnie gdy przetestowana została aparatura dość droga, z dość popularnym logo.

 

Program jaki zamieściłem dla Processing jest uproszczoną wersją posiadanego. Można rozbudować go o zapis danych np. do pliku arkusza kalkulacyjnego, dodać obsługę przycisków Reset, Calibrate itp.,  oraz obliczanie bardziej zaawansowanych odchyleń wartości jak również do zliczania ilości zmian wartości dla wskazanego przedziału czasu.

 

Powyższe testy, możecie przeprowadzić samodzielnie, i sami dokonać własnej oceny posiadanego sprzętu.

 

Program działa w każdym środowisku dla komputerów PC zawierającym Java, zarówno dla Mac jak i Linux oraz windows.


Jeśli dla badanej aparatury z odbiornikiem, zobaczycie na wykresie zamiast linii poziomej coś podobnego do poniższego, czas porozglądać się za nową aparaturą ;)

 

qXnnE9p.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

Postaw mi kawę na buycoffee.to

Właśnie wyszło mi , że moja aparatura za kilka tysięcy złotych z popularnym logo jest kiepska. Co mam zrobić ? Lepiej się czułem przed testami nieświadomy tego co mam a latało się cały sezon wyśmienicie-żadnych zakłóceń itd .Aparatura jest nowa.

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

Jedno dodam jeszcze. Aparatura spisała się na medal ! Odbiornik czyli ja nieco gorzej bo boli łeb ale w normie. Fuzli nie czuć !

A widzisz :) bo to o taka aparature wlasnie pewnie chodzilo ;) Odbiorniki znaczy- odbiorcy, test, testerzy i wszystko jasne :)

Ale ta technika poszla do przodu- wystarczy podlaczyc i juz wiadomo czy aparatura jest dobra czy tez trzeba kupowac nowe gary i rurki :D

Odnośnik do komentarza
Udostępnij na innych stronach

Jak zainwestujesz na początku w sprzęt z popularnym logo to służy latami bez problemów. Ja zainwestowałem w szklane komponenty i chłopie laboratorium-jakość pod kontrolą.

No! Wiadomo ! Technologię też trzeba mieć. Ja używam oprogramowania 1410.Działa od Grunwaldu.

1 kilo cukru z polskiej cukrowni o popularnym logo

4 dkg drożdży

10l  wody 

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

Jak zainwestujesz na początku w sprzęt z popularnym logo to służy latami bez problemów. Ja zainwestowałem w szklane komponenty i chłopie laboratorium-jakość pod kontrolą.

No! Wiadomo ! Technologię też trzeba mieć. Ja używam oprogramowania 1410.Działa od Grunwaldu.

1 kilo cukru z polskiej cukrowni o popularnym logo

4 dkg drożdży

10l  wody 

Na koniec tarte skórki z pomarańczy. Działa. Sprawdzone :D .

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

Gość Jerzy Markiton

W tym roku do oprogramowania 1410 dopisałem kilka linijek kodu zawierających tarninę i laskę cynamonu. Efekt - genialny !

Żałowałem, że podjąłem zobowiązanie iż w adwencie nie będę niczego testował......

Wesołych Świąt !

- Jurek

Andy - jak chcesz sprawdzać potencjometry czy wyłączniki - to najlepszy jest oscyloskop ! Spróbuj kiedyś i porównaj wyniki. N/b - kiedyś porządne aparatury miały potencjometry cermetowe a dziś ?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...
 Udostępnij

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.