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
Wie programmiere ich ein externen AD-Wandler
02.04.2014, 10:05
Beitrag #9
RE: Wie programmiere ich ein externen AD-Wandler
Nien, ich hab das in meinem Code nicht verwendet. Ich hab es bei jemanden glesen und wollte halt nur wissen, was das bedeutet.

Gruß
Andreas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2014, 10:07
Beitrag #10
RE: Wie programmiere ich ein externen AD-Wandler
(02.04.2014 10:05)Andreas_h schrieb:  Nien, ich hab das in meinem Code nicht verwendet. Ich hab es bei jemanden glesen und wollte halt nur wissen, was das bedeutet.

Gruß
Andreas
....na das hättest auch dazuschreiben können....wir sind keine Hellseher...siehe Kristallkugelproblem...Confused

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
02.04.2014, 15:10
Beitrag #11
RE: Wie programmiere ich ein externen AD-Wandler
Also mein Code habe ich jetzt folgenderweise aufgebaut:

#include "SPI.h"

int cs=8;
unsigned long adcValue;

void setup(){
pinMode(cs, OUTPUT); // Pin cs (chip select) als Ausgang definiert
SPI.begin(); // Startet die SPI-Bibliothek
SPI.setDataMode(SPI_MODE0); // Setzt den SPI-Modus
SPI.setClockDivider(SPI_CLOCK_DIV2); // Stellt die Geschwindigkeit ein
SPI.setBitOrder(LSBFIRST); // Setzt die Bit-Reihenfolge Least-Significant-Bit
Serial.begin(9600);
}

void loop()
{
digitalWrite(cs, HIGH);
delayMicroseconds(10);
SPI.transfer(0x0F);
delayMicroseconds(5);
adcValue = SPI.transfer(0x0);
digitalWrite(cs, LOW);
Serial.print("analog value =");
Serial.println(adcValue);
Serial.print('\n');
delay(1000);
}

Aber ich bekomme nur 0 raus! Wo liegt mein Fehler???
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2014, 15:32 (Dieser Beitrag wurde zuletzt bearbeitet: 02.04.2014 15:33 von Bitklopfer.)
Beitrag #12
RE: Wie programmiere ich ein externen AD-Wandler
(02.04.2014 15:10)Andreas_h schrieb:  Also mein Code habe ich jetzt folgenderweise aufgebaut:

#include "SPI.h"

int cs=8;
unsigned long adcValue;

void setup(){
pinMode(cs, OUTPUT); // Pin cs (chip select) als Ausgang definiert
digitalWrite(cs, HIGH); <===== CS auf 1 setzen !!!
SPI.begin(); // Startet die SPI-Bibliothek
SPI.setDataMode(SPI_MODE0); // Setzt den SPI-Modus
SPI.setClockDivider(SPI_CLOCK_DIV2); // Stellt die Geschwindigkeit ein
// SPI.setBitOrder(LSBFIRST); // Setzt die Bit-Reihenfolge Least-Significant-Bit <==== kein Plan, daher mal auskommentiert um den Standart zu nehmen
Serial.begin(9600);
}

void loop()
{
digitalWrite(cs, LOW); <==== CS ist ueblicherweise aktiv LOW
delayMicroseconds(10);
SPI.transfer(0x0F);
delayMicroseconds(5);
adcValue = SPI.transfer(0x0); <==== nur 1 Byte als Ergebnis ???
digitalWrite(cs, HIGH); <====== und mit HIGH dann wieder deaktiviert
Serial.print("analog value =");
Serial.println(adcValue);
Serial.print('\n');
delay(1000);
}

Aber ich bekomme nur 0 raus! Wo liegt mein Fehler???

oki, ohne mal die Kristallkugel nach dem ADC Datenblatt zu fragen kannst das mal so mit dem verdrehten CS Signal probieren das üblicherweise 0 aktiv ist.
Und ist dein ADC nur ein 8 Bit Wandler weil du nur 1 Byte abholst ?....wundert mich...
...beachte meine <==== Kommentare und Änderungen in deinem Sketch...
lg
bk

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
02.04.2014, 15:33
Beitrag #13
RE: Wie programmiere ich ein externen AD-Wandler
- Also mein cs ist an Pin 10 vom ADC und beim Arduino an Pin 21 (8) angeschlossen.
- DIn ist an Pin 11 vom ADC und beim Arduino an pin 24 (11) angschlossen, dass ist die MOSI-Leitung.
- DOut ist an Pin 14 vom ADC und beim Arduino an Pin 25 (12) angeschlossen, dass ist die MISO-Leitung.
- SCLK ist an Pin 13 vom ADC und beim Arduino an Pin 26 (13) angeschlossen.

An Pin 3 des ADC gebe ich eine Spannung rein über CH1!

Somit würde ich doch die digitalen Werte über die MISO-Leitung erhalten, ...richtig?
Bevor ich aber das tue, gib ich dem ADC über die MOSI-Leitung das Befehl, schick mir deine Daten,...richtig?

Ich hab den Arduino UNO...

Ist mein Programm-Code falsch...?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2014, 16:16 (Dieser Beitrag wurde zuletzt bearbeitet: 02.04.2014 16:32 von Bitklopfer.)
Beitrag #14
RE: Wie programmiere ich ein externen AD-Wandler
(02.04.2014 15:33)Andreas_h schrieb:  - Also mein cs ist an Pin 10 vom ADC und beim Arduino an Pin 21 (8) angeschlossen.
- DIn ist an Pin 11 vom ADC und beim Arduino an pin 24 (11) angschlossen, dass ist die MOSI-Leitung.
- DOut ist an Pin 14 vom ADC und beim Arduino an Pin 25 (12) angeschlossen, dass ist die MISO-Leitung.
- SCLK ist an Pin 13 vom ADC und beim Arduino an Pin 26 (13) angeschlossen.

An Pin 3 des ADC gebe ich eine Spannung rein über CH1!

Somit würde ich doch die digitalen Werte über die MISO-Leitung erhalten, ...richtig?
Bevor ich aber das tue, gib ich dem ADC über die MOSI-Leitung das Befehl, schick mir deine Daten,...richtig?

Ich hab den Arduino UNO...

Ist mein Programm-Code falsch...?
hört sich vernünftig an....
Gretchenfrage an die Kristallkugel, was ist das für ein ADC nun ??? Typ/Hersteller....

..und was ist das denn für ein UNO Bitte...der mit der CPU im 28 poligen DIP Gehäuse ?
Weil "pin 24 (11)" Pin 24 an der CPU ist ein ADC Eingang nämlich der analog input 1
bei Pin 25 und 26 ist es auch ein ADC Eingang.
..und Pin 21 ist sogar nur der Analog Referenzeingang AREF....
wohlgemerkt beim Standart UNO mit der ATmega328P CPU im DIP Gehäuse...aber auch bei der SMD Version passen die Pins nicht.
Port 8, 11, 12, 13 passt dann schon wenn das dann richtig mit dem ADC verbunden ist.

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
02.04.2014, 18:37
Beitrag #15
RE: Wie programmiere ich ein externen AD-Wandler
- Mein ADC ist der hier: http://datasheets.maximintegrated.com/en/ds/MAX1302.pdf
- SMD Version vom Arduino UNO

Also beim Arduino UNO (SMD-Version), sind die Ports 8,11,12,13 digital I/O!

Danke...

Gruß
Andreas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.04.2014, 19:39
Beitrag #16
RE: Wie programmiere ich ein externen AD-Wandler
(02.04.2014 18:37)Andreas_h schrieb:  - Mein ADC ist der hier: http://datasheets.maximintegrated.com/en/ds/MAX1302.pdf
- SMD Version vom Arduino UNO

Also beim Arduino UNO (SMD-Version), sind die Ports 8,11,12,13 digital I/O!

Danke...

Gruß
Andreas

ähem...UNO Ports sind UNO Ports, egal ob DIP oder SMD...
aber wenn du in dem Zusammenhang Pin Nummern angibst kannst ja wohl nur den Pin von dem CPU Chip meinen weil es sonst keinen Baustein mit so vielen Füßchen auf dem Board gibt. Und Pin 24, 25, 26 sind niemals die SPI Schnittstelle...egal welche CPU Bauform.

Soso, einen MAX1302 hast dir angelacht...ein vielseitiger ADC...nichts für Anfänger..Cool
Also nachdem du das SSTRB Signal auch als EOC sprich End of Conversion nicht benutzt gehe ich mal davon aus das du den Mode 0 verwendest. Alsohier mußt du erst mal 2 Byte senden und zwar zuerst das Analog Input Conversion Byte das als führendes Bit eine 1 benötigt als StartBit also ein B1000000 plus das was du von dem ADC haben willst....Kanal...Bereich...
Und dann ist da noch das Mode Control Byte wo B10001000 haben muß plus die Optionen... wenn du das alles initialisiert hast dann kannst mal ans Messen denken...
Also hier mußt dich mal mit dem MAX1302 Datenblatt auseinandersetzen sonst bekommst du keine Messwerte. Aso, also kurz und knapp...Initilisieren, dann 2 Byte senden und dann 2 Byte lesen wo das Ergebnis drin ist....dann noch die 2 Byte zu nem 16Bit Integer zusammensetzen und auf das Vorzeichen noch achten da der ADC auch +/- Spannungen kann.
Da ich hier keinen solchen Maxim Chip habe und ich keine Lust habe das trocken zu erforschen klemme ich hier mal ab wo ich zudem schon an einer anderen Hilfeleistung arbeite.
lg
bk

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Auf externen EEPROM schreiben diode1990 5 979 08.11.2015 22:57
Letzter Beitrag: diode1990
  AD-Wandler --> PWM alinakoch 0 1.486 03.02.2014 14:17
Letzter Beitrag: alinakoch

Gehe zu:


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