Pages: 1 2 [3]   Go Down
Author Topic: encoder rotativo recuperato da mouse  (Read 3089 times)
0 Members and 1 Guest are viewing this topic.
MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...

Logged

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

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10449
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il pdf e molto interessante, domani lo leggo per bene.
Per i pid e un po magia nera smiley
Se conosci derivate e integrali puoi capirci qualcosa
Logged

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

MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

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

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10449
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

esatto
Logged

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

Pages: 1 2 [3]   Go Up
Jump to: