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
>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.
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^^
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
"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.
>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.
Um der Sache etwa näher zu kommen, eine Geradeausschaltung, wie das im Prinzip aussehen könnte.
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?
>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
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?
>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.
>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ß
>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
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ß
>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.
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?
Die ich im Einsatz habe bisher alle. Bei Ponyprog findest du eine Liste die er kann.
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
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 | ; |
>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.
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
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 ^^
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.