Show Posts
Pages: [1] 2 3
1  Using Arduino / Programming Questions / Re: Fast reading of a ADC on: June 17, 2014, 08:39:36 am
Thanks for this  smiley-wink

What would be the command to send it as binary code?
2  International / Deutsch / Re: Beste und schnellste Möglichkeit zum Auslesen eines ADC on: June 17, 2014, 08:05:57 am
Was ist der maximal WErt für Serial.begin beim Arduino Nano?
3  International / Deutsch / Re: Beste und schnellste Möglichkeit zum Auslesen eines ADC on: June 17, 2014, 07:50:01 am
Ich bin leider noch ein Anfänger, darum jetzt eine für dich leichte Frage.
Was wäre denn ein geeingentes Programm mit dem ich den Arudino auslesen kann. Ich hatte vor Tera Term zu nehmen. Oder ist ein anderes Programm geeigneter? Es soll ja nur den Arduino auslesen und die Daten in ein Txt File schreiben
4  International / Deutsch / Re: Beste und schnellste Möglichkeit zum Auslesen eines ADC on: June 17, 2014, 07:32:32 am
Ich kann den ADC von der Geschwindigkeit einstellen.
Aber das Maximum wären 250000 Werte in der Sekunde.

Mir würde es auch erstmal reichen die in ein Textfile auf den PC zu bekommen. Das ich anschließend auslese. Aber da weis ich eben nicht was am schnellsten funktionieren würde. Den Adc möchte ich eigentich auch kontinuierlich laufen lassen und darum wäre die Lösung am schönsten jeden Wert einzeln zu übertragen und anschließend den nächsten Wert auszulesen.
5  Using Arduino / Programming Questions / Re: Fast reading of a ADC on: June 17, 2014, 07:27:22 am
1. I have a Arduino Nano. The size of one value of the ADC is 24 bit. So how many values can I store in an array? Because when I use 250kSPS there is a big number of values I get.

2. At the moment it works like this: I get a value via SPI, then I send it to the PC via Serial.println, then I read the next value. This is too slow. The question is if there is a faster solution for this.
If not I woult store all values in an array and at the end of the measurement I would read the array and send it to the pc. This is faster, but I woult get all the values only after the measurement.

3. I get the value via SPI.  This is a 24 bit value. This value I would like to have on the pc.

4. The fastest way to read the value of the ADC which is a 24bit word
6  International / Deutsch / Re: Beste und schnellste Möglichkeit zum Auslesen eines ADC on: June 17, 2014, 07:17:53 am
Ich habe die Baudrate schon auf 115200 und SPi auf SPI_CLOCK_DIV2.

Ich suche halt die schnellste Möglichkeit die Werte auf den PC zu bekommen. Die Daten verarbeite ich dann am PC mit Matlab weiter.
Wenn ich Serial.println mache, dauert das zu lange, dann kann ich nicht jeden Wert des ADC auslesen. Darum war meine Frage wie ich das am besten lösen könnte.

Der Ablauf ist ja bei mir gerade so:

SPI-Wert auslesen
Wert per Serial.println an PC senden
Nächsten Wert auslesen

Nur dass das Ganze etwas zu langsam ist
7  Using Arduino / Programming Questions / Fast reading of a ADC on: June 17, 2014, 07:06:33 am
Hi,

I have an ADC which can sample up to 250kSPS. I communicate with it via SPI.
My Question is what is the fastest possibility to get the data on the pc?
So should I write all the values in an arry and at the end I read the array? How many values can I wirte in one Array?

Second question is what is the fastest posibility to get every value immediately. Is there only the Serial.println command or is there a faster solution?
At the moment I do it like this, but this is very slow:
Code:
void Continuousconversation(long numbers){
  int Outputstate=1;
  digitalWrite(CS, LOW);

for (int i = 0; i <numbers; i++) {

Outputstate=1;
   while (Outputstate==1){
  Outputstate=digitalRead(DOUT);
 }
unsigned long Data_Register= readRegisterconversion(0b01000100, 3);

Serial.print(Data_Register);
Serial.print("\t");
Serial.println(Data_Register,BIN);
//delay(100);
}
digitalWrite(CS, HIGH);
}

Thanks for your answers.
8  International / Deutsch / Beste und schnellste Möglichkeit zum Auslesen eines ADC on: June 17, 2014, 07:00:29 am
Hi,

ich lese einen ADC mittels SPI aus. Dieser kann bis zu 250kSPS.
Nun ist meine Frage wie ich die Daten am besten auf den PC bekomme. Ich habe den Arduino Nano mittels USB Kabel an den PC angeschlossen. Die ausgelesenen Daten möchte ich dann am PC weiterverarbeiten. Was ist da die beste und va schnellste Möglichkeit?

Hier ein kurzes Beispiel wie ich es gerade noch mache:

Code:
void Continuousconversation(long numbers){
  int Outputstate=1;
  digitalWrite(CS, LOW);

for (int i = 0; i <numbers; i++) {

Outputstate=1;
   while (Outputstate==1){
  Outputstate=digitalRead(DOUT);
 }
unsigned long Data_Register= readRegisterconversion(0b01000100, 3);

Serial.print(Data_Register);
Serial.print("\t");
Serial.println(Data_Register,BIN);
//delay(100);
}
digitalWrite(CS, HIGH);
}



Ich gebe jeden Wert noch sofort aus.  
Allgemein habe ich die zwei Fragen:
Wenn ich jeden Wert sofort ausgeben möchte, gibt es eine Alternative zu Serial.print die schneller ist?
Und wenn ich die Werte erst danach ausgeben möchte was wäre da der beste ansatz? Soll ich alle Werte in ein Array schreiben und das anschließend ausgeben oder ist der Ansatz auch nicht optimal? Wie viele Werte könnte ich in so ein Array schreiben?

Danke euch
9  Using Arduino / Sensors / Problems with DS18S20 connected to Pin A1 (pin15) on: April 22, 2014, 01:58:51 am
Hello,

I got a problem with my last project. I bought a DS18S20 and connected it to the Arduino board on pin A1. I used the right circuit with a 4,7kohm resistor.
Then I wanted to test it with the following code:

Code:
#include <OneWire.h>

// DS18S20 Temperature chip i/o
OneWire ds(15);  // on pin 15, A1


void setup(void) {
  // initialize inputs/outputs
  // start serial port
  Serial.begin(9600);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
      Serial.print("No more addresses.\n");
      ds.reset_search();
      return;
  }

  Serial.print("R=");
  for( i = 0; i < 8; i++) {
    Serial.print(addr[i], HEX);
    Serial.print(" ");
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n");
      return;
  }

  if ( addr[0] == 0x10) {
      Serial.print("Device is a DS18S20 family device.\n");
  }
  else if ( addr[0] == 0x28) {
      Serial.print("Device is a DS18B20 family device.\n");
  }
  else {
      Serial.print("Device family is not recognized: 0x");
      Serial.println(addr[0],HEX);
      return;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end

  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.

  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("P=");
  Serial.print(present,HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print( OneWire::crc8( data, 8), HEX);
  Serial.println();
}

I got this code from the an example for the ds18s20 from the arduino page. The only thing I get is: No more addresses

So my question is, why this happens? The expample is normally made with pin10 and I connected the ds18s20 to Pin A1 which is Pin15, is this the problem?

I hope you can help me
10  Using Arduino / Programming Questions / Can I change the pins when I use the library LiquidCrystal on: April 04, 2014, 01:23:14 am
Hi,

I want to connect a display to my already existing circuit. My problem is that the pins D10 to D13 are already connected. Can I change the pin configuration of the library without problems or not?
Normal:

* LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground

So I have to change pin 11 and 12, to which other pins I can connect them?

11  International / Deutsch / Zahl mit vielen Kommazahlen on: June 24, 2013, 09:46:59 am
Hallo,

für viele wird das jetzt eine einfache Aufgabe sein, aber ich habe wirklich Probleme damit.

Ich habe fogende Codezeile:

offsetfaktor= (4096-zwischenwert)/TIME;

wobei zwischenwert ca 4000 entspricht und TIME etwa 100000, es müsste also ca 0,000096 rauskommen.

Nun ist meine Frage wie ich dies im Arduionoprogramm realisieren kann. Bzw auch bo ich "offsetfaktor" also float oder double oder ... deklarieren soll.

Wie kann ich offsetfaktor auf der Konsole mit vielen Hinterkommastellen ausgeben lassen?


Wäre super wenn ihr mir helfen könntet
12  International / Deutsch / Re: Richtige Länge von Char überprüfen, ggf Char löschen on: May 06, 2013, 07:46:53 am
Wie kann ich den Buffer löschen, wenn da noch Daten vom vorherigen Ablauf drin sind? Geht das irgendwie?

Also ich hab 14 Zeichen eingegeben. Dann werden 13 abgeholt und eine Zahl ist noch im Buffer. Wie könnte ich die löschen?

13  Using Arduino / Programming Questions / Proove a datastream of Length on: May 06, 2013, 06:14:32 am
Hi,

I´ve got the following problem:
I need to receive a char with 13 signs. I realised that way:

char Einlesen [13];
...
 while (Serial.available() <= 12) {
  }
  Serial.readBytes(Einlesen, 13) ;
...


Now there is the problem, that there can be a problem with the transmisson. Somtimes the Arduino receives more or less signs than the 13 needed signs.

When the Arduino receives less than 13 signs, it stays in the while loop. If there are more than 13 signs, the Arduino works with the first 13 signs and stores the other signs. When the next data arrives, the Arduino puts the old signs before the new signs, so the datastream is also incorrect.

I don´t really know how to realise this.
The Arduino should only work with the received signs if the lenght is 13 otherwise the Arduino should delete the received data and wait for the next datatransmission.

So I hope you can help me!
14  International / Deutsch / Richtige Länge von Char überprüfen, ggf Char löschen on: May 06, 2013, 05:57:51 am
Hallo,

ich habe folgendes Problem. Ich muss einen Zeichencode mit 13 Stellen einlesen. Das habe ich bislan folgendermaßen gemacht:
char Einlesen [13];
...
 while (Serial.available() <= 12) { 
  }
  Serial.readBytes(Einlesen, 13) ;
...


Nun hat sich aber gezeigt, dass manchmal Fehler bei der Übertragung zum Arduino passieren, dh manchmal werden mehr oder weniger Zeichen als 13 zum Arduino gesendet.
Wenn weniger Zeichen als 13 übertragen werden dann bleibt der Ardunio ewig in der While schleife hängen. Wenn mehr als 13 gesendet werden, dann verarbeitet der Arduino die ersten 13 Zeichen und das 14. Zeichen merkt er sich aber und setzt es vor die nächste Zeichenkette, so dass diese nicht richtig verarbeitet wird.

Ich weis nicht wirklich wie ich das realisieren kann, dass nur wenn 13 Zeichen übertragen werden der Arduino die Zeichen verarbeitet. Bei zu vielen oder zu wenigen Zeichen soll der Arduino den Zahlencode löschen und einfach darauf warten, dass ein neuer Zeichencode gesendet wird.

Wäre sehr dankbar für Hilfe.
15  International / Deutsch / Schnellere Serielle Ausgabe möglich? on: February 13, 2013, 09:57:54 am
Hallo,

ich habe ein Programm geschrieben mit dem der Arduino Daten von einem DDC ausliest. Zu jedem Eingangssignal soll der Arduino auch einen Wert ausgeben.
Dazu ist die Serielle Schnittstelle über USB aber zu langsam.
Bei 100000 Werten werden nur ca. 50000 Werte.

Kann man die Übertragung bzw die Ausgabe verschnellern?

Bzw würde jemand eine andere Option einfallen. Oder wäre eine Ausgabe über eine andere Schnittstelle schneller?

Vielen Dank

Gruß

Markus
Pages: [1] 2 3