Schlagwort-Archive: Arduino

Der PE4302 Attentuator / Dämpfungsglied ist vom PC steuerbar über einen Arduino

Das Dämpfungsglied mit dem PE4302 Chip soll seriell einstellbar sein und vom PC aus angesprochen werden können.

Dazu nehme ich die Schaltung vom vorherigen Beitrag und erweitere die Arduino Software für die serielle Steuerung.

Diese seriellen Kommandos können im Seriellen Monitor des Arduino Programms eingegeben werden und werden dann zum Arduino geschickt, der entsprechende Aktionen auslöst.

Die Kommandos sind:
s : set attentuator. Examples: s1.5 | s0 | s 22.5 | s 31 | s 0.0
g : get actual attentuator value
d : device class Weiterlesen

Einstellbares Dämpfungsglied bis 4GHz mit dem Arduino

Ich habe die Attentuator (Dämpfungsglied) Platine aus China bekommen mit dem PE4302 Chip drauf.

Diese Platine soll seriell vom Arduino angesteuert werden. Die Dämpfung ist dann einstellbar bis zu einer Frequenz von 4GHz. Das funktioniert wenn man das Datenwort seriell überträgt mit Data und Clock und dann mit LE das Wort scharf schaltet.

Doch zuerst ein Blick auf die gelieferte Platine. Da fallen gleich ein paar Fehler auf:

Am Ausgang in der Nähe des SMA Steckers ist eine Masse Durchkontaktierung direkt neben die Streifenleitung gesetzt worden. Da hat einer nicht aufgepasst.

Die Lötbrücke J5 ist gesetzt. Damit liegt LE direkt auf 3V und ist nicht ansprechbar. Diese Lötbrücke habe ich entfernt.

Die Lötbrücke J6 ist gesetzt. Damit ist P/S auf GND und somit auf den Parallelbetrieb eingestellt. Diese Lötbrücke habe ich entfernt. Für den Seriellen Betrieb habe ich die Lötbrücke J4 gesetzt und damit P/S auf 3V gelegt. Dann können die seriellen Daten akzeptiert werden.

Hier die Änderungen im Bild.

Dann wurde der Arduino Uno angeschlossen.
Die Spannungsversorgung des PE4302 Platine ist auf 5V ausgelegt und damit direkt am Arduino 5V Ausgang anschließbar.
Die Datenpegel des Uno Liegen bei 5V. Der PE4302 akzeptiert aber nur 3V. Hier wurden drei Spannungsteiler in den 3 Datenleitungen zwischengeschaltet jeweils mit 2,2 kOhm und 3,3k Ohm Widerständen um den PE4302 nicht zu beschädigen. Weiterlesen

Die Airmar PB100 Wetterstation mit dem NMEA Shield am PC auslesen

André Singer hat ein Programm für die Airmar Wetterstation PB100 und das NMEA Shield geschrieben.

Moin Moin !

Ich habe einen AIRMAR PB100 an das Shield angeschlossen.
Die PB100 sendet und empfängt Ihre NMEA0183 Daten nicht über eine normale RS232 sondern über RS485.
Zum Glück haben die gesendeten Daten einen vernünftigen Pegel, trotz 25m Zuleitung, sodass
hierfür die Serial3 zum empfangen der Daten genutzt werden konnte. Zum senden der Einstellungen und Befehle habe ich die RS485 auf Serial1 verwendet, da hierfür die 25m einfach zu lang war, oder aber die PB100 die Daten wirklich als RS485 erwartet.
Für die Serial3 ist es wichtig die Masse der 12V Versorgung der PB100 noch mit auf die Klemme zu legen.


Danach kann man die Daten über den Seriellen Monitor sich anschauen oder aber über die Software von AIRMAR visualisieren. Weiterlesen

Der Heading NMEA2000 Datensatz 127250 wird zu NMEA0183 übersetzt und ausgegeben

Der Vessel Heading PGN 127250 wird mit dem NMEA Shield eingelesen, zerlegt und als NMEA0183 Datensatz auf TX1 wieder ausgegeben. Bei einem Magnetkompass wird HDM (Magnetic) ausgegeben und bei einem Satelliten- oder Kreiselkompass HDT (True).

Genau so können auch andere NMEA2000 Daten übersetzt werden.

Diese Übersetzung wird benötigt wenn man von einem neuen Autopiloten mit NMEA2000 Verkabelung ein schnelles Heading für ein altes Radar benötigt. Die Kompaßdaten werden typisch 10x pro Sekunde ausgegeben.

Die NMEA0183 Datensätze sind hier beschrieben:
http://nmea.de/nmea0183datensaetze.html#hdm

Hier das Programm: Weiterlesen

NMEA 2000 Daten in den Actisense NMEA Reader einlesen mit dem NMEA shield

Mit dem NMEA Shield werden Daten aus dem NMEA2000 Netz eingelesen und über USB zum PC gegeben. Im NMEA Reader von Actisense werden diese Daten als PGN mit den enthaltenen aktuellen Werten ausgegeben.

Der NMEA2000 Bus ist an die N2K High und N2K Low Klemme des NMEA Shields geschaltet.
Die Versorgungsspannung kann aus dem NMEA2000 Bus kommen mit 8V bis maximal 14V und GND (Bei einer höheren Spannung wird der Spannungsregler des Arduino Mega heiss ), von einem extra Netzteil mit 9V für den Mega direkt oder aus der USB Schnittstelle des PC. Weiterlesen

RS485 Repeater mit dem NMEA shield

André hat ein RS485 Repeater Programm für das NMEA shield geschrieben:

Moin moin,

habe die RS 485 getestet und funktioniert einwandfrei !
Anbei Bilder hierzu , der zusätzliche Wiederstand in der Klemme ist, weil der Bus auf beiden
Seiten mit 120 Ohm abgeschlossen sein muß … der FTDI zu USB hat zwar einen eingebauten den muß man aber über die zusätzlichen Kabel mit anschließen, da ich das für die Programmierung der Brandmeldeanlage aber nicht brauche, habe ich das so gelöst. Weiterlesen

NMEA0183 zu USB Wandler mit dem NMEA shield

Als Einführung ein kleines Programm, daß nur die NMEA0183 Daten vom NMEA Shield Rx1 an die USB Schnittstelle weiter gibt.

Beide Baudraten wurden zu 4800 gewählt.
Wenn Zeichen an Serial3 (Rx1) vor liegen, werden diese gelesen und direkt an Serial (USB) ausgegeben. Weiterlesen

Das NMEA Shield für den Arduino Mega 2560 ist fertig

Endlich ist es fertig, das NMEA Shield 1.7 für den Arduino Mega 2560 ist da.

Andre und ich haben ein eigenes Arduino Shield entwickelt mit den NMEA Schnittstellen:
2 x NMEA0183 / RS232
1 x N2k (NMEA2000) / CAN Bus
1 x RS485
1 x USB ( durch den Arduino Mega darunter ist natürlich auch ein USB Port vorhanden )

Ein N2k (NMEA2000) Abschlußwiderstand kann mit einem Jumper eingeschaltet werden, wenn das Shield am Ende eines NMEA2000 Backbones betrieben werden soll. Normalerweise ist dieser Jumper aber nicht gesteckt.

Ein Abschlusswiderstand für den RS485 Eingang kann auch per Jumper zugeschaltet werden. Weiterlesen

In Processing den COM Port auswählen und Werte vom Arduino einlesen.

Wenn Werte vom Arduino abgerufen werden sollen muß zuerst der richtige COM Port ausgewählt werden und dann kann sich Processing damit verbinden. Für die Abfrage der Werte wird eine kurze Anfrage gesendet und der Arduino gibt den entsprechenden String zurück. Dieser wird in Processing eingelesen und dargestellt.

Hier werden als Beispiel 3 mögliche Strings ausgegeben:
1. Anfrage: n Antwort: Name des Geräts
2. Anfrage: s Antwort: Software Version
3. Anfrage: v Antwort: USB Spannung

Die USB Spannung wird ermittelt wie hier beschrieben. Dazu ist nur eine Brücke vom 3,3V Pin zum A0 Eingang notwendig.

Hier das Arduino Programm

// Arduino USB-Spannung an Processing ausgeben
//
// Matthias Busse 21.3.2017 Version 1.0
 
char wert; // Daten von der seriellen Schnittstelle
float vcc;
 
void setup() {
  Serial.begin(38400); // Baudrate
}
 
void loop() {
  vcc = 3.30 / analogRead(0) * 1023;
  while (Serial.available()) {       // Wenn serielle Daten kommen, dann lesen
    wert = Serial.read();            // Daten in wert speichern
    if (wert== 'n') {                // n: Name ausgeben
      Serial.println("USB Spannung messen");
    }
    if (wert== 's') {                // s: Software Version ausgeben
      Serial.println("Version 1.0");
    }
    if (wert== 'v') {                // v: Spannung ausgeben
      Serial.print(vcc);
      Serial.println(" V");
    }
  }
}

In Processing wird dann folgendes gemacht
Eine COM Port Auswahl mit einfachen Pfeiltasten. Dann kann man sich mit dem COM Port verbinden, die Verbindung wieder trennen oder die Liste der COM Ports neu einlesen. Der aktuelle Status wird im Feld darunter ausgegeben. Dazu wird eine einfache Button Klasse verwendet. Weiterlesen

Eine LED mit Processing schalten und den Status zurück bekommen vom Arduino

Die LED 13 auf dem Arduino Board soll nun von einem Processing Fenster aus umgeschaltet werden per Maus. Danach gibt der Arduino den Status der LED zurück in das Processing Fenster.

Das Processing Fenster reagiert einmalig auf den Mausklick in das Fenster und sendet dann abwechselnd eine 0 oder 1 an den Arduino. Dieser schaltet die LED um und gibt den LED Status als String zurück. Der String vom Arduino aus println hört mit \n auf. Das wird in Processing auch als Ende des Strings erkannt mit readStringUntil(‚\n‘).

Das Processing Text Ausgabe Feld im Windows Fenster muss erst mit einem leeren Rechteck abgedeckt werden und dann wird neuer Text drüber geschrieben.

Hier das Arduino Programm

// Arduino LED bei Mausklick umschalten
// aus einem Processing 3+ Fenster
// mit Status Rückmeldung vom Arduino
//
// Matthias Busse 19.3.2017 Version 2.0
 
char wert; // Daten von der seriellen Schnittstelle
int led = 13; // Board LED vom Arduino Uno
 
void setup() {
  pinMode(led, OUTPUT); 
  Serial.begin(38400); 
}
 
void loop() {
  while (Serial.available()) {       // Wenn serielle Daten kommen, dann lesen
    wert = Serial.read();            // Daten in wert speichern
    if (wert== '1') {                // 1 heisst einschalten
      digitalWrite(led, HIGH);       // LED einschalten
      Serial.println("LED ist an");  // Rückgabe
    }
    else {
      digitalWrite(led, LOW);        // LED ausschalten
      Serial.println("LED ist aus"); // Rückgabe
    }
  }
}

Das Processing 3.3 Programm Weiterlesen