Arduino Code Schleifen Empfänger

Hallo zusammen,

Ich hoffe Ihr könnt mir weiterhelfen... Wie lese ich den LM386 (low power audio amplifier) aus?
Brauche "nur" den rudimentären Code um auf irgendwelche Werte zu kommen.
Wie habt ihr die Spule befestigt ?

Der Sender ist eingerichtet und sollte laufen ... doch den Code benötige ich um zu verstehen wie das Ding funktioniert.

Vielen Dank vorab

SG
Chris
 
Hallo ,

So nun habe ich meine Schleife nach ewigen Theater mit der Treibersoftware für Nano zum laufen gebracht.
Ebenso nur zum testzwecken habe ich Arduino Uno mit 2 ( jeweils am A4, A5) Sensoren bestückt und laufen lassen. Ich kann kalibrieren ( zumiendest sagt mir das die Software ) und nun mein Problem bzw. diverse Fragen ...

Wie deute ich die Werte die mir Arduino liefert ? ;-)
Was erstaunlich ist solange ich mich in der Serielen Konsole befinde und gehe mit der Spule zu nah an mein Perimeter Kabel bricht diese ab und liefert keine Werte mehr ... befinde ich mich in der sog. Char Konsole ( wo nur die numerischen Werte angezeigt werden) läuft diese ohne Probleme. Die Werte ändern sich je weiter ich vom Perimeterdraht weg bin (als Beispiel die 1 Spalte ) auf +40 unddirekt über der Perimeterschleife erreiche ich ca. -2020 ( Warum eigentlich minuns?)

Nach Beendigung der Konsole habe ich festgestellt das im Arduino Code Fenster folgende Fehler Meldungen ca. 12 stück ( alle gleich ) :
at gnu.io.RXTXPort.eventLoop(Native Method)
at gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1575)
Fehler in Serial.serialEvent()
java.io.IOException: Bad file descriptor in nativeavailable

Hier will ich wie gesagt nochmal darauf hindeuten dass ich das Programm auf einem Uno getestet habe.

Meine letzte Frage:
Wie kann ich feststellen dass meine Perimeterschleife bzw. der Sender richtig arbeiten? Ebenso was muss der Empfänger liefern worauf muss ich hier achten damit ich die Sensorik verwenden kann.

Ich hoffe Ihr könnt mir weiterhelfen.

Beste Grüße

Christoph
 
Hi,

sieht die Console so bei dir aus, also zumindest die Spaltennamen (die Werte mögen variieren)...?:


Code:
cnt 4	min 94	max 97	avg 95		mag -8		smag 3	qty 1.60		in 1	on 0	adc 1
cnt 4	min 94	max 97	avg 95		mag -8		smag 3	qty 1.60		in 1	on 0	adc 0
cnt 4	min 94	max 97	avg 95		mag 6		smag 3	qty 1.20		in 1	on 0	adc 1
 
Ja sehr Richtig so ähnlich schaut es aus

Ich glaube das mit dem Fehler ist eine andere Geschichte.
Wenn ich die Char Console "v" senden Starte sind die Werte eindeutiger ( für mich)
Wo kann ich dies explizit für die Motorsteuerung abgreifen ?
Welcher Wert wird hierzu "zuverlässig" abgegriffen ?

Damit ich das mit einer Funktion definieren kann

if "xx" >1900 dann fahre nach rechts usw...

Beste Grüße

Christoph
 
Ja sehr Richtig so ähnlich schaut es aus

Ich glaube das mit dem Fehler ist eine andere Geschichte.
Wenn ich die Char Console "v" senden Starte sind die Werte eindeutiger ( für mich)
Wo kann ich dies explizit für die Motorsteuerung abgreifen ?
Welcher Wert wird hierzu "zuverlässig" abgegriffen ?

Damit ich das mit einer Funktion definieren kann

if "xx" >1900 dann fahre nach rechts usw...

Beste Grüße

Christoph
 
Wichtig ist: bei der Kalibrierung darf die Schleife nicht angeschaltet sein. Der Empfänger wird so genullt, was das Signal betrifft.

Ist der Sender wieder an: die Werte Smag (oder Mag, kann es gerade nicht verifizieren) sind die eigentlich entscheidenen Werte. Smag wird 0, wenn du auf der Schleife bist, außerhalb wird sie positiv, innerhalb dann negativ.

Die Spalte "in" bedeutet, dass du innerhalb der Schleife bist. "in" = 1 ist drin, "in" = 0 ist außerhalb. Glaube, dass "on" = 1 bedeutet, dass du auf der Schleife bist.

Wenn du also von in=1 auf in=0 wechselst, hast du die Schleife gefunden. Dann nach rechts drehen. Dann vorwärts. Bist du in=1 nach links korrigieren, bist du in=0 nach rechts korrigieren.

Nachtrag (mit Halbwissen!):
cnt = Anzahl der Änderungen
min/max/avg = Amplitutenbewegungen
mag/smag = messwerte
qty = quality, sollte über 1.5 sein...
in = Auswertung/Beurteilung nach Config-Parameter, ob drin oder nicht
on = Auswertung/Beurteilung nach Config-Parameter, ob auf der Schleife
adc = nicht sicher... ggf. eine Einschätzung, ob es ein gültiges ADC-Signal ist
 
Hallo Roland,

Super vielen Dank für den Code. Allerdings ich bekomme folgende Fehelrmeldung beim Kompilieren :



In file included from MatchedFilter.cpp:1:
MatchedFilter.h:49: error: ISO C++ forbids initialization of member 'senderAnzEinsen'
MatchedFilter.h:49: error: making 'senderAnzEinsen' static
MatchedFilter.h:49: error: ISO C++ forbids in-class initialization of non-const static member 'senderAnzEinsen'
MatchedFilter.cpp: In constructor 'TMatchedFilter::TMatchedFilter()':
MatchedFilter.cpp:16: error: expected `(' before '{' token
MatchedFilter.cpp:16: error: expected `;' before '}' token
MatchedFilter.cpp: At global scope:
MatchedFilter.cpp:16: error: expected unqualified-id before '{' token

Kannst du mir bitte dabei helfen ?

Danke

SG

Christoph
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/1857/empfaenger.jpg/
 
Zuletzt bearbeitet von einem Moderator:
Hi Roland,

nun hatte ich die Möglichkeit dein Programm zu testen. Leider bekomme ich über die Serielle Schnittstelle keine Werte bzw. keine Werte die ich lesen kann.
Es kommen nur kryptische Sonderzeichen an.
Die Baudraten habe ich alle Probiert von 9600 bis 19200 +++ keine Verbesserung.
Wie gesagt Dein Programm läuft bei mir nur unter IDE 1.8.9. Habe andere (einfache) Sensor Sketches ausprobiert , diese liefern lesbare Werte.

Woran kann es liegen ?

SG
Christoph
 
Hast du #define SEND_TO_MEGA auskommentiert und //#define PRINTRESULTS einkommentiert?
So wie das Programm aktuell konfiguriert ist, werden Daten zum Mega geschickt und diese sind auf der Konsole nicht als Zeichen zu erkennen.

Wenn du //#define PRINTSIGNAL einkommentierst, kannst du das Empfangssignal und das Correlationssignal anschauen. Ich habe dazu MakerPlot verwendet. Ansonsten mit Processing oder einem anderen Tool.

Aber immer nur eins zur Zeit verwenden:

#define SEND_TO_MEGA
//#define PRINTRESULTS
//#define PRINTSIGNAL
 
Die Software unterstützt nur einen Sensor.
1. Spalte Empfangssignal, 2. Spalte Correlationsignal.
 
Hallo

Also ich krieg die Sensorik nicht zum laufen.
Jetzt habe ich die Test Perimeter V2 Software nochmal installiert.
Bei Beiden Sensoren verhält es sich so, dass sobald ich einen der beiden Sensoren bewege stürzt die Konsole ab Arduino liefert keine Daten mehr.
Mit einem Sensor bekomme ich Super Werte doch lediglich nur mit 1 !?

Warum hängt sich die Konsole bei 2 Sensoren auf ?

Was mache ich Falsch ???

Beste Grüße

Christoph
 
Hallo zusammen,

Habe versuchsweise die Analogen Eingänge auf A2 und A3 gelegt.
Jetzt stürzt zwar mein uno nicht ab doch ich kriege jetzt sehr merkwürdige Werte.

Test 1 zeigt die Werte an
Test 2 zeigt die Kalibrierung an

Kann es an Uno liegen ? Brauche ich hierzu den Mega? oder woran kann es liegen ?
Kann ich an der Perimeterschleife ( 2 Potis ?) was einstellen ?

Ich hoffe Ihr könnt mir weiterfelfen

SG
Christoph
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/1857/Test_2.jpg/
 
Zuletzt bearbeitet von einem Moderator:
Oben