Ciao a tutti, devo realizzare un progetto universitario in ambito spaziale. La professoressa ci ha richiesto la progettazione di un motore vibrante, del quale posso controllare la frequenza di vibrazione, che dovrà essere compresa tra 8 e 30 Hz (devo poterla variare). Questo motore dovrà poi essere collegato al braccio per effettuare alcuni esperimenti. Non ci ha dato grandi indicazioni quindi brancoliamo un pò nel buio. Abbiamo acquistato dei motori DC che possono essere connessi ad Arduino, sui quali vorremo applicare delle masse che consentano la vibrazione, ma non sappiamo come controllare la frequenza, perchè appunto dobbiamo poterla variare in modo conscio (quindi ad esempio abbiamo scartato l'idea del potenziometro perchè con quello potremmo variarla ma senza sapere che valore di frequenza stiamo applicando). Sapete aiutarmi?
P.s. non abbiamo grandissime conoscenze su arduino dunque se possibile vorremmo fare una cosa non eccessivamente complicata
Buongiorno e benvenuta nella sezione Italiana del forum,
cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. ![]()
Per ricavare la frequenza della vibrazione del fuori centro devi come prima cosa misurare la velocità di rotazione, quindi l'ideale sarebbe stato acquistare un motore DC con encoder integrato, ma si può sempre aggiungerne uno esterno a quello che già avete.
Se la massa applicata è una sola, la frequenza di vibrazione sarà equivalente al numero di giri al secondo dell'albero del motore (o più probabilmente del motoriduttore considerate le velocità di rotazione in gioco).
L'unità di misura usata per la rotazione dei motori più diffusa è il RPM (Ripple Per Minute), a voi invece servirà valutare il RPS (Ripple Per Second), quindi avrete bisogno di un motore che a regime ruoti almeno a 30*6=180 RPM
A quel punto basta variare la velocità di rotazione con la classica tecnica del PWM e va bene anche il potenziometro perché hai il feedback dall'encoder.
In alternativa potreste applicare un accelerometro al motore e misurare la frequenza del segnale con un sensore IMU (Inertial Measurement Unit) da pochi euri, ma a livello software lo sketch Arduino probabilmente si complica un po' (in pratica si tratta di fare una FFT ed estrapolare la frequenza di base).
Ciao! provo a darvi qualche consiglio.
Per variare la frequenza puoi usare benissimo il potenziometro, lo di programmerà in modo che con il massimo segnale in ingresso il motore vada a 30 vibrazioni al secondo e quando il potenziometro sarà al minimo il motore farà 8 vibrazioni al secondo. per sapere il numero delle vibrazioni basterà usare un display LCB, anche molto piccolo i più comuni sono 16x2 caratteri e 2 righe, ma per il vostro scopo penso possa andare bene anche un display più piccolo, o addirittura si potrà tenere monitorato il numero di vibrazioni direttamente dal monitor seriale dal computer, senza dover mettere display esterni e complicare il circuito.
Cosa molto importante, non so se un motorino classico per vibrazioni sia in grado di effettuare vibrazioni ben distinte in così poco tempo, dal momento ha un po' d'inerzia e quindi non si avvia e si ferma istantaneamente.
altra cosa importantissima. non è possibile pilotare il motore direttamente dai pin di uscita di Arduino, dovete "costruire un driver" può essere fatto con un transistor.
Spero di esservi stato d'aiuto, Buona giornata!
Allora al pwm avevamo pensato e abbiamo provato a realizzarlo ma il problema è il seguente: sembra che, pur impostando tramite il duty cycle una certa tensione e di conseguenza una certa velocità di rotazione al motore, la tensione che poi si legge ai morsetti di uscita del motore è diversa (più bassa), come se ci fosse una dipendenza dal carico e dunque la frequenza che noi impostiamo tramite pwm non è poi quella effettiva di rotazione.
Come motore dovresti usare una cosa del genere, il problema è che è un po' lento quindi non le accelerazioni e decelerazioni
Stai pilotando il motore direttamente da un'uscita pwm di Arduino senza un nessun tipo di condizionamento del segnale?
In primis grazie mille per la risposta! Si infatti abbiamo acquistato una cosa di questo genere. La tua risposta è molto utile però poichè non abbiamo molte conoscenze in merito, ti vorrei chiedere la cortesia di spiegare in modo più dettagliato come andrebbero montati i componenti e se eventualmente puoi fornirmi degli scketch arduino che potrebbero aiutarmi. Ti ringrazio!
Si esattamente, abbiamo provato a fare così
Ok, la tensione che misuri è più bassa di quella impostata perchè dai pin analogici arduino può fornire massimo 20mA rms e 40 massimi, un carico come un motore non è adatto ad essere collegato direttamente a un pin di uscita per via del suo grande assorbimento di corrente specialmente per partire da fermo, questo può anche danneggiare arduino. quindi la tensione si abbasserà fin quando non assorbirà una corrente più bassa di 40mA.
Arduino potrebbe anche danneggiarsi perchè i motori in corrente continua quando vengono spenti generano un picco di tensione molto alta negativa, oltre che a generare picchi di tensione positivi sul circuito durante il normale funzionamento. infatti se vedi ho messo nello schema un diodo in polarità inversa proprio per i picchi di tensione negativi e un condensatore da 22pF per filtrare i picchi positivi.
Certo, per pilotare il motore puoi benissimo usare lo schema che ti ho mandato prima, usando un transistor 2N2222, una resistenza di minino 330Ω, se possibile anche più grande fai delle prove con resistenza molto più grandi, anche sopra al 1KΩ puoi vedere se la resistenza va bene fin quando la differenza di tensione tra collettore ed emettitore del transistor è sotto i 40mV.
Il condensatore dovrebbe andare bene un ceramico da 22pF.
Il motore cerca di alimentarlo da un'alimentatore esterno ad arduino dal momento che ha dei picchi d'assorbimento abbastanza alti.
Purtroppo ora non riesco a farti un scketch perchè sto studiando per l'esame di termodinamica che avrò a metà giugno
, nel caso provo ad abbozzare qualcosa stasera.
Quindi, correggimi se ho capito male, ma per evitare questo problema col pwm devo inserire questo diodo e il condensatore?
Grazie mille della disponibilità, davvero! E un super in bocca al lupo per l'esame
Non solo, devi pilotare il transistor con aruino, e il transistor piloterà il motore, perchè sennò arduino non riesce fisicamente a fornire abbastanza corrente al motore
Grazie mille, sono un po' in ansia visto che è una cosa abbastanza complicata e gli esercizzia vanno rislti programmandoli in pyton ma spero bene ![]()
Perfetto, allora proveremo a fare in questo modo, poi eventualmente se riscontriamo ulteriori problemi provo a chiedere qui
Spero per te che vada bene! Vedrai che l'impegno ripagherà ![]()
Un'ultima domanda: se dovessi voler controllare alla stessa frequenza due motori ad esempio, dovrei usare 2 transistor, 2 resistenze e 2 condensatori? Ed inoltre mi basterebbe una sola batteria o ne servirebbe più di una?
@gabbofox: Buongiorno e benvenuto nella sezione Italiana del forum,
cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie,
Guglielmo





