2x Arduino über DAC kommunizieren

Hallo zusammen,

ich versuche mit 2 Arduino Unos über einen DA-Wandler (MCP4922) eine Kommunikation herzustellen. Der zweite Arduino soll die Daten des ersten Arduinos auswerten und auf Grundlage dessen eigene Daten senden.

Der Verlauf der Daten soll mittels Oszilloskop dargestellt werden. Da ich keins zur Hand habe, meine 1. Frage: Kennt einer ein Onlineprogramm (sowohl für Windows als auch macOS)?

Aktuell bin ich mir aber noch nicht sicher, ob die Kommunikation überhaupt funktioniert. Welche Möglichkeiten gibt es, dies zu überprüfen?

Wäre super wenn mir jemand helfen könnten! :slight_smile:

Liebe Grüße

(deleted)

Ich finde das etwas pervers. Ein digitaler Wert in einen analogen umwandeln um diesen dann wieder digitalisieren.
Wieso sendest Du nicht die Daten digital von einem zum anderen Arduino?
Als Schnittstellen bieten sich RX/TX bzw Softwareserial, I2C oder SPI.

Grüße Uwe

Das ist leider die Vorgabe des Profs....

sv55792:
Das ist leider die Vorgabe des Profs....

Ok, ich verstehe. Wieder so eine praxisfremde Übungsarbeit.
Für die Aufzeichnung des analogen Signals brauchst Du einen DAC. Ein Programm auf dem PC reicht nicht. Die Audiokarte kann als Osziloskop mißbraucht werden, kann Dir aber kein Programm empfehlen.
Wenn Du die Spannungsänderungen sehr langsam programmierst kannst Du die Spannung mittels Digitalmultimeter messen.
Ansonsten auch mit einem Analogeingang des zweiten Arduinos kannst Du die Werte verifizieren Die Werte einfach über serial.print an das Terminal der Arduino IDE senden.
Grüße Uwe

Danke für die Antwort!

Das Signal für den ersten Arduino wurde mittels serial.println erstellt und anschließend über den Seriellen Plotter ausgegeben. Das Signal war auch das gewünschte Signal.

An folgendem Schritt scheitert es:
Anschließend sollte dieses Signal bzw. die Werte vom zweiten Arduino aufgenommen werden. Der zweite Arduino soll nun immer dann einen Impuls senden, wenn ein bestimmter Schwellenwert unterschritten wird (vergleichbar mit einem Herzschrittmacher).

Hattest du dir eventuell mal das hochgeladene Blockschaltbild von mir angeschaut? Würde das mit diesem Aufbau funktionieren?

sv55792:
Würde das mit diesem Aufbau funktionieren?

Ups! Wie versorgst Du die UNO?
Kontrollierst Du an beiden mit seriellen Ausgaben?

Da Du beide Arduinio mit 5V UND GND auf dem Steckbrett verbindest, dauert es nicht lange, bis etwas abraucht.
Wenn der USB-Anschluss genutzt wird, geht das ganz schnell.

Beide GND ja, Nur einen mit 5V aufs Steckbrett.


Nein, so geht das nicht
Du kannst nicht mit beiden Arduinos gleichzeitig den MCP4922 ansteuern.
Der erste Arduino steuert den MCP4922 an und der zweite liest die Spannung die der MCP4922 produziert. Dazu muß die Masse (GND) beider Arduinos zusammengeschaltet werden.

Grüße Uwe

my_xy_projekt:
Ups! Wie versorgst Du die UNO?
Kontrollierst Du an beiden mit seriellen Ausgaben?

Da Du beide Arduinio mit 5V UND GND auf dem Steckbrett verbindest, dauert es nicht lange, bis etwas abraucht.
Wenn der USB-Anschluss genutzt wird, geht das ganz schnell.

Beide GND ja, Nur einen mit 5V aufs Steckbrett.

Ich nutze bei beiden den USB-Anschluss. Die 5V des einen Arduinos habe ich jetzt vom Steckbrett entfernt.

uwefed:
Nein, so geht das nicht
Du kannst nicht mit beiden Arduinos gleichzeitig den MCP4922 ansteuern.

Das heißt die Aufgabenstellung ist mit einem MCP4922 so nicht realisierbar?

uwefed:
Der erste Arduino steuert den MCP4922 an und der zweite liest die Spannung die der MCP4922 produziert. Dazu muß die Masse (GND) beider Arduinos zusammengeschaltet werden.

GND beider Arduinos habe ich jetzt zusammengeschaltet. Dann wären in dem Fall die Verbindungen der Analog In Pins vom Arduino zu den Pins des MCP4922 überflüssig?

Ich fang mal ganz von vorne an, da mir noch nicht klar ist, was Du machen sollst.

sv55792:
ich versuche mit 2 Arduino Unos über einen DA-Wandler (MCP4922) eine Kommunikation herzustellen. Der zweite Arduino soll die Daten des ersten Arduinos auswerten und auf Grundlage dessen eigene Daten senden.

Bitte korrigiere mich, wenn falsch:
ARDUINO1 soll analoge Werte in digitale umwandeln. (dabei spielt für mich erstmal KEINE Rolle, woher die kommen)
ARDUINO1 soll diese digitalen Werte senden.
ARDUINO2 soll analoge Werte empfangen und ausgeben.

Zwingende Vorgabe ist, zwischen beiden einen DAC zu setzen?

Der Verlauf der Daten soll mittels Oszilloskop dargestellt werden. Da ich keins zur Hand habe, meine 1. Frage: Kennt einer ein Onlineprogramm (sowohl für Windows als auch macOS)?

Also die Studis hier bekommen Zugang zum Labor - da steht alles zur Verfügung, was das Herz begehrt. An dem Speicheroszi-PC hängt auch ein Drucker...

Ich habe verstanden daß
Arduino 1 steuert den DAC an
Arduino 2 liest die analoge Spannung und wandelt sie in Digital.

Der Austausch der Information erfolgt über eine analoge Spannung.

Grüße Uwe

Hallo Uwe,

uwefed:
Ich habe verstanden daß
Arduino 1 steuert den DAC an
Arduino 2 liest die analoge Spannung und wandelt sie in Digital.

Der Austausch der Information erfolgt über eine analoge Spannung.

Der erste Teil ja, der zweite Teil eher nicht. Wenn für Dich “Der Austausch” mit “Die Auswertung” dann ja.

Der abgebende macht das digital, der MCP macht aus D A und der empfange liest analog und gibt aus.
Sonst würde für mich ein externer DAC keinen Sinn ergeben.

Die ganze Aufgabenstellung macht für mich keinen Sinn. Ich hätte nicht vermutet, dass unseren höheren Bildungseinrichtungen schon so tief gesunken sind.

Gruß Tommy

my_xy_projekt:
Sonst würde für mich ein externer DAC keinen Sinn ergeben.

Ich glaube nicht daß wir hier von Sinn oder Unsinn reden können. Für mich ist die Grundbedingung DAC zum Datenaustausch schon Unsinn. Einen DAC als Lötpunkte für die 2 SPI der beiden Arduinos zu nehmen wie auf der Zeichnung ist für mich auch nicht logisch bzw dann den DAC als Verbindungsglied zu nennen.

Grüße Uwe

my_xy_projekt:
ARDUINO1 soll analoge Werte in digitale umwandeln. (dabei spielt für mich erstmal KEINE Rolle, woher die kommen)
ARDUINO1 soll diese digitalen Werte senden.
ARDUINO2 soll analoge Werte empfangen und ausgeben.

Genau so, allerdings soll ARDUINO 2 die analogen Werte wiederum in digitale umwandeln und zu ARDUINO 1 senden.

my_xy_projekt:
Zwingende Vorgabe ist, zwischen beiden einen DAC zu setzen?

Genau. Alternative Lösung wäre dann allerdings über TX und RX oder?

my_xy_projekt:
Also die Studis hier bekommen Zugang zum Labor - da steht alles zur Verfügung, was das Herz begehrt. An dem Speicheroszi-PC hängt auch ein Drucker...

Das wäre normalerweise auch so gewesen. Aufgrund der Corona-Pandemie aber nicht möglich...

Tommy56:
Ich hätte nicht vermutet, dass unseren höheren Bildungseinrichtungen schon so tief gesunken sind.

Au Doch.
Es ist Fakt, das der Mangel an (gut ausgebildeten und Informatik affinen) Lehrenden nicht in der Grundschule oder am Gymi aufhört. Schau Dir mal an einem OSZ MaTSE an.

In den letzten Wochen die Berichte über Bildungseinrichtungen, die Landesweit nicht einmal eine funktionierende Infrastruktur aufweisen können, sind verheerend.

Wenn engagierte Einzelpersonen sich nicht dafür einsetzen würden, wäre schon längst Schluß.

sv55792:
Genau so, allerdings soll ARDUINO 2 die analogen Werte wiederum in digitale umwandeln und zu ARDUINO 1 senden.

Genau.

Das wäre normalerweise auch so gewesen. Aufgrund der Corona-Pandemie aber nicht möglich...

OK,
Aufgabe verstanden. Arduino 1 analoge Werte digital an DAC - Arduino 2 analoge Werte von DAC digital an Arduino 1.
Wobei auf der letzten Strecke egal ist, ob 8 bit parallel oder seriell mit UART.

Dann Pinbelegung.
Am Arduino 1 wird gebraucht:

  • I2C (SDA und SCL Für DAC)
  • SoftwareSerial braucht 2 Digital-PIN (RX/TX - Empfänger)
    -- alternativ 4 oder 8 PIN für parallelen Empfang
  • evtl. 1 Analog-PIN um Werte z.B. von einem Poti aufzunehmen

Am Arduino 2:

  • 1 AnalogPIN - angeschlossen am DAC
  • 2 DigitalPIN für SoftwareSerial (RX/TX - Sender)
    -- alternativ 4 oder 8 PIN für parallelen Sender

Nicht benutzt werden PIN 0 und 1 -> Programmierung und Serieller Monitor

Baue Deine Schaltung(!) so auf, das alle Bedingungen erfüllt sind.

Bei der Verwendung des DAC die Widersdtände am I2C nicht vergessen.

Alternative Lösung wäre dann allerdings über TX und RX oder?

nicht unbedingt.
Alternative Lösung wäre für mich:
Der Ardu1 nimmt an einem Analogport (oder aus einer Datenmenge - Stichwort random) ein Signal Wert, gibt das auf dem seriellen Monitor aus und sendet es auf einem anderen analogen PIN an Ardu2, der das nach Empfang an seinem analogen PIN ebenfalls ausgibt und digital wieder an Ardu1 sendet, der das empfangene wieder auf dem seriellen Monitor ausgibt.
Ist das passiert, wird der nächste Wert gesendet...

uwefed:
Für die Aufzeichnung des analogen Signals brauchst Du einen DAC.

Du meinst vermutlich einen Analog-Digital-Converter (ADC).

@TO: Mangels Erfahrung kann ich nichts empfehlen, aber es gibt beispielsweise den Soundkarten-Oszillograph.

Na so praxisfremd ist das gar nicht. Hatte früher praktisch fast jeder mal zuhause! Rechner(digital) > Grafikkarte > VGA Signal(analog) > TFT-Monitor(digital)

Gruß, Jürgen

Katsumi_S:
Na so praxisfremd ist das gar nicht. Hatte früher praktisch fast jeder mal zuhause! Rechner(digital) > Grafikkarte > VGA Signal(analog) > TFT-Monitor(digital)

Gruß, Jürgen

Das würdest Du heute aber nicht machen wenn der Monitor und der PC eine Digitale Videoschnittstelle hat.

Grüße Uwe