Forum: Mikrocontroller und Digitale Elektronik sinus mit atmega8 erzeugen


von hannes (Gast)


Lesenswert?

tach,

ich muss für meine dipl-arbeit nen sinus mit nem atmega erzeugen.

umsetzen tu ich das dann mit nem da-wandler aber den programm-code für 
den atmega brauche ich ja.

ich will diesen standart sinus erzeugt mit dds, wie man es hier ständig 
liest.


also, wär nett, wenn jemand hier den programm code reinstellt, 
anschließen zwischen atmega8 und da-wandler mach ich selber.

daher soll das hier jemand reinstellen!


gruß, hannes

von Stephan W. (stipo)


Lesenswert?

hannes schrieb:
> also, wär nett, wenn jemand hier den programm code reinstellt,
>
> anschließen zwischen atmega8 und da-wandler mach ich selber.

Und Du meinst wirklich, das hier im Forum einer deine Diplomarbeit 
macht???

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

hannes schrieb:
> daher soll das hier jemand reinstellen!
        ^^^^

und zwar dalli!

Das ging sogar so schnell, daß es bereits reingestellt wurde, bevor du 
die Frage überhaupt stelltest.  Zb im Wiki und haufenweise auch im 
Forum: Lookup, CORDIC, lineare Interpoation, ...

von hannes (Gast)


Lesenswert?

na dann mach ich das halt selber, aber wehe es klappt nicht :-)

von sven s. (Gast)


Lesenswert?

Ich Schwanke noch zwischen Troll und "ich lass mich studieren"

Auch das Auftreten lässt nur trollhafte Rückschlüsse zu.

Die Arbeit finde ich für einen Diplomanden recht ... na ja lahm eben.
Hier im Forum gibt es bestimmt 1000 Leute die nicht auf der UNI waren 
und so etwas in der Kaffeepause zwischendurch machen.

Ich mein Sinus berechnen im RAM ablegen und dann nur noch in der 
richtigen Frequenz ausgeben. Fällt so ziemlich unter die ersten Test 
Progrämmchen für anfänger, so Richtung 20 Zeilen in C.

Trotz allem bin ich neugierig geworden und würde gern noch mehr darüber 
hören.

Gruß Sven

von Ulrich (Gast)


Lesenswert?

Dies hier mag ein Troll sein,
aber viele Absolventen können heute nur noch reproduzieren, weil sie 
nichts mehr anderes gelernt haben.

von Michael A. (Gast)


Lesenswert?

Das scheint leider so. Selbst Google können sie anscheinend nicht mehr 
bedienen, um z.B. nach "miniDDS" zu suchen. Von einem Diplomanden würde 
ich auch erwarten, dass er in der Lage ist, sein Anforderungen anständig 
zu spezifizieren und gewisse Umgangsformen an den Tag legt.

mfg
Michael

von hannes (Gast)


Lesenswert?

haltet mal den ball flach :)

ich werds schon schaffen, die grundfunktionen laufen jedenfalls schonmal 
:)

muss dass jetzt noch in der lookuptable speichern und dann abrufen, aber 
das wird auch noch.

meine diplomarbeit besteht natürlich nicht nur aus dem erzeugen von 
sinüssen, das ist vllt. 5%

der standart an deutschen fachhochschulen ist immernoch hoch...


fachhochschulen sind sowieso viel cooler als unis ;)

von Hannes (Gast)


Lesenswert?

So? was findest Du cool an Fachhochschulen?

(Kopfschüttel. War selber an einer FH)

von ... (Gast)


Lesenswert?

hannes schrieb:
> der standart an deutschen fachhochschulen ist immernoch hoch...

Bei der Rechtschreibung aber eher nicht, oder was hat eine FH mit 
Flaggen zu tun?

von ?!? (Gast)


Lesenswert?

>hannes< scheint ein ziemlich aroganter schwachkopf zu sein ... *kopfschüttel*

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

hannes schrieb:
> also, wär nett, wenn jemand hier den programm code reinstellt,
> anschließen zwischen atmega8 und da-wandler mach ich selber.

Ich hätte da einen sehr einfachen Vorschlag. Du schließt einen 8-Bit 
DA-Wandler an einem Port an und gibst die Buchstaben S I N U S als ASCII 
Zeichen parallel als 8 Bit, nacheinander aus. Eine kleine Schleife drum 
rum und schon hat der Atmega "Sinus" erzeugt. Das geht übrigens auch 
prima mit Cosinus, Tangens oder sogar mit FFT oder 
Kreuzleistungsdichtespektrum!

von Peter R. (pnu)


Lesenswert?

schau mal, in disem Forum unter dem Stichwort "Jesper DDS" nach.

von ... (Gast)


Lesenswert?

Michael A. schrieb:
> ... nach "miniDDS" zu suchen.

Peter R. schrieb:
> schau mal, in disem Forum unter dem Stichwort "Jesper DDS" nach.

Habt ihr nicht gelesen, was der TO möchte?
;-)

hannes schrieb:
> daher soll das hier jemand reinstellen!

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Ist das so ein Bachelor-Diplom? So ein Ding für 9 Wochen Abschreiben von 
ein paar Binsenweisheiten?

Wir haben in der Firma jetzt so einen Schwung von diesen Typen bekommen. 
Man, kann man die verarschen, wie früher die Stifte, die man die 
Optische Achse durch die Werkstatt tragen lies. Das die Morgens alleine 
den Reißverschluss ihrer Hose ohne die Mami zubekommen ist ein Wunder.

von Purzel H. (hacky)


Lesenswert?

>ich will diesen standart sinus erzeugt mit dds, wie man
>es hier ständigliest.
>daher soll das hier jemand reinstellen!

>Lahmer Sauhaufen. Weshalb ist der Code noch nicht da?


Solche Sprueche kann man allenfalls als Chef einmal klopfen.
Ich seh da wird nichts mit dem Diplom. Falsche Berufswahl.
Probier's nochmals als was Anderes.

So schwierig ist ein DDS nun auch nicht.

von Bernd M. (bernd_m)


Lesenswert?

Hannes Jaeger schrieb:
> Man, kann man die verarschen, wie früher die Stifte, die man die
> Optische Achse durch die Werkstatt tragen lies. Das die Morgens alleine

Oder die Kiste mit dem Spannungsabfall.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Hannes Jaeger schrieb:
> Man, kann man die verarschen, wie früher die Stifte, die man die
> Optische Achse durch die Werkstatt tragen lies.

oder
- Vierkantbohrer
- Anlaßfarben
- Ambossfett
- Gewindehammer

von Der Bayer (Gast)


Lesenswert?

Mein Meister Thiel hat mich zum Metzger geschickt um 2 Kilo 
Schwarzschulter zu kaufen.
Ich war damals Radio und FS Lehrling, aber schon recht eingelesen.
So hatte der Metzger zwar keine Schwarzschulter aber adäquates 
Rinderfilet ;-), hähä...

Das hab ich Ihm dann mitgebracht .
Er war grundgeizig und überrascht, kam aus der Nummer aber nicht mehr 
raus ;-)...

Radio Fern, Essen

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Heute könnte man statt billiger Schwarzschulter hintere Schwarzschulter 
(äquivalentes Kobe Rind) mitbringen. Beim derzeitigen Kilopreis aber die 
Literflasche Baldrian für den Meister nicht vergessen.

von stru_aus (Gast)


Lesenswert?

hm..
.oO (mal die trolle ignorieren...)

sinus mit atmega war die frage..

variante 1: sinus funktion von gcc - recht langsam
variante 2: lookup-table - speicherintensiv, ginge aber gut für 8bit 
bereich

nun aber noch eine weitere möglichkeit: federpendel im atmega 
simulieren.

das sind eigentlich einfache formeln, geben aber eine hübsche 
sinuskurve. für ein pc programm hatte ich das mal verwendet, da aber 
noch mit floats.
für einen atmega könnte man das relativ einfach auf festkommaarithmetik 
umschreiben.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

stru_aus schrieb:
> nun aber noch eine weitere möglichkeit: federpendel im atmega
> simulieren.

Nur mal aus reiner Neugierde. Was ist ein „Federpendel“?

Ein mathematisches Pendel, ein physikalisches Pendel oder einen 
Feder-Masse-Schwinger simulieren?  Was bedeutet Simulation? Numerische 
Lösung der Differentialgleichung oder die Lösung der Dgl. verwenden? 
Wenn ich jedoch die Lösung verwende brauche ich ja den Sinus, der ist ja 
gerade ein Teil der Lösung.  Was hast du mit deiner weiteren Möglichkeit 
gemeint?

von Jobst M. (jobstens-de)


Lesenswert?

Blindwiderstände - gelb mit 3 schwarzen Ringen :-)


Gruß

Jobst

von stru_aus (Gast)


Lesenswert?

federpendel ist sowas:
http://de.wikipedia.org/wiki/Federpendel
masse, feder mit federkonstante.
jeweils für jedes neue sample einmal die kraft berechnen, die ändert die 
geschwindigkeit, und das für zu neuer position..

also mal eine einfache theoretische implementation:

start:
-man definiert masse m und federkonstante c (nur dies beiden haben 
einfluss auf frequenz, siehe wikipedia).
-starten mit maximalen ausschlag, x= -1.0, geschwindigkeit v=0

dann kleine schritte: jeweils um den zeitfaktor dt (zB 1/44100 sek)
-berechnen der kraft: f= -c * x
-berechnen der neuen geschwindigkeit: v+= f/m * dt
-berechnen der neuen position: x+= v * dt

und - tadaa - es kommt ein hübscher sinus heraus.

von Purzel H. (hacky)


Lesenswert?

Federpendel : die zweite Ableitung ist wieder proportional zum 
Funktionswert. Geht aber nicht, das man wegen der Rundungsfehler keine 
konstante Amplitude bekommt. Also, enweder zerfaellt die Schwingung, 
oder sie wird immer groesser.
Dh man muss noch etwas nachhelfen...

von M. Schwaikert (Gast)


Lesenswert?

Wir mussten das im dritten Semestern in Assembler für den Nerdy 
programmieren. Lookup-Tabelle->A/D-Wandler->Tiefpass. Das sind, selbst 
mit Interrupts und Unterprogramm nicht mehr als 30 Zeilen.

Den Code habe ich hier noch herumliegen. Aber ich werde ihn nicht 
verschenken, oder verkaufen. Das wirst Du schon noch selbst hinbekommen 
sollen als angehender Ingeneur ;-)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Bernd M. schrieb:
> Hannes Jaeger schrieb:
>> Man, kann man die verarschen, wie früher die Stifte, die man die
>> Optische Achse durch die Werkstatt tragen lies. Das die Morgens alleine
>
> Oder die Kiste mit dem Spannungsabfall.

Hehe, oder wenn ein Akku einen zu großen Innenwiderstand hat einen 
kleineren einlöten lassen.

von Der Bayer (Gast)


Lesenswert?

Oder beim APotheker Getterpillen besorgen lassen ;-)....

von Thorsten S. (thosch)


Lesenswert?

Der Bayer schrieb:
> Oder beim APotheker Getterpillen besorgen lassen ;-)....

Tja, wer kennt sich heute noch so gut mit Röhren aus ...
Vielleicht noch mit 'nem röhrenden Auspuff  ;-)

von Stefan K. (berliner)


Lesenswert?

>Also, enweder zerfaellt die Schwingung,
>oder sie wird immer groesser.
>Dh man muss noch etwas nachhelfen...

kein Problem, einfach PI-Regler nachschalten.

von Maddin (Gast)


Lesenswert?

Hannes Jaeger schrieb:
> Ist das so ein Bachelor-Diplom? So ein Ding für 9 Wochen Abschreiben von
> ein paar Binsenweisheiten?
>
> Wir haben in der Firma jetzt so einen Schwung von diesen Typen bekommen.
> Man, kann man die verarschen, wie früher die Stifte, die man die
> Optische Achse durch die Werkstatt tragen lies. Das die Morgens alleine
> den Reißverschluss ihrer Hose ohne die Mami zubekommen ist ein Wunder.

Schon mal Bachelorarbeit geschrieben oder eine betreut? Keine 
ernstgemeinte Bachelorarbeit der BRD wird in 9 Wochen geschrieben. 
Anmeldedatum sind auch nur Alibis.

Würde mal sagen deine scheiße Firma sucht gezielt nach dummen Leuten....

Achso Argumente von wegen "Das sind die aktuellen Kandidaten auf dem 
Arbeitsmarkt!" kommen da jetzt. Dann frag ich mich wer die ganzen tollen 
und interessanten Projekte an den Unis bearbeitet.

von Tim Taylor (Gast)


Lesenswert?

Sollte jetzt jeder Vollpfosten kopieren können...
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <avr/pgmspace.h>
4
#include <inttypes.h>
5
6
#define F_CPU 8000000UL  // Quarz mit 8.000.000 Mhz
7
#define TIMERRELOAD 256  // Nachladewert des Timers 255
8
#define AUFLOESUNG 65536 // 16-Bit Counter 65535
9
10
const uint8_t sinustabelle[256] PROGMEM = {127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,217,219,221,223,225,227,229,231,233,234,236,238,239,240,242,243,244,245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,254,254,254,254,253,253,253,252,252,251,250,249,249,248,247,245,244,243,242,240,239,238,236,234,233,231,229,227,225,223,221,219,217,215,212,210,208,205,203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,96,93,90,87,84,81,78,76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,18,20,21,23,25,27,29,31,33,35,37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,121,124};
11
12
volatile union {uint16_t u16; uint8_t u8[2];} counter; //0 ist Low, 1 ist High Byte
13
volatile uint16_t offset;
14
15
void frequenz_setzen(uint8_t Ausgabefrequenz){ // 614 Takte mit -Os
16
 offset = ((F_CPU/2 + Ausgabefrequenz * TIMERRELOAD * AUFLOESUNG) / F_CPU); // F_CPU/2 ist fürs Runden
17
}
18
19
int main(void){
20
 OSCCAL = 0xAE; //Kalibrieren des Internen RC OSC
21
 TCCR1A = (1<<COM1A1) | (1<<WGM10); //Clear OC0A on Compare Match & Fast PWM Mode 5
22
 TCCR1B = (1<<WGM12) | (1<<CS10); //CPU-Takt & Fast PWM Mode 5
23
 TIMSK = (1<<TOIE1); //Timer 1 Overflow interrupt an
24
 DDRB = (1<<PB1); //PB1 (OC1A) als Ausgang 
25
 frequenz_setzen(50);
26
 sei();
27
28
 while(1);
29
30
 return 0;
31
}
32
33
ISR(TIMER1_OVF_vect){
34
 OCR1A = pgm_read_byte(&sinustabelle[counter.u8[1]]);
35
 counter.u16 += offset;
36
 return;
37
}

von Hans guck in die Luft (Gast)


Lesenswert?

Nimm nenn NE555 mit nem Tiefpass dahinter!
Dann sparst du dir das Programmieren (das du eh nicht verstehst) und den 
DA-Wandler.

Ist also viel billiger!

Oder mach nur ne Ausbildung - dann bleibt dir selbständiges Arbeiten 
zumeist auch erspart!

von Spice (Gast)


Lesenswert?

>also, wär nett, wenn jemand hier den programm code reinstellt,
>anschließen zwischen atmega8 und da-wandler mach ich selber.

Du bist der Hammer... Kannst ja mal lieb fragen, ob das Anschliessen 
nicht auch noch jemand übernehmen kann, dann musst du nur noch den 
schriftlichen Teil bewältigen (oder du kippst das dann auch ab)...
Ein Sinus im AVR erzeugen, ist deine Dipl.-Arbeit? Wo studierst du? 
Andere Leute entwickeln komplette Schaltungen, programmieren diese, 
entwicklen Gehäuse, Win/Linux Frontends etc... Oder "bauen" mal eben 
eine Windkraftanlage aufs Unigelände und kümmern sich um die 
Genehmigungen, Neztzeinspeisungen, Dimensionierungen, Abnahmen etc...
Trete ich dir zu nahme, wenn ich behaupte, dass du eine Schande für jede 
Hochschule bist? Tut mir echt leid, aber allein dein Ton, passt absolut 
nicht zu deiner angeblichen Qualifikation...

>daher soll das hier jemand reinstellen!
...dein "Wunsch", ist uns Befehl

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

stru_aus schrieb:
> federpendel ist sowas:
> http://de.wikipedia.org/wiki/Federpendel
> masse, feder mit federkonstante.

Das ist ein sehr schönes Beispiel dafür, dass Wikipedia oft eine 
exzellente Quelle für „Halbwissen“ ist. Einige setzen einen Artikel 
rein, der Rest der Welt denkt nun dass diese Quelle ein Gesetz ist.
Ein Pendel ist etwas anderes als ein linearer Feder-Masse-Schwinger. 
Während ein Schwingungssystem, bestehend aus einer Masse und einem 
linear elastischen Federverhalten tatsächlich lineare Schwingungen 
bezüglich der Ortskoordinate ausführt,  ist die Winkelauslenkung eines 
Pendels nichtlinear! Nur bei kleinen Winkelausschlägen kann die Dgl. 
linearisiert und damit auch eine harmonische Lösung gefunden werden.

stru_aus schrieb:
> start:
> -man definiert masse m und federkonstante c (nur dies beiden haben
> einfluss auf frequenz, siehe wikipedia).
> -starten mit maximalen ausschlag, x= -1.0, geschwindigkeit v=0
>
> dann kleine schritte: jeweils um den zeitfaktor dt (zB 1/44100 sek)
> -berechnen der kraft: f= -c * x
> -berechnen der neuen geschwindigkeit: v+= f/m * dt
> -berechnen der neuen position: x+= v * dt
>
> und - tadaa - es kommt ein hübscher sinus heraus.

Dein vor dir beschriebenes Lösungsverfahren entspricht der numerischen 
Lösung der Bewegungsdifferentialgleichung mittels dem einfachsten 
Lösungsalgorithmus, dem impliziten Euler-Cauchy-Verfahren (auch 
Rechteckregel). Das Verfahren ist zwar konsistent und konvergent hat 
aber Stabilitätsprobleme. Dein 1/44100 als Zeitschritt ist somit 
willkürlich und führt nicht immer zu einer richtigen Lösung.

von sven s. (Gast)


Lesenswert?

@stru_aus

Da ich ein Fauler Programmiere bin kombiniere ich einfach beide 
Lösungen.
Hat den Vorteil das es schnell läuft und zur Laufzeit variabel ist.
Außerdem muss ich nicht mehr an die lockup ran (Auflösung ändern etc.). 
Einfach zur Init Zeit lockup befüllen und dann nur noch hirnlos im KREIS 
auslesen.

@ Feder-Pendler

Ein Sinus hat wohl eher was mit einem Kreis ( vor Doofe auch 
Scheibenwischer ) gemein also mit einer Feder.

....

na ja ich Troll mich dann mal ... Duck und weg.

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
Noch kein Account? Hier anmelden.