Ciao a tutti, spero di non sbagliare a chiedere aiuto in questa sessione, purtroppo per me sono appassionato di elettronica ma non abbastanza esperto...vorrei chiedervi se è possibile attuare il mio progetto e quale sketch usare. Io ho bisogno di muovere un motore DC 12v 250w di pochi centimetri in avanti e indietro, la rotazione deve essere comandata da un potenziometro che partendo da un punto morto (512) deve far salire una leva fino a fermarsi ad un certo valore (supponiamo 800), cosi anche per l'altro senso di marcia, in pratica quando muovo il potenziometro in un senso il motore dovrebbe muoversi in base a quanto ho variato il valore del potenziometro ,non deve assolutamente fare giri completi, al massimo 1\² giro. Si può fare? Ovviamente collegando un ponte H ad arduino
Secondo me un motore 12V 250W non é costruito per fare una rotazione di 45° - 90° - 180°.
Ti serve un ingranaggio di riduzione giri molto demoltiplicato e un encoder per leggere la posizione.
Ciao Uwe
Ti serve un riduttore di giri, di idonea resistenza meccanica, e un potenziometro che rileva la posizione dell'asse, in pratica l'equivalente della meccanica di un servo RC.
Poi c'è la questione software che è decisamente complesso in quanto è necessario implementare un pid con controllo velocità e posizione.
Per il software puoi trovare tutto quello che serve nel progetto OpenServo, non è nativo per Arduino però è scritto in C Ansi per processori AVR, quindi facilmente trasportabile nel IDE di Arduino.
Grazie per le risposte, in realtà io uso un motore che ha già un rapporto di riduzione 1/50, quello che mi servirebbe è poter muovere il motore muovendo il potenziometro, il problema e che il motore deve fermarsi ad un certo valore sia in un senso che nell'altro. È fattibile?
Il rapporto riduzione in realtà è l'opposto 50/1, ho già trovato un progetto che fa al caso mio, ma con un servo motore, quindi 3 fili, il mio motore ha 2 fili
Un motore DC e un servo si basano su principi diversi.
Un motore ha due fili, lo alimenti con una tensione continua e, finché lo alimenti, lui gira. Se inverti l'alimentazione lui gira in senso inverso. Se togli l'alimentazione lui si ferma in un punto qualunque, difficilmente determinabile a priori, dipendente dall'inerzia del rotore e dal carico meccanico.
Un servo ha tre fili, due per l'alimentazione (che non devi invertire) e uno per il segnale. Il segnale di comando del servo è costituito da un'onda quadra con periodo di 20ms. Quello che varia, e che fa girare il servo, è la durata della parte positiva dell'onda quadra, che generalmente può variare da 1ms a 2ms e anche più (dipende dal modello di servo). Sempre parlando in generale, a 1ms corrisponde un angolo di -90°, a 1,5ms corrisponde un angolo di 0° e a 2ms corrisponde un angolo di +90°. Questo è possibile perché all'interno del servo c'è un meccanismo, alla cui base sta un potenziometro. Qui puoi trovare una trattazione più esauriente.
Ciao,
P.
pgiagno:
1ms corrisponde un angolo di -90°, a 1,5ms corrisponde un angolo di 0° e a 2ms corrisponde un angolo di +90°.
Una correzione, 1 ms corrisponde a -45° e 2 ms a +45°, rispetto alla posizione centrale, -90° sono 500 us e +90° sono 2500 us.
Non tutti i servo RC possono ruotare per 180°, sia per questioni legate al blocco meccanico della corsa sia per l'eventuale programmazione dei limiti, quest'ultima vale solo per servo digitali programmabili.
L'inerzia con il motore che uso non è un problema, in realtà io adotto già questo sistema con un simulatore di guida, il potenziometro collegato all'albero del motore muove il motore avanti e indietro in base al valore del potenziometro, io vorrei ricreare la stessa cosa ma con il potenziometro collegato ad una leva, non al motore. So che si può fare usando Arduino e un ponte H , Monster moto shield, ma non so quale schetch usare...