- AC-ventilatormotor met 3 snelheden
- Projectanalyse
- IR-decoder
- GreenPAK-ontwerp
- Snelheid MUX
- Timer
- Resultaten
- Conclusie
Eenfasige wisselstroommotoren worden meestal aangetroffen in huishoudelijke artikelen zoals ventilatoren, en hun snelheid kan eenvoudig worden geregeld bij gebruik van verschillende discrete wikkelingen voor ingestelde snelheden. In dit artikel bouwen we een digitale controller waarmee gebruikers functies zoals motorsnelheid en bedrijfstijd kunnen regelen. Dit artikel bevat ook een infrarood ontvangercircuit dat het NEC-protocol ondersteunt, waarbij een motor kan worden bediend met drukknoppen of een signaal kan worden ontvangen door een infraroodzender.
Om dit uit te voeren, wordt een GreenPAK ™ SLG46620 IC gebruikt als basiscontroller die verantwoordelijk is voor deze diverse functies: een multiplexcircuit om één snelheid te activeren (van de drie snelheden), afteltimers met 3 perioden en een infrarooddecoder om een extern infrarood signaal, dat het gewenste commando extraheert en uitvoert.
Als we naar de functies van het circuit kijken, zien we verschillende discrete functies die tegelijkertijd worden gebruikt: MUXing, timing en IR-decodering. Fabrikanten gebruiken vaak veel IC's voor het bouwen van het elektronische circuit vanwege het ontbreken van een beschikbare unieke oplossing binnen één IC. Het gebruik van een GreenPAK IC stelt de fabrikanten in staat om een enkele chip te gebruiken voor het opnemen van veel van de gewenste functies en bijgevolg de systeemkosten en het toezicht op de fabricage te verlagen.
Het systeem met al zijn functies is getest om een goede werking te garanderen. Het uiteindelijke circuit vereist mogelijk speciale aanpassingen of aanvullende elementen die zijn afgestemd op de gekozen motor.
Om te controleren of het systeem nominaal werkt, zijn testcases voor de invoer gegenereerd met behulp van de GreenPAK-ontwerperemulator. De emulatie verifieert verschillende testgevallen voor de uitgangen en de functionaliteit van de IR-decoder wordt bevestigd. Het uiteindelijke ontwerp wordt ter bevestiging ook getest met een echte motor.
AC-ventilatormotor met 3 snelheden
AC-motoren met 3 snelheden zijn eenfasemotoren die worden aangedreven door wisselstroom. Ze worden vaak gebruikt in een grote verscheidenheid aan huishoudelijke apparaten, zoals verschillende soorten ventilatoren (wandventilator, tafelventilator, boxventilator). In vergelijking met een DC-motor is het regelen van de snelheid in een wisselstroommotor relatief gecompliceerd, omdat de frequentie van de geleverde stroom moet veranderen om de motorsnelheid te veranderen. Apparaten zoals ventilatoren en koelmachines vereisen gewoonlijk geen fijne granulariteit in snelheid, maar vereisen discrete stappen zoals lage, gemiddelde en hoge snelheden. Voor deze toepassingen hebben AC-ventilatormotoren verschillende ingebouwde spoelen die zijn ontworpen voor verschillende snelheden, waarbij het wisselen van de ene snelheid naar de andere wordt bereikt door de spoel van de gewenste snelheid te activeren.
De motor die we in dit project gebruiken, is een AC-motor met 3 snelheden die 5 draden heeft: 3 draden voor snelheidsregeling, 2 draden voor stroomvoorziening en een startcondensator zoals geïllustreerd in figuur 2 hieronder. Sommige fabrikanten gebruiken standaard kleurgecodeerde draden voor functie-identificatie. Het gegevensblad van een motor toont de specifieke motorinformatie voor draadidentificatie.
Projectanalyse
In dit artikel is een GreenPAK IC geconfigureerd om een bepaald commando uit te voeren, ontvangen van een bron zoals een IR-zender of een externe knop, om een van de drie commando's aan te geven:
Aan / uit: het systeem wordt in- of uitgeschakeld bij elke interpretatie van deze opdracht. De toestand van Aan / Uit wordt omgekeerd bij elke stijgende flank van het Aan / Uit-commando.
Timer: de timer werkt gedurende 30, 60 en 120 minuten. Bij de vierde puls wordt de timer uitgeschakeld en keert de timerperiode terug naar de oorspronkelijke timingstatus.
Snelheid: regelt de snelheid van de motor, waarbij achtereenvolgens de geactiveerde uitgang van de snelheidskeuzedraden van de motor (1,2,3) wordt herhaald.
IR-decoder
Een IR-decodercircuit is gebouwd om signalen van een externe IR-zender te ontvangen en om het gewenste commando te activeren. We hebben het NEC-protocol overgenomen vanwege zijn populariteit onder fabrikanten. Het NEC-protocol gebruikt "pulsafstand" om elke bit te coderen; elke puls duurt 562,5 ons om te worden verzonden met behulp van het signaal van een 38 kHz frequentiedrager. De verzending van een logisch 1-signaal vereist 2,25 ms, terwijl de verzending van een logisch 0-signaal 1,125 ms duurt. Figuur 3 illustreert de transmissie van de pulstrein volgens het NEC-protocol. Het bestaat uit 9 ms AGC-burst, dan 4,5 ms ruimte, dan het 8-bit adres en tenslotte het 8-bit commando. Merk op dat het adres en de opdracht twee keer worden verzonden; de tweede keer is het complement van 1 (alle bits zijn geïnverteerd) als pariteit om ervoor te zorgen dat het ontvangen bericht correct is.LSB wordt als eerste verzonden in het bericht.
GreenPAK-ontwerp
Het IC-ontwerp is gebouwd in gratis GUI-gebaseerde GreenPAK Designer Software. Het volledige ontwerpdossier is hier te vinden.
De relevante bits van het ontvangen bericht worden over verschillende fasen geëxtraheerd. Om te beginnen wordt het begin van het bericht gespecificeerd vanaf 9 ms AGC-burst met behulp van CNT2 en 2-bit LUT1. Als dit is gedetecteerd, wordt 4,5 ms ruimte gespecificeerd via CNT6 en 2L2. Als de koptekst correct is, wordt de DFF0-uitgang ingesteld op Hoog om de ontvangst van het adres mogelijk te maken. De blokken CNT9, 3L0, 3L3 en P DLY0 worden gebruikt om de klokpulsen uit het ontvangen bericht te halen. De bitwaarde wordt genomen bij de stijgende flank van het IR_CLK-signaal, 0,845 ms vanaf de stijgende flank van IR_IN.
Het geïnterpreteerde adres wordt vervolgens vergeleken met een adres dat is opgeslagen in de PGEN met behulp van 2LUT0. 2LUT0 is een XOR-poort en de PGEN slaat het geïnverteerde adres op. Elke bit van de PGEN wordt sequentieel vergeleken met het binnenkomende signaal, en het resultaat van elke vergelijking wordt samen met de stijgende flank van IR-CLK opgeslagen in DFF2.
Als er een fout is gedetecteerd in het adres, wordt de 3-bits LUT5 SR-latch-uitvoer gewijzigd in Hoog om te voorkomen dat de rest van het bericht (de opdracht) wordt vergeleken. Als het ontvangen adres overeenkomt met het opgeslagen adres in PGEN, wordt de tweede helft van het bericht (commando en geïnverteerd commando) naar SPI gestuurd zodat het gewenste commando kan worden gelezen en uitgevoerd. CNT5 en DFF5 worden gebruikt om het einde van het adres en het begin van het commando te specificeren waarbij 'Counter data' van CNT5 gelijk is aan 18:16 pulsen voor het adres naast de eerste twee pulsen (9ms, 4.5ms).
Als het volledige adres, inclusief header, correct is ontvangen en opgeslagen in de IC (in PGEN), geeft de 3L3 OR Gate-uitgang het signaal Low naar SPI's nCSB-pin om te worden geactiveerd. De SPI begint bijgevolg het commando te ontvangen.
De SLG46620 IC heeft 4 interne registers van 8 bit lengte en het is dus mogelijk om vier verschillende commando's op te slaan. DCMP1 wordt gebruikt om het ontvangen commando te vergelijken met de interne registers en er is een 2-bits binaire teller ontworpen waarvan de A1A0-uitgangen zijn verbonden met MTRX SEL # 0 en # 1 van DCMP1 om het ontvangen commando achtereenvolgens en continu te vergelijken met alle registers.
Een decoder met vergrendeling werd geconstrueerd met behulp van DFF6, DFF7, DFF8 en 2L5, 2L6, 2L7. Het ontwerp werkt als volgt; als A1A0 = 00 , wordt de SPI-uitgang vergeleken met register 3. Als beide waarden gelijk zijn, geeft DCMP1 een hoog signaal aan zijn EQ-uitgang. Omdat A1A0 = 00 , activeert dit 2L5, en DFF6 geeft bijgevolg een hoog signaal af dat aangeeft dat het signaal Aan / Uit is ontvangen. Evenzo zijn voor de rest van de stuursignalen CNT7 en CNT8 geconfigureerd als 'Both Edge Delay' om een tijdvertraging te genereren en de DCMP1 in staat te stellen de status van zijn output te wijzigen voordat de waarde van de output wordt vastgehouden door de DFF's.
De waarde van het aan / uit-commando wordt opgeslagen in register 3, het timer-commando in register 2 en het snelheidscommando in register 1.
Snelheid MUX
Om snelheden te schakelen, werd een 2-bits binaire teller gebouwd waarvan de ingangspuls wordt ontvangen door de externe knop die is aangesloten op Pin4 of door het IR-snelheidssignaal via P10 van de opdrachtcomparator. In de begintoestand Q1Q0 = 11 , en door een puls toe te passen op de ingang van de teller van 3-bit LUT6, wordt Q1Q0 achtereenvolgens 10, 01 en vervolgens de 00-toestand. 3-bit LUT7 werd gebruikt om de 00-toestanden over te slaan, aangezien er slechts drie snelheden beschikbaar zijn in de gekozen motor. Het aan / uit-signaal moet hoog zijn om het regelproces te activeren. Als het aan / uit-signaal laag is, wordt de geactiveerde uitgang uitgeschakeld en wordt de motor uitgeschakeld zoals weergegeven in afbeelding 6.
Timer
Een timer met 3 perioden (30 min, 60 min, 120 min) is geïmplementeerd. Om de besturingsstructuur te creëren, ontvangt een 2-bits binaire teller pulsen van een externe timerknop die is aangesloten op pin13 en van het IR-timersignaal. De teller gebruikt Pipe Delay1, waarbij Out0 PD num gelijk is aan 1 en Out1 PD num gelijk is aan 2 door een omgekeerde polariteit voor Out1 te selecteren. In de begintoestand Out1 , Out0 = 10 , is de timer uitgeschakeld. Daarna, door een puls toe te passen op de ingang CK voor Pipe Delay1, verandert de uitgangstoestand achtereenvolgens naar 11,01,00, waarbij de CNT / DLY wordt omgekeerd naar elke geactiveerde toestand. CNT0, CNT3, CNT4 waren geconfigureerd om te werken als 'Rising Edge Delays' waarvan de invoer afkomstig is van de uitvoer van CNT1, die is geconfigureerd om elke 10 seconden een puls te geven.
Om een vertraging van 30 minuten te hebben:
30 x 60 = 1800 seconden ÷ 10 seconden intervallen = 180 bits
Daarom zijn de tellergegevens voor CNT4 180, CNT3 360 en CNT0 720. Zodra de tijdvertraging is verstreken, wordt een hoge puls verzonden via 3L14 naar 3L11, waardoor het systeem wordt uitgeschakeld. De timers worden gereset als het systeem wordt uitgeschakeld door de externe knop die is aangesloten op Pin12 of door het IR_ON / OFF-signaal.
* U kunt een triac- of solid-state relais gebruiken in plaats van een elektromechanisch relais als u een elektronische schakelaar wilt gebruiken.
* Voor de drukknoppen is een hardware-debouncer (condensator, weerstand) gebruikt.
Resultaten
Als eerste stap in de evaluatie van het ontwerp werd de GreenPAK Software Simulator gebruikt. Er werden virtuele knoppen gemaakt op de ingangen en de externe LED's tegenover de uitgangen op het ontwikkelbord werden bewaakt. De Signal Wizard-tool werd gebruikt om een signaal te genereren dat lijkt op het NEC-formaat met het oog op foutopsporing.
Er werd een signaal gegenereerd met het patroon 0x00FF5FA0, waarbij 0x00FF het adres is dat overeenkomt met het geïnverteerde adres dat is opgeslagen in de PGEN, en 0x5FA0 het commando is dat overeenkomt met het geïnverteerde commando in DCMP-register 3 om de aan / uit-functionaliteit te besturen. Het systeem in de begintoestand bevindt zich in de UIT-toestand, maar nadat het signaal is toegepast, merken we op dat het systeem wordt ingeschakeld. Als een enkele bit in het adres is gewijzigd en het signaal opnieuw is toegepast, merken we op dat er niets gebeurt (incompatibel adres).
Na het een keer starten van de Signaalwizard (met geldige Aan / Uit-opdracht):
Conclusie
Dit artikel concentreert zich op de configuratie van een GreenPAK IC die is ontworpen om een AC-motor met 3 snelheden te besturen. Het bevat verschillende functies, zoals fietssnelheden, het genereren van een timer met 3 perioden en het construeren van een IR-decoder die compatibel is met het NEC-protocol. De GreenPAK heeft bewezen doeltreffend te zijn bij het integreren van verschillende functies, allemaal in een goedkope en kleine IC-oplossing.