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


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 28 novembre 04, 02:22   #1 (permalink)  Top
UserPlus
 
L'avatar di davidea
 
Data registr.: 24-08-2004
Residenza: palermo (pa)
Messaggi: 846
Invia un messaggio via MSN a davidea
ho riscritto, il sw, del pic16f84 del regolatore presente nella sezione articoli......

e mi sono reso conto che con quarzo da 4mhz, e tempo di esecuzione di 1microsecondo ad operazione, ho solo 100 istruzioni utili per poter leggere il valore dell' ingresso con una risoluzione pari a 10.........

quindi mi chiedevo, se invecce di tentare di far effettuare 2 cose contemporaneamente (comandare l' uscita pwm, e leggere l' ingresso), se nei 2millisecondi in cui l' ingresso e' alto, e devo leggerlo, spengo il motore?? e' grave? in teoria no! che ne pensate??
__________________
73 de davidea!!!
davidea non è collegato   Rispondi citando
Vecchio 28 novembre 04, 10:32   #2 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Visto che devi effettivamente fare due cose insieme ti propongo due soluzioni.

La prima consiste nel generare il PWM per il motore con dei ritardi basati sull'esecuzione di un certo numero (calcolato) di istruzioni utizzando due variabili per impostare i tempi di on e off in funzione del comando in ingresso; per acquisire il comando 'mentre' stai generando il PWM si può utilizzare l'interrupt ed il timer.
- Predisponi il prescaler del timer a /4; in questo modo il timer conta 1 ms ogni 250 cicli.
- Abilita l'interrupt sull'ingresso dove arriva il comando, fronte di salita
- Abilita l'interrupt sull'overflow del timer.

Quando scatta l'interrupt per ingresso alto (inizio dell'impulso):
- carica il timer a 7
- azzera il bit T0IF

Dopo 1 ms arriverà l'interrupt del timer, ad indicare che è passato il primo ms del comando (quello che non conta, per intenderci); a questo punto:
- azzera il timer
- disabilita l'interrupt del timer
- inverti lo stato dell'interrupt sul segnale (fronte di discesa).

Quando arriva il prossimo interrupt (fine del segnale di comando)
- leggi il timer per avere il valore del comando

Ricominicia da capo...

Come vedi le cose da fare sono pochissime e rubano solo qualche uS al ciclo di generazione del PWM in modo assolutamente impercettibile!

Prova a pensarci e dimmi come ti sembra...

Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 28 novembre 04, 10:37   #3 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
La seconda è molto simile come concetto, ma lavora a parti invertite:

Usa il timer per generare i due intervalli on e off per il pwm, caricandolo con i valori necessari e generando la frequenza in uscita nel ciclo di interrupt e usa invece il conteggio dei cicli per la determinazione del comando.

Il vantaggio di questo sistema è che fino a quando l'inizo o la fine del comando non cadono contemporaneamente all'inizio o fine di un ciclo PWM non ci sono ritardi o sovrapposizini nelle due funzioni.

Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 30 novembre 04, 23:12   #4 (permalink)  Top
UserPlus
 
L'avatar di davidea
 
Data registr.: 24-08-2004
Residenza: palermo (pa)
Messaggi: 846
Invia un messaggio via MSN a davidea
Citazione:
Originally posted by MSchiepp@28 novembre 2004, 10:37
Visto che devi effettivamente fare due cose insieme ti propongo due soluzioni.

La prima consiste nel generare il PWM per il motore con dei ritardi basati sull'esecuzione di un certo numero (calcolato) di istruzioni utizzando due variabili per impostare i tempi di on e off in funzione del comando in ingresso; per acquisire il comando 'mentre' stai generando il PWM si può utilizzare l'interrupt ed il timer.
- Predisponi il prescaler del timer a /4; in questo modo il timer conta 1 ms ogni 250 cicli.
- Abilita l'interrupt sull'ingresso dove arriva il comando, fronte di salita
- Abilita l'interrupt sull'overflow del timer.

Quando scatta l'interrupt per ingresso alto (inizio dell'impulso):
- carica il timer a 7
- azzera il bit T0IF

Dopo 1 ms arriverà l'interrupt del timer, ad indicare che è passato il primo ms del comando (quello che non conta, per intenderci); a questo punto:
- azzera il timer
- disabilita l'interrupt del timer
- inverti lo stato dell'interrupt sul segnale (fronte di discesa).

Quando arriva il prossimo interrupt (fine del segnale di comando)
- leggi il timer per avere il valore del comando

Ricominicia da capo...

Come vedi le cose da fare sono pochissime e rubano solo qualche uS al ciclo di generazione del PWM in modo assolutamente impercettibile!

Prova a pensarci e dimmi come ti sembra...

Michele

MICHELE, SEI MITICO!!!!!

ho fatto come dicevi, e non solo e' venuto la meta il programma, ha una frequenza di pwm di circa 1khz, e all' accensione usa la posizione dello stick come 0, quindi in teoria non dovrebbe partire appena dai alimentazione
in pratica invece, con stick a 0 ho dei leggeri tremolii, ma la regolazione e' fluidissima,
grazie 10000000

a chi interessasse allego il sorgente

p.s. l' ho pure reso indipendente dalla frequenza del quarzo.....

p.p.s michele, mi dai un parere sullo stile di scrittura del sorgente? come ti sembra ipercommentato?
__________________
73 de davidea!!!
davidea non è collegato   Rispondi citando
Vecchio 01 dicembre 04, 20:35   #5 (permalink)  Top
User
 
L'avatar di rivp6
 
Data registr.: 11-10-2004
Residenza: out of Verona
Messaggi: 573
E usare un PIC con PWM integrato? non è meglio?
rivp6 non è collegato   Rispondi citando
Vecchio 02 dicembre 04, 02:50   #6 (permalink)  Top
UserPlus
 
L'avatar di davidea
 
Data registr.: 24-08-2004
Residenza: palermo (pa)
Messaggi: 846
Invia un messaggio via MSN a davidea
Citazione:
Originally posted by rivp6@01 dicembre 2004, 20:40
E usare un PIC con PWM integrato? non è meglio?
si possibilmente viene meglio, ma considerando che ho circa 5 pic dentro, e 1 ludipipo, residuati bellici, e che sono agli inizi della programmazione!!!
daltronde, se cerco possibilmente trovo dei regolatori a basso prezzo, che funzioneranno pure megli, ma non l' ho fatto io con cio' che avevo in casa.
la vedo piu' come la scusa, per provare a scrivere un po' di codice ed esercitarmi....
__________________
73 de davidea!!!
davidea non è collegato   Rispondi citando
Vecchio 17 dicembre 08, 18:34   #7 (permalink)  Top
User
 
Data registr.: 17-12-2008
Messaggi: 5
ciao Davide
ho provato a costruire il regolatore con il tuo software e ho 2 problemi...

il primo è che in ogni caso non riesco a raggiungere il numero massimo di giri del motore.... ma questo penso dipenda dalla tensione di gate troppo bassa.... ma questo non importa....

il secondo, (che riguarda il sw), è che non riesco ad avere tutta l'escursione dei giri se non spostando anche il trim oltre che lo stick... come posso modificare il sorgente per avere l'intera escusione con il solo stick?...ovvero una maggiore variazione di giri con una minore variazione degli impulsi ricevuti....

spero di essere stato chiaro....

ciao
OSVALDO non è collegato   Rispondi citando
Vecchio 18 dicembre 08, 10:40   #8 (permalink)  Top
User
 
Data registr.: 17-12-2008
Messaggi: 5
naturalmente la domanda è rivolta anche a Mschiepp e a tutti coloro che vogliano aiutarmi

ciao
OSVALDO non è collegato   Rispondi citando
Vecchio 18 dicembre 08, 11:27   #9 (permalink)  Top
User
 
L'avatar di abe77
 
Data registr.: 15-04-2005
Residenza: Campobasso
Messaggi: 2.740
Occhio. Questo thread è vecchio di 4 anni. E Davidea ha fatto il suo ultimo accesso al forum circa un mese fa...
abe77 non è collegato   Rispondi citando
Vecchio 18 dicembre 08, 12:58   #10 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da OSVALDO Visualizza messaggio
naturalmente la domanda è rivolta anche a Mschiepp e a tutti coloro che vogliano aiutarmi

ciao
Vista l'età della discussione non mi ricordo molto dell'argomento... mandami il sw che vediamo se c'è qualcosa da ritoccare.

Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp 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 Commento
regolatore per brushed carmat99 Aeromodellismo Volo Elettrico 2 15 febbraio 07 20:00
Regolatore brushed Baochan Automodellismo 0 06 ottobre 06 15:10



Tutti gli orari sono GMT +2. Adesso sono le 05:31.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002