Arduino MEGA + encoder + eeprom + LCD + steppers PROBLEMI

Ciao a tutti.
Io e un mio amico stiamo stiamo facendo un progetto in cui usiamo 3 encoder incrementali per muovere 3 motori step, visualizzare la posizione di ogni singolo motore su un display grafico ks0108 e salvare le relative posizioni su eeprom in modo da ripescarle all’accensione successiva.
Purtroppo devo aver sbagliato qualcosa e ogni tanto il programma fa casini:

  • perde le posizioni in memoria
  • ritornando indietro con l’encoder fino alla posizione 0 il motore inizia a girare per tot giri al contrario
  • non riesco a muovere più motori assieme, quando ne sposto uno gli altri non mi è possibile spostarli.

Vi posto qui sotto il codice, qualcuno riuscirebbe a darci una mano?
Grazie mille

P.S. Allego il file, non me lo fa postare come codice perchè troppo lungo

Lcd_v03beta.ino (8.98 KB)

Mi spiegate per cosa servono gli encoder con dei mototri passo passo?

Le variabili delle interruptroutine devono essere del tipo volatili.

http://www.arduino.cc/en/Reference/Volatile

Non credo che puoi mettere l' aggionamenteo degli eeprom dentro la funzione interrupt.

ciao Uwe

uwefed:
Mi spiegate per cosa servono gli encoder con dei mototri passo passo?

Come verifica del movimento, sistema antistallo, per il controllo con limitazione della coppia, non a caso esistono stepper dotati di albero posteriore per gli encoder. :slight_smile:

No gli encoder sono tipo quelli dello stereo per il volume, hanno delle manopole e vengono usate per scegliere di quanto spostare i motori e in che direzione. Uno scatto di encoder dovrebbe corrispondere a circa un grado di rotazione. Avrei potuto usare, più facilmente, dei potenziometri. Ma a noi piaceva più l’idea dell’encoder, tutto li.

ma alla fine hai motorizzato dei potenziometri ? :neutral_face: