Gepost door Gerrit Jan Dreijer op woensdag 13 september 2017
We gaan nu de regel methode van de andere motoren eens bekijken, we beginnen met de spleetpool motor, de 1-fase kortsluitanker motor, en de condensator motor. Deze motoren zijn zowel in frequentie als met fase aansnijding te regelen. We gaan eerst de fase aansnijding bekijken.
De regeling werkt met een triac, deze snijdt direct de positieve en negatieve sinus aan. Om dat goed voor elkaar te krijgen moet het nulpunt gedetecteerd worden. Het nulpunt is het punt waar de sinus door de nullijn gaat. Omdat we met 230 V AC werken heb ik dit met een kleine trafo gedaan, de trafo is van het type 230 / 9 V AC en 1,5 W. Dit zou eventueel ook op een andere manier kunnen, bijvoorbeeld met een condensator, weerstand en een zener diode, maar dat heb ik niet gedaan.
Zoals je kan zien komt na de trafo een brugcel, een weerstand van 2,2 kΩ, een diode 1N4007, en een optocoupler van het type PC817. De collector van de PC817 hangt via een weerstand van 10K aan de plus 5 V DC, dit is de zelfde spanning waarmee ook de controller een 16F887 gevoed wordt. Daar achter staat een IR4427, dat is eigenlijk een driver voor MOSFET's. Maar in dit geval gebruik ik de driver om een mooie strakke puls te maken, en dat werkt prima, de puls zit er strak uit op de scoop. En dat moet ook om een mooie stabiele regeling te krijgen. Dit is alles wat nodig is om de nuldetectie te maken.
Als je op het schema kijkt zie je dat er op pen 7 van de IRF4427 een puls staat die om de 10 ms plaats vindt, dit is nodig om ook de negatieve sinus te detecteren. Als dat om de 20 ms zou zijn dan mis je de negatieve sinus en wordt de sinus daar ook niet aangesneden door de triac. Deze puls wordt nu aangeboden op een ingang van de controller en verder verwerkt door de software. Maar daarover straks meer.
De controller stuurt op zijn beurt via een 1 kΩ weerstand een MOC3021 aan. Dit is een opto-triac zonder nuldetectie, als deze een nuldetectie zou hebben zou het ook niet werken. Over de LED in de MOC staat nog een pull down weerstand van 10 kΩ.
Bij de uitgang van de controller zie je ook een signaal staan, dit signaal is in breedte te regelen van 0 tot 9 ms. Dit signaal kun je regelen met de potmeter, die ingelezen wordt door de controller. De MOC3021 stuurt via een weerstand van 360 Ω een BTA16. Deze triac regelt het vermogen van de motor. Over de triac staat nog een RC filter met een waarde van 100 nF en 500 Ω.
De formule om de weerstand RG uit te rekenen staat in het schema, voor IG heb ik een waarde van 1A genomen (dat mag de MOC maximaal schakelen) maar die stroom zal er nooit gaan lopen. De uitkomst van RG is dan 324 Ω, ik heb voor 360 Ω gekozen.
We gaan nu kijken hoe de signalen van de nuldetectie en de fase aansnijding eruit zien.
In het voorbeeld kun je de plaats zien van de nuldetectie puls, zoals je ziet is dat precies op het snijpunt. De puls is precies 1 ms breed, en start precies een halve ms voor de nuldoorgang tot een halve ms na de nul doorgang.
In het onderste gedeelte zie je de aansnijding van de sinus, zowel positief als negatief. Als je naar het uitgangssignaal kijkt zie dat er even gewacht wordt voordat de triac ontstoken wordt, naarmate de puls opschuift zie dat de triac eerder ontstoken wordt en daardoor langer in geleiding is. Je kunt ook zien dat als de sinus van positief naar negatief gaat dat de triac even uit geleiding gaat en een stukje verder weer ontstoken wordt.
In het midden van het voorbeeld (waar de pulsbreedte 4 ms is) zie je dat de triac 90 graden geleid, en dat klopt precies want 0,5 ms + 0,5 ms + 4 ms = 5 ms en dat is precies een halve positieve en negatieve sinus. Hier geleid de triac dus voor 50 %, en hier zal de uitgangsspanning dus ± 115 V AC zijn.
Deze regeling kun je dus gebruiken om of een motor of bijvoorbeeld een lamp mee te regelen. Alleen bij een spleetpool motor, een 1-fase kortsluitanker motor of een condensator motor zal je de slip regelen zoals eerder gezegd. Als je er een serie motor mee regelt, dan zal het koppel daarvan een stuk hoger zijn dan van de andere drie motoren. De LOAD in het schema is trouwens de motor of een andere belasting.
Hier hoort natuurlijk nog een stukje software bij, hieronder het programma voor de regeling.
Device 16F887 ; Processor type
Xtal 10 ; Cristal 10Mhz
Asm ; Config settings
CONFIG_REQ
__CONFIG _CONFIG1, HS_OSC & WDT_OFF & DEBUG_OFF & FCMEN_OFF & LVP_OFF & IESO_OFF & BOR_OFF & CPD_OFF & CP_OFF & MCLRE_OFF & PWRTE_ON
__CONFIG _CONFIG2, WRT_OFF & BOR40V
EndAsm
All_Digital true ; Alle poorten digitaal
Declare Adin_Res = 10 ; resolutie 8 bits
Declare Adin_Tad = frc ; set RC osc
Declare Adin_Stime = 50 ; sample tijd 5
Symbol PULS_IN = PORTC.0 ; Ingang nuldetectie
Symbol TRIGGER = PORTC.2 ; Uitgang trigger puls triac
Dim WAARDE As Word ; Variabele waarde
Clear ; Wis geheugen
;543210 ; Hulpregel poort A
PORTA = %000000 ; Maak poort A laag
TRISA = %111111 ; Poort_A I/O
;543210 ; Hulpregel poort B
PORTB = %000000 ; Maak poort B laag
TRISB = %111111 ; Poort_B I/O
;76543210 ; Hulpregel poort C
PORTC = %00000000 ; Maak poort C laag
TRISC = %00000001 ; Poort_C I/O
;76543210 ; Hulpregel poort D
PORTD = %00000000 ; Maak poort D laag
TRISD = %00000000 ; Poort_D I/O
;210 ; Hulpregel poort E
PORTE = %000 ; Maak poort E laag
TRISE = %111 ; Poort_E I/O
;76543210 ; Hulpregel analoog
ADCON0 = %00000001 ; ADCON0 register analoog
;76543210 ; Hulpregel analoog
ADCON1 = %10000000 ; ADCON! register analoog
;543210 ; Hulpregel analoog poort_B
ANSELH = %000000 ; ANSEL register analoog poort_B
;-----------------------------------------
; INLEZEN POTMETER OP ANALOGE INGANG NUL.
; TRIGGER PULS VOOR TRIAC OP NUL ZETTEN.
; WAARDE VERGELIJKEN EN NAAR RUN LUS GAAN.
;-----------------------------------------
START:
WAARDE = ADIn 0
TRIGGER = 0
If WAARDE < 1023 Then
GoSub RUN
EndIf
GoTo START
;---------------------------------------------------
; INLEZEN POTMETER OP ANALOGE INGANG NUL.
; WAARDE VERGELIJKEN EN NAAR START LUS GAAN.
; WAARDE VERMENIGVULDIGEN MET ACHT.
; NULDETECTIE PULS LEZEN EN TRIGGER PULS UITSTUREN.
;---------------------------------------------------
RUN:
WAARDE = ADIn 0
If WAARDE > 1022 Then
Return
EndIf
WAARDE = WAARDE * 8
If PULS_IN = 1 Then
TRIGGER = 0
DelayMS 1
DelayUS WAARDE
TRIGGER = 1
EndIf
GoTo RUN
End
Zoals je ziet heb je maar een paar regels code nodig om dit goed te laten werken. In de eerste lus wordt de potmeter ingelezen en een waarde vergeleken. En in de tweede lus wordt weer de waarde van de potmeter ingelezen, een waarde vergeleken, een waarde vermenigvuldigt, een trigger puls gegenereerd en een wachttijd bepaald. Dat is alles wat je nodig hebt.
Dit is één manier van regelen, maar het kan ook via een frequentieregeling. Daar gaan we op de volgende pagina naar kijken.