Go Down

Topic: encoder rotativo recuperato da mouse (Read 4069 times) previous topic - next topic

niki77

Ahhhh, ma tu lesto ti riferivi al primo codice postato, no ma quello era fallosissimo e piu o meno lo sapevamo.
Io sostenevo che le modifiche fatte in seguito, spostando l'evento sul rising e leggendo direttamente il registro del pin era corretto.
Infatti lo è, perlomeno per quanto l'ho potuto provare.
Infatti le ultime prove effettuate hanno visto il mio encoder leggere ben oltre 3000 rpm.
C'erano un po di problemini che ho dovuto sistemare, ma ora è perfettamente funzionante.
Il primo problema  che ho scoperto e risolto era che le resistenze di pull down erano di valore troppo alto ed eviedentemente come hai detto tu ad alta velocità il fototransistor non riusciva a commutare perfettamente e arduino non rilevava più la transizione.
Il secondo problema rilevato una volta collegato l 'encoder al motore pare sia legato al fatto che l'encoder era fortemente disturbato dal motore. Per risolvere questo problema ho messo una cinghia e ho spostato l'encoder.
Ora impostata una velocità il controller tenta di tenere il motore alla velocità costante,ma ho notato che la regolazione inizialmente era abbastanza scontrosa, e giocando un po coi parametri del id ora èdiventata molto più fluida, ma mi piacerebbe approfondire l'argomento...

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

lesto

Il pdf e molto interessante, domani lo leggo per bene.
Per i pid e un po magia nera :)
Se conosci derivate e integrali puoi capirci qualcosa
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

niki77

Per i pid sento il mio amico (google)

I documenti sono veramente interessanti,
Se non ho capito male testano il tempo che passa da quando viene variato lo stato della porta (in vari modi, diretti o tramite funzione) e quando viene generato l'interrupt ?

Nella migliore delle ipotesi (PinChangeInt-1.1) arrotondiamo a 25us avremmo un F max di

1000000us / 25us = 40000 circa cicli al secondo

Applicando il tutto al mio encoder messo in modalità che legga solo 44 transizioni a giro posso gestire

40000 / 44 =  909 c.a. rivoluzioni al secondo =  54545 RPM  :smiley-eek-blue: (sempre ammesso che a quella velocità l'encoder legga , ma soprattutto non si sciolga come neve al sole)

C'ho preso ?
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

lesto

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up