Eliminare rumore alimentazione motore PWM
Moderatori: carloc,
g.schgor,
IsidoroKZ,
BrunoValente
0
voti
Io attualmente utilizzo quest'ultimo schema e funziona tutto benissimo, ho soltanto il problema del rumore.
-
Salvatore129
0 2 - Messaggi: 44
- Iscritto il: 1 feb 2018, 18:18
1
voti
Salvatore129 ha scritto:Se intendi il segnale che fornisce il feedback (posizione) del motore, è la tensione che fornisce il potenziometro da 10K.
Assolutamente no, quello è il comando e il potenziometro non fornisce nessuna tensione, non è un componente attivo ma è passivo, si ha una caduta di potenziale in base alla posizione.
Salvatore129 ha scritto:Cosa intendi per "segnale di ritorno"?
Tu parli di PID (Proportional Integral Derivative), il PID è un controllo retro-azionato e serve per forza un segnale di feedback altrimenti 2 parti del controllo la "I" e la "D" sono indeterminate e rendono il sistema potenzialmente instabile.
Ignoro come è scritto il codice che usi ma da qualche parte ci deve essere un segnale di feedback, altrimenti non funziona.
Dagli schemi che riporti non hai nessun segnale di ritorno dai motori quindi serve un controllo ad anello aperto, non ha senso usare del codice per un controllo ad anello chiuso.
0
voti
Il segnale di feedback è fornto dal potenziometro.
Il potenziometro funge da encoder...
Il potenziometro fornisce ad uningresso di Arduino una tensione variabile da 0v a 5v durante la rotazione del motore che è attaccato ad esso, e proprio questa tensione che arriva all'ingresso analogico di Arduino è il segnale di feedback.
Il potenziometro è l'elemento che legge la posizione angolare del motore, quindi fornisce una lettura ANALOGICA sottoforma di tensione elettrica (da 0v a 5v).
Il potenziometro funge da encoder...
Il potenziometro fornisce ad uningresso di Arduino una tensione variabile da 0v a 5v durante la rotazione del motore che è attaccato ad esso, e proprio questa tensione che arriva all'ingresso analogico di Arduino è il segnale di feedback.
Il potenziometro è l'elemento che legge la posizione angolare del motore, quindi fornisce una lettura ANALOGICA sottoforma di tensione elettrica (da 0v a 5v).
-
Salvatore129
0 2 - Messaggi: 44
- Iscritto il: 1 feb 2018, 18:18
1
voti
Nello schema dovevi in qualche modo legare i motori ai potenziometri. Come è disegnato sembra un controllo in velocità con i comandi sui potenziometri non un controllo di posizione.
Hai un controllo di posizione in base alla caduta di potenziale dei potenziometri quindi chi fornisce il comando sulla posizione da mantenere, è impostata direttamente nel codice ?
Un controllo PID se non tarato correttamente è potenzialmente instabile (oscilla).
Hai un controllo di posizione in base alla caduta di potenziale dei potenziometri quindi chi fornisce il comando sulla posizione da mantenere, è impostata direttamente nel codice ?
Un controllo PID se non tarato correttamente è potenzialmente instabile (oscilla).
0
voti
quindi chi fornisce il comando sulla posizione da mantenere, è impostata direttamente nel codice
Esatto, ll codice è stato sviluppato per controllare il feedback fornito dal potenziometro.
Si i potenziometri sono attaccati saldamente agli alberi dei motori, lo avevo gia specificato.
-
Salvatore129
0 2 - Messaggi: 44
- Iscritto il: 1 feb 2018, 18:18
1
voti
Lo avevo già scritto qui e qui, mi permetto di ripeterlo per la terza volta:
Salvatore129, per cortesia, disegna uno schemino decente che chiarisca la situazione, le riproduzioni multicromatiche di stile arduinico non sono schemi, sono disegni colorati.
Grazie.
Saluti

Grazie.
Saluti
W - U.H.F.
-
WALTERmwp
23,8k 4 8 13 - G.Master EY
- Messaggi: 7095
- Iscritto il: 17 lug 2010, 18:42
- Località: le 4 del mattino
0
voti
Appunto !Salvatore129 ha scritto:...utilizzo quest'ultimo schema e funziona tutto benissimo, ho soltanto il problema del rumore.
Non è che pretendi di fare un servocontrollo di precisione ... senza usare componenti e metodologie adeguate ?
Bye

0
voti
Io credo di aver capito dove risiede il problema.
Il problema sta nella risoluzione del potenziometro cioè:
Arduino legge il valore di resistenza (feedback) del potenziometro nel tempo T ad esempio 5000 ohm, il firmware elabora i dati e li confronta con la posizione "X" dell'auto in corsa (telemetria) ed infine fornisce il segnale utile affinchè il motore ruoti fino al raggiungimento della posizione "X", ad esempio 6520 ohm (ho scelto un valore casuale).
Quindi per raggiungere esattamente la posizione "X", il motore deve ruotare fino a portare il potenziometro ad un valore di 6520 ohm.
Ma è un valore che mai si potrà ottenere, se pensiamo che anche manualmente con un tester se vogliamo leggere il valore di 6520 ohm , dobbiamo ruotare il potenziometro con movimenti macro, leggeremo valori lontani (6500...6600...6480... etc...) e difficilmente vicini (ricordo che nel software esiste un parametro che tollera la risoluzione del potenziometro).
Quindi lo sketch fornisce la frequenza PWM ai motori finché non legge il valore 6520 ohm.
Ho notato che durante la posizione di "fermo" del motore e col rumore attivo, se tento di ruotare con la mano l'albero del motore (possiede un piccolo gioco di circa 2mm di rotazione in senso orario/antiorario) il rumore si azzera, perché sto "aiutando" il motore a far ruotare il potenziometro (montato saldamente con l'albero) per avvicinarlo alla posizione piu vicina a 6520 ohm (posizione target imposta dal firmware).
Quindi il problema potrebbe nascere da una poca tolleranza imposta dal software o da un errata configurazione del PID per il controllo del motore.
Qualcuno ha consigli da darmi o altro?
Il problema sta nella risoluzione del potenziometro cioè:
Arduino legge il valore di resistenza (feedback) del potenziometro nel tempo T ad esempio 5000 ohm, il firmware elabora i dati e li confronta con la posizione "X" dell'auto in corsa (telemetria) ed infine fornisce il segnale utile affinchè il motore ruoti fino al raggiungimento della posizione "X", ad esempio 6520 ohm (ho scelto un valore casuale).
Quindi per raggiungere esattamente la posizione "X", il motore deve ruotare fino a portare il potenziometro ad un valore di 6520 ohm.
Ma è un valore che mai si potrà ottenere, se pensiamo che anche manualmente con un tester se vogliamo leggere il valore di 6520 ohm , dobbiamo ruotare il potenziometro con movimenti macro, leggeremo valori lontani (6500...6600...6480... etc...) e difficilmente vicini (ricordo che nel software esiste un parametro che tollera la risoluzione del potenziometro).
Quindi lo sketch fornisce la frequenza PWM ai motori finché non legge il valore 6520 ohm.
Ho notato che durante la posizione di "fermo" del motore e col rumore attivo, se tento di ruotare con la mano l'albero del motore (possiede un piccolo gioco di circa 2mm di rotazione in senso orario/antiorario) il rumore si azzera, perché sto "aiutando" il motore a far ruotare il potenziometro (montato saldamente con l'albero) per avvicinarlo alla posizione piu vicina a 6520 ohm (posizione target imposta dal firmware).
Quindi il problema potrebbe nascere da una poca tolleranza imposta dal software o da un errata configurazione del PID per il controllo del motore.
Qualcuno ha consigli da darmi o altro?
-
Salvatore129
0 2 - Messaggi: 44
- Iscritto il: 1 feb 2018, 18:18
Chi c’è in linea
Visitano il forum: Nessuno e 61 ospiti