INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
MKR FOX 1200 - Spannung ausgeben
11.05.2019, 08:26
Beitrag #1
MKR FOX 1200 - Spannung ausgeben
Hallo zusammen,
der MKR FOX 1200 hat ja einen echten Digital/Analog-Wandler (DAC) on Board.
Wie kann man dort jetzt eine Spannung ausgeben ?
Mit analogWrite(...) kann ich ja nur ein PWM-Signal über einen digitalen Port-Pin erzeugen.
Ich habe bis jetzt noch keine Funktion für den DAC gefunden.
Kann mir da jemand weiter helfen ?

Vielen Dank,
Herby
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.05.2019, 17:43
Beitrag #2
RE: MKR FOX 1200 - Spannung ausgeben
Moin,
irgendwie so vielleicht? Huh

Code:
int value = 0;
void setup()
{
  analogWriteResolution(10);
}
void loop()
{
  analogWrite(A0, value );
  value++;
  delay(10);
  if (value > 1024) value = 0;
}

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.05.2019, 15:39
Beitrag #3
RE: MKR FOX 1200 - Spannung ausgeben
Hallo Ricardo,

vielen Dank für Deine Antwort.

Aber mit analogWrite(..) wird über einen Port-Pin ein PWM-Signal ausgegeben, das dann z.B. über eine Aufintegration zu einer Gleichspannung wird.

Das MKR Fox 1200 Board besitzt aber laut Beschreibung am Port Pin A0 einen echten 10-Bit-D/A-Wandler (DAC0), der daher also sofort eine ´echte´ Gleichspannung ausgibt.

Dazu suche ich die zugehörigen Anweisungen.

Viele Grüß

Herby
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.05.2019, 18:49
Beitrag #4
RE: MKR FOX 1200 - Spannung ausgeben
(19.05.2019 15:39)Herby007 schrieb:  ...
Dazu suche ich die zugehörigen Anweisungen.
...

Hallo,
nun ich weiß nicht wie der DAC in die IDE integriert ist. Aber Grundsätzlich kann man Hardwareregister auch direkt ansprechen. Dazu benötigt man das Datenblatt der CPU und ein bischen Geschick beim interpretieren was man alles an Konfigurationsbits setzen muß um einen Analogwert auszugeben. Ab dem Abschnitt 35 findet man den DA Wandler und seine Register... also so ab Seite 960 vom Datenblatt.

Wenn du Glück hast kannst nach dem setzen der Konfigurationsbits mit
Code:
DATA = Integer-Ausgabewert;
den DAC Ausgang setzen.
Da ich keinen solchen neuen Arduino besitze kann ich dir da auch nicht weiterhelfen.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.05.2019, 16:58
Beitrag #5
RE: MKR FOX 1200 - Spannung ausgeben
Hallo Bitklopfer,

dass der ´echte´ D/A-Wandler scheinbar (noch) nicht von der Arduino-IDE unterstützt wird, habe ich mittlerweile auch schon festgestellt.

Auch die Sigfox-Bibliothek für das MKR FOX 1200er Board enthält nur Sigfox-Routinen.

Die ´Bit-Knipserei´ auf SFR-Ebene wollte ich mir eigentlich ersparen, aber ich werde wohl nicht darum herum kommen.

Vielen Dank,

Herby
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.05.2019, 20:55
Beitrag #6
RE: MKR FOX 1200 - Spannung ausgeben
(21.05.2019 16:58)Herby007 schrieb:  ...
Die ´Bit-Knipserei´ auf SFR-Ebene wollte ich mir eigentlich ersparen, aber ich werde wohl nicht darum herum kommen.
...

ja manchmal muß man da einfach durch...aber keine Sorge, wenn man ein Ziel hat und mal so die ersten Schritte ohne Fehler kompiliert hat dann geht es vollends recht schnell. Eigene Erfahrung bei anderen Anlässen... also nur Mut. Am besten globale Variablen verwenden und dann eine Funktion schreiben....lohnt sich.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.05.2019, 14:31 (Dieser Beitrag wurde zuletzt bearbeitet: 22.05.2019 14:42 von Herby007.)
Beitrag #7
RE: MKR FOX 1200 - Spannung ausgeben
Hallo zusammen !

Ich habe das Problem gelöst !

Sehr "versteckt" bei der Beschreibung zu analogWriteResolution(...) findet man die Lösung für alle Arduino-Boards, die einen echten 10-Bit DAC auf dem µC haben, also z.B. für Due, Zero und die MKR-Boards:
Gibt man hier als Auflösung 8 oder 12 an, so gilt das als Auflösung für die PWM-Ausgabe über die entsprechenden Pins.
Gibt man aber als Auflösung 10 ein, so ´weiß´ der Compiler scheinbar, dass der 10-Bit-DAC gemeint ist und aktiviert diesen über den entsprechenden Pin.

Nun kann man mit analogWrite(...) direkt eine echte Gleichspannung über den jeweiligen Pin ausgeben: Auflösung 10-Bit (0...1023), von 0 V bis zur Referenzspannung.

Beachten (beim MKR FOX 1200er-Baord):
1) Die Referenzspannung für den DAC ist intern immer fest auf 3,3 V festgelegt, d.h. die Funktion analogReference(...) hat keine Wirkung.
2) Der Pin-Name des DAC-Ausgangspins für die Funktion analogWrite(...) ist A0 und nicht DAC0 (gibt Fehlermeldung) und auch nicht 0 (keine Fehlermeldung, funktioniert aber nicht).

Anbei ein Demo-Sktech.

Code:
// Betrieb des DAC0 auf dem MKR FOX 1200er-Board

//  Ana-OUT-1.ino
//  By Herby007

unsigned int i;

void setup()
{

  //  analogReference(AR_INTERNAL2V23); // Wirkt hier nicht:
                                        // Ref.-Spg beim DAC intern
                                        // immer fest auf 3,3 V
                                      
  //  pinMode(0,OUTPUT);                // Nicht notwendig

  analogWriteResolution(10);  // ´10´: Hiermit wird der DAC
                              // angesprochen
}

//---------------------------------------------------

void loop()
{
  // Ausgabe einer Treppenspannung
  for (i=0; i<=1023; i++)
  {
    analogWrite(A0,i);    // Für MKR FOX Board 1200
                          // Pin-Name beachten !!!!
    delay(10);
    Serial.println(i);    // Verlauf auf Serial Plotter
  }
  delay(4000);
}




Herby
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.05.2019, 16:34
Beitrag #8
RE: MKR FOX 1200 - Spannung ausgeben
Zitat:Gibt man aber als Auflösung 10 ein, so ´weiß´ der Compiler scheinbar, dass der 10-Bit-DAC gemeint ist und aktiviert diesen über den entsprechenden Pin.
Öhm, naja, wie oben schon codiert.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  MKR FOX 1200 u. ser. Kommunikation Herby007 4 182 11.05.2019 12:11
Letzter Beitrag: rkuehle
  mehrdim. Arrays wert der ersten dimension ausgeben sepp01 19 1.366 14.10.2018 06:55
Letzter Beitrag: sepp01
  Serieller string zwischenspeichern und wieder ausgeben. Matt 15 2.681 03.03.2018 20:23
Letzter Beitrag: Tommy56
  Datei von SD Karte auf Display ausgeben dahans 30 4.221 06.02.2018 21:24
Letzter Beitrag: dahans
  ASCII Zeichen Seriell ausgeben huber5093 3 2.150 07.10.2017 20:35
Letzter Beitrag: Tommy56
  Aufwachen und Spannung messen ardun 5 1.262 26.05.2017 10:36
Letzter Beitrag: Franz54
  Char Werte ausgeben Scotch 5 2.653 31.03.2017 15:37
Letzter Beitrag: Scotch
  Zählerstand nur einmal ausgeben Fliega 11 4.184 21.02.2017 11:21
Letzter Beitrag: SkobyMobil
  Blinkcode in Klartext ausgeben Borderwalker310 20 3.034 09.02.2017 22:14
Letzter Beitrag: Tommy56
  Analogspannung ausgeben Rudi 6 2.537 24.02.2016 14:25
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste