13 marzo 12, 20:57 | #1 (permalink) Top |
User Data registr.: 11-04-2009 Residenza: Padova
Messaggi: 14
| Rallentare un servocomando in picbasic
Buona serata a tutti, ho realizzato un circuitino con un PIC 16F84 che, in base allo stato logico in un ingresso, mi muove un servocomando di 90°. Non sono un grande esperto, ma ho buttato giù 2 righe in picbasic, comando pulsout = 100 oppure pulsout = 200 in base allo stato logico. Fin quà tutto bene. Per rallentare il movimento del servo incremento il comando pulsout di una unità alla volta. Ottimo, funziona tutto! Il servo però si muove a piccoli scattini e si nota troppo. Penso di risolvere velocemente cambiando il quarzo da 4mhz a 8mhz, raddoppio tutti tempi e suddivido i 90° in 200 passi anzichè 100. Invece no, non funziona, il servo si posiziona in punti che non riesco a capire. Qualcuno mi sa dire perchè? ecco il codice che ho realizzato: @ DEVICE XT_OSC ' sets programmer to external oscillator - low power, HS would be for faster xtals. DEFINE OSC 4 ' for 4 mhz osc TRISA=%11111111 TRISB=%00000000 ingresso var porta.0 uscita var portb.0 segnale var byte segnale = 100 inizio: if ingresso = 1 then segnale = segnale + 1 else segnale = segnale - 1 endif if segnale > 200 then segnale = 200 if segnale < 100 then segnale = 100 pulsout uscita,segnale pause 18 goto inizio end Grazie a tutti quelli che mi aiutano e anche quelli che non mi aiutano ma può essere utile |
13 marzo 12, 22:16 | #2 (permalink) Top | |
Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| Citazione:
__________________ Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo Grazie "TRANQUILLO" FAI 15766 | |
13 marzo 12, 22:47 | #4 (permalink) Top |
User Data registr.: 29-05-2006 Residenza: Catania
Messaggi: 2.933
| Dalla descrizione dei sintomi sembrerebbe un timer che va in overflow e che quindi gira "a caso". Giusto il ragionamento che hai fatto, ma bisognerebbe avere informazioni in più sulla funzione "pulseout". Come gestisce i prescaler?
__________________ Il filo attaccato all'antenna non mente mai....Troppo vento, si torna a casa.... I miei circuiti elettronici autocostruiti: Postbruciatore per ventole intubate ; Circuito luci per aeromodello-elimodello ; Rallenta servo con protezione da corto circuito |
14 marzo 12, 21:34 | #6 (permalink) Top |
User Data registr.: 11-06-2007 Residenza: Sansepolcro (Ar)
Messaggi: 1.948
|
Due cose. Se ricordo bene la durata del pulseout se raddoppi la frequenza di clock devi raddoppiarla, quindi se a 4Mhz arrivavi a 200 adesso devi arrivare a 400. Prima della label inizio metti un Low Uscita per portare l'uscita a livello basso ad inizio programma perchè il pulseout lavora togglando, quindi se quando il programma parte trova l'uscita a livello alto ti lavora generando gli impulsi negati. Il pause 18 non devi raddoppiarlo basta che usi DEFINE OSC 8 e lui ti ricrea la pausa corretta. Magari non sono questi i problemi ma io proverei...
__________________ Modifica Optic 8Ch ---- Luci Programmabili ---- RcSwitch ---- Il Mio Sito HK500GT & Flymentor - HK450 & SMPilot- SMTech450 & SMPilot --- SM-PILOT [ The Stabilizer ] Ultima modifica di marcosinatti : 14 marzo 12 alle ore 21:38 |
14 marzo 12, 23:11 | #7 (permalink) Top |
User Data registr.: 11-04-2009 Residenza: Padova
Messaggi: 14
|
Infatti, era quello che pensavo anch'io quando ho creato il programma però non ha funzionato. A sto punto sospetto che il quarzo da 8mhz non "quarzi" correttamente. Appena ne recupero uno nuovo vi faccio sapere
|
15 marzo 12, 01:14 | #8 (permalink) Top | |
User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
15 marzo 12, 20:07 | #10 (permalink) Top |
User Data registr.: 11-04-2009 Residenza: Padova
Messaggi: 14
|
Grazie MSchiepp, era proprio quello il problema, la variabile va definita come word. A chi può essere utile, ecco lo stesso programmino funzionante con quarzo da 8mhz @ DEVICE XT_OSC ' sets programmer to external oscillator - low power, HS would be for faster xtals. DEFINE OSC 8 ' for 8 mhz osc TRISA=%11111111 TRISB=%00000000 ingresso var porta.0 uscita var portb.0 segnale var word segnale = 200 inizio: if ingresso = 1 then segnale = segnale + 1 else segnale = segnale - 1 endif if segnale > 400 then segnale = 400 if segnale < 200 then segnale = 200 pulsout uscita,segnale pause 18 goto inizio end Grazie ancora |
Bookmarks |
| |
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
Come rallentare l'atterraggio F-86 sabbre Eflite | vlanni | Aeromodellismo Ventole Intubate | 81 | 15 novembre 11 19:31 |
Rallentare la corsa di un servo | Mastertone | Radiocomandi | 2 | 17 agosto 10 14:24 |
miscelazione per rallentare atterraggio | gianmario | Aeromodellismo Ventole Intubate | 17 | 11 agosto 10 22:16 |
rallentare un attimo il piatto..ds 620.. | jaco-rc | Elimodellismo Acrobazia | 2 | 18 marzo 10 22:49 |
Devo far rallentare | estense | Circuiti Elettronici | 19 | 17 maggio 05 00:51 |