Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 29 ottobre 10, 22:09   #1 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.070
Citazione:
Originalmente inviato da illez Visualizza messaggio
Non è più accademica o elegante, è l'unica praticabile.
Pensaci: hai due oggetti (l'input e l'output) che vanno a velocità diverse.
Non possono andare a velocità diverse se uno (l'out) aspetta l'altro.

Del resto tu stesso ti sei reso conto del problema
Scusa ma non capisco...

facendo una simulazione su una scala dei tempi:
T=0 Misuro l'impulso, supponiamo sia 1800uS
T=1800 Genero l'impulso 2000
T=3800 Mi metto a riaspettare il nuovo input
T=20000 Arriva il nuovo impulso...

Non capisco dove serva l'interrupt, ma anche andando all'indietro
T=0 Misuro l'impulso 1200
T=1200 Genero l'impulso 1000
T=2200 Mi metto a riaspettare il nuovo impulso
T=20000 Arriva il nuovo...

I due impulsi non vanno a velocità diverse hanno solo lunghezza diversa ma, se si vuole stare nello standard, la ripetizione è 50 hz.
Scomodare la gestione degli interrupt in questo caso non serve, la base dei tempi dei 50hz te la da la ricevente, non è necessario gestire anche la durata della pausa dell'impulso generato.
romoloman non è collegato   Rispondi citando
Vecchio 29 ottobre 10, 22:43   #2 (permalink)  Top
User
 
L'avatar di illez
 
Data registr.: 06-08-2007
Residenza: Empoli
Messaggi: 1.813
Citazione:
Originalmente inviato da romoloman Visualizza messaggio
...
I due impulsi non vanno a velocità diverse hanno solo lunghezza diversa ma, se si vuole stare nello standard, la ripetizione è 50 hz.
Scomodare la gestione degli interrupt in questo caso non serve, la base dei tempi dei 50hz te la da la ricevente, non è necessario gestire anche la durata della pausa dell'impulso generato.
Probabilmente sono stato portato fuori strada dalla domanda, perché è vero, il periodo può variare da 20 a 30ms mentre l'impulso tra 1 e 2ms.
L'interrupt non è necessario, basta leggere il timer per calcolare la durata dell'impulso.
Forse l'interrupt può tornare utile se il firmware fa anche altre cose, ma se fa solo quello direi che si può evitare.
Allora, sarà l'ora tarda, ma continuo a non capire la domanda iniziale.

Che vuol dire tornare indietro nel tempo?
Forse appena arriva alto l'impulso in ingresso lo porti alto anche in uscita e quindi non puoi farlo più breve di quanto ricevi (a meno di predire il futuro)?
Se questa era la domanda, direi che il flusso è sbagliato. Misuri impulso, generi di conseguenza l'impulso in out, più breve o più lungo.
__________________
.......
illez non è collegato   Rispondi citando
Vecchio 31 ottobre 10, 03:00   #3 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.070
Credo che la domanda iniziale fosse generata dalla voglia di far partire l'impulso in uscita in contemporanea con quello in entrata, ma la cosa è assolutamente inutile ed totalmente infattibile..
romoloman non è collegato   Rispondi citando
Vecchio 31 ottobre 10, 16:02   #4 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
ok

il problema è che se fosse solo leggere un impulso e poi come risposta sommare un ritardo opportuno.. il discorso era già risolto... ma in caso di impulsi al di sotto dei 1500 uS occorre avere un ritardo ancora più breve... quindi come intuito qui da tutti IMPOSSIBILE.. per questo si può optare nel rielaborare il ritardo durante la pausa dei 20 - 30 millisecondo e quindi dare risposta opportuna diminuendo il ritardo. tutto qui

Citazione:
Originalmente inviato da romoloman Visualizza messaggio
Credo che la domanda iniziale fosse generata dalla voglia di far partire l'impulso in uscita in contemporanea con quello in entrata, ma la cosa è assolutamente inutile ed totalmente infattibile..
faustog_2 non è collegato   Rispondi citando
Vecchio 31 ottobre 10, 22:00   #5 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.070
Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
il problema è che se fosse solo leggere un impulso e poi come risposta sommare un ritardo opportuno.. il discorso era già risolto... ma in caso di impulsi al di sotto dei 1500 uS occorre avere un ritardo ancora più breve... quindi come intuito qui da tutti IMPOSSIBILE.. per questo si può optare nel rielaborare il ritardo durante la pausa dei 20 - 30 millisecondo e quindi dare risposta opportuna diminuendo il ritardo. tutto qui
Scusami Fausto, ma forse se tu usassi una teminologia opportuna ti si capirebbe meglio.
Tu devi generare un impulso PWM con frequenza totale di 50Hz in base ad un impulso che ti arriva.
Che i due impulsi inizino asseme non ti importa nulla, ne tantomeno importa al servo.
Pertanto l'unica cosa che devi fare è:
leggere l'impulso, calcolare la durata di quello da generare in base alla tua funzione di trasformazione e generare l'impulso in uscita.
Non centrano nulla i ritardi o gli anticipi (credo sia la corretta definizione di "ritardo ancora più breve")

In picbasic il tuo problema lo si risolve con ben 8 righe di codice.
Esempio per aumentare del 20% le corse:

while 1=1
a=pulsin(gpio.portain,1);
if (a!=0) then
b=((a-150)*1.2)+150;
low gpio.portaout;
pulsout(gpio.portaout, b,1);
endif
wend

Alla fine non mi sembra così complesso...
romoloman non è collegato   Rispondi citando
Vecchio 02 novembre 10, 09:38   #6 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
ok

scusami se uso terminologia marziana!
appena ho tempo cerco di tradurre tutt oin termini di assembler
..comunque mi la tua osservazione coincide con la mia .. però detta meglio da te ovviamente..

a dopo


Citazione:
Originalmente inviato da romoloman Visualizza messaggio
Scusami Fausto, ma forse se tu usassi una teminologia opportuna ti si capirebbe meglio.
Tu devi generare un impulso PWM con frequenza totale di 50Hz in base ad un impulso che ti arriva.
Che i due impulsi inizino asseme non ti importa nulla, ne tantomeno importa al servo.
Pertanto l'unica cosa che devi fare è:
leggere l'impulso, calcolare la durata di quello da generare in base alla tua funzione di trasformazione e generare l'impulso in uscita.
Non centrano nulla i ritardi o gli anticipi (credo sia la corretta definizione di "ritardo ancora più breve")

In picbasic il tuo problema lo si risolve con ben 8 righe di codice.
Esempio per aumentare del 20% le corse:

while 1=1
a=pulsin(gpio.portain,1);
if (a!=0) then
b=((a-150)*1.2)+150;
low gpio.portaout;
pulsout(gpio.portaout, b,1);
endif
wend

Alla fine non mi sembra così complesso...
faustog_2 non è collegato   Rispondi citando
Vecchio 29 novembre 10, 11:29   #7 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
Problema !!!

ALLORA..

STUDIANDO E LEGGENDO DATASHEET COMPRESO.. APPRENDO CHE IL PWM NON SERVE E' SUFFICIENTE USARE IL MODULO TMR0

PERO PERO PERO.. C'E UN PROBLEMA CHE MI STA FACENDO GIRARE LE BAL..
OVVERO PRIMA DI OGNI COSA OCCORRE LEGGERE IL SEGNALE DALLA RICEVENTE...
ECCO E MI SPIEGO, HO FATTO UNA SEPLICE ROUTINE CHE FUNZIONA SOLO SE USO UN TEST PER SERVER OVVERO QUEI DISPOSITIVI CHE GENERANO DEGLI IMPULSI UGUALI A QUELLI PROVENIENTI DA UNA RICEVENTE, CON IL POTENZIOMETRO SI PUO VARIARE LA POSISZIONE DEL SERVO

FIN QUI SPETTACOLARE TUTTO OK... PERO SE USO LO STESSO CON UNA QUALUNQUE RICEVENTE.. KO!!! NIENTE DA FARE ELETTROENCEFALOGRAMMA PIATTO!!!

CHE NE PENSATE?

ECCO LA ROUTINE:

;-----------------------------------------------------
; This software read data fron Hitech receiver.
; For each pulse it's show value by led in binary mode
; the value 40 < COUNT < 207
;
; software by Fausto Giudice
;-----------------------------------------------------
PROCESSOR 16F628
RADIX DEC
INCLUDE "P16F628.INC"
__CONFIG 11110100010000B

;-----------------------------------------------------
COUNT EQU 32
CL EQU 33
;-----------------------------------------------------
ORG 0
;
; --------------------------------
; SET ANALOG/DIGITAL INPUTS PORT A
; --------------------------------
;
MOVLW 7 ;QUESTA OPZIONE E' NECESSARIA SE SI VUOLE USARE PORTA COME INPUT
MOVWF CMCON ;CMCON=7 set comperators off
;
; ----------------
; INITIALIZE PORTS
; ----------------
;
BSF STATUS,RP0 ; ** BANK1 **

MOVLW b'00000000'
MOVWF TRISB ; portB all pins output

MOVLW b'11110100'
MOVWF TRISA ; RB7-RB4 and RB1(RX)=input, others output

BCF STATUS,RP0 ; ** BANK0 **

CLRF COUNT
CLRF PORTB

MAIN BTFSS PORTA,2 ; IF (bit 0 di PORTA è = 1)
GOTO $-1

MOVLW 178 ; 1uS |
MOVWF CL ; 1uS | 4uS
GOTO $+1 ; 2uS | ****** ATTESA DI 0.9 mS ******
GOTO $+1 ; 2uS |
DECFSZ CL,F ; 1uS | 5uS * (178 - 1) = 885uS + 4 + 2 = 891 uS circa
GOTO $-2 ; 2uS |

XX BTFSS PORTA,2 ; 2uS
GOTO SHOW

INCF COUNT,F ; attesa di 1uS
GOTO XX ; attesa di 2uS totale 5uS

SHOW MOVF COUNT,W
MOVWF PORTB
CLRF COUNT
GOTO MAIN

END
faustog_2 non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Messaggio
Aumentare Range TX-RX Katana13 Radiocomandi 12 18 marzo 10 17:00
Aumentare la velocità imperatore82. Aeromodellismo Volo Elettrico 1 04 novembre 09 13:10
Aumentare la spinta twentynine Aeromodellismo Ventole Intubate 18 18 gennaio 09 19:19
Aumentare % miscela truffolo Automodellismo Mot. Scoppio On-Road 10 02 ottobre 07 10:24
eco 8 - aumentare il passo xfile69 Elimodellismo Principianti 0 19 agosto 06 22:51



Tutti gli orari sono GMT +2. Adesso sono le 01:08.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2026
www.baronerosso.it - www.toymagazine.it