Werken met servo's

Gepost door Jeroen Vreuls op maandag 9 november 2015

Servo voor een klep

Ik ga ook nog een voorbeeld geven van een servo voor het bedienen van een klep of kraan. Dit type wordt veel in het bedrijfsleven gebruikt. Dit type servo (BELIMO SR24A-SR) wordt veel toegepast in zwembad installaties, klimaat regelingen en bij verwarmingsinstallaties.

Hieronder een foto van de servo.

BELIMO servoBELIMO servo

Hieronder zie je een PVC kogelkraan die vaak wordt toegepast in combinatie met de servo.

PVC kogelkraanPVC kogelkraan

De aansturing

Ik ga een voorbeeldschema geven hoe je zo'n servo aan kunt sturen.

Schema PWM naar spanningsomzetterSchema PWM naar spanningsomzetter

Op deze manier kan je van een PWM-signaal een spanning maken (in dit geval 0 tot 10 V DC), die spanning is nodig om de servo te besturen. In het schema zie je dat ik een TLV271 gebruikt heb, dit mag ook een ander type operationele (opamp) versterker zijn. Als het maar wel een common rail type opamp is. Anders wordt de 0 tot 10 V DC spanning niet gehaald, en dat is voor een goede werking van de servo wel nodig.

Met bijvoorbeeld een microcontroller of met een NE555 kan je een PWM-signaal maken (of met een andere schakeling die PWM opwekt) en daar zou je de servo mee kunnen bedienen. Op de servo zitten vier aansluitingen, twee voor de voeding, één draad waar het analoge signaal opkomt en één draad waar een analoog signaal uitkomt. Dat is de terugmelding, op die manier kan je zien waar de klep staat.

Hieronder een blokschema.

Blokschema BELIMO servo aansturingBlokschema BELIMO servo aansturing

Op deze manier wordt de servo bediend. Het inputsignaal kan natuurlijk van alles zijn, maar voor het voorbeeld wordt de servo via een potmeter bediend. Let er wel op dat het terugkoppelsignaal ook tot 10 V DC oploopt, als je dat signaal in wil lezen op een analoge ingang van de controller, dan moet daar een spanningsdeler tussen gezet worden. Dat kunnen bijvoorbeeld twee weerstanden zijn van 10K. Zie het voorbeeld hieronder.

Spanningsdeler terugkoppelsignaalSpanningsdeler terugkoppelsignaal

De software

Voor de besturing heb ik een combinatie gemaakt met Basic en Profilab. Hieronder het Basic programma.

Device 16F887             ; Processor type

Xtal 10                   ; Crystal 10 MHz

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 = 8      ; resolutie 8 bits
Declare Adin_Tad = frc    ; set RC osc
Declare Adin_Stime = 50   ; sample tijd 5

Declare CCP1_Pin PORTC.2  ; PWM signaal uit

Declare Serial_Baud 9600  ; Baudrate 9600

Declare Rsin_Pin  PORTB.0 ; Data in
Declare Rsout_Pin PORTB.1 ; Data uit

Symbol FREQUENTIE = 1000  ; Frequentie is 1 KHz

Dim DATA_IN As Byte       ; Variabele data in
Dim POSITIE_SERVO As Byte ; Variabele data

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  = %000001          ; Poort B I/O

         ;76543210        ; Hulpregel poort C
PORTC  = %00000000        ; Maak poort C laag
TRISC  = %00000000        ; 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
         ;543210          ; Hulpregel analoog poort_B
ANSELH = %000000          ; ANSEL register analoog poort_B

;----------------------------------------
; PROGRAMMA SERIËLE BESTURING SERVO KLEP.
;----------------------------------------

RUN:

    POSITIE_SERVO = ADIn 0

    RSOut POSITIE_SERVO

    DATA_IN = RSIn

    DelayMS 20

    HPWM 1, DATA_IN, FREQUENTIE
GoTo RUN

End

Zoals je kan zien stelt het programma niets voor. Het enige wat er gebeurt is, dat er een paar signalen serieel ontvangen en verstuurd worden. Het signaal dat op de analoge ingang (ADIN 0) komt, is het signaal dat afkomstig is van de servo en geeft de positie weer. Dit signaal wordt serieel verstuurd door (RSOUT) naar de PC en daar wordt in Profilab de waarde van de positie op het beeldscherm gezet. Dan hebben we nog (DATA_IN) dit signaal is afkomstig van de potmeter in Profilab, dat signaal wordt serieel verstuurd en komt binnen via (RSIN). De waarde (DATA_IN) wordt omgezet naar een PWM-signaal met een vaste frequentie van 1 KHz. Het PWM-signaal wordt door de converter weer omgezet naar een analoog signaal tussen de 0 en 10 V DC. Hieronder het programma in Profilab.

Het Profilab programmaHet Profilab programma

Zoals je kan zien op het voorbeeld staan alle waardes erbij. Er is één potmeter gebruikt, tweemaal een formule module, eenmaal een puls gever, eenmaal een byte versturen module, eenmaal een byte ontvangen module, eenmaal een A/D module, eenmaal een D/A module en eenmaal een display module. De data in het voorbeeld wordt serieel door de USB poort 4 verzonden, maar dat kan je zelf aanpassen. Hieronder de frontplaat voor de bediening van de servo klep.

De frontplaat in ProfilabDe frontplaat in Profilab

Hier zie je de potmeter voor het bedienen van de servo en het display voor de positie van de servo. De waarde die getoond wordt is het percentage tussen de 0 en 100 %, op het voorbeeld staat de servo klep dus voor 30 % open.

Tot zover het artikel over servo's. Ik hoop dat het een beetje duidelijkheid schept over de werking van servo's.

Voor het versturen en ontvangen van seriële signalen tussen PC en controller heb je een seriële interface nodig, deze wordt in het boek werken met Profilab Expert 4.0 beschreven op bladzijde 52. Dit boek kun je op Circuits Online gratis downloaden.

Dit artikel is geschreven door Lambiek.

Reacties

Gepost door fred101 op zondag 15 december 2019 11:37:39

Bedankt, heb me te pletter gezocht naar uitleg als deze. (verder gaand dan wat zo'n ding doet) Blijkt het gewoon op CO te staan

Gepost door Lambiek op donderdag 20 februari 2020 21:49:49

Bedankt, heb me te pletter gezocht naar uitleg als deze. (verder gaand dan wat zo'n ding doet) Blijkt het gewoon op CO te staan

Ik hoop dat het duidelijkheid schept, daar doen we het voor. :)

Als je ingelogd bent kun je een reactie plaatsen.