voila j'essaye de transformer un servomoteur en moteur continu commande par un pic
j'ai essaye la methode chez fribotte qui consiste a placer le potendiometre mecaniquement sur 1.5 ms , avec un programme , j'ai essayer avec mon 16f876

http://fribotte.free.fr/bdtech/pic/servoCC.html

le problemme c'est que je trouve pas le reglage parfait , le mieux que j ai trouver c'est que le moteur fais des minis coup a droite et a gauche mais s'arrete pas vraiment , de plus il chauffe quand il fais ça .

alors je me demande si on peut pas ameliorer le code voici mon asm modifier

Code:
;**********************************************************************
;   								      *
;    Gestion d'un seul PWM                                            *
;    Precision de 256 increment                                       *
;    Envois en continu d'un PWM de reglage du neutre : 180            *
;    sur tout le port B                                               *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:	    reglages.asm                                      *
;    Date:          24/8/99                                           *
;    File Version:  1                                                 *
;                                                                     *
;    Author:        Julien                                            *
;    Company:       Fribotte                                          *
;                                                                     * 
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files required: rien                                             *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes: Quartz 4 Mhz                                              *
;                                                                     *
;                                                                     *
;**********************************************************************


	LIST      p=16F876            ; Définition de processeur
	#include <p16F876.inc>        ; fichier include

	__CONFIG   _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_ON & _HS_OSC

;_CP_OFF		Pas de protection
;_DEBUG_OFF		RB6 et RB7 en utilisation normale
;_WRT_ENABLE_OFF	Le programme ne peut pas écrire dans la flash
;_CPD_OFF               Mémoire EEprom déprotégée
;_LVP_OFF		RB3 en utilisation normale
; _BODEN_ON		Reset tension en service
;_PWRTE_OFF		Démarrage rapide
;_PWRTE_ON		Démarrage temporisé
;_WDT_ON		Watchdog en service
;_HS_OSC		Oscillateur haute vitesse (4Mhz<F<20Mhz)


;**********************************************************************
;                                                                     *
;    Variables                                                        *
;                                                                     *
;                                                                     *
;**********************************************************************

;***** VARIABLE interruption
w_temp        	EQU     0x0C        	; variable used for context saving 
status_temp   	EQU     0x0D        	; variable used for context saving


;***** VARIABLE PWM
Pwm		EQU	0x10		; Valeur du PWM a appliquer entre 0 et 256.

;***** VARIABLE TIMER
Phase		EQU	0x13		; Phase 0 ou 1 en sortie du PWM


;**************************************************************** DEBUT
		ORG     0x000           ; processor reset vector
  		GOTO    main            ; go to beginning of program



;**********************************************************************
;                                                                     *
;    Interruption TimeR                                               *
;                                                                     *
;                                                                     *
;**********************************************************************

		ORG     0x004           ; interrupt vector location

;***** Sauvegarde contexte
		MOVWF   w_temp          ; save off current W register contents
		MOVF	STATUS,0        ; move status register into W register
		MOVWF	status_temp     ; save off contents of STATUS register

;***** Test de la phase actuelle
		BTFSC	Phase,0		; Phase a 0 ou a 1 ?
		GOTO	Phase0		;	A 1, on passe a la phase 0
		GOTO	Phase1		;	A 0, on passe a la phase 1

;***** Quand la phase doit repasser a 0
Phase0
		MOVLW	0x00		; On repasse B a 0
		MOVWF	PORTB		;	/
	
;***** On regle le prescaler a 128
		BSF	STATUS, RP0	; Bank 1 selectonnee
		MOVLW	B'10000110'	; Timer interne, prescaler sur Timer, Prescaler a 128.
		MOVWF	OPTION_REG	;	/
		BCF	STATUS, RP0	; Bank 0 selectonnee

		MOVLW	0x8C		; Nouveau reglage du timer a 140 (128*140 = 18 ms en tout)
		MOVWF	TMR0		; 	/

		MOVLW	0x00		; On repasse la Phase a 0
		MOVWF	Phase		;	/

		GOTO	FinInter

;***** Quand la phase doit repasser a 1
Phase1
		MOVLW	0xFF		; On repasse B a 255
		MOVWF	PORTB		;	/

;***** On regle le prescaler a 8
		BSF	STATUS, RP0	; Bank 1 selectonnee
		MOVLW	B'10000010'	; Timer interne, prescaler sur Timer, Prescaler a 8.
		MOVWF	OPTION_REG	;	/
		BCF	STATUS, RP0	; Bank 0 selectonnee

		MOVF	Pwm,0		; Nouveau reglage du timer
		SUBLW	0xFF		; On enleve 255 au PWM
		MOVWF	TMR0		; On le regle a la valeur PWM

		MOVLW	0x01		; On repasse la Phase a 1
		MOVWF	Phase		;	/


;***** Redemarage interruption
FinInter	BCF 	INTCON,	T0IF	; On efface l'interruption TimeR pour la relance


;***** Restitution contexte
		MOVF    status_temp,0   ; retrieve copy of STATUS register
		MOVWF	STATUS          ; restore pre-isr STATUS register contents
		SWAPF   w_temp,f
		SWAPF   w_temp,w        ; restore pre-isr W register contents
		RETFIE                  ; return from interrupt



;**********************************************************************
;                                                                     *
;    Programme Main                                                   *
;                                                                     *
;                                                                     *
;**********************************************************************


main

	CALL	InitIO				; On intialise les ports d'E/S (A et B)
	CALL 	InitRtcc			; On intialise l'interruption TimeR
	MOVLW	0xB4				; On met le PWM a 180 (correspond a 8µs*180 = 1.44ms)
	MOVWF	Pwm				;	/
	
boucle
	GOTO 	boucle				; Boucle infinie du main



;**********************************************************************
;                                                                     *
;    Initialisation des ports d'E/S                           	      *
;                                                                     *
;                                                                     *
;**********************************************************************


InitIO
	CLRF	PORTB		; Initialise le port A
	BSF	STATUS, RP0	; Bank 1 selectonnee
	MOVLW	0x0		; Port RB7-RB0 en sortie
	MOVWF	TRISB		;	/
	BCF 	STATUS,	RP0	; Bank 0 selectonnee

	CLRF 	PORTA		; Initialise le port A
	BSF 	STATUS,	RP0	; Bank 1 selectonnee
	MOVLW	0x1F		; Port RA4-RA0 en entree RA5 en sortie
	MOVWF	TRISA		;	/
	BCF 	STATUS,	RP0	; Bank 0 selectonnee
	RETURN



;**********************************************************************
;                                                                     *
;    Initialisation de l'interruption TimeR                           *
;                                                                     *
;                                                                     *
;**********************************************************************


InitRtcc

;*****  On regle le prescaler
	CLRWDT			; Clear WDT and prescaler
	BSF	STATUS, RP0	; Bank 1 selectonnee
	MOVLW	B'10000010'	; Timer interne, prescaler sur Timer, Prescaler a 8.
	MOVWF	OPTION_REG	;	/
	BCF	STATUS, RP0	; Bank 0 selectonnee

;*****  On regle l'interruption

	MOVLW	0xFA		; Initialisation de la valeur du TimeR
	MOVWF	TMR0		;	/

	MOVLW   B'10100000'     ; enable interrupts
	MOVWF   INTCON          ;       /
	RETURN



;**********************************************************************
;                                                                     *
;    Fin				                              *
;                                                                     *
;                                                                     *
;**********************************************************************


	END                     ; directive 'end of program'

ou alors essayer de trouver une autre methode par exemple une plus electrique avec des resistences sur le potentiometre

exemple ici http://www.robot-mobile-irbot.com/4-...bot-mobile.htm

le problemme la c'est que chaque marque de servo moteur, l'eletronique est diferente et la je m'en sort pas, je sais pas trop ou les metre , j'avais trouver un lien avec un tutorial sur un site en anglais qui montre comment faire avec la marque futaba de mon servomoteur mais le lien est casse ,

alors que pensez-vous la quelle methode il faut que je creuse , je veu bien mettre des photos de mon servomoteur futaba s3003 pour essayer de trouver la 2eme methode

merci a vous d'avance encore pour un petit coup de pate