![]() |
Ho scritto queste line di codice con PicbasicPro: start: pulsout 0,150 pause 18 pulsout 0,120 pause 18 goto start In sostanza voglio che il mio servo,hs311 hitec, collegato a RB0 del Pic 16f84A vada avanti e indietro o a qualsiasi posizione specificata nel codice,invece va solo in una direzione e per farlo ritornare al punto di partenza devo riprogrammare il Piccon un nuovo data ad esempio pulsout 0,300. grazie chip_ Soluzione? |
Citazione:
Se la coppia di istruzioni pulsout-pause rappresenta tutto l'impulso(semionda positiva e negativa), la durata totale deve essere sempre uguale. Vado a memoria: la durata di un canale è di 2msec, lo zero corrisponde ad 1msec e la larghezza dell'impulso va da 0,5 a 1,5 msec; quando l'imp. è 0,5, la pausa deve essere 1,5 e viceversa. |
Citazione:
Non ho capito molto bene.. cmq, grazie. chip_ |
Citazione:
Quando al servo arriva un segnale in cui le due semionde hanno la stessa durata rimane fermo al centro; se la semionda positiva diventa più corta o più lunga della negativa, il servo ruota da una parte o dall'altra. La durata totale delle due semionde rimane, però, sempre la stessa. Se le istruzioni pulseout e pause rappresentano le due semionde, la somma dei valori ad esse associati deve essere sempre uguale: 150 e 50, 120 e 80 etc... E' più chiaro? |
Citazione:
la durata della semionda positiva (impulso) determina la posizione del servo la somma della semionda positiva e della semionda negativa (durata del canale) deve essere 2 msec la larghezza della semionda positiva deve essere compresa tra 0.5 e 1.5 msec, pena il superamento dei fondocorsa del servo |
Citazione:
In pratica, il tempo in cui funzionano gli altri canali presenti sulla radio. In definitiva, se la radio avesse un solo canale, gli impulsi si susseguirebbero immediatamente o ci deve essere una pausa... di riflessione? :) |
Se il comando pause 18 si riferisce ai 18 msec di intervallo fra gli impulsi omologhi per quel dato canale all' interno del treno di onde, allora, premesso che pulseout deve essere > 0.5 msec e < 1.5 msec, manca l' informazione relativa alla parte negativa della semionda (2 - x) e gli impulsi sono distanziati di 20 msec come da manuali vari |
Citazione:
20 msec é la durata del pacchetto completo: canali, pausa e picco di sincronizzazione del demultiplexer editato: Citazione:
mettiamo il caso di avere una rx a 6 canali e una tx a 4. e tutto funziona tranquillamente perché ogni canale ha il suo spazio, che sia realmente presente o meno, sia nella tx che nella rx |
Citazione:
pulseout 0,150 pause 0,150 pause 18 etc. etc. |
sto facendo ipotesi, perché non conosco il picbasicpro secondo me dovrebbe essere pulsout= 0,7 pause=2-pulsout pause=18 ma se il pulsout non varia da 0,5 a 1,5 il servo parte, ma poi resta fermo alla posizione 0,7 non so che comandi corrispondano (se esistono) a "per pulsout che va da 0,5 a 1,5 ..... ecc." e se c'é un incremento automatico o no tipo "step" o qualcosa di simile. Ragazzi sono 15÷20 anni che ho mollato il basic !!!!! |
Per non confondere le idee forse è meglio non parlare di semionde negative. L'onda quadra (in realtà rettangolare) è sempre positiva, infatti và dallo zero Volt a + 5 Volt. ( in certi trasmettitori và da + 5 Volt a Zero Volt). Per ogni canale c'è un'onda quadra e il numero di canali del trasmettitore formano un "treno" di onde. Questi treni di onde sono separati da un breve intervallo di tempo senza nessuna onda e si ripetono con una certa frequenza costante. Il segnale completo è composto da un treno di onde quadre (che sono i vari canali del TX) conpreso una pausa tra due serie di onde. Anche se i tempi delle onde quadre vengono modificati dal comando del TX, la durata dall'inizio della prima onda fino a comprendere la pausa della fine del treno onde, rimane sempre costante. (in alcuni TX è il primo fronte di salita del segnale che dà lo start del nuovo treno di impulsi). Spero di non aver confuso le idee ai lettori. Ciao a tutti. Naraj. |
Citazione:
Ora che ci penso è ovvio che non gli funziona: lui fa il loop, ma sempre con lo stesso valore start: pulseout 0,150 ... ... goto start va cambiato in: L = 0 start: pulseout 0,150 + L pause 0,150 - L pause 18 qui va una funzione che assegna il valore ad L (positivo o negativo) goto start |
Citazione:
|
Citazione:
vediamo se ci riesco,dal manuale del PicBasicPro: PULSOUT PULSOUT Pin,Period Generates a pulse on Pin of specified Period. The pulse is generated by toggling the pin twice, thus the initial state of the pin determines the polarity of the pulse. Pin is automatically made an output. Pin may be a constant, 0 - 15, or a variable that contains a number 0 - 15 (e.g. B0) or a pin name (e.g. PORTA.0). The resolution of PULSOUT is dependent upon the oscillator frequency. If a 4MHz oscillator is used, the Period of the generated pulse will be in 10us increments. If a 20MHz oscillator is used, Period will have a 2us resolution. Defining an OSC value has no effect on PULSOUT. The resolution always changes with the actual oscillator speed. ' Send a pulse 1mSec long (at 4MHz) to Pin5 PULSOUT PORTB.5,100 PWM |
Faticosamente .... qualcosa comincia a schiarirsi Citazione:
Citazione:
Citazione:
|
Grazie e voi ho ricavato questo codice *funzionante alla grande*, provato ieri sera su 16F84A@4MHz :D ' su PORTB.5 e' collegato il servo PORTB.5=0 ' forzo uscita bassa loop: POSIZ=150 '<-- 100=0°, 150=center, 200=180° PULSOUT PORTB.5,POSIZ PAUSEUS (2000-POSIZ*10) PAUSE 18 goto loop Prima di leggervi ho provato a seguire le specifiche *cannate* di qualcun'altro che mi ha fatto bruciare il servo... :angry: bel lavoro gente !!!! A proposito del mio servo bruciato. Da alcuni test ho notato che il motore non gira piu' in senso orario,mentre il potenzionetro sembra funzionare. Smontando il servo ci sono giusto quattro componenti in croce: il motorino, 2/3 condensatori, qualche condensatore e resistenza DIL il potenziometro e un paio di integrati (forse i comparatori???). Qualcuno di voi ha mai affrontato il problema? Bye, Mind |
Citazione:
Citazione:
Non ancora; ho un servo fuori uso(và a fondo corsa), ma non ho ancora cercato di ripararlo. |
Citazione:
Non sbagli. L'intenzione era quella di mettere a disposizione del codice funzionante riguardo ai timing. Se ricompili con POSIZ=200 vedrai il servo posizionarsi all'estremita'. <!--QuoteBegin-CantZ506@13 aprile 2005, 09:56 Che significa? Gira al contrario o non gira proprio? [/quote] Significa che quando deve girare in un senso lo fa correttamente (via telecomando o circuito di test che sia), viceversa non c'e' verso di farlo girare dall'altro. Tant'e' che se giro la levetta a sinistra il servo ci va, ma quando mollo la levetta non torna al centro. Bye, Mind |
Citazione:
http://www.teamkiss.com/antweight.html Bye, Mind |
Citazione:
Azzardo l'ipotesi che sia il secondo ad aver problemi; il comparatore sembra che faccia il suo lavoro, comandando la rotazione, ma il ponte sembra non commuti le polarità al motore. Non credo sia facile trovare dei sostituti pin to pin. |
Citazione:
Credo anch'io: appena riesco controllo col tester se il 6688 effettivamente comanda il ponte. Anche perche' il tutto e' successo dopo che il motore ha sforzato qualche secondo a fondocorsa. <!--QuoteBegin-CantZ506@13 aprile 2005, 14:02 Non credo sia facile trovare dei sostituti pin to pin. [/quote] Il mio fornitore di fiducia ha questo: SGS L293D E' un driver per 2 motori: non e' pin to pin, ma con qualche filo volante ci si riesce a farlo stare. L'unico dubbio sono i 0.6A massimi. Bye, Mind |
Citazione:
Se giro il potenziometro a fondo corsa ho rispettivamente 0 e 2.5V Se giro dall'altra parte, ho 2.5 e 0V Cio' che non varia e' la tensione sull'uscita di uno dei terminali del motore che rimane fissa a 4.5V circa, mentre sull'altro va da 0 a 4.5 a seconda del potenziometro: questo spiega xche' gira solo in un senso. Appena lo recupero, trapianto l'L293 al posto del ponte-H. Bye, Mind |
| Tutti gli orari sono GMT +2. Adesso sono le 10:53. |
Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002