Ingredienti per ricetta girasole "industriale"

Ciao a tutti, ecco in breve il mio quesito:
Ho realizzato un molto poco originale "girasole solare" . Il mio codice rileva i valori di quattro fotoresistenze ,orientate come i punti cardinali , e con due funzioni map comando due servomotori che lavorano (ovviamente) uno in verticale ed uno in orizzontale. Dopo le opportune tarature e correzioni il sistema funziona. (che soddisfazione).

Bene , capirai che "progettone" ,potreste molto lecitamente pensare...
ma facciamo che il modulo fotovoltaico sia di circa 2mq e pesi 15kg.

Non vale consigliarmi dei servo più potenti e costosi.

La domanda è : c'è un qualche stratagemma che mi consenta di utilizzare due motoriduttori ,che ho in magazzino?
Io non saprei come fare,oltre alla malsana idea di usare i servo "originali" come finecorsa dei motoriduttori considerando che non sarebbe per niente un continuo movimento.

Ho la tendenza a dilungarmi oltremodo e chiedo perdono, sperando d'essere stato chiaro.

Grazie

Claudio.

Forse ... che marca, modello e tipo sono i motoriduttori che hai in magazzino ? ... hai qualche immagine o un link al prodotto ?

Ciao, allego due foto del motoriduttore.


Ti serve che faccia piu giri, o ti basta una rotazione di 180 / 200 / 220 gradi, come nei servo normali ?

Comunque dovrebbe essere possibile "riciclando" l'elettronica di un vecchio servo (solo per non stare a diventare matti per trovare il chip) ed usandola per pilotarci un ponte di potenza, e prendere il feedback del movimento accoppiando all'albero un potenziometro dello stesso valore di quello all'interno del servo originale.

Ovviamente servira' costruire una scatoletta per contenere il potenziometro ed i relativi ingranaggi (o pulegge con cinghia dentata, secondo quello che verra' piu comodo), e siccome il tuo motoriduttore e' di tipo planetario con albero singolo, dovra' per forza essere posizionata vicino all'uscita dell'albero, il che probabilmente richiedera' di costruire un giunto per prolungarlo (ma tanto avresti dovuto farlo lo stesso, se lo volevi usare in modo diretto)

Mi preoccuperei pero' di controllare se quei riduttori sono abbastanza resistenti da reggere il peso del pannello, piu l'eventuale sforzo in caso di vento (i pannelli grandi fanno da vela), in caso contrario dovresti usare delle viti senza fine ed accoppiare i potenziometri in modo diverso (ma con un po piu di lavoro dovrebbe essere possibile fare anche quello)

La rotazione di 180 gradi è perfetta e siccome sono certo della forza dei motoriduttori ,non mi preoccupa la loro tenuta. Non ho difficoltà nella carpenteria ed anche qui ,non mi preoccupo. Alla peggio muoverò un pannello più leggero e potrei anche prevedere una posizione "antivento" . Lo realizzerei a casa mia, più con finalità ludiche che altro :wink:.

Ottimo, direi che è proprio quello di cui ho bisogno.


Una cosa del genere? In cui in sostanza i servo originali sostituirebbero il potenziometro e il commutatore di senso/marcia ?

Grazie
Claudio

No, quello e' un controller di tipo diverso, intendo proprio prendere un vecchio servo, smontarlo, usare la sua elettronica per pilotarci un ponte ... dammi un po di tempo per vedere di disegnarne uno, o magari trovare se c'e' gia qualcosa di fatto.

Grazie mille per tutto. adesso so cosa cercare, si sa mai :crossed_fingers::crossed_fingers::wink:.

Ancora grazie.
Ciao.

Allora, serve un ponte (o una coppia di mezzi ponti) con gli ingressi indipendenti, tipo i BTS7960 o simili, che reggano i 24V (ho visto ora che i tuoi motoriduttori non sono a 12V, sarebbe stato piu semplice) ... comunque ho visto anche che esiste gia una schedina con una coppia di BTS cablati a ponte e con gli ingressi separati (il link solo come riferimento, e' disponibile presso molti venditori, te la linko comunque perche' costa di meno che farsela da soli), che dovrebbe andare bene per farci dei test (consiglio comunque di non alimentare il tutto con piu di 22V), che probabilmente puo essere pilotata direttamente dalla schedina del servo, se anche quella va a 5v.

Sara' comunque necessario fare dei test per controllare che le correnti e le tensioni siano adatte e per trovare i giusti cablaggi (specie l'ordine di collegamento dalla scheda servo, i fili che andavano al motore originale del servo, alla scheda ponte, ed il cablaggio corretto del potenziometro nei confronti del senso di rotazione), ma quelle sono tutte prove che si devono fare "a vuoto", prima di installare le parti meccaniche ... una volta stabiliti quelli (e controlato che la cosa funzioni, ovviamente), si potra' proseguire disegnando e costruendo le parti necessarie ai vari accoppiamenti.

EDIT: dimenticavo, se usi un servo con Arduino, si potrebbe anche pilotare direttamente il ponte senza bisogno di cannibalizzare i servo, ma ovviamente richiederebbe di adattare il software :wink: ... lo stampato del servo e' necessario solo se si deve usarlo per forza come servo (RC, o altro che pilota solo servo)

Wow! Troppo efficiente! Ora tocca a me :wink:. Studierò il tutto e aggiornerò appena possibile.

Finché non farò girare i motoriduttori a banco ,non prenderò in mano saldatrici e flessibile :wink:.

...ergo : senza usare la funzione map?

Intendo, pilotando i due ingressi dei semiponti direttamente con segnale PWM, secondo il senso in cui deve girare, e leggendo i potenziometri sempre con Arduino (quindi la map servira' lo stesso) ... pero' se hai gia il software che funziona con i servo, forse riscriverlo sarebbe eccessivo (e comunque fare il tutto con il servo sarebbe anche un'esperienza sul come costruirsi dei servo ad alta coppia, nel caso dovessero servire per altro)

Ah, ok. comunque fare il tutto con il servo sarebbe anche una cosa favolosa :muscle::wink:.
A presto.

Ciao, aggiornamento: cannibalizzando un servo (che fa sempre bene smontare qualcosa) ho compreso tutti i riferimenti ai potenziometri ed ho le idee molto più chiare. ho ricevuto la scheda in oggetto (IBT_2) e ci sto giocando. In questo momento il mio motoriduttore (alimentato a 12v) gira qualche secondo in senso orario, si ferma e poi riparte invertendo il senso di marcia, così ho deciso nel mio primo sketch che allego per completezza.

Ecco, questa è la ricetta che vorrei proprio imparare.:yum::yum:

Quindi , se non sbaglio, i pin 5 e 6 dovrebbero essere pilotati dal potenziometro così da determinarne la posizione dopo l'opportuna taratura a banco. (giusto?)
Se sì , i morsetti chiamati R_EN ed L_EN a che servono? (EN = encoder?)

per ora mi fermo con i quesiti...non perché non ne abbia altri ,beninteso.:wink::wink:

[code]
#define orario 9
#define antiorario 10
#define pwm_orario 5
#define pwm_antiorario 6

void setup(){
  pinMode (orario, OUTPUT);
  pinMode (antiorario, OUTPUT);
  pinMode (pwm_orario, OUTPUT);
  pinMode (pwm_antiorario, OUTPUT);
}
void senso_orario(){
  digitalWrite (orario, HIGH);
  digitalWrite (antiorario,LOW);
  digitalWrite (pwm_orario, 50);
  digitalWrite (pwm_antiorario, 20);
 }
void senso_antiorario(){
  digitalWrite (orario, LOW);
  digitalWrite (antiorario,HIGH);
  digitalWrite (pwm_antiorario, 20);
  digitalWrite (pwm_orario, 50);
 }
void motore_fermo(){
  digitalWrite (orario, LOW);
  digitalWrite (antiorario,LOW);
  digitalWrite (pwm_orario, 0);
  digitalWrite (pwm_antiorario, 0);
 }
void loop() {
  senso_orario();
  delay (1000);
  motore_fermo();
  delay (2000);
  senso_antiorario();
  delay(2000);
  motore_fermo();
  delay (2000);
} 
[/code]

Grazie
Claudio

No, aspetta ... il potenziometro andra' collegato alla schedina del servo (un qualsiasi potenziometro da 10K, basta che sia lineare, non logaritmico), ed i pin di ingresso della scheda ponte dovrebbero essere pilotati dai fili che prima andavano al motorino del servo (al limite mettici in serie un paio di resistenze, fra 470 ohm ed 1K, anche se in teoria non dovrebbero servire) ... bisogna provare in quale ordine collegarli per fare in modo che il movimento del motore corrisponda alla rotazione del potenziometro, che andra' accoppiato al motore, ma prima si deve trovare l'ordine di connessione corretto (altrimenti non avendo finecorsa quei motori distruggerebbero i potenziometri)

R-EN ed L-EN sono semplicemente gli enable dei due semiponti, non vanno collegati a nulla se non serve che entrambi i semiponti vengano disabilitati (ad esempio se si deve lasciare il motore in folle, nel tuo caso non serve) ... le scritte di quei moduli sono un po fuorvianti, contrariamente a quanto scrivono erroneamente su alcuni forum, gli enable vanno lasciati liberi o collegati a VCC (ed a GND per disabilitare il ponte), NON vanno usati come ingressi PWM perche' in quel modo il ponte lavora in modo errato e puo danneggiarsi.

Secondo il produttore, i pin che servono a te potrebbero chiamarsi R-IN e L-IN, oppure RPWM e LPWM, ed a parte ovviamente GND e VCC gli altri 4 non dovrebbero servirti.

ah ok.
allora potrei provare a utilizzare un servo funzionante , lo apro (e rimonto) e saldo due fili in parallelo i due capi del motorino , che poi collegherò a RPWM e LPWM. (dovrebbe funzionare, e non avrei bisogno di potenziometri esterni, no?) . però posso dirti che se non collego i pin 5 e 6 (arduino) e R_IN e L_IN (scheda ponte)
il motore non gira , è per questo che ho inserito i comandi pwm_orario e pwm_antiorario.

domani pomeriggio proverò😏.

Grazie molte.
A presto.
Claudio

Aspetta ... per funzionare in modo corretto, quei ponti devono essere pilotati con un segnale PWM ed un segnale DC (oppure un PWM al 100%)

Ad esempio, se vuoi che il motore giri in un senso, uno degli ingressi va a VCC (o PWM 100%) e l'altro al segnale PWM che stabilisce la velocita', e per girare nel senso opposto il contrario ... entrambi a VCC oppure a GND, il motore dovrebbe essere fermo.

Si puo anche tenere uno degli ingressi a GND e l'altro con il PWM, in questo modo la curva di velocita' si inverte (cioe', in un caso piu aumenti il PWM piu aumenti la velocita', nell'altro piu aumenti il PWM piu riduci la velocita', il modo di funzionamento lo scegli in base ai segnali che hai a disposizione)

Nel frattempo, i due EN vanno a VCC (oppure liberi se c'e' gia un pullup sulla scheda), mentre quando si vuole il motore "in folle" (come se fosse scollegato) vanno entrambi a GND.

Non so come potrebbe funzionare lasciando collegato il motore al servo ... una prova da fare, se hai una schedina smontata, potrebbe essere questa, collega i due fili del motore (senza il motore attaccato) agli ingressi (con in serie due resistenze da 470 ohm o simili), alimenta tutto (al limite per sicurezza dai meno tensione al motoriduttore, tipo 12 o 15 V, giusto per farlo girare), metti il potenziometro collegato alla schedina servo a meta' corsa (per il test puoi usare anche quello originale, oppure un'altro se e' piu comodo) e regola il segnale del servo per posizionarlo al centro (potrebbe essere necessario ritoccare un po il potenziometro, finche' il motoriduttore si ferma)

A questo punto, se regoli il segnale del servo per farlo muovere in un senso fino, ad esempio, a tre quarti, il motoriduttore dovrebbe mettersi in moto (per ora non importa in che senso, e non si fermera' da solo ovviamente non essendo il potenziometro collegato al motore), e ruotando a mano il potenziometro dovresti trovare una posizione in cui il motoriduttore si ferma, lo stesso regolando il segnale per farlo ruotare ad un quarto, e poi ruotando il potenziometro nell'altro senso finche' si ferma.

A quel punto, se questo succede, sappiamo che il sistema funziona nel modo corretto, e che si puo procedere con il resto, mentre se questa prova non riesce si deve scoprire perche'.

EDIT: ovviamente per fare questa prova devi usare o un programma per pilotare servo, o uno di quei circuitini per testare i servo, non il programma che usi per pilotare direttamente il ponte.

Ciao , posso confermarti che tutto quello che mi hai suggerito ed indicato è assolutamente super-corretto. :grin::grin::grin:
Davvero, grazie mille, senza il tuo supporto non sarei mai riuscito ad arrivare fin qui ed avrei certamente bruciato il driver🙂.
Qui dove?
Allora, oggi posso governare un motore "esterno" regolando numero di giri e senso di marcia (e già con questo sarei apposto per molto , molto tempo libero....sai quanti utensili elettrici mi posso costruire). detto questo, stasera ho bisogno di staccare un momento la spina , devo scrivere il codice per raggiungere l'obbiettivo iniziale. ho già cominciato a buttare giù qualche riga in tempo reale ; ma tra le molte cose che ho imparato nel forum , ho compreso che non posso fare a meno di andare per gradi. un passo alla volta. e uno gigantesco l'ho fatto :wink:.

A questo punto, ho un po' di timore a giocare col servo originale e col suo potenziometro, mi seccherebbe bruciare qualcosa, e poi mi sento vicino alla meta.

Grazie ancora.
A presto.
Claudio.

P.S. credo che i miei prossimi dubbi riguarderanno la compilazione dello sketch ...
apro un nuovo argomento in software o proseguo qui? :thinking:

Dato che l'argomento è lo stesso, inutile "disperdere" le informazioni, continua pure qui così si ha un thread completo relativo al sistema :slight_smile:

Guglielmo

Ciao , provo a fare il punto della situazione e chiedo conferme, smentite e idee.
Perdonatemi se scriverò tanto e se potrò dare l'idea che si tratti di un dialogo fra me e me...abuso dello spazio nel forum , e fingo si tratti di un "diario"
Padroneggio il motore "esterno" pilotando la scheda IBT-2.
Descrivo la morsettiera :
R_EN = sempre alto , non necessariamente una uscita PWM
L_EN = sempre alto , non necessariamente una uscita PWM
R_PWM = determina senso e velocita di marcia se alto (basso con alto su L_PWM)
L_PWM = determina senso e velocita di marcia se alto (basso con alto su R_PWM)
Ora si tratta di gestire il motore "facendolo diventare un servo" .
Ho cannibalizzato un servo tipo SG90 a cui ho tolto il motorino originale e con due resistenze da 470 in serie ho connesso i capi a R_PWM e L_PWM , non funziona correttamente. Ovvero : gira ma
non è assolutamente in grado di muoversi per gradi , avevo inserito il comando in un ciclo for di incremento dei gradi. Comunque sia, era una prova doverosa da farsi ,ma poco "affascinante".
Archiviato.

Sto seguendo un'altra discussione,in dibattito, sul forum; e mi pare di vedere uno spiraglio di luce nel cielo terso : tempo del segnale pwm. Capisco bene? Il servo "riconoscendo" l'incremento temporale del segnale sa in quale senso deve ruotare?
Se si,domanda secca e brutale : quale comando o funzione mi permette di fare questa simulazione?( dico simulazione perché non sono certo che il driver in uso sia in grado di riconoscere , anche se col potenziometro riesco ad invertire il senso di marcia,un po' meno il numero di giri; ma lo attribuisco al poco range di valori)

Dovrei fare una combinazione di incremento/decremento temporale ?

Ecco, per ora ho finito, grazie e ancora scusatemi.
Claudio.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.