erstellt  12.01.2017
Frequenzrichter
Was ist ein Frequenzrichter ?
Ein Frequenzrichter erzeugt in der Regel aus einer Wechsel oder Gleichspannung ,eine Wechselspannung mit definierter Frequenz und Spannung.
Benötigt wird es unter anderen dafür, einen Wechsel oder Drehstrom  Motor der standardmäßig mit einer festen Wechselspannung und Frequenz läuft
und daher nur eine Drehzahl zu Verfügung hat, mit einer Variablen Frequenz zu versorgen um so die Drehzahl individuell anzupassen.
Wie funktioniert das nun ?
Die Versorgungsspannung die aus Wechsel oder Gleichspannung bestehen kann wird wenn nötig gleichgerichtet, somit steht auf jeden Fall eine Gleichspannung zu Verfügung ,
mit der dann anschließend mit Hilfe einer Elektronik und einer einstellbarer Frequenz ein elektronischer Schalter , oder bei Drehstrom mindestens drei Elektronische Schalter
in einer bestimmten Reihenfolge mit Hilfe von Spulen ein Magnetisches Drehfeld erzeugen.
Im Schema unten sieht man einen Kompass der bekanntlich eine Nadel besitzt deren eine Hälfte Nord- und die andere Hälfte Südpol hat.
Umgebe ich diese Nadel mit drei Magnete oder besser gesagt drei Spulen mit Eisenkern, und schalte diese in einen bestimmten Reihenfolge Ein und wieder Aus dann ergibt sich ein
magnetische Drehfeld und der Kompass Zeiger fängt an sich zu drehen.
Dazu muss ich nur die Taster in folgender Reihenfolge kurz schließen.
S1, dann S2, dann S3 und wieder vom Anfang S1-S2-S3, je nachdem wie schnell das von statten geht dreht sich die Kompass Nadel schnell oder langsam, man verändert somit die Drehzahl. 
Schema Drehfeld Drehfeld Schema Frequenzrichter
Um das nicht immer mit Taster ansteuern zu müssen, , wird ein kleiner Prozessor programmiert der diese manuelle Tastenfolge elektronisch erzeugt
Mit einer kleinen Schaltung werden drei Transistoren angesteuert , die wiederum drei Spulen mit Spannung versorgen um damit ein Drehfeld zu erzeugen.
Schaltung

 


 

Zum Programm
'--------------------- Allgemeine Prozessor Konfiguration ---------------------
$regfile "m8def.dat"          'Definiert den Atmega als Atmega8
$crystal = 1000000            'Gibt die Quarzfrequenz an in Herz
$hwstack = 32                 'Default use 32 Hardware reservierte Speicher
$swstack = 10                 'Default Software resvierung Speicher
'------------------------------------------------------------------------------
' Konfiguration fürs Display
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , Rs = Portc.1 , E = Portc.0
'-------------------------------------------------------------------------------
Ddrd = &B10100011
Portd = &B00011100 Pull Down An Für Interrupt Eingänge Setzen
Portb = &B00000001
' ------------------------Variable deklarieren --------------------------------
Dim Kanal_aa As Byte          'Variable Für Kanal A Drehgeber
' ------------------------ Interrups festlegen --------------------------------
On Int0 Kanal_a               ' Interrupt Routine für Interrupt 1 festlegen
On Int1 Kanal_b               ' Interrupt Routine für Interupt 2 festlegen
Mcucr = &B00001110            ' int0 H/L und int1 auf L/H Flanke
Gicr = &B11000000             ' Interrupt 0 und 1 einschalten
Sreg.7 = 1                    ' Interrupts Global freischalten

'--------------------------- Voreinstellung -----------------------------------
Kanal_aa = 255                ' Mit langsamer geschwindigkeit anfangen
Deflcdchar 1 , 31 , 17 , 16 , 20 , 22 , 31 , 6 , 4       ' replace ? with number (0-7)
Deflcdchar 2 , 31 , 17 , 1 , 5 , 13 , 31 , 12 , 5       ' replace ? with number (0-7)

'---------------------------- Startbildschirm ---------------------------------
Cls
Locate 1 , 1
Lcd "Frequenzrichter"
Locate 2 , 1
Lcd "Version 1D"
'---Test der Leds
Portd.0 = 1                   ' Led mitte
Waitms 400
Portd.1 = 1                   ' Led links
Waitms 400
Portd.5 = 1                   ' Led rechts
Waitms 400
Portd.0 = 0
Portd.1 = 0
Portd.5 = 0

'##################################### Programm ###############################

Do                            ' Anfang Hauptprogramm
Gosub Anzeige

Portd.1 = 1                   ' erste Led an
Portd.5 = 1                   ' dritte led an
Portd.0 = 0                   ' zweite led aus
Waitms Kanal_aa               ' pause

Portd.1 = 1                   ' erste Led an
Portd.0 = 0                   ' zweite led aus
Portd.5 = 0                   ' dritte led aus
Waitms Kanal_aa

 Portd.1 = 1                  ' erste Led an
Portd.0 = 1                   ' zweit Led an
Portd.5 = 0                   ' dritte led aus
Waitms Kanal_aa

Portd.0 = 1                   ' zweit Led an
Portd.1 = 0                   ' erste Led aus
Portd.5 = 0                   ' dritte led aus
Waitms Kanal_aa

Portd.0 = 1                   ' zweit Led an
Portd.5 = 1                   ' dritte led an
Portd.1 = 0                   ' erste Led aus
Waitms Kanal_aa

Portd.0 = 0                   ' zweit Led aus
Portd.1 = 0                   ' erste Led aus
Portd.5 = 1                   ' dritte led an

Waitms Kanal_aa
Loop                          ' Ende Hauptprogramm

'------------------------- Routine Display anzeigen ---------------------------
Anzeige:
Portd.7 = 1                   '  Unterprogramm Displayanzeige
Cls                           ' Display Löschen
Locate 1 , 1                  ' Definiert Displayausgabe Zeile 1 Spalte 1
Lcd "A = " ; Kanal_aa         ' Displayausgabe der Variable für Kanal A
 Locate 3 , 1
Lcd Chr(1)
Locate 3 , 5
Lcd "langsamer"
Locate 4 , 1
Lcd Chr(2)
Locate 4 , 5
Lcd "schneller"

Waitms 200
Portd.7 = 0


Return                        ' Unterprogramm Ende und zurück zum Aufruf

'--------------------------- Interrupt Routine für Drehgeber--------------------

Kanal_a:
If Pind.2 = 0 And Pind.3 = 0 Then Kanal_aa = Kanal_aa - 1

Return
'-------------------------------------------------------------------------------

Kanal_b:
If Pind.2 = 1 And Pind.3 = 1 Then Kanal_aa = Kanal_aa + 1
Return
'-------------------------------------------------------------------------------





Aktualisiert 26.01.2019
Copyright by Manfred Schrod 2009