Forum: Analoge Elektronik und Schaltungstechnik Operationsverstärker 60W output gibt es sowas?


von S. S. (-xc-)


Lesenswert?

hallo

ich möchte ein temperatursignal mit hilfe eines OP-verstärkers auswerten 
und dann verstärken
Der Output soll eine Heizung steuern (in meinem fall eine glühbirne :P)

Das ganze soll nicht binärfunktionieren sondern stufenlos..so das die 
lampe nicht immer an und aus geht sondern langsam gedimmt/erhellt wird.

> ein einfacher transistor scheidet also aus

das ganze wird auf 12V basis gebaut > es fließen also ströme von ~5A 
max.
bis auf die hohe last werden keine besonderen ansprüche gestellt.

ich habe schon verzweifelt im internet gesucht aber nichts gefunden..ich 
kenne mich auch zu schlecht mit den ganzen abkürzungen alla 
Lm312....usw. aus

von ... (Gast)


Lesenswert?

>ich habe schon verzweifelt im internet gesucht aber nichts gefunden...

jöööööööööö, Schau die den  L165V, LM675, an. Allenfalls kann man die 
Boost schaltung fuer OpAmps anwenden. Am Besten waere eine PWM Loesung.

von S. S. (-xc-)


Angehängte Dateien:

Lesenswert?

schonmal danke für die schnelle hilfe!

PWM sagt mir zwar was, aber meine etechnik kenntnisse sind doch eher 
rudimentär...
ist das kompliziert zu bauen?

im anhang mal meine jetzige skizze per paint digitalisiert ^^


edit:
ist es eigetnlich möglich einen op nur mit einer spannungsleitung 
zuversorgen? so dass er nur positive oder negative spannungen ausgeben 
kann?

ich hatte mir ursprünglich mit einer diode hinter dem op 
weitergeholfen...aber das ist irgendwie unsauber ^^...wobei nur ein 
kabel anzuschließen ist auch unsauber^^

von Ingolf O. (headshotzombie)


Lesenswert?

Also, ich denke der OPA549, der eine Art besserer LM3886 ist, erfüllt 
Deine Bedingungen.

von Helmut L. (helmi1)


Lesenswert?

Das ganze kannst du aber auch digital mit einem AVR Prozessor lösen.
Du digitalisierst das ganze mit dem ADC des Prozessors dann kanst du den 
Regler rein in Software erledigen und das Ausgangssignal per PWM 
ausgeben. Danach brauchst du nur noch einen Leistungstransistor der 
deine Lampe ansteuert. Da die Endstufe rein im Schalterbetrieb arbeitet 
wird dort auch keine Verlustleistung sinnlos verschwendet. In dieser 
Leistung das rein über eine linear arbeitende Endstufe zu machen ist 
eine ziemliche Energieverschwendung.

Gruss Helmi

von Ich (Gast)


Lesenswert?

"In dieser Leistung das rein über eine linear arbeitende Endstufe zu 
machen ist eine ziemliche Energieverschwendung."

Es sei denn, der Transistor wird mit zum Heizen genutzt.

von Helmut L. (helmi1)


Lesenswert?

>Es sei denn, der Transistor wird mit zum Heizen genutzt.

Schon kann machen z.B. zur Temperaturstabilisierung eines Quarzes.

S. S.  möchte aber eine Glühlampe als Heizelement nutzen.

von Ich (Gast)


Lesenswert?

Dann bleibts bei PWM.

von Eddy C. (chrisi)


Angehängte Dateien:

Lesenswert?

Um der Sache etwa näher zu kommen, eine Geradeausschaltung, wie das im 
Prinzip aussehen könnte.

von S. S. (-xc-)


Lesenswert?

danke für die schöne schaltung ;)

aber wenn ich das richtig sehe, kennt die lampe in dieser schaltung nur 
on/off, oder?
ich verstehe den kondensator ehrlich gesagt nicht...der wirkt doch hier 
wie ein großer widerstand, weil gleichstrom.... oder nicht?




habe noch ein wenig in richtung AVR-Programmierung gesucht und bin über 
diese seite gestolpert:

http://s-huehn.de/elektronik/avr-prog/avr-prog.htm


wie würde das den in meinem fall überhaupt aussehen?
der avr baustein bekommt das analoge signal und bereitet dieses digital 
auf
> wie sieht das in der praxis aus? wird dann jedem 0.1V schritt eine binär jeweils 
größere zahl zugeordnet? :confused:

am ausgang liegt dann, richtige programmierung vorausgesetzt :P, das PWM 
signal an das einen transistor steuert, richtig?

das PWM signal selbst ist aber ein ttl signal, oder? ergo geht der 
transistor nur auf und zu (was auch sonst :P)
der eigentlich gesteuerte strom/spannung ist dann ebenfalls ein ttl 
signal nur um ein vielfaches stärker, richtig?
aber wie bügel ich dieses glatt? einfach mit einem kondensator?
oder sind die signalflanken so nah aneinander, daß die lampe das sowieso 
nicht in helligkeitsschwankungen zeigt?

von Helmut L. (helmi1)


Lesenswert?

>ich verstehe den kondensator ehrlich gesagt nicht...der wirkt doch hier
>wie ein großer widerstand, weil gleichstrom.... oder nicht?

Nein er ändert die Dynamik deiner Schaltung. Er sorgt dafür das dein 
Regler einen I-Anteil erhält und so den Fehler zu Null machen kann.


>am ausgang liegt dann, richtige programmierung vorausgesetzt :P, das PWM
>signal an das einen transistor steuert, richtig?

Ja

>das PWM signal selbst ist aber ein ttl signal, oder? ergo geht der
>transistor nur auf und zu (was auch sonst :P)

Richtig , so wird in dem Transistor keine Verlustleistung umgesetzt.

>der eigentlich gesteuerte strom/spannung ist dann ebenfalls ein ttl
>signal nur um ein vielfaches stärker, richtig?

So in etwa , nur bezeichnet man als TTL Signal die Ausgangssignale von 
TTL Gatter und die liegen im bereich von 0 .. 5V.

>aber wie bügel ich dieses glatt? einfach mit einem kondensator?
>oder sind die signalflanken so nah aneinander, daß die lampe das sowieso
>nicht in helligkeitsschwankungen zeigt?

Die trägheit des Glühfadens bildet dir den Mittelwert des Signales.
daher die Lampe zeigt keine Helligkeitsschwankungen.

>> wie sieht das in der praxis aus? wird dann jedem 0.1V schritt eine >binär 
jeweils größere zahl zugeordnet? :confused:

Der ADC quantisiert dir dein Temperatursignal. Daher jedem Spannungswert 
am Eingang wird eine Zahl zu gewiesen innerhalb der Auflösung des 
Wandlers.
Beim AVR sind das 10 Bit also 1024 Schritte Auflösung.
Wenn dein ADC einen Messbereich von 0 .. 5V dann ist der kleinste 
Schritt den er unterscheiden kann 5V/1024 = 0.00488 V

von S. S. (-xc-)


Lesenswert?

super erklärung danke

zum letzten punkt:

>Wenn dein ADC einen Messbereich von 0 .. 5V dann ist der kleinste
>Schritt den er unterscheiden kann 5V/1024 = 0.00488 V

der bereich ist vermutlich physikalisch vorgegeben, oder?
das heißt man kommt der genauigkeit entgegen wenn man, wie in diesem 
fall, die 0 ... 5V vollständig ausnutzt


digitalisiert wäre die 0V also eine 0000000000 (10 nullen)
und die                5V also eine 1111111111 (10 einsen)

von der genauigkeit reicht mir das vollkommen aus ^^ 3bits würden es 
auch schon tun...


wie würde man das denn dann in ein ttl signal umwandeln?
C kenntnisse habe ich wohl...

was mir nur insgesamt unklar ist:

der programmcode wird von zeile eins nach unten hin abgearbeitet.
da sich die temperatur aber ändert muss er sich häufiger mal den input 
anschauen.
muss man auslesen und verarbeiten sprich den output zusammen in eine 
schleife schreiben? oder lassen sich diese beiden aufgaben parallel 
bearbeiten?


for(i=0;i++;i<i+1)
{
 a = input;

 und hier wird dann eine von a abhängige ausgabe getätigt über einen 
definierten zeitraum (drei vier sekunden) bevor wieder der neue input 
auf a geschrieben wird;
}

mal abgesehen davon wird die generelle "trägerfrequenz" (heißt das so?) 
doch von einem externen quarz definiert, oder?

von Helmut L. (helmi1)


Lesenswert?

>der bereich ist vermutlich physikalisch vorgegeben, oder?

physikalisch nicht aber technisch bedingt durch die konstruktion des 
Chips.

Allerdings gib es auch noch andere Messbereiche die man einstellen kann.

>das heißt man kommt der genauigkeit entgegen wenn man, wie in diesem
>fall, die 0 ... 5V vollständig ausnutzt

Richtig dann hat man die beste Auflösung.

>digitalisiert wäre die 0V also eine 0000000000 (10 nullen)
>und die                5V also eine 1111111111 (10 einsen)

So isses

>von der genauigkeit reicht mir das vollkommen aus ^^ 3bits würden es
>auch schon tun...

Naja ein 3 Bit wandler baut niemand. Also freu dich das du 7 Bits mehr 
hast.

>wie würde man das denn dann in ein ttl signal umwandeln?

Du meinst die Ausgangs PWM ? Die erzeugst du mit einem der Timer des 
AVR. Das Signal steht dann an einem Pin zu verfügung. Daran ein 
Logik-Level MOSFET und schon hast du dein Verstärkung.

>der programmcode wird von zeile eins nach unten hin abgearbeitet.
>da sich die temperatur aber ändert muss er sich häufiger mal den input
>anschauen.
>muss man auslesen und verarbeiten sprich den output zusammen in eine
>schleife schreiben? oder lassen sich diese beiden aufgaben parallel
>bearbeiten?

Du must in einer Schleife ständig dir Temperatur messen den Regler 
berechnen und das an den Timer ausgeben. So wirds gemacht.

>mal abgesehen davon wird die generelle "trägerfrequenz" (heißt das so?)
>doch von einem externen quarz definiert, oder?

Der Timer wird von deinem Taktoszillator getaktet.

von S. S. (-xc-)


Lesenswert?

>Du meinst die Ausgangs PWM ? Die erzeugst du mit einem der Timer des
>AVR. Das Signal steht dann an einem Pin zu verfügung. Daran ein
>Logik-Level MOSFET und schon hast du dein Verstärkung.

das heißt dieser timer arbeitet unabhängig von der eigentlich 
programmierten routine?
er führt seine aufgabe immer solange aus bis ich ihm was neues sage?

bei meiner ersten schleifenidee sehe ich nämlich das problem das er ja 
zeitweilig garkein pwm signal ausspuckt, da er ja mit der input 
auslesung beschäftigt ist.

muss/kann man dem timer direkt eine rechteckfunktion übergeben? scheint 
mir für assembler zu einfach :P
oder muss man ihm explizit die an und aus zeiten geben...

das ist immer das problem bei neuland...man weiß nie wo man anfangen 
soll mit dem lernen :(

nochmal danke für deine super erklärungen! und deine geduld ;)


gruß

von Helmut L. (helmi1)


Lesenswert?

>das heißt dieser timer arbeitet unabhängig von der eigentlich
>programmierten routine?
>r führt seine aufgabe immer solange aus bis ich ihm was neues sage?

So isses.

>bei meiner ersten schleifenidee sehe ich nämlich das problem das er ja
>zeitweilig garkein pwm signal ausspuckt, da er ja mit der input
>auslesung beschäftigt ist.

Die PWM ist in Hardware realisiert und damit unabhaengig vom Prozessor.
So lange du in dem PWM Register nichts neues einschreibst generiert er 
dir deine PWM mit dem alten Wert.

>muss/kann man dem timer direkt eine rechteckfunktion übergeben? scheint
>mir für assembler zu einfach :P
>oder muss man ihm explizit die an und aus zeiten geben...

Du uebergibst keine Rechteckfunktion sondern nur einen Vergleichswert 
fuer den Timer.  Es ist so einfach. Du must nur die Register des Timers 
auf PWM Mode erzeugung einstellen (am Anfang deines Programmes) und dann 
nur noch die aktuellen Werte die du haben moechtest. Die PWM 
funktioniert im >Prozessor folgendermassen:

Es laueft ein Zaehler fortweg immer durch also z.B. zaehlt er von 0 .. 
65535 und das mit einer vom Quarz abgeleiteten Frequenz. Ein zweites 
Register enthaelt deinen PWM Wert. Ein in Hardware aufgebauter 
Vergleicher vergleicht jetzt staendig deinen Zaehlerwert mit deinem PWM 
Wert. Ist der Zaehlerwert kleiner als der PWM Wert dann schaltet er denn 
Ausgangspin auf Low ist er groesser dann schaltet er den Pin auf High. 
(Oder umgekehrt je nach einstellung des Timers).  Laeuft der Timer jetzt 
mit 16 Bit so hast du eine Aufloesung auch von 16 Bit. Daher du kannst 
deine Leistung auch mit 16 Bit Aufloesung einstellen.

>das ist immer das problem bei neuland...man weiß nie wo man anfangen
>soll mit dem lernen :(

So ist es halt in der Elektronik jeden Tag gibt es neue Bauteile. Aber 
es soll ja spannend bleiben und nicht langweilig.

Liess dir mal das AVR Tutorial hier im Forum durch zum Timer und PWM.

Gruss Helmi

von S. S. (-xc-)


Lesenswert?

gut, werde mich mal durch das tutorial arbeiten.

eine frage habe ich trotzdem noch, und zwar weiß ich nicht auf welche 
art ich den PC mit dem AVR verbinde.

auf dieser seite wird eine ziemlich banale schaltung erklärt mit der es 
geht:
http://s-huehn.de/elektronik/avr-prog/avr-prog.htm

hingegen werden bei pollin und co. recht komplexe gebilde verkauft die 
das ?gleiche? bewirken
wo liegt der unterschied? sind die schneller...unterstützen die eine 
größere anzahl von AVRs?



gruß

von Helmut L. (helmi1)


Lesenswert?

>eine frage habe ich trotzdem noch, und zwar weiß ich nicht auf welche
>art ich den PC mit dem AVR verbinde.

Du meinst wie du ihn programmiert bekommst. Ich nutze dafuer die 
Software Ponyprog. Als Programmieradapter nutze ich so eine aehnlich 
aufgebaute Schaltung wie in deinem Link. Das geht eigentlich immer 
problemlos.

Die Schaltung vom Pollin kenne ich so nicht.

Dann noch viel Spass beim 1. Digitalen Regler programmiern.

von S. S. (-xc-)


Lesenswert?

supi dann werde ich das wohl genauso angehen!

ist ja sogar eine ziemlich günstige nummer...ich hatte zuerst nur diese 
>50€ fertig schaltungen gefunden


welche AVR bausteine lassen sich denn überhaupt mit dieser einfachen 
schaltung programmieren?

von Helmut L. (helmi1)


Lesenswert?

Die ich im Einsatz habe bisher alle. Bei Ponyprog findest du eine Liste 
die er kann.

von S. S. (-xc-)


Lesenswert?

Das heißt die Anschlüsse sind bei (allen) AVRs gleich es ist nur 
abhängig von der Software also wie man die vier pins anspricht?

mit boards meinte ich sowas hier z.b.:

http://www.mikrocontroller.net/articles/STK500

von S. S. (-xc-)


Lesenswert?

habe mir vorhin die benötigten teile bestellt...
ich werde ersteinmal ein paar einfache projekte auf steckbrettern 
nachbauen um in der programmierung fuß zufassen..

frage: gibt es eine möglichkeit die Programme in C zu schreiben?
Und, funktioniert dieser recht einfache programmieradapter nur mit 
Ponyprog oder auch mit anderen programmen wie AVR Studio?

wenn ich mir das hier ansehe verstehe ich nämlich z.Z nur bahnhof :P
1
;  --------------------------------------------------
2
;  Test-Projekt: ATmega8 - blinkende LED an Port PB0,
3
;  bei 4 MHz ergibt sich eine Frequenz von ca. 1 Hz
4
;  --------------------------------------------------
5
;
6
.include "m8def.inc"      ;Definitionsdatei laden
7
.cseg          ;Beginn eines Code-Segmentes
8
.org 0          ;Startadresse = 0
9
;
10
start:  ldi  r16,low(ramend)
11
  ldi  r17,high(ramend)  ;Adresse vom RAM-Ende laden
12
  out  spl,r16      ;Stackpointer auf
13
  out  sph,r17      ;RAM-Ende setzen
14
  ldi  r16,0b00000001    ;PortB: PB0 auf Ausgang
15
  out  ddrb,r16    ;setzen
16
  clr  r16      ;Datenwert für Ausgabe setzen
17
;
18
loop:  out  portb,r16    ;Daten an PortB ausgeben
19
  rcall  wait      ;Warteschleife aufrufen
20
  inc  r16      ;Datenwert erhöhen
21
  rjmp  loop      ;Programmschleife neu beginnen
22
;
23
;  Warteschleife (ungefähr 500ms)
24
;
25
wait:  ldi  r19,10      ;r19,r18,r17 -> 3-Byte-Zähler
26
  clr  r18      ;höchstes Byte = 10, restliche
27
  clr  r17      ;Bytes = 0
28
wait1:  dec  r17      ;niedrigstes Byte -1
29
  brne  wait1      ;0 erreicht? nein -> Schleife
30
  dec  r18      ;mittleres Byte -1
31
  brne  wait1      ;0 erreicht? nein -> Schleife
32
  dec  r19      ;höchstes Byte -1
33
  brne  wait1      ;0 erreicht? nein -> Schleife
34
  ret        ;Schleifenende, Rückkehr
35
;
36
.eseg          ;Beginn eines EEPROM-Segmentes
37
;
38
data:  .db  "1234567890"    ;einige Daten für das EEPROM
39
;

von Helmut L. (helmi1)


Lesenswert?

>frage: gibt es eine möglichkeit die Programme in C zu schreiben?

Sicher gibt es die möglichkeit die Programme in C zu schreiben.
Du kannst in AVR Studio den GCC C Compiler aufrufen. Damit kannst du C 
Programme entwickeln und debuggen.


>Und, funktioniert dieser recht einfache programmieradapter nur mit
>Ponyprog oder auch mit anderen programmen wie AVR Studio?

Da ich nur mit dem Ponyprog programmiere kann ich dir dazu nicht sagen.

von hans (Gast)


Lesenswert?

Hallo

natürlich geht C und es ist sogar erklärt wie:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Alle Angaben und Links sind hier und gut erklärte Beispiele.

gruß hans

von S. S. (-xc-)


Lesenswert?

danke das sieht doch schon viel vertrauter aus :D

der geschriebene quellcode wird doch zuerst in eine *.hex datei 
kompiliert, oder?
lässt sich eine solche von avr-studio erzeugte hex datei auch mit einem 
beliebigen anderen programm aufspielen bsp.weise mit ponyprog? (ich sehe 
da jetzt keine probleme aber man weiß ja nie)
-> vergesst das ^_^ ....danke für den link ^^

von Josef (Gast)


Lesenswert?

Anbei noch ein Treiber der typischerweise fuer solche Applikationen 
genutzt wird (TEC Treiber fuer Laserdioden).

-> http://focus.ti.com/docs/prod/folders/print/drv591.html

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.