PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dreiecksgenerator...absolutes unverständnis?



einballimwas
31.07.2008, 01:25
Hall, ich bin gerade dabei einen Class-D Amp zu bauen/entwickeln. Wie ich einen Dreieckgenerator berechne sehe ich ja anhand der Formeln. Was ich nicht weiß: Wie funktioniert so ein Dreieckgenerator GENAU? Was passiert nach dem einschalten, wie kmmt das Signal in die endgültige Position?


Dann noch ein paar fragen: Kann man einen Atiny dazu veranlassen, ein nahezu perfektes 200khz Dreiecksignal auszugeben, mit exakt gleicher frequenz und 50/50 tastverhältnis? Wenn nein, gibts dazu ICs, die das können? Das würde alles meine Schaltung HF armer machen und Kapazitäten unterbinden.

Gruß wasserball!

pongi
31.07.2008, 08:05
Sicher kann er das, bei genügend hoher Abtastfrequenz und Auflösung der Datenpunkte. Eigentlich ist der DA Wandler der kritische Bauteil. Ob es ein IC für sowas gibt, weiss ich nicht.

Normalerweise wird im IC eine Tabelle mit den Funktionswerten in bestimmten Zeitintervallen hinterlegt, und diese werden dann ausgegeben.

Gock
31.07.2008, 09:18
Dreiecksgeneratoren gibt es wie Sand am Meer und jede funktioniert anders. Welchen meinst DU denn?
Nahezu perfekt? Was soll das sein?
Der Tiny an sich kann das nicht. Nur in Verbindung mit einem DAWandler.
Aber selbst dann ist das kaum möglich bei dieser Frequenz, denn:
Um einen Wert nach dem anderen an den DA Wandler zu liefern, braucht es schätzungsweise runde 50 Takte in C. D.h Du kannst 20MHz/50=400kHz entsprechend 400k mal einen Wert erhöhen / erniedrigen. Wenn Du jetzt 200kHz Rechteckspannung haben willst, dann bleiben genau 2 Werte dafür übrig. D h, Du hast ein Rechtecksignal !!!
Mit effizienter Programierung oder noch besser Assembler, schaffst Du es vielleicht, auf 10-20Takte runter zu kommen. Dann hättest Du immerhin 5Werte pro Dreieck. Aber perfekt ist was anderes, also vergiss es.
Ohne zusätzliche Hardware geht das nicht und mit macht es eigentlich schon keinen Sinn mehr. Dann kannst Du gleich einen Dreicksgenerator benutzen oder mit OPs bauen.
Gruß

CowZ
31.07.2008, 09:48
Hi,

das sollte doch mit nem AVR funktionieren...

C:

DDRx = 0xFF;
uint8_t count;
while(1)
count++;
PORTx = count;
}
An den Port dann n R2R-Netzwerk als DA Wandler, notfalls noch n OpAmp dahinter.

Gruß, CowZ

pongi
31.07.2008, 09:53
@Cowz: das wird dann ein Sägezahn, da von 0-255, und dann wieder 0, aber so würde ich das auch machen. Müsste man aber schon in ASM schreiben, damits schneller geht.

CowZ
31.07.2008, 09:58
Hi,

oh, ja, stimmt... mit leichten Modifikationen sollte das aber auch mit ner Dreiecksspannung gehen...



uint8_t count;
DDRx = 0xFF;
while(1)
{
while(count < 255)
{
count++;
PORTx = count;
}
while(count > 0)
{
count--;
PORTx = count;
}

}


Eventuell muss man noch irgendwo nops einbauen, damit die Zeitabstände zwischen den Erhöhungen und Erniedrigungen zusammenpassen mit dem Zeitabstand beim Springen von der einen zu der anderen While-Schleife.

Gruß, CowZ

einballimwas
31.07.2008, 12:13
Erstmal danke für die vielen Antworten :)


Also damit wär geklärt, dass man mit einem Atiny kein dreiecksignal ausgeben kann. Dann lass ich den versuch gleich bleiben.

Gemeint war der 'normale' Dreiecksgenerator mit einem Integrator und einem Schmitt Trigger. Ich hab so viel gelesen gestern, da hab ich das schlichtweg vergessen. Es finde sich immer wieder die selbe Erklärung, nur in ein bisschen abgewandelter Form. Ich verstehe diese aber nicht ](*,)
Wie schwingt der Generator zb an? Der ganze kreislauf ist mir momentan ein Rätsel...

Gruß einballimwasser

CowZ
31.07.2008, 14:27
Mhh? Huch? Nicht möglich? Liest da jemand nicht alle Antworten? ;)

einballimwas
31.07.2008, 14:47
Klaro habe ich deine Antwort nicht gelesen :P

Ich sprach von einem Atiny, nicht von einem ausgewachsenen AVR. Wenn das mit einem AtMega gehen sollte, welchen sollte/könnte ich dann nehmen? Ich meine das programm wäre ja klein genug um so eine abartig hohe Frequenz zu erzeugen, aber welche hardware? Das Problem, dass sich dabei aufwirft: ich brauche positive und negtive Spannung habe ich gemerkt, dh es geht nur mit einem nrmalen Dreiecksgenerator bestehend aus 2 oder 3 opamps, nur da verstehe ich die funktinsweise zu 0%, was ich gerne ändern ,möchte

Besserwessi
31.07.2008, 16:26
Direkt ausgebn können auch die Atmel Mega Controller kein Dreieckssignal, da fehlt der DA Wandler. Eventuell könnte bei den PWM typen sowas drin sein, oder beim XMega.

Man kann aber relativ leicht ein Rechtecksignal fester Frequenz in ein Dreieck umwandeln. Ein einfacher Integrierer reicht da theoretisch aus. Besser aber ein aktiver Tiefpass mit sehr niedriger Grenzfrequenz. Allerdings wird man nach dem Einschalten eine gewisse Zeit brauchen um einen eingeschwungenen Zustand zu erreichen.

einballimwas
31.07.2008, 17:23
Und wie funktioniert der Integrierer als solches, bzw wie berechne ich ihn?

Gock
31.07.2008, 18:00
Mhh? Huch? Nicht möglich? Liest da jemand nicht alle Antworten? ;)
Es geht nicht mit dieser Frequenz, hatte ich doch schon dargelgt.
Deine Version funktioniert zwar prinzipiell, aber mit Deinen beiden While Schleifen kommst Du eben auf die 10-20Takte pro Durchlauf und das bedeutet von 0 auf Umax in 3-5 Schritten. Also nicht count++ sondern cont+=50. Das ist dann nicht mehr "perfekt". Dein Programm allerdings wird nicht über einige zig kHz hinauskommen.
Nebenbei bekommst Du einen Linearitätsfehler (Abweichung von den "exakten" 50%), die der BallimWasser nicht haben will.
Aber das ist was anderes...
Integrator nach dem Rechteckgenerator fände ich übrigens wesentlich besser als einen Tiefpass, weil ersterer linearer ist.
Manche Generatoren schwingen ein auf Grund der thermischen Rauschspannung der beteiligten Widerstände. Die verursachen eine leichte Abweichung von 0 und das System kippt und schaukelt sich auf. Bevor wir einen Schaltplan sehen, wird Dir niemand erklären wie "soetwas" fuktioniert.
Gruß

CowZ
31.07.2008, 18:21
Hi,

Wie groß muss denn die Genauigkeit überhaupt sein?

Ist die Auflösung so entscheident, oder eher die Frequenz? Und was bedeutet "möglichst perfekt" :)

Eine analoge Lösung ist natürlich auch gut ;)

einballimwas
31.07.2008, 18:39
Wie siehts denn aus, wenn ich einen Atiny ein Rechtecksignal mit genau 200 khz generieren lasse, und dann per integratoren In ein dreiecksignal umwandle, das aus positivem und negativen spitzen besteht?

Da es ein D-Amp wird, sollte die Auflösung möglichst groß sein und die frequenzstabilität natürlich auch gegeben sein.

Sorry, dass ich keinen Schaltplan darbieten kann, der eee an dem ich gerade sitze ist gerade gut um zu schreiben und musik zu hören, zu mehr schon wieder nicht. ch werde heute abend mal kurz meinen Desktopcmputer wieder aufbauen und dann nochmal posten!

Besserwessi
31.07.2008, 18:41
Ein Integrierer ist ein Tiefpass mit Grenzfrequenz Null. Dabei hat man allerdings ein Problem mit der Drift. Um die Drift zu korrigieren sorgt man für eine Rückkopplung auf den Eingang und hebt die Grenzfrequenz des Tiefpasses ein wenig von 0 Hz auf ein paar Hz an. damit hat man dann einen Tiefpass aus dem Integrator gemacht.
Solange die Grenzfrequenz des Tiefpasses deutlich unter der Signalfrequenz ist, wird man auch beim Tiefpass ziehmlich lineare Abschnitte bekommen. Bei 200 kHz Rechtecklfrequenz sollte es kein Problem geben deutlich darunter zu bleiben.