Ricevitore con protocollo MM53200
12 Anni 5 Mesi fa #6
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Ricevitore con protocollo MM53200
Quando puoi inserisci le immagini direttamente sul forum al fine di semplificare la lettura e visualizzazione delle stesse.
Le voci lasciale!
...il datasheet deve essere il mezzo con cui valutare e prendere le scelte.
Quale parametro andresti a vedere per accertarti che le voci sono corrette o sbagliate?
Perche' usi i foto-accoppiatori con 12V?
...se poi metti le masse in comune i foto-accoppiatori non disaccoppiano nulla!
Per il software ti rimando agli esempi che ho scritto.
Guarda il file sorgente della libreria .
Controlla le impostazioni dei registri e non dovrebbe essere complicato capire il resto.
Le quattro uscite PWM o meglio coppie sono indipendenti, ma non la singola coppia.
Il timer base e' inoltre lo stesso per ogni coppia quindi l'indipendenza dei 4 segnali PWM e' nel Duty Cycle e non nella frequenza.
Saluti,
Mauro
Le voci lasciale!
...il datasheet deve essere il mezzo con cui valutare e prendere le scelte.
Quale parametro andresti a vedere per accertarti che le voci sono corrette o sbagliate?
Perche' usi i foto-accoppiatori con 12V?
...se poi metti le masse in comune i foto-accoppiatori non disaccoppiano nulla!
Per il software ti rimando agli esempi che ho scritto.
Guarda il file sorgente della libreria .
Controlla le impostazioni dei registri e non dovrebbe essere complicato capire il resto.
Le quattro uscite PWM o meglio coppie sono indipendenti, ma non la singola coppia.
Il timer base e' inoltre lo stesso per ogni coppia quindi l'indipendenza dei 4 segnali PWM e' nel Duty Cycle e non nella frequenza.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Mauro Laurenti
- Moderator
Riduci
Di più
12 Anni 5 Mesi fa - 12 Anni 5 Mesi fa #7
da pupazzooo
Risposta da pupazzooo al topic Re: Ricevitore con protocollo MM53200
Intando grazie per la risposta. Le masse sono in comune perchè la massa è una sola alimentando sia la parte logica che i led con lo stesso alimentatore 12v. Quindi PWM0/PWM1 hanno solo un duty cycle (come PWM2/PWM3 e PWM4/PWM5) anche se sono messi in modo indipendente giusto ? Allora cosa c'è di indipendente ? (e se imposto le due uscite in modo complementare che cambia ?) In effetti questa cosa non riesco a capirla. Per il fatto della frequenza invece mi sembra di aver capito che è unica per tutte le uscite.
Per la risoluzione del pwm anche qui non riesco a capire. Se i calcoli mi dicono che il pwm (nel mio caso) ha una risoluzione massima di 10bit perchè ho la massima luminosità a 4096 (14bit) ?
Infine secondo te il fotoaccoppiatore non serve a nulla ? Collego l'uscita del pic con resistenza di 10ohm direttamente al gate del mosfet ? (IRLZ44N)
Ti ringrazio per le risposte e scusami se dico qualche eresia ma sono "nuovo" nel campo dell'elettronica. Ciao
Ps: è possibile usare le interruzioni su RB6/RB7 se uso i PWM fino al RB5 ? Grazie ancora. Ciao
Per la risoluzione del pwm anche qui non riesco a capire. Se i calcoli mi dicono che il pwm (nel mio caso) ha una risoluzione massima di 10bit perchè ho la massima luminosità a 4096 (14bit) ?
Infine secondo te il fotoaccoppiatore non serve a nulla ? Collego l'uscita del pic con resistenza di 10ohm direttamente al gate del mosfet ? (IRLZ44N)
Ti ringrazio per le risposte e scusami se dico qualche eresia ma sono "nuovo" nel campo dell'elettronica. Ciao
Ps: è possibile usare le interruzioni su RB6/RB7 se uso i PWM fino al RB5 ? Grazie ancora. Ciao
Ultima Modifica 12 Anni 5 Mesi fa da pupazzooo.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- pupazzooo
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 9
- Ringraziamenti ricevuti 0
12 Anni 5 Mesi fa - 12 Anni 5 Mesi fa #8
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Ricevitore con protocollo MM53200
Ciao,
per capire le ragioni dietro "la stranezza"di avere due segnali PWM uguali o complementari, leggi i seguenti articoli:
Automazione: Stadi di potenza per il controllo di Motori DC e passo-passo
Utilizzare il modulo CCP in modalità PWM ed Enhanced PWM
Se hai le masse in comune il foto accoppiatore non serve a nulla se non ad aumentare i costi.
Normalmente se hai 12V non serve disaccoppiare a meno che il secondo sistema non sia rumoroso (sistema motori o simili) in cui si possono anche avere extratensioni.
Quanto alla risoluzione il timer e' a 14 bit ma puoi avere risoluzioni piu' basse per il PWM all'aumentare della frequenza.
Se hai una risoluzione PWM di 10 bit avrai il massimo a 1024 e non 4096.
...per le interruzioni, non vedo problemi.
Saluti,
Mauro
per capire le ragioni dietro "la stranezza"di avere due segnali PWM uguali o complementari, leggi i seguenti articoli:
Automazione: Stadi di potenza per il controllo di Motori DC e passo-passo
Utilizzare il modulo CCP in modalità PWM ed Enhanced PWM
Se hai le masse in comune il foto accoppiatore non serve a nulla se non ad aumentare i costi.
Normalmente se hai 12V non serve disaccoppiare a meno che il secondo sistema non sia rumoroso (sistema motori o simili) in cui si possono anche avere extratensioni.
Quanto alla risoluzione il timer e' a 14 bit ma puoi avere risoluzioni piu' basse per il PWM all'aumentare della frequenza.
Se hai una risoluzione PWM di 10 bit avrai il massimo a 1024 e non 4096.
...per le interruzioni, non vedo problemi.
Saluti,
Mauro
Ultima Modifica 12 Anni 5 Mesi fa da Mauro Laurenti.
Si prega Accedi o Crea un account a partecipare alla conversazione.
12 Anni 5 Mesi fa #9
da pupazzooo
Risposta da pupazzooo al topic Re: Ricevitore con protocollo MM53200
Intando grazie per la risposta. Ritornando alla risoluzione del pwm, se io ho un quarzo di 20mhz (con configurations bits dell'oscillatore HS) e uso una frequenza di 20khz per il pwm, secondo i miei calcoli la risoluzione massima è 10bit. Perchè allora la risoluzione massima la ottengo con duty cycle a 4095 ? Ti allego le configurazioni che ho fatto sul 4431:
#pragma config OSC = HS
#pragma config WDTEN = OFF
#pragma config LVP = OFF
//************************************************************
// Imposto pwm
//************************************************************
// Base dei tempi con prescaler 1:1, postscaler 1:1 e modo free running
PTCON0 = 0b00000000;
// Abilito la base dei tempi con conteggio a salire
PTCON1 = 0b10000000;
// Pwm out da 0 a 5 in modo indipendente
PWMCON0 = 0b01001111;
PWMCON1 = 0b00000000;
// Imposto periodo pwm (20khz)
PTPERL = 249;
O ho sbagliato qualcosa nella configurazione o non so ma ti assicuro che la massima luminosità è a 4095.
Un altra domanda (sempre se non chiedo troppo) è sulla funzione delay della tua libreria. Io ho il seguente codice (estratto dalla libreria)
// Funzione delay ms
void delay_ms (int value) {
unsigned int reference = 0;
unsigned int mainDelay;
unsigned int subDelay;
reference = value * delay_quartz_frequency_value;
for (mainDelay = 0; mainDelay < reference; mainDelay++) {
for (subDelay = 0; subDelay < 12; subDelay++);
} // Fine for
} // Fine delay ms
Ho il dubbio che ci sia qualcosa di sbagliato perchè usando la funzione con 3000ms (3secondi) a occhio dura si e no 1,5 sec. Possibile o è impressione mia ?
Ti ringrazio come sempre per la tua gentilezza. Ciao
#pragma config OSC = HS
#pragma config WDTEN = OFF
#pragma config LVP = OFF
//************************************************************
// Imposto pwm
//************************************************************
// Base dei tempi con prescaler 1:1, postscaler 1:1 e modo free running
PTCON0 = 0b00000000;
// Abilito la base dei tempi con conteggio a salire
PTCON1 = 0b10000000;
// Pwm out da 0 a 5 in modo indipendente
PWMCON0 = 0b01001111;
PWMCON1 = 0b00000000;
// Imposto periodo pwm (20khz)
PTPERL = 249;
O ho sbagliato qualcosa nella configurazione o non so ma ti assicuro che la massima luminosità è a 4095.
Un altra domanda (sempre se non chiedo troppo) è sulla funzione delay della tua libreria. Io ho il seguente codice (estratto dalla libreria)
// Funzione delay ms
void delay_ms (int value) {
unsigned int reference = 0;
unsigned int mainDelay;
unsigned int subDelay;
reference = value * delay_quartz_frequency_value;
for (mainDelay = 0; mainDelay < reference; mainDelay++) {
for (subDelay = 0; subDelay < 12; subDelay++);
} // Fine for
} // Fine delay ms
Ho il dubbio che ci sia qualcosa di sbagliato perchè usando la funzione con 3000ms (3secondi) a occhio dura si e no 1,5 sec. Possibile o è impressione mia ?
Ti ringrazio come sempre per la tua gentilezza. Ciao
Si prega Accedi o Crea un account a partecipare alla conversazione.
- pupazzooo
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 9
- Ringraziamenti ricevuti 0
12 Anni 5 Mesi fa #10
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Ricevitore con protocollo MM53200
Ciao,
la massima luminosità sara' a 4095 ma in reata' la ottieni gia' a partire da 1023 (piu'o meno), ovvero da 1023 a 4095 la tua uscita e' posta fissa ad 1.
Se fai uso del delay interno al progetto per il controllo dei mori potrebbe essere che ci siano problemi.
Ti consiglio di usare la libreria dedicata delay.h e delay.c (non e' precisissima per il modo con cui e' realizzata, ma parliamo di poche decine di ms).
Saluti,
Mauro
la massima luminosità sara' a 4095 ma in reata' la ottieni gia' a partire da 1023 (piu'o meno), ovvero da 1023 a 4095 la tua uscita e' posta fissa ad 1.
Se fai uso del delay interno al progetto per il controllo dei mori potrebbe essere che ci siano problemi.
Ti consiglio di usare la libreria dedicata delay.h e delay.c (non e' precisissima per il modo con cui e' realizzata, ma parliamo di poche decine di ms).
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.