Artikel pedia
| Home | Kontakt | Artikel einreichen | Oberseite 50 artikel | Oberseite 50 autors
 
 
Artikel kategorien
Letztes fugte hinzu
    Nennen sie 3 konstruktionsgrundsätze und erklären sie diese
   1 kondensator und spule im wechselstromkreis
   Grundlagen
   Aerodynamik bei flugzeugen
   
   Leitungen
   Ersatzschaltbilder
   5. _bohren, reiben, senken
   Projekt fertigungstechnik pulvermetallurgie, sintern
   Digitale signalverarbeitung
   Analogschalter
   Qualitätswerkzeuge / tools of quality
   Logische elektronik
   Ir-datenübertragung
   Drucker und plotter
alle kategorien


  Realisierung einer mikroprozessorgesteuerten dimmerschaltung

 Realisierung einer mikroprozessorgesteuerten Dimmerschaltung                                      1.AufgabenstellungEntwurf und Realisierung einer mikroprozessorgesteuerten Dimmerschaltung mit folgenden Features: Steuerung der Helligkeit mittels PC-Tastatur (Tasten „H“ und „D“) Die Schaltung sollte mit möglichst geringem Bauteilaufwand realisiert werden. 2.Theoretische Grundlagen 2.1 ThyristorThyristoren sind steuerbare Bauteile mit Schaltereigenschaften. Sie haben zwei stabile Betriebszustände, einen hochohmigen und einen niederohmigen Zustand.

Das Umschalten von einem Zustand in den anderen ist über einen Steueranschluß steuerbar.                   Bild 1 Bild 2 Bild 3 Bild 4   Bild 1:Schaltzeichen eines Thyristors (kathodenseitig steuerbar) Bild 2:Grundaufbau Bild 3:Aufteilung des Thyristorkristalls in zwei Thyristorstrecken Bild 4:Ersatzschaltnild Die Nullkippspannung ist die Spannung, bei der ein mit offenem Steueranschluß in Schaltrichtung betriebener Thyristor in den niederohmigen Zustand kippt. Gibt man den Steueranschluß des Thyristors einen gegenüber der Kathode positiven Impuls, so steuert die Transistorstrecke T2 auf und leitet den gegenseitigen Aufsteuerungszustand zwischen T1 und T2 ein. Der Thyristor kippt in den niederohmigen Bereich.2.2 Triac und Optotriac     Ein Triac (triode alternating switch) arbeitet wie eine Antiparallelschaltung von zwei Thyristoren.

Er steuert beide Halbwellen eines Wechselstromes. Die Steuerung erfolgt über eine einzige Steuerelektrode   In unserem Fall wurde auch ein Optotriac verwendet (MOC3022).Dieser dient dazu die Steuerelektrode vom Laststromkreis optisch zu trennen.                 3.Verwendete Bauteile             VCEO:70 V VRMS:4400 V Ifmax:50 mA       Isolation Voltage:7500V VDRM (max..

Rating):400V IFT (max.):10mA VTM (max.) (ITM=100mA):3V dv/dt:12 V/µs IDRM (max) at rated VDRM:100nA       ITRMS:12 A at TC=85°C VDRM:200 V to 800 V ITSM:120 A VRMS:2500 V     !!!Anm: Der zuerst verwendete Bauteil AN1511 (Triac) konnte nicht in die Realisierung einbezogen werden, da der Zündimpuls nur in einem bestimmten Bereich möglich war, wir aber den gesamten Halbwellenbereich ausnutzen. 4. Realisierung 4.1 Schaltungsaufbau     Baut.

Wert Baut. Wert R1 10k / 10W C1 1mF/16V R2 390 k C2 10 µF R3 39 k C3 10 nF R4 10 k Z1 5V6 R5 390 E Z2 5V6 R6 10 k D1 1N4148 R7 470 k D2 1N4004 R8 100k D3 1N4004   Schaltungserläuterung:  Die Bauteilgruppe R1,D1,Z1 und C1 dient zur Erzeugung und Gleichrichtung der 5V Gleichspannung. Die darunter liegende Bauteilgruppe teilt die Wechselspannung herunter und wandelt diese in ein Rechtecksignal um, welches zur Nulldurchgangsbestimmung benötigt wird. Der Optokoppler CNY17 dient lediglich dazu das µP-Board optisch von der übrigen Schaltung zu trennen. Im Laststromkreis wird die Phase der Wechselspannung angeschnitten. Je größer der Zündverzögerungswinkel des Triacs ist, desto geringer ist die Helligkeit der Lampe (Senkung der Effektivwertspannung).

Die Synchronisation des Zündzeitpunktes wurde im µP- Programm berücksichtigt.                       4.2 Nähere Betrachtung des Laststromkreises      -Dimensionierung   Datenblatt: Pulse duration (Mindestanhaltezeit des Zündstromes): >20µs Þ t =100 µs (Annahme) IGT (Typ. Zündstrom): 2 mA< IGT<50 mA => Ann.» 40 mA   ÞR7 muß so dimensioniert werden, daß IGT unter dem Zündstromminimum bleibt.     R7 und R8 müssen gemeinsam groß genug sein, damit es zu keiner unerwünschten Zündung kommen kann (der minimal benötigte Zündstrom darf nicht über die Serienschaltung der beiden Widerstände fließen).

Jedoch müssen beide Widerstände klein genug sein, um das Aufladen der Kondensatoren in der zur Verfügung stehenden Zeit zu gewährleisten.   Berechnung des Kondensators C2:   Gegeben: t=4,5ms.....

Zeit welcher der Kondensator hat um sich auf ungefähr 325V aufzuladen.     R7=470k     Gewählt wurde ein Kondensator von 10µF für C2 da nur dieser für eine Spannung von über 300V vorhanden ist. 5. Entwicklungsprobleme Der erste realisierte Aufbau wies einige Mängel auf .Die Glühbirne flackerte in unregelmäßigen Abständen immer wieder auf . Es bestand die Vermutung, daß diese Störungen eventuel vom Netz herrühren könnte.





Dieser Fall konnte ausgeschlossen werden, indem wir im Programm ein Interrupt-Fenster programmierten (Interrupt-Enable nur kurz vor und nach dem Zündimpuls. Später stellte sich heraus das ein Schaltfehler diese Störungen verursachte. Der Kondensator C1 hatte einen falschen Massebezug und dadurch erzeugte der fälschlicherweise verwendete Inverter HC05 (open collector) diese Störungen. Durch Austausch des Inverters (HCT04) konnte das Problem beseitigt werden. Außerdem traten noch Störungen regelmäßiger Art auf. Dieser Fehler trat aufgrund des langen Zündimpulses auf.

Um den Zündimpuls möglichst kurz zu halten wurde der Lastteil der Schaltung auf folgende Weise modifiziert. Der Kondensator C3 lädt einen Kondensator kleiner Kapazität auf welcher anschließend dann den Zündstrom liefert. Ansonsten würde der Kondensator C3 (10µF) eine dauernden Zündstrom liefern. Versorgungsspannung des Inverters (HCT04) beträgt nur 3,7V (Schaltung funktioniert trotzdem einwandfrei). Eventuell sollte ein Baustein eingesetzt werden, welcher einen Verssorgungspannungsbereich von 3V bis viel größer als 3V besitzt um auf jeden Fall einen einwandfreien Betrieb zu gewährleisten. Dabei ist jedoch zu beachten, daß durch einen höheren Versorgungsstrom, durch eventuelle Erhöhung der Versorgungsspannung, eine zu große Verlustleistung an R1 abfallen würde (da an R1 ungefähr die Netzspannung abfällt).

6. Flußdiagramm                         7. µP-Programme 7.1 Erste Version ;* Programm zur Phasenanschnittssteuerung * ;* letztes Datum: 16.12.96 * ;* 11:37:30 * ;****************************************************************   charin equ 2730h charout equ 273ch port1_0 equ 90h ;Port-Pin zum Messen vom Nulldurchgang port1_1 equ 91h ;Port_Pin zur Ausgabe des Zündimpulses zeit10ms_L equ 00000111b ;Erklärung am Ende des Files zeit10ms_H equ 11011100b ;-"- zeitv equ R3 ;-"- malzeitv equ 72d ;-"- synchv equ R4 ;-"-             ;*************************************************************** ;* Interrupt-Service-Routine ;***************************************************************   org 800bh ;Interruptadresse für Timer0   jmp timer_subroutine         ;************************************************************** ;* Hauptprogramm ;* Beinhaltet: .

) Timerinitialisierung ;* .) Abfrage der Tastatur ;**************************************************************   org 8200h   mov zeitv,#1d ;Zuerst soll Lampe leuchten(Zündimpuls gleich nach Nulldurchgang) setb port1_1 ;muß high sein da Zündimpuls eine Lowphase ist anl tcon,#11001100b ;TF0=0 TimerOVFL, TR0=0 stop, IE0=0 disabled anl tmod,#11110000b ;G0=0 Osz, C/~T=0 Timer, mode 0 orl tmod,#00000001b ;mode 1 setb ea ;enable all INT setb et0 ;enable INT mov synchv,#100d ;nach 100mal wird synchronisiert ;(Synchronisation nach 1-tem INT) setb tr0 ;timer starten   ABFRAGE: call CHARIN ;warten auf zeicheneingabe mov R0,A ;zeichen retten subb A,#64h ;if zeichen = d jz DUENKLER ;goto DUENKLER   mov A,R0 subb A,#68h ;if zeichen = h jz HELLER ;goto HELLER jmp ABFRAGE   DUENKLER: mov a,zeitv subb a,#58d ;Überprüfung ob Lampe breits nicht leuchtet jz abfrage ;Wenn Maximalwert erreicht, sprung zurück mov a,zeitv inc a ;Triac später zünden => Lampe wird dünkler mov zeitv,a jmp abfrage   HELLER: mov a,zeitv dec a jz abfrage ;Überprüfung ob Lampe bereits voll leuchtet mov zeitv,a ;Triac früher zünden => Lampe wird heller jmp abfrage     ;***************************************************************** ;* Unterprogramm timer_subroutine * ;* wird nach einem Interrupt aufgerufen * ;* Übergabe von: .) synchv * ;* .) zeit10ms_L und zeit10ms_H * ;* .) zeitv * ;*****************************************************************   timer_subroutine: mov tl0,#zeit10ms_L mov th0,#zeit10ms_H mov a,synchv inc a mov synchv,a subb a,#101d ;Nach 100mal Synchronisation jnz sprung clr tr0 ;Synchronisation synch_loop1: jb port1_0,synch_loop1 ;Überprüfung auf Low High übergang synch_loop2: jnb port1_0,synch_loop2 ;Abfrage ob ein Nulldurchgang vorliegt mov synchv,#0h setb tr0 ;Ende der Synchronisation   sprung: mov a,zeitv ;Einstellung der Helligkeit time0: dec a mov r2,#malzeitv time1: djnz r2,time1 jnz time0 clr port1_1 ;Ausgabe des Zündimpulses mov r6,#5d ;Impulsbreite über Zeitverzögerung einstellen loop3: djnz r6,loop3 setb port1_1   RETI   END       ; Register   ; synchv Zähler (100d init), jede 100-te Halbperiode neu synchronisieren   ; zeitv Zeit zur Festlegung des Zündzeitpunktes   ; zeit10ms_L und zeit10ms_H Ergeben die Zeit für eine Halbperiode (Timer lößt bei jeder Halbperiode einen INT aus) ; malzeitv Multiplikationsfaktor für eine grobe Helligkeitseinstellung   ;Siehe Doku für Zeitberechnung für maximale Helligkeit 7.3 Endgültiges Programm (externer Interrupt)   ;**************************************************************** ;* Programm zur Phasenanschnittssteuerung * ;* letztes Datum: 17.





echo"
"; }?>
Dieser Fall konnte ausgeschlossen werden, indem wir im Programm ein Interrupt-Fenster programmierten (Interrupt-Enable nur kurz vor und nach dem Zündimpuls. Später stellte sich heraus das ein Schaltfehler diese Störungen verursachte. Der Kondensator C1 hatte einen falschen Massebezug und dadurch erzeugte der fälschlicherweise verwendete Inverter HC05 (open collector) diese Störungen. Durch Austausch des Inverters (HCT04) konnte das Problem beseitigt werden. Außerdem traten noch Störungen regelmäßiger Art auf. Dieser Fehler trat aufgrund des langen Zündimpulses auf.

Um den Zündimpuls möglichst kurz zu halten wurde der Lastteil der Schaltung auf folgende Weise modifiziert. Der Kondensator C3 lädt einen Kondensator kleiner Kapazität auf welcher anschließend dann den Zündstrom liefert. Ansonsten würde der Kondensator C3 (10µF) eine dauernden Zündstrom liefern. Versorgungsspannung des Inverters (HCT04) beträgt nur 3,7V (Schaltung funktioniert trotzdem einwandfrei). Eventuell sollte ein Baustein eingesetzt werden, welcher einen Verssorgungspannungsbereich von 3V bis viel größer als 3V besitzt um auf jeden Fall einen einwandfreien Betrieb zu gewährleisten. Dabei ist jedoch zu beachten, daß durch einen höheren Versorgungsstrom, durch eventuelle Erhöhung der Versorgungsspannung, eine zu große Verlustleistung an R1 abfallen würde (da an R1 ungefähr die Netzspannung abfällt).

6. Flußdiagramm                         7. µP-Programme 7.1 Erste Version ;* Programm zur Phasenanschnittssteuerung * ;* letztes Datum: 16.12.96 * ;* 11:37:30 * ;****************************************************************   charin equ 2730h charout equ 273ch port1_0 equ 90h ;Port-Pin zum Messen vom Nulldurchgang port1_1 equ 91h ;Port_Pin zur Ausgabe des Zündimpulses zeit10ms_L equ 00000111b ;Erklärung am Ende des Files zeit10ms_H equ 11011100b ;-"- zeitv equ R3 ;-"- malzeitv equ 72d ;-"- synchv equ R4 ;-"-             ;*************************************************************** ;* Interrupt-Service-Routine ;***************************************************************   org 800bh ;Interruptadresse für Timer0   jmp timer_subroutine         ;************************************************************** ;* Hauptprogramm ;* Beinhaltet: .

) Timerinitialisierung ;* .) Abfrage der Tastatur ;**************************************************************   org 8200h   mov zeitv,#1d ;Zuerst soll Lampe leuchten(Zündimpuls gleich nach Nulldurchgang) setb port1_1 ;muß high sein da Zündimpuls eine Lowphase ist anl tcon,#11001100b ;TF0=0 TimerOVFL, TR0=0 stop, IE0=0 disabled anl tmod,#11110000b ;G0=0 Osz, C/~T=0 Timer, mode 0 orl tmod,#00000001b ;mode 1 setb ea ;enable all INT setb et0 ;enable INT mov synchv,#100d ;nach 100mal wird synchronisiert ;(Synchronisation nach 1-tem INT) setb tr0 ;timer starten   ABFRAGE: call CHARIN ;warten auf zeicheneingabe mov R0,A ;zeichen retten subb A,#64h ;if zeichen = d jz DUENKLER ;goto DUENKLER   mov A,R0 subb A,#68h ;if zeichen = h jz HELLER ;goto HELLER jmp ABFRAGE   DUENKLER: mov a,zeitv subb a,#58d ;Überprüfung ob Lampe breits nicht leuchtet jz abfrage ;Wenn Maximalwert erreicht, sprung zurück mov a,zeitv inc a ;Triac später zünden => Lampe wird dünkler mov zeitv,a jmp abfrage   HELLER: mov a,zeitv dec a jz abfrage ;Überprüfung ob Lampe bereits voll leuchtet mov zeitv,a ;Triac früher zünden => Lampe wird heller jmp abfrage     ;***************************************************************** ;* Unterprogramm timer_subroutine * ;* wird nach einem Interrupt aufgerufen * ;* Übergabe von: .) synchv * ;* .) zeit10ms_L und zeit10ms_H * ;* .) zeitv * ;*****************************************************************   timer_subroutine: mov tl0,#zeit10ms_L mov th0,#zeit10ms_H mov a,synchv inc a mov synchv,a subb a,#101d ;Nach 100mal Synchronisation jnz sprung clr tr0 ;Synchronisation synch_loop1: jb port1_0,synch_loop1 ;Überprüfung auf Low High übergang synch_loop2: jnb port1_0,synch_loop2 ;Abfrage ob ein Nulldurchgang vorliegt mov synchv,#0h setb tr0 ;Ende der Synchronisation   sprung: mov a,zeitv ;Einstellung der Helligkeit time0: dec a mov r2,#malzeitv time1: djnz r2,time1 jnz time0 clr port1_1 ;Ausgabe des Zündimpulses mov r6,#5d ;Impulsbreite über Zeitverzögerung einstellen loop3: djnz r6,loop3 setb port1_1   RETI   END       ; Register   ; synchv Zähler (100d init), jede 100-te Halbperiode neu synchronisieren   ; zeitv Zeit zur Festlegung des Zündzeitpunktes   ; zeit10ms_L und zeit10ms_H Ergeben die Zeit für eine Halbperiode (Timer lößt bei jeder Halbperiode einen INT aus) ; malzeitv Multiplikationsfaktor für eine grobe Helligkeitseinstellung   ;Siehe Doku für Zeitberechnung für maximale Helligkeit 7.3 Endgültiges Programm (externer Interrupt)   ;**************************************************************** ;* Programm zur Phasenanschnittssteuerung * ;* letztes Datum: 17.

03.97 * ;* 12:20:00 * ;* Status: funktion überprüft * ;* einwandfreie funktion * ;****************************************************************   charin equ 2730h charout equ 273ch port1_1 equ 91h ;Port-Pin zur Ausgabe des Zündimpulsesimpulses zeitv equ R3 ;Siehe Ende des Files malzeitv equ 60d ;-"-             ;*************************************************************** ;* Interrupt-Service-Routine ;***************************************************************   org 8003h ;Interruptadresse für Externen Interrupt INT0' (P3.2)   jmp interrupt         ;************************************************************** ;* Hauptprogramm ;* Beinhaltet: .) Abfrage der Tastatur ;**************************************************************   org 8200h   mov zeitv,#2d ;Zuerst soll Lampe leuchten(Zündzeitpunkt gleich nach Nulldurchgang) setb port1_1 ;muß high sein da Zündimpuls Lowphase orl tcon,#00000001b ;IT0 auf Flanken-aktiv eingestellt (neg. Flanke) setb ea ;enable all INT setb ex0 ;enable Ex-INT   ABFRAGE: call CHARIN ;warten auf zeicheneingabe mov R0,A ;zeichen retten subb A,#64h ;if zeichen = d jz DUENKLER ;goto DUENKLER   mov A,R0 subb A,#68h ;if zeichen = h jz HELLER ;goto HELLER jmp ABFRAGE   DUENKLER: mov a,zeitv subb a,#67d ;Überprüfung ob Lampe breits nicht leuchtet ;Siehe auch Ende des Files jz abfrage ;Wenn Maximalwert erreicht, sprung zurück mov a,zeitv inc a ;Triac später zünden => Lampe wird dünkler mov zeitv,a jmp abfrage   HELLER: mov a,zeitv subb a,#2d jz abfrage ;Überprüfung ob Lampe bereits voll leuchtet mov a,zeitv dec a mov zeitv,a ;Triac früher zünden => Lampe wird heller jmp abfrage     ;***************************************************************** ;* Unterprogramm Ex-Int-subroutine ;* wird nach einem Interrupt aufgerufen ;* Übergabe von: .) zeitv ;*****************************************************************   interrupt:   sprung: mov a,zeitv ;Einstellung der Helligkeit time0: dec a mov r2,#malzeitv time1: djnz r2,time1 jnz time0 clr port1_1 ;Ausgabe des Zündimpulses mov r4,#100d ;Impulsbreite über Zeitverzögerung einstellen loop1: djnz r4,loop1 setb port1_1   mov r5,#255d ;Zeitverzögerung (10ms) um auch bei der nächsten Halbwelle loop2: mov r6,#16d ;zu Zünden (siehe auch unten) loop3: djnz r6,loop3 djnz r5,loop2 clr port1_1 ;Zündimpuls für zweite Halbwelle mov r4,#100d ;Impulsbreite über Zeitverzögerung einstellen loop4: djnz r4,loop4 setb port1_1 RETI   END           ; Register   ; zeitv Zeit zur Festlegung des Zündzeitpunktes   ; malzeitv Multiplikationsfaktor für eine grobe Helligkeitseinstellung     ;Siehe Doku für Zeitberechnung für maximale Helligkeit und 10ms Zeitverzögerung

Suchen artikel im kategorien
Schlüsselwort
  
Kategorien
  
  
   Zusammenfassung Der Vorleser
   sachtextanalyse
   interpretation zwist
   Fabel interpretation
   literarische charakteristik
   interpretation bender heimkehr
   felix lateinbuch
   interpretation der taucher von schiller
   textbeschreibung
   charakterisierung eduard selicke


Anmerkungen:

* Name:

* Email:

URL:


* Diskussion: (NO HTML)





Partner: www.litde.com | impressum | datenschutz

© Copyright Artikelpedia.com