Hallo werte Programmier Freunde und Fachleute, ich habe eine Arduino Nano und wollte aus diesen einen einfachen "DSP" abstellen. meine Grundidee, ein Sinus Signal als Eingangssignal anlegen um daraus eine Rechteckspannung zu erzeugen. Am liebsten würde ich dies mit Assembler Programmieren und wollte euch Fachmänner und Frauen fragen ob dies: A - möglich ist B - jemand eine Idee hat oder sogar vielleicht das ein oder andere Tutorial dazu kennt oder darauf verweisen kann. Das Sinus Signal würde ich am liebsten aus den Speicher generieren und verarbeiten lassen. Die Werte des Eingangssignal könnten frei definiert werden. Ich danke euch schon mal für eure Unterstützung. P.S. ich hoffe den Thread gibts nicht schon, gefunden habe ich dazu allerdings hier noch nix.
>meine Grundidee, ein Sinus Signal als Eingangssignal anlegen um daraus >eine Rechteckspannung zu erzeugen. Am liebsten würde ich dies mit das >Das Sinus Signal würde ich am liebsten aus den Speicher generieren und >verarbeiten lassen. scheint sich zu widersprechen.
Nimm nen Schmitt-Trigger "123. Ist für dich nicht das Liebste, aber das Einfachste.
Aussi Der Arduino hat keinen D/A-Wandler (soweit mir bekannt). Somit kannst Du einen Sinus (nicht besonders sauber) nur via PWM generieren. Eini Hast Du einen "braven" Sinus, also mit "erfassbarer" Spannung (meist 0...Ub) und mit annehmbarer Frequenz, so spricht nichts dagegen diesen zu digitalisieren und auch digital anzuschauen. Hat das Teil einen Komperatoreingang, kannst Du das ganze noch ein wenig vereinfachen.
Ja widerspricht sich, gebe ich dir recht. Gehen wir doch davon aus das ich den Sinus schon erzeugt habe und die Werte aufgenommen habe. Schmitti will ich nicht machen, sollte als elegante Lösung mit dem Arduino doch möglich sein, oder ?
Ja der Sinus ist Sauber, die Frequenz ist auch optimal gewählt ~ 70Hz, die Ausgangs Spannung hätte ich gar nicht mal so "dramatisch" über PWM machen wollen. 5V ja oder nein ohne gepulste Variation davon also was wirklich ganz einfaches. Haben Sie da eine Idee, ach ja über einen Komparator Eingang verfügt der Arduino meines Wissens nicht, was nicht heißen soll das er kein hat.
>Schmitti will ich nicht machen, sollte als elegante Lösung mit dem >Arduino doch möglich sein, oder ? Klar, hier das Programm:
1 | // constants won't change. They're used here to
|
2 | // set pin numbers:
|
3 | const int buttonPin = 2; // the number of the pushbutton pin |
4 | const int ledPin = 13; // the number of the LED pin |
5 | |
6 | // variables will change:
|
7 | int buttonState = 0; // variable for reading the pushbutton status |
8 | |
9 | void setup() { |
10 | // initialize the LED pin as an output:
|
11 | pinMode(ledPin, OUTPUT); |
12 | // initialize the pushbutton pin as an input:
|
13 | pinMode(buttonPin, INPUT); |
14 | }
|
15 | |
16 | void loop(){ |
17 | // read the state of the pushbutton value:
|
18 | buttonState = digitalRead(buttonPin); |
19 | |
20 | // check if the pushbutton is pressed.
|
21 | // if it is, the buttonState is HIGH:
|
22 | if (buttonState == HIGH) { |
23 | // turn LED on:
|
24 | digitalWrite(ledPin, HIGH); |
25 | }
|
26 | else { |
27 | // turn LED off:
|
28 | digitalWrite(ledPin, LOW); |
29 | }
|
30 | }
|
Zu praktisch allen Schnittstellen (A/D-Wandler) gibt es jede Menge Beispiele. Sowohl bei Arduino's (http://www.arduino.cc/) als auch an vielen Stellen im Netz. Möglicherweise werden auch mit der Entwicklungsumgebung ein paar Beispiele mitgeliefert.
Hans Joachim Rüthgers schrieb: > Hallo werte Programmier Freunde und Fachleute, > > ich habe eine Arduino Nano und wollte aus diesen einen einfachen "DSP" > abstellen. > meine Grundidee, ein Sinus Signal als Eingangssignal anlegen um daraus > eine Rechteckspannung zu erzeugen. Am liebsten würde ich dies mit > Assembler Programmieren und wollte euch Fachmänner und Frauen fragen ob > dies: > > A - möglich ist > B - jemand eine Idee hat oder sogar vielleicht das ein oder andere > Tutorial dazu kennt oder darauf verweisen kann. > > Das Sinus Signal würde ich am liebsten aus den Speicher generieren und > verarbeiten lassen. Die Werte des Eingangssignal könnten frei definiert > werden. > > Ich danke euch schon mal für eure Unterstützung. > > P.S. ich hoffe den Thread gibts nicht schon, gefunden habe ich dazu > allerdings hier noch nix. Also ich versteh nur Bahnhof. Du willst ein Sinussignal mit einer gegebenen Frequenz mit dem ADC des Controllers einlesen und dann ein Rechtecksignal daraus erzeugen und ausgeben? Welchen Sinn hat das? 70Hz-Rechteck kann der Controller doch auch alleine erzeugen. Oder willst du aus Spaß an der Freude sehen, ob du das hinkriegst? mfg.
Hans Joachim Rüthgers schrieb: > Schmitti will ich nicht machen, sollte als elegante Lösung mit dem > Arduino doch möglich sein, oder ? Naja, die Signalqualität wird wesentlich schlechter als bei einem 10ct-Komparator sein. Gruss Harald
Genau aus Spaß an der Freude um die Grundlagen für die Signalverarbeitung Praktisch zu veranschaulichen. Sinn ergibt das ganze eigentlich nicht soll es auch nicht es geht nur darum die prinzipielle Arbeitsweise zu erfassen. Ich hätte gern eine Signalgenerator mit Sinus Funktion und veränderlichen f als Eingangssignal genommen allerdings würde das mein Zeitlichen Rahmen sprengen. Ich habe mir jetzt ein Positiven Sinus mit werten von 0 bis 5 Volt für den Arduino erstellt und würde die Werte in den Arduino einspeisen. Diese Werte sollen dann abgetastet werden und als Recht an einem Ausgang als Rechteck Spannung ausgegeben werden. Mit PWM wäre Luxus es würde aber auch Low/high gehen. mein Gedankengang: Mein Problem ist die Auflösung des Analog-Ports der mit 10Bit das Eingangssignal einliest 5=1024 ich aber doch mit dem AVR Assembler die Standart Register nur mit 8 Bit Information füttern kann ? In C kann ich den Eingangswert ja teilen in dem ich diesen durch 4Teile ist dies auch in Assembler möglich oder gibt es dort auch eine elegantere Lösung ?
Ich stehe Programmiertechnisch gerade mächtig auf dem Schlauch, ich habe zum Vergleich ein register mit einer Maske geladen die den Nullpunkt meines Sinus Darstellt 2,5V dies würde Dezimal 512 oder 2^9 entsprechen wie kann ich dies in Assembler bewerkstelligen? Der Arduino Nano verfügt doch über das Register Paar 26 27, 28 29, 30 31 die für 16 Bit Operationen gedacht sind wie kann ich in diesen Paar eine information vom Analog/Digital Pin übertragen ?
Hi ich würde weder Sinus noch Rechteck umwandeln, sondern das gleich als definierte Wellenform ausgeben. So etwa: http://www.solorb.com/elect/musiccirc/ArduinoLFO/ Hier wird der komplette Port D als arbitrary-waveform-generator benutzt, die Wavetables mit einem python-prog erzeugt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.