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
Maximale Eingangsfrequenz des ArduinoUno
21.02.2016, 19:09
Beitrag #1
Thumbs Up Maximale Eingangsfrequenz des ArduinoUno
Hey Arduino-Community,
ich habe eine kleine Frage bezüglich der maximalen Eingangsfrequenz des ArduinoUno. Ich schließe einen Drehgeber an der, im härtesten Falle, Signale mit 147 kHz ausgibt. Diese müssen alle vom Arduino erfasst werden. Wollte das ganze über ein Interrupt steuern und so die Flanken zählen. Meine Frage ist also schafft er das? Wenn ja habt ihr dafür zufällig einen Beleg? Muss nämlich in meinem Bericht eine zuverlässige Quelle angeben (also woher ich diese Information habe und da reicht leider keine aussage aus dem Forum als Quelle)Confused

Hab mir das Datasheet des Atmel328 (der ja wie ich gehört habe auf den ArduinoUno boards verbaut ist) angeguckt.. Da gab es auf Seite 2 den Punkt „Speed Grade: 0 – 4 MHz @ 1.8 – 5,5 V; 0-10MHz @2,7-5,5V ; 0-20 MHz @4,5 -5,5 V“… Huh

Bin ich da richtig? Vermutlich wird das High Signal des Sensors bei 3,3 V . Könnte ich somit mit Frequenzen von 4 MHz arbeiten?
Mein Problem ist kenn mich da leider nicht mit den µC-Fachwörtern aus und zusätzlich ist das Datenblatt auf Englisch.^^ Big Grin

Zusammengefasst: Hat also jemand eventuell einen Tipp, ob und wo die maximale Eingangsfrequenz im Datenblatt steht?

Link des Datasheets:
http://www.atmel.com/images/atmel-8271-8...mplete.pdf

Vielen Dank im Voraus Leute Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2016, 20:53 (Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2016 20:54 von amithlon.)
Beitrag #2
RE: Maximale Eingangsfrequenz des ArduinoUno
Hallo,

es gibt im direkten Sinn keine maximale Eingangsfrequenz.
Es gibt Reaktionszeiten, die stehen im Datenblatt, also z.B. die Anzahl Taktzyklen, die vergehen wenn einFlankenwechsel im Pin auftritt bis der Interrupt anspricht und die zugehörige Routine aufruft. Oder die Anzahl Zyklen, die der Analogcomparator braucht, bis er die Änderung der CPU mitteilt. Meist geht es da um 1-2 Taktzyklen als Reaktionszeit.

Was dann passiert, liegt in Diener Hand. Also wieviele Zyklen benötigt der Aufruf der ISR, wieviele Zyklen braucht Dein Programm, die Daten zu verarbeiten usw. usw.

Dazu kommt dann noch, was die CPU außerhalb der ISR noch erledigen muß und ob das zeitlich zu schaffen ist.

147kHz wären 147000 Interrupts oder sogar 294000 wenn beide Flanken beachtet werden müssen. Bei 16MHz Takt wären es also 16000000/147000 = 108 Takte für eine ISR zusätzlich dem, was sonst noch zu erledigen ist, das klappt so nicht.

Was willst Du eigentlich erfassen? Was sind "Signale mit 147 kHz "?
Nur eine Frequenzmessung? Eine Impulsbreitenmessung oder was?

Gruß aus berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2016, 21:57
Beitrag #3
RE: Maximale Eingangsfrequenz des ArduinoUno
Ich hab keine Ahnung, wie schnell der Arduino arbeitet, aber laut Amithlon wäre ja noch für über 100 Arbeitsschritte Platz zwischen den Interupts.
147 kHz ist natürlich ne Ansage!

Jetzt kommt es halt drauf an, zu wissen, was unser kleine Freund im Hinterkopf so alles anstellt.
Die Weiterverarbeitung könnte man notfalls auf einem zweiten Arduino abwickeln und den Ersten nur mit Zählen beschäftigen.
Die Frequenz könnte man über UART schicken oder aber alle 10000 Zähler einen Pin zwischen 1 und 0 umschalten.
Im zweiten Arduino dann wieder ne Frequenzmessung, die aber deutlich langsamer läuft, so hat man Zeit genug für den Rest.

Aber zunächst muss man wissen, ob der Arduino überhaupt in der Lage ist so schnell zu zählen.

Vorschlag:
Einfach mal schauen, wie lange er für 1 Mio mal
X++;
benötigt.
Per Interupt (Taster) dann den Wert per Serial.print() schicken und dazu die Zeit aus millis()

Dann kann man wenigstens ausrechnen, was maximal möglich ist.

Binatone
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2016, 00:28
Beitrag #4
RE: Maximale Eingangsfrequenz des ArduinoUno
Also rein auf den Threadtitel bezogen kann man aus diesem Beitrag über eine Arduino Frequency Counter Library sagen dass unter bestimmten Voraussetzungen bis zu 8MHz möglich sind.
"The maximum input frequency is about 8 MHz when signal duty cycle is 50%."
Das geht aber wohl nur am Pin 5 in Zusammenhang mit dem "16 Bit Hardware Counter1".

Andere Pins vertragen vermutlich auch die 8MHz, aber weil die per Software abgefragt werden müssen wird man wesentlich weniger erfassen können. Die Begrenzung der Eingangsfrequenz liegt also nicht in der Hardware des Controllers sondern daran wie geschickt du die Software gestaltest.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2016, 08:48
Beitrag #5
RE: Maximale Eingangsfrequenz des ArduinoUno
Hallo,

richtig, per Hardware-Counter sind bei 50% CPU-Takt/2 möglich.

Seine 147kHz wäre damit kein Problem. Allerdings schreibt er Drehgeber. Da bleinbt im Moment die Frage, was er meint. Einen üblichen mechanischen Drehgeber kaum, da wäre das wohl zu schnell. Einen optischen Encoder schon eher, nur liefert der auch Grey-Code auf 2 Leitungen wie die meisten mechanischen? Bruahct er die Richtugngsauswertung? Dann der GEycode ausgewertet werden, entweder vom Mega328 oder davor in Hardware.

Ich würde die Machbarkeit im Moment nicht entscheiden, dazu fehlen noch ein paar Angaben.

PS: X++ kosten in ASMeinen Taktzyklus bei einem Register, bei 16Bit in einem Doppelregister 2 Takte.

GCC bekommt das nirmalerweise auch gut in C optimiert, aus der ArduinoIDE braucht aber z.B. das Setzen eines Portbits mit digitalWirite() ca. das 10-fache an Zeit.

Gruß aus Berlin
Michael

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2016, 09:24
Beitrag #6
RE: Maximale Eingangsfrequenz des ArduinoUno
Hi,
also so langsam stellt sich hier die Frage was der TE wirklich für eine Anwendung hat...und zwar detailiert...sonst drehen wir uns im Kreis wie so ein Encoder ...Big Grin
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
23.02.2016, 10:39
Beitrag #7
RE: Maximale Eingangsfrequenz des ArduinoUno
Vielen Dank für die Antworten bisher Big Grin Also um den Anwendungsfall nochmal zu schildern :
Ich habe einen Drehgeber mit 4096 Impulsen/Umdrehung..(Glaubt mir das ist so Big Grin)
Der soll bis zu 250 km/h funktionieren.. Über den Abrollumfang (ca. 2m) kann man sich ausrechnen wie oft sich das Rad dreht (35,7 1/s)..die 35,7 multipliziert man mit der Inkrementanzahl und kommt auf 146 kHz...Hoffe ich hab kein Denkfehler in der Rechnung, müsste aber passen.. Ich muss/will mit dem Drehgeber (Magnetisch) die zurückgelegte Strecke eines Fahrzeugs messen...
Der Drehgeber hat Spur A & B (sowie Invertiert aber wird vorerst außer betracht gelassen) und Spur N (Index Kanal zur Erkennung einer vollen Umdrehung)..Ausgangssignal ist Rechteck..Spur A und B sind Phasenverschoben und somit kann die Drehrichtung festgestellt werden..Mir ist grad aufgefallen: Dadurch dass die Signale 90° Phasenverschoben sind, sind es ja mehr als 148 000 Takte..Dabei wird das Interrupt bei steigender Flanke ausgelöst und geguckt, wie der Zustand des anderen Kanals ist...
Reicht euch das Anwendungsfall oder noch fragen?

Wäre über weitere Hinweise dankbar Big Grin...Tapp grad noch ein wenig im dunkeln..Undecided
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2016, 11:21
Beitrag #8
RE: Maximale Eingangsfrequenz des ArduinoUno
(23.02.2016 10:39)oconnor13127 schrieb:  ...Ich habe einen Drehgeber mit 4096 Impulsen/Umdrehung..(Glaubt mir das ist so Big Grin)
Der soll bis zu 250 km/h funktionieren.. Über den Abrollumfang (ca. 2m) kann man sich ausrechnen wie oft sich das Rad dreht (35,7 1/s)..die 35,7 multipliziert man mit der Inkrementanzahl und kommt auf 146 kHz...Hoffe ich hab kein Denkfehler in der Rechnung, müsste aber passen.. Ich muss/will mit dem Drehgeber (Magnetisch) die zurückgelegte Strecke eines Fahrzeugs messen...
Der Drehgeber hat Spur A & B (sowie Invertiert aber wird vorerst außer betracht gelassen) und Spur N (Index Kanal zur Erkennung einer vollen Umdrehung)..Ausgangssignal ist Rechteck..Spur A und B sind Phasenverschoben
...

Aha, jetzt sind wir dabei...also klassischer Drehgeber mit 90 Grad Phasenverschobenen Signalen wobei die 4096 Imp/Umdrehung schon wacker viel ist...aber da du bei 250 kaum den Rückwärtsgang einlegen wirst Big Grin kann man einen Vor/Rück Entscheid wohl mal fallenlassen...wobei sowas mache ich gerne per Hardware...das ist dann Echtzeit...und dann wird jede Flanke von Signal A ausgewertet...also auch bei Flankenspringen was bei dem 4096er Geber wohl öfters auftritt als bei dem 1000er wo ich mal zur Anwendung hatte.
Und dann biste trotzdem noch mit den 146KHz unterwegs... also das direkt mit nem uP am Paralellport erfassen ist schon eine harte Droge...und dabei dann nicht vergessen das nach 8Std. auch eine unsigned Long int Variable bei der Streckenerfassung überläuft....
Aber was willst du erfassen, nur die Geschwindigkeit oder auch die Wegstrecke ?
Also da kann man sich vielerlei Lösungen in Hard und Software erarbeiten...früher gab es dazu nur Hardware....mangels Kontroller...
Man könnte auch einen Timer als Counter einsetzen...zum Geschwindigkeit messen auf jeden Fall ausreichend...die Frage ist nur ob der bei Verwendung der Arduino IDE frei verfügbar ist. Also auch das will erst mal eroiert sein.
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
Antwort schreiben 


Gehe zu:


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