Salve a tutti, come potete leggere dal titolo ho bisogno di aumentare la precisione di un motore passo passo...vi spiego meglio: Dato che all'esame devo portare un progetto ho deciso di usare arduino e porterò un piccolo braccio robotico formato da 2 motori nel quale un motore server per muovere la penna a destra e a sinistra e un altro motore per muovere la penna avanti e dietro e che scriva una parola data in input. Il problema è che per scrivere la A certe volte la scrive bene ma certe volte la scrive male perchè il motore non lavora sempre bene e per risolvere ciò volevo aumetarne la precisione ma in modo software...vi faccio vedere il programma che sto facendo per scrivere la A
i=0;
while (i<=50) {
i++;
digitalWrite(motorino4, LOW);
digitalWrite(motorino5, LOW);
digitalWrite(motorino6, LOW);
digitalWrite(motorino7, HIGH);
delay(10);
digitalWrite(motorino4, LOW);
digitalWrite(motorino5, LOW); //scrive sopra
digitalWrite(motorino6, HIGH);
digitalWrite(motorino7, LOW);
delay(10);
digitalWrite(motorino4, LOW);
digitalWrite(motorino5, HIGH);
digitalWrite(motorino6, LOW);
digitalWrite(motorino7, LOW);
delay(10);
digitalWrite(motorino4, HIGH);
digitalWrite(motorino5, LOW);
digitalWrite(motorino6, LOW);
digitalWrite(motorino7, LOW);
delay(10);
if (i==50){
while (i<=55){
i++;
digitalWrite(motorino, HIGH);
digitalWrite(motorino1, LOW);
digitalWrite(motorino2, LOW);
digitalWrite(motorino3, LOW);
delay(10);
digitalWrite(motorino, LOW);
digitalWrite(motorino1, HIGH);
digitalWrite(motorino2, LOW);
digitalWrite(motorino3, LOW);
delay(10);
digitalWrite(motorino, LOW); //scrive a destra
digitalWrite(motorino1, LOW);
digitalWrite(motorino2, HIGH);
digitalWrite(motorino3, LOW);
delay(10);
digitalWrite(motorino, LOW);
digitalWrite(motorino1, LOW);
digitalWrite(motorino2, LOW);
digitalWrite(motorino3, HIGH);
delay(10);
if (i==55){
while(i<=80){
i++;
digitalWrite(motorino4, HIGH);
digitalWrite(motorino5, LOW);
digitalWrite(motorino6, LOW);
digitalWrite(motorino7, LOW);
delay(10);
digitalWrite(motorino4, LOW);
digitalWrite(motorino5, HIGH);
digitalWrite(motorino6, LOW);
digitalWrite(motorino7, LOW);
delay(10);
digitalWrite(motorino4, LOW);
digitalWrite(motorino5, LOW);
digitalWrite(motorino6, HIGH);
digitalWrite(motorino7, LOW); //scrive giù
delay(10);
digitalWrite(motorino4, LOW);
digitalWrite(motorino5, LOW);
digitalWrite(motorino6, LOW);
digitalWrite(motorino7, HIGH);
delay(10);
if(i==80){
while (i<=101){
i++;
digitalWrite(motorino, LOW);
digitalWrite(motorino1, LOW);
digitalWrite(motorino2, LOW);
digitalWrite(motorino3, HIGH);
delay(10);
digitalWrite(motorino, LOW);
digitalWrite(motorino1, LOW);
digitalWrite(motorino2, HIGH);
digitalWrite(motorino3, LOW);
delay(10);
digitalWrite(motorino, LOW);
digitalWrite(motorino1, HIGH);
digitalWrite(motorino2, LOW); //scrive a sinistra
digitalWrite(motorino3, LOW);
delay(10);
digitalWrite(motorino, HIGH);
digitalWrite(motorino1, LOW);
digitalWrite(motorino2, LOW);
digitalWrite(motorino3, LOW);
delay(10);
if(i==101){
while (i<=121){
i++;
digitalWrite(motorino, HIGH);
digitalWrite(motorino1, LOW);
digitalWrite(motorino2, LOW);
digitalWrite(motorino3, LOW);
delay(10);
digitalWrite(motorino, LOW);
digitalWrite(motorino1, HIGH);
digitalWrite(motorino2, LOW);
digitalWrite(motorino3, LOW);
delay(10);
digitalWrite(motorino, LOW); //scrive a destra
digitalWrite(motorino1, LOW);
digitalWrite(motorino2, HIGH);
digitalWrite(motorino3, LOW);
delay(10);
digitalWrite(motorino, LOW);
digitalWrite(motorino1, LOW);
digitalWrite(motorino2, LOW);
digitalWrite(motorino3, HIGH);
delay(10);
if(i==121){
while (i<=146){
i++;
digitalWrite(motorino4, HIGH);
digitalWrite(motorino5, LOW);
digitalWrite(motorino6, LOW);
digitalWrite(motorino7, LOW);
delay(10);
digitalWrite(motorino4, LOW);
digitalWrite(motorino5, HIGH);
digitalWrite(motorino6, LOW);
digitalWrite(motorino7, LOW);
delay(10);
digitalWrite(motorino4, LOW);
digitalWrite(motorino5, LOW);
digitalWrite(motorino6, HIGH);
digitalWrite(motorino7, LOW); //scrive giù
delay(10);
digitalWrite(motorino4, LOW);
digitalWrite(motorino5, LOW);
digitalWrite(motorino6, LOW);
digitalWrite(motorino7, HIGH);
delay(10);
if (i==146){ delay(1000000);
}}}}}}}}}}}}}
esiste un altro modo software per aumentare la precisione del motore 2(motorino 4,5,6,7)?
grazie mille e scusate per la lunghezza del post xD
P.s. ho letto che c'è un'altra combinazione in binario per scrivere( questo che uso è 8,4,2,1) e che serve proprio per diminuire i passi ma aumenta la precisione però non funge.