Servotester

Puls breedte hangt voor een groot deel van het fabricaat af. Varieert iets dus per fabricaat. Ik zal het eens precies meten maar ik dacht ergens tussen de 10 en 20 ms.

http://www.ebay.nl/itm/multi-Servo-tester-3CH-ECS-speed-cont...1e8a4acc13
Zit een sweepstand op, start echter op in de "manual" stand.
Heb hem even opengemaakt, er staat helaas geen typenummer op het ic.

Op 11 mei 2014 10:55:52 schreef xxxPietxxx:
Puls breedte hangt voor een groot deel van het fabricaat af. Varieert iets dus per fabricaat. Ik zal het eens precies meten maar ik dacht ergens tussen de 10 en 20 ms.

Dat is helemaal fout. De herhaling ligt op 50Hz (=20ms), de pulsbreedte op nominaal 1-2ms, maar sommige servos slikken een wat ruimere range (b.v. 0.6-2.4ms). Maar ik vroeg wat JIJ wil voor jou pop. Hoe lang moet ie over een sweep doen?

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Met 555 wordt het al vrij ingewikkeld.
Je hebt er 2 nodig. 1 die de herhaalfrequentie bepaalt op 50 Hz.
En een tweede die een variabele pulsbreedte genereert.

Wordt dus zoiets:
http://members.ziggo.nl/cjvanderhoeven/CircuitsOnline/ServoTester/ServoTester-001.png

T3 is hier een stroombron die een steeds grotere stroom geeft naarmate de basis meer spanning krijgt. T1 en T2 vormen een stroomspiegel die de laadstroom en dus de pulsbreedte van de tweede timer bepaalt.

Met Opampjes gaat het nog iets gemakkelijker:
http://members.ziggo.nl/cjvanderhoeven/CircuitsOnline/ServoTester/ServoTester-002.png

Hier is A1 een oscillator op 50Hz. Op de uitgang staat ongeveer een driehoeksignaal. de tweede opamp is een comparator die tgv toenemende spanning op de + ingang een steeds groter stuk van de zaagtand mee pakt.

Zo te horen heb je al genoeg ervaring op hardware gebied. dus de waarde van de componenten kun je zelf wel uitrekenen?

En zelf zou ik het ook doen met een AVR processor, zoals de AtTiny13 die al eerder is genoemd. Dan kun je volstaan met een 8-pin dipje zonder verdere externe componenten.

2 x 555 is toch een 556? Ik heb het kastje van Graupner opengemaakt en ga daar nu eerst eens het schema van maken. Daar zitten in ieder geval in >>> C358 en een C393 en een D40538BC. jemig Als ik het zo zie moet ik toch weer aan de nieuwe programmeer studie:-)

Er was nog een vraag wat ik met de pop wil. Welnu haar rechterarm en hoofd zitten op één servo met haakse tandwieltjes. Hoofd gaat dus draaien en gelijktijdig zwaait ze met haar rechterarm. Vandaar dat dat heen en weer moet gaan.

[Bericht gewijzigd door Henry S. op 19 juni 2014 19:39:15 (31%)]

Klopt, 556 kan ook. Of of beter een 7556.

Maar ik wil wel helpen om het met een Tiny13 te doen.
Als je de volgende gegevens doorstuurt:
- Herhaal frequentie : 50 Hz?
- Puls breedte na opstarten : 1 ms ?
- Puls breedte na einde beweging : 2 ms ?
- Tijdsduur voor overgang : 2 seconden?
- Verloop lineair met de tijd ?

Dan wil ik wel een AtTiny13 op de post doen.

Hee Kees... dat is een mooi aanbod. Maar als een goede ""jonge onderzoeker"" wil natuurlijk dan alles ook ervan weten. Ik zal in ieder geval met de scoop even meten wat de tijden zijn. Blijft de vraag of ik daarna nog wat aanpassingen eraan kan doen, zo dat nodig blijkt. En...wat is er nodig omdat dan zelf te gaan doen? Jouw kosten? Ik heb hier op het forum al het nodige zien staan maar of dit zo effe te doen is? Maar brengt me wel op nieuwe ideeën. Kan je dan met zo'n Tiny13 ook een (servo) schakelfunctie maken? Dus bv. middenstand van een schakelaar op de zender is alles uit en naar boven schakelfunctie 1 en naar beneden schakelfunctie 2? En zo mogelijk, en gewenst, ook met latch functie? Ik gebruik dat oa. voor het inschakelen van lichten, dropluiken en flitsers (gemaakt van flitsers uit wegwerp fototoestellen) op de modellen. Zie bv. foto's.http://www.uploadarchief.net/files/download/hercules%2050%25%202.jpghttp://www.uploadarchief.net/files/download/c47-%20groot%20klein%20linksvoor%2020%25.jpg

Hallo Piet.

Mooie foto's. En vooral ook mooie machines.

Tja wat heb je nodig voor AVR:
- Een PC
- Ontwikkel-Software. In dit geval Atmel Studio, gratis te downloaden van de Website van Atmel : www.atmel.com
- Een AVR-ISP programmer. Overal te koop. Vanaf E 3.50.
- En verder heel veel tijd en doorzettingsvermogen.

Zo een Servo schakel functie ken ik niet. Maar ik vermoed dat je dan een servo signaal vanaf de ontvanger in het vliegtuig naar de processor stuurt en dat die dan daarop reageert met 3 verschillende uitgangen? Lijkt me wel mogelijk ja.

maartenbakker

Special Member

Op 11 mei 2014 17:04:08 schreef xxxPietxxx:
2 x 555 is toch een 556? Ik heb het kastje van Graupner opengemaakt en ga daar nu eerst eens het schema van maken. Daar zitten in ieder geval in >>> C358 en een C393 en een D40538BC. jemig Als ik het zo zie moet ik toch weer aan de nieuwe programmeer studie:-)

Ik gok equivalent aan resp. LM358, LM393 en CD4538B/HCF4538B.

Overigens mijn complimenten, niet alleen voor de mooie machines, maar ook voor het reverse-engineeren. Hele volksstammen zien het nut niet van het optekenen van een schema.

[Bericht gewijzigd door maartenbakker op 11 mei 2014 23:35:10 (17%)]

"The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."

Ik heb even wat geprobeerd met een PIC10F206, en dat viel mee. Binnen een uurtje had ik een servo die vrolijk stond te zwaaien.

Ongeveer ieder 20ms geeft de PIC een puls van 1ms, na 32 pulsen van 1ms volgen er 32 van 2ms. Iedere 0.6s (32 pulsen) verandert de servo van positie. De traagheid van de servo zorgt voor een redelijk soepele beweging.

De afmetingen zijn minimaal, een sot23-6 en een ontkoppel c-tje.

Zonder controller moet het volgens mij ook te doen zijn met een 4093. Dit even gebaseerd op de Typical applications in de datasheet van de CD4093BC van Fairchild. Een poort als 50Hz oscillator die een gated one-shot aanstuurt. Er zijn nu nog twee poorten over waarmee het mogelijk moet zijn om om de halve seconde de pulslengte van de one-shot te veranderen.

De zinloosheid des levens is nog geen rechtvaardiging voor sisyphusarbeid.

Zo dat duurde dus ff lang. Eerst eens weer uitzoeken hoe foto's en schema's toegevoegd kunnen worden.

Kon het experimenteren toch weer niet laten en dus....
Hierbij het schema van mijn 1e prototype van een servo automaat. En een plaatje van de ""spin"". Aangezien ik nu eenmaal (nog) beter ben in hardware componenten nu gemaakt met een 556 en wat discrete componenten:-)De servo draait nu automatisch van links naar rechts. De weerstanden zijn experimenteel vastgesteld om de servo uitslag te beperken voor de pop. Want als het hoofd ca. 180gr. kan draaien en het armpje ook zo iets naar achteren is dat wat pijnlijk voor de pop:-( De BC547 sluit de 4k7 dus min of meer kort).
Eigenlijk heb je dus een automatische variabele weerstand nodig, in dit geval over de 4k7 weerstand. Tja.... en een zaagtand aan die transistor toevoegen lost dat niet op denk ik. Ik sta dus open voor (simpele) suggesties!
Overigens zijn de meeste van deze onderdelen ook nog van ca. 1970. Daar heb ik nog heel wat van en werken nog perfect. Zelf mijn experimenteer board is nog uit die periode:-) Voor het overige heb ik nog wel wat sloopprints liggen van oa. beeldschermen waar ik dan voor experimenten wat onderdelen uithaal. Hoef ik niet voor elk onderdeel 30 - 40 km te rijden. Overigens door het zelf wat experimenteren worden de schema's die jullie gestuurd hebben ook weer duidelijker en ga ik er anders naar kijken. Waarvoor dank!

http://www.uploadarchief.net/files/download/servoautomaat%202%2025%25.jpg
http://www.uploadarchief.net/files/download/exprimenter%20board%201%2025%25.jpg

Dit is een schema met een PIC'je wat zeer klein van formaat is.
Als je het schema opstart met een gesloten "sweep" gaat de servo gelijk in sweepstand.
Geen idee waar je woont, maar er is vast wel iemand in de buurt die een PIC'je voor je kan programmeren.

http://www.bucket.gompy.net/servo_sweep.jpg

Wederom bedankt voor de informatie. Ik woon in Hellendoorn.

Met de potmeter is tevens de snelheid van de sweep in te stellen.
De hex en de layout is aanwezig, dus je hoeft niet zelf (of een ander) wat te gaan tekenen of programmeren.

Hallo Generaal,

Bedankt voor de informatie maar wat is de uitgangbelasting? Een beetje servo, zeker de digitale én vooral de kleine, trekt al gauw een paar honderd milli's.

De puls geeft in geen enkele servo schakeling zoveel stroom af.
De puls moet je zien als dat hele kleine schakelaartje wat die hele grote elektromotor inschakelt dmv relais oid.
Zo ook in de servo zitten FET's oid die de motor aansturen, dat doet in ieder geval niet de puls.
De batterij die je gebruikt bepaalt de stroom welke de motor van de servo doet draaien.
Zelf gebruik ik deze schakeling op zeer grote servo's (60Nm) welke ik in bigboats (speedboten) heb zitten die ruim 130cm groot zijn.
Je moet deze schakeling zien als je ontvanger, daar kan je ook 2 of meer servo's op aansluiten zonder dat je een knoepert van een ontvanger nodig hebt.
Je moet alleen meer of grotere accu's gebruiken als je meer servo's op je ontvanger aansluit.

Sorry, Je hebt helemaal gelijk. Foutje bedankt! Ik kan achter één ontvanger kanaal tenminste 3 a 4 Servo's hangen. Voor wat betreft de puls belasting. Dus dat is inderdaad geen probleem. Moet dus ook wel een 10Mc kristal bij komen zie ik.

Die dingen kosten inderdaad bijna niets. Ook zo'n 10Mc kristal dubbeltjes werk.. bij Conrad.

Uh.... vraagje... kan jij dat niet voor me programmeren? En als je dat toevallig ook hebt...samen met dat kristal opsturen? Kosten hoor ik wel. Of nog anders... ik weet niet waar je woont maar 28 en 29 juni hebben we hier in Nijverdal een grote internationale modelvliegshow. Zie je ook het nieuwste van het nieuwste op dat gebied. Zorg ik voor gratis toegang en drankje:-)Kijk voor gegevens even op onze site http://www.modelvliegclubnijverdal.nl/

[Bericht gewijzigd door Henry S. op 19 juni 2014 19:39:44 (54%)]

Een PIC12F675 heeft helemaal geen kristal nodig, zeker niet in dit geval, gezien de nauwkeurigheid van de servo. De interne oscillator is met 1% nauwkeurig genoeg.

De zinloosheid des levens is nog geen rechtvaardiging voor sisyphusarbeid.

Doe je best zou ik zeggen :)

BTW, het kristal kan ook een resonator van 10MHz zijn.

pic asm code:



;Servo test routine, serv675C
;Author EdwardM

	__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _MCLRE_OFF & _BODEN_OFF & _HS_OSC
	#define 	__12F675
	#include 	<12f675.inc>
;====================================
;   Pin Defs
;====================================

; Pin1......Vdd
; Pin2......GP5
; Pin3......CLKOUT............TEST.......OUT
; Pin4......GP3/MCLR/Vpp......CENTRE.....IN
; Pin5......AN2...............POT........Analog
; Pin6......GP1/ICPCLK........SWEEP......IN
; Pin7......GP0/ICPDTA........PWM........OUT
; Pin8......VSS
	                                                                              
;====================================
;   RAM 0x20 to 0x5F
;====================================
CounterA		equ		0x20
CounterB		equ		0x21
CounterC		equ		0x22
CounterD		equ		0x23
Timer_rtn		equ		0x24
temp_loops		equ		0x25
us_loops		equ		0x26
tempf			equ		0x27
set_centre		equ		0x28
old_ADC			equ		0x29
ADC_low			equ		0x2A
ADC_high		equ		0x2B
mode_state		equ		0x2C
LOW_count		equ		0x2D
HIGH_count		equ		0x2E
last_low		equ		0x2F
last_high		equ		0x30
max_low			equ		0x31
max_high		equ		0x32
min_low			equ		0x33
min_high		equ		0x34
inc_high		equ		0x35
inc_low			equ		0x36
inc_up			equ		0x37
init_inc		equ		0x38
last_pos_high	equ		0x39
last_pos_low	equ		0x3A


		Org		0x00
		goto	main

table	addwf	PCL,f
	retlw	D'254'
	retlw	D'205'
	retlw	D'153'
	retlw	D'102'
	retlw	D'77'
	retlw	D'62'
	retlw	D'48'
	retlw	D'34'
	retlw	D'26'
	retlw	D'19'
	retlw	D'13'
	retlw	D'9'
	retlw	D'6'
	retlw	D'4'
	retlw	D'2'
	retlw	D'1'




;================================
;  16 bit Comparison MAX
;================================
compMAX	
	movf	max_high,w
	subwf	ADC_high,w
	btfss	STATUS,Z
	goto	res16A
	movf	max_low,w
	subwf	ADC_low,w
res16A
	return
;================================
;  16 bit Comparison MIN
;================================
compMIN	
	movf	ADC_high,w
	subwf	min_high,w
	btfss	STATUS,Z
	goto	res16B
	movf	ADC_low,w
	subwf	min_low,w
res16B
	return


main
	call	initial_setup
main_loop
	call	set_20ms_frame
	call	set_position	;Position set from previous loop
	call	check_pbuttons	;Check pushbuttons for mode change
	call	check_mode		;Get current test mode
	call	wait_end20ms
	goto	main_loop
	
;================================
; Wait for end of 20ms frame
;================================
wait_end20ms
	btfss	PIR1,0
	goto	wait_end20ms
	return
;================================
; Which mode are we in?
;================================
check_mode
	clrf	inc_high
	clrf	inc_low
	iorlw	0x00			;w=0xFF if change
	btfsc	STATUS,Z		;
	goto	nochange		;If no jump, status has changed
	btfsc	mode_state,0	;Centre?
	goto	do_centre
	btfsc	mode_state,1
	goto	do_sweep		;must be sweep
	goto	changetopot
do_centre
	call	get_ADC
	call	set_ADC_limits
dc1
	movlw	0xFF			;1.5ms
	movwf	LOW_count
	movlw	0x01
	movwf	HIGH_count
	clrf	mode_state
	bsf	mode_state,0
	return
nochange
	clrf	inc_low
	clrf	inc_high
	
	btfsc	mode_state,0	;Centre
	goto	check_centre
	btfsc	mode_state,1	;Sweep
	goto	check_sweep		;else set by pot position
changetopot
	call	get_ADC
	movf	ADC_high,w
	movwf	HIGH_count
	movf	ADC_low,w
	movwf	LOW_count
	clrf	mode_state
	bsf	mode_state,2
	return
check_centre
	call	get_ADC
	call	compMAX
	btfsc	STATUS,C		;Carry set then out of range, set posn to pot
	goto	changetopot
	call	compMIN
	btfsc	STATUS,C
	goto	changetopot
	goto	dc1
	return
check_sweep
	call	get_ADC
	call	div64
	call	SetCountper20ms
	btfss	inc_up,0
	goto	cs1
	call	add_inc
	return
cs1
	call	sub_inc
	return
do_sweep
	call	get_ADC
	call	div64
	call	SetCountper20ms
	bsf	inc_up,0
	call	add_inc
	return
add_inc
	movfw	inc_low
	addwf	last_pos_low,f
	btfsc	STATUS,C
	incf	last_pos_high,f
	btfss	last_pos_high,2
	goto	ai1
	movlw	0x03
	movwf	HIGH_count
	movlw	0xFF
	movwf	LOW_count
	bcf	inc_up,0
	return
ai1
	movfw	last_pos_high
	movwf	HIGH_count
	movfw	last_pos_low
	movwf	LOW_count
	return		
sub_inc
	movfw	inc_low	;last_pos_low
	subwf	last_pos_low,w	;inc_low,w
	movwf	LOW_count
	movfw	last_pos_high
	btfss	STATUS,C
	addlw	0xFF
	movwf	HIGH_count
	btfss	HIGH_count,7
	return
	movlw	0x00
	movwf	HIGH_count
	movwf	LOW_count
	bsf	inc_up,0
	return
div64
	rrf	ADC_low,f	
	rrf	ADC_low,f
	rrf	ADC_low,f
	rrf	ADC_low,f
	rrf	ADC_low,f
	rrf	ADC_low,f
	movlw	0x03
	andwf	ADC_low,f
	rlf	ADC_high,f
	rlf	ADC_high,f
	movlw	0x0C
	andwf	ADC_high,w
	iorwf	ADC_low,w
	return
	
SetCountper20ms

	call	table
	movwf	inc_low
	clrf	inc_high
	return
;================================
;  Check ADC
;================================
get_ADC
	movlw	0x8B		;Start ADC
	movwf	ADCON0
sp2
	btfsc	ADCON0,1	;check go/done bit for end of conversion
	goto	sp2
	bsf	STATUS,RP0		;set bank 1
	movf	ADRESL,w
	bcf	STATUS,RP0		;set bank 0
	movwf	ADC_low		;LOW_count
	movwf	LOW_count
	movf	ADRESH,w
	movwf	ADC_high	;HIGH_count
	movwf	HIGH_count
	return
;========================================
;  Set ADC limits
;========================================
set_ADC_limits
	clrw
	movwf	max_low
	movwf	max_high
	movwf	min_low
	movwf	min_high

	movf	ADC_low,w
	addlw	D'10'
	movwf	max_low
	movf	ADC_high,w
	btfsc	STATUS,C
	addlw	0x01
	movwf	max_high

	movlw	D'10'
	subwf	ADC_low,w
	movwf	min_low
	movf	ADC_high,w
	btfss	STATUS,C
	addlw	0xFF
	movwf	min_high
	movlw	0x00
	subwf	min_high,f
	return
;========================================
; Check pushbutton state for mode change
;========================================
check_pbuttons
	btfss	GPIO,GPIO3		;Centre?
	goto	mode_centre
	btfss	GPIO,GPIO1		;Sweep?
	goto	mode_sweep
	retlw	0x00			;No change
mode_centre
	clrf	mode_state
	bsf	mode_state,0
	retlw	0xFF
	clrf	inc_low
	clrf	inc_high
mode_sweep
	clrf	mode_state
	bsf	mode_state,1
	retlw	0xFF	
;================================
;  Set PWM output on
;================================
set_20ms_frame
	bsf	GPIO,0				;Output on
	movlw	0x3B			;Set timer to 20ms-setup time @10MHz
	movwf	TMR1H
	movlw	0xBB
	movwf	TMR1L
	movlw	0x01			
	movwf	T1CON			;Timer enable
	bcf	PIR1,0				;Clear timer overflow flag
	return

;================================
;  Set position
;================================
set_position
	call	init_delay		;Nominal 1ms delay
	movfw	HIGH_count
	movwf	last_pos_high
	movfw	LOW_count
	movwf	last_pos_low
	clrw
	iorwf	LOW_count,f
	btfsc	STATUS,Z
	goto	low_zero
low_nonzero
	decfsz	LOW_count,f
	goto	low_nonzero
low_zero
	clrw
	iorwf	HIGH_count,f
	btfsc	STATUS,Z
	goto	high_zero
do_loops
	decfsz	LOW_count,f
	goto	do_loops
	decf	HIGH_count,f
	goto	low_zero
high_zero
	bcf	GPIO,0				;Output off
	return

init_delay
	movlw	D'3'
	movwf	CounterB
	movlw	D'210'
	movwf	CounterA
loop	decfsz	CounterA,1
	goto	loop
	decfsz	CounterB,1
	goto	loop
	return
us_delay

	movlw	D'4'
	movwf	CounterA
loopus	decfsz	CounterA,1
	goto	loopus
	nop
	nop
	nop
	nop
	nop
	return
;================================
;  Initial setup
;================================                                                                                 
initial_setup
	bcf	STATUS,RP0			;set bank 0
	clrf	GPIO			;set GPIO 's to 0
	movlw	07H				;
	movwf	CMCON			;Comparator control - off
	bsf	STATUS,RP0			;set bank 1
	movlw	0x24
	movwf	ANSEL
	movlw	0x3E			;GP2/AN2 input only
	movwf	TRISIO			;all others output, bank 1

	bcf	STATUS,RP0			;set bank 0
	movlw	0x89			;Initialise adc
	movwf	ADCON0			;bank 0
	bcf	mode_state,0		;Centre
	bcf	mode_state,1		;Sweep
	bsf	mode_state,2		;Pot
	call	get_ADC
	clrf	inc_low
	clrf	inc_high
	movlw	0x01
	movwf	init_inc
	return
	end

Om een signaal te krijgen waarmee een servo heen en weer beweegt heb je niet zoveel code nodig.

De zinloosheid des levens is nog geen rechtvaardiging voor sisyphusarbeid.

Uh.... vraagje... kan jij dat niet voor me programmeren?

Ik kan nergens een e-mailadres van je vinden en hier op het forum ga ik er niet op in.

https://www.youtube.com/watch?v=dG_wxdWVmAo
https://www.youtube.com/watch?v=hoy1v1UaXAQ
https://www.youtube.com/watch?v=dXaGCjuDFKI

Je ziet hierop ook de print, er zit nu wel een grote potmeter op, maar die kan vervangen worden door een klein instelpotje.

Deze laatste versie is met een Pic.

Dat zal ook wel gaan, maar dan heb je wel heel andere tools nodig dan het lijstje dat ik eerder heb doorgegeven:
- Andere ontwikkelSoftware.
- Andere programmer.

Op 15 mei 2014 11:14:57 schreef Generaal:
Zo ook in de servo zitten FET's oid die de motor aansturen, dat doet in ieder geval....

FYI, ik heb eens een servo opgengemaakt en het circuit wat zitten bestuderen. Er blijkt een "single chip solution" te zijn, waabij de chip ingebouwde transistoren heeft. Gewone bipolaire jongens. En best wel rotte ook. VCEsat van iets van 1V of zo bij de nominale stroom van de motor....

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ik heb hier servo's in gebruik van ~6mm tot ~45mm dik, waar een behoorlijke motor in zit.
De dikke jongens trekken ruim 1 Ampere bij volle belasting.
Op haast alle printen voor normale servo's zit een standaard chip waar de puls in verwerkt wordt en een H-brug om de motor aan te sturen.
De grote jongens hebben nog een paar extra Dpack FET's op de print zitten. De stroom die de motor trekt kan niet door de H-bridge in het chipje geleverd worden. Bij middelmaat servo's zit nog wel eens een gewone H-bridge chip op de print ipv losse FET's.

Mijn e-mailadres staat toch in mijn gebruikers status?

[Bericht gewijzigd door xxxPietxxx op 17 mei 2014 11:55:29 (32%)]