Gepost door Jeroen Vreuls op maandag 9 november 2015
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.
Hieronder zie je een PVC kogelkraan die vaak wordt toegepast in combinatie met de servo.
Ik ga een voorbeeldschema geven hoe je zo'n servo aan kunt sturen.
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.
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.
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.
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.
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.
Als je ingelogd bent kun je een reactie plaatsen.
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.