________________________________________________________________ ____ __ __ / ___________________________________________________________ ____ __ _ / ` \ / \[21]/ + ,\_____ ___/ . ` |\/ , \__/ . \____ /:/=[un affaire d'antenne qui tourne] =\:\ _____/ ` x || , . " :X \_______________________________ ____ ____ / , ` ` || + , () . x , . ` ' ` \_ \ ,\\_ +\_ \ 'M ` | . || ` | ` , ` , + , ` ,--, + . \\_ \_ \ , \\_ K -+- / |+ -+- . , ` , ,',/ ,'. \_ \ . \\_ \_ \ - | ` / . | ; + + . ` | : . :`` ,_): ' ` \\_ \_ \ \\_` 1 , / ` . . x , .-=+=- `. ,. ,' ` , \_ \ + \\_` \_ \ 1 /\_____ x ' , . . X | ` `--' ` ` \\_ \_ \ , \\_ 1 + \\_ \___________________ , . . ` , + ' , , ; x ._\ \___\\___\ \ . \_ \ \__________________________________/ \ ` , \\_ /:/=[ Aka: antenna rotator ]=\:\ \ \__\__________________________________________ ______________________________ \` \__\ /__/ \\_ /:/=[ n0p ]=\:\ _// \__\________________________/__/ Je n'ai pas l'intention de faire un grand texte style tutorial pour mon ratator. Je vais seulement indiquer quelque precisions importante et pour le reste vous n'aurez qu'à me mailer à mon addresse actuelle soit celle à la fin de ce petit article. Premierement le but de ce projet était en premier lieu de faire quelque chose qui fonctionnait independament du pc, qui utilisait un step motor et qui utilisait le "PCL" du PIC. Il n'a donc pas été pensé afin d'être le plus pratique possible. Pour répondre tout de suite à la question, oui le PIC pourrait etre branché au PC afin de pouvoir controller l'angle de l'antenne avec un software. Ce serait meme selon moi plus facile que d'utiliser des bouton car nous n'avons plus besion de temporisation, d'attente d'initialisation etc. Ceci étant dit, parlons un peu du step motor. Il à été recyclé d'un vieu lecteur disquette 5"1/4, il est unipolaire et fonctionne sous 12v, 70 ohms par coil. Les 2N2222a s ont donc un peu abusif mais je les avait sous la main. Vous pouvez donc ajuster votre choix de transistor en fonction du moteur que vous utiliserez. Vous pourriez aussi utiliser un moteur bipolaire avec deux H-bridges mais il faudrait modifier un peu le code du PIC. Les kick-back diode pourrait elle aussi être facilement remplacée par à peu près n'importe quoi qui peu supporter ~15v et l'ampèrage du moteur utilisé. Regardons de plus près ce PIC justement. J'ai utilisé un 16F88 car c'est avec eux que je travail en ce moment mais un 16f84(a), 16f628 ou tout autre equivalent ferait très bien l'affaire avec quelque modification mineur du code. Pour ce qui est du circuit RC branché au schmitt trigger, vous devrez vous assurer que la constante de temps soit compatible avec le programme du PIC. Pour les boutons branchés sur RB6, RB7, les valeurs ne sont pas trop critique mais pour ceux branchés à RB4 et RB5, je vous conseil vivement d'utiliser les valeurs de la shématique. Pour finir, pour ce qui est da l'alimentation, vous pouvez faire votre +5v avec à peu près n'importe quoi car les deux chips suce un minimum de courant, le +12v quant à lui, peu venir d'un PC ou de tout ce qui peut fournir le moteur en ampèrage. Ha! j'oubliais, le montage a un bug, vous vous en rendrez compte, à la suite d'un changement de l'angle de l'antenne du coté opposé à celui utilisé précédament, l'antenne va dabors faire un pas dans l'ancien sens pour ensuite faire les autres du coté demandé. Cela est du a une mauvaise programmation mais ce n'est qu'un petit circuit vite fait et je ne trouvais pas vraiment important de me forcer pour le rendre parfait. Rien ne vous empêche de modifier mon code est de m'envoyer la correction ;). J'espère que ces petites précisions pourrons vous aider à construire votre propre rotator et si ce n'est pas suffisant, n'ésitez pas à m'écrire. P.S. Je n'ai jamais suivit de cours en électronique donc je ne suis pas très au courant des normes et des conventions pour ce qui est de l'optimisation de protoboard et la création de shématique. J'espère que ceci ne rendra pas trop difficile la compréhention de ce texte. n0p (n0px90@gmail.com) ---------------------- AJOUT DE DERNIERE MINUTE --------------------- Apres avoir donné mon article en version final a Wyzeman, j'ai reçu une chip qui me permet entre autre de driver un moteur unipolaire comme celui utilisé pour mon antenna rotator. J'ai donc décidé de refaire mon circuit en incluant la chip en question (A6801 d'Allegro) qui remplace les quatres transistors et les quatres kick-back diode. J'ai ajouté une pic de ce montage (circuit_ver1-1.JPG) mais pas de shematic car la transition de un a l'autre est tres facile et de toute façon, ce n'est pas une chip qui cour les rues. ---------------------- AJOUT DE DERNIERE MINUTE --------------------- ---------------------------- cut here ------------------------------- LIST p=16f88 #include __CONFIG _CONFIG1, B'11111111110000' ; WDT Disable, BOR Enable, PWRT Enable __CONFIG _CONFIG2, B'11111111111111' OPTION_VAR EQU B'10000101' OSCCON_VAR EQU B'01111110' INTCON_VAR EQU B'10000000' BANK0 macro bcf STATUS, RP0 endm BANK1 macro bsf STATUS, RP0 endm CBLOCK 0x020 pointer :1 postscaler :1 speed :1 w_tmp status_tmp ENDC org 0x000 goto init org 0x004 movwf w_tmp swapf STATUS, w movwf status_tmp call inttmr0 swapf status_tmp, w movwf STATUS swapf w_tmp, f swapf w_tmp, w retfie inttmr0 decf postscaler, f bcf INTCON, TMR0IF return init clrf PORTA clrf PORTB BANK1 movlw OPTION_VAR ; Register initialisation movwf OPTION_REG movlw OSCCON_VAR movwf OSCCON movlw INTCON_VAR movwf INTCON clrf ANSEL ; All PORTA = Digital clrf TRISA ; All PORTA = Output BANK0 clrf pointer ; pointer = 0 clrf speed ; speed = 0 init_button ; wait for button initialisation btfsc PORTB, 4 goto init_button btfsc PORTB, 5 goto init_button goto start delay ; 8.192ms @ 8Mhz clrf TMR0 bcf INTCON, TMR0IF loop btfss INTCON, TMR0IF goto loop return delay_sec ; 0.8192s @ 8Mhz clrf TMR0 bcf INTCON, TMR0IF movlw 0x10 ; Numbre of TMR0 overflow (prescaler 1:64) movwf postscaler bsf INTCON, TMR0IE loop_sec movf postscaler, w sublw 0x00 ; postscaler = 0? btfss STATUS, Z goto loop_sec bcf INTCON, TMR0IE return step_cw movf pointer, w call bits movwf PORTA ; One step forward btfss PORTB, 6 ; If RB6 set speed-up cw call delay_sec call delay movf pointer, w sublw 0x03 ; pointer = 3? btfss STATUS, Z goto inc_ptr clrf pointer return inc_ptr incf pointer, f return step_ccw movf pointer, w call bits movwf PORTA ; One step backward btfss PORTB, 7 ; If RB7 set speed-up cw call delay_sec call delay movf pointer, w sublw 0x00 ; pointer = 0? btfss STATUS, Z goto dec_ptr movlw 0x03 movwf pointer return dec_ptr decf pointer, f return bits addwf PCL, f retlw 0x01 retlw 0x02 retlw 0x04 retlw 0x08 start btfsc PORTB, 4 call step_cw btfsc PORTB, 5 call step_ccw btfsc PORTB, 6 call step_cw btfsc PORTB, 7 call step_ccw goto start END ---------------------------- cut here -------------------------------