Robottino..encoders sballati?

Mar 20, 2022 12 Replies

Un mio ottimo amico,l'insegnante delle superiori che molti vorrebbero av= ere(spiega e rispiega a tutti i livelli, coinvolge,inventa giochi per fa= re imparare) fa con la classe gare di robotica, insegna a i ragazzi come scrivere codice per questi robottini a 4 ruote= ,che devono seguire in autonomia percorsi,aggirare ostacoli ecc. Giusto per dire che mica tutti gli insegnanti tirano a campare e alcuni = cercano di appassionare alla materia,anche se pare sia sempre pi=F9 diff= icile. Comunque mi porta un robottino costruito con gli studenti: Arduino Mega con ESP32,un driver motori e 4 motori,sensore a ultrasuoni.=



Ognuno di questi motori ha sull'albero una rotella color ferrite,su un p= iccolo PCB circolare ci sono 2 sensori di Hall a 90=B0C,quindi uno sulle= 12:00 e uno sulle 3:00,hanno gi=E0 pullup collegato. Mi dice che il codice non riesce a capire la direzione(cosa non importan= te in quanto viene imposta dal driver del motore,e le ruote non si muovo= no mai passivamente),e gli dico che vediamo con oscilloscopio che segnal= e viene fornito dagli encoder. Mi aspetterei di vedere,come in altri casi,2 onde quadre con duty cycle= 50% e sfasate di 90=B0C,una in anticipo o in ritardo a seconda del sens= o di rotazione della ruote. Invece 4 motori mostrano 4 cose diverse e con poco senso,almeno per me: Segnali sfasati di circa 190=B0C,duty cycle non al 50%,tanto che in un c= aso il livello basso di un encoder resta compreso nel tempo del livello = altro di un altro.


------|______|--------



_____|---------|______



Cosa pu=F2 significare?Hanno sbagliato a posizionare i magnetini o a ma= gnetizzarli? Grazie


"blisca" ha scritto nel messaggio news: snipped-for-privacy@lella-hp.station...

che non puoi usarli come encoder

non lo so, bisognerebbe sapere di piu' sul quei motori.

forse non e' il tuo caso, ma esistono i motori detti a controllo "trapezoidale", usano i sensori di hall per poter comandare la sequenza corretta delle fasi motore R S T, tipo le ventole dei PC.

In data marzo 2022 alle ore 10:28:08, alfio ha scritt= o:

a

grazie, sono andato a vedere

da quel poco che ho capito il controllo trapezoidale =E8 un modo "facili= tato " di pilotaggio per certi motori brushless ma ho chiesto ora e i motori del robottino sono DC con spazzole

In ogni caso anche se fossero stati brushless mi chiedo a cosa avrebbero= potuto servire degli encoders con delle risposte cos=EC mal correlate,a= lmeno a prima vista

"blisca" ha scritto nel messaggio news: snipped-for-privacy@lella-hp.station...

non lo so, pero' quello che ti ho scritto era per dire che in certi brushless i sensori di hall non sono li per fare da encoder. nei motori "trapezoidali" che in passato usai in campo industriale, il motore aveva sia i sensori di hall (per il pilotaggio RST), sia l'encoder ottico (per il controllo di posizione del CN).

visto che i tuoi motori sono DC a spazzole, allora hai pienamente ragione tu, c'e' qualcosa che non quadra nella risposta di quei sensori. sicuri di aver collegato nel modo corretto i fili dei sensori ? un link alle specifiche dei motori in questione c'e' ?

In data marzo 2022 alle ore 12:58:54, alfio ha scritt= o:

ero

,almeno

der

one

no,o meglio mi ha detto che il sito =E8 solo in cinese(tra l'altro il mi= o amico un pochino lo conosce e lo studia) Gli ha per=F2 scritto.

Comunque la domanda potrebbe essere girata cos=EC. Con degli encoder hall posti a 90=B0 l'uno dall'altro rispetto alla rota= zione di un albero,come dovrebbe essere posto il magnete ,o + magneti ri= spetto all'albero? Se non ho capito male i sensori di Hall possono essere bipolari,cio=E8 g= li basta un campo magnetico,che sia Nord o Sud,oppure unipolari Non so in questo caso. E domanda "inversa" ,c'=E8 qualche orientamento del magnete che possa da= re una cosa cos=EC scombinata come quella che vedo?

In data marzo 2022 alle ore 21:18:01, RoV ha scritto:=

gli

dare

+1

In data marzo 2022 alle ore 12:58:54, alfio ha scritt= o:

ero

,almeno

der

one

grazie ancora una volta ,Alfio

arzo 2022 alle ore 12:58:54, alfio h

iedo a cosa avrebbero

e ti ho scritto era per dire che in certi

s i sensori di hall non sono li per fare da encoder.

mpo industriale, il

hall (per il pilotaggio RST), sia l'encoder

(per il controllo di posizione del CN).

che i tuoi motori sono DC a spazzole, allora hai pien amente ragione

lla risposta di quei sensori.

gato nel modo corretto i fili dei sensori ?

k alle specifiche dei motori in questione c'e' ?

A me sembra che lo sfasamento di 90 gradi sia eccessivo o perlomeno li miti molto l'acquisizione dei dati. Proverei invece a posizionare il trasmettitore in maniera da poter il luminare un ricevitore prima e l'altro dopo prima dell a chiusura della finestra visiva; in questo modo hai la possibilita' di avere un incrocio dei livelli de i sensori e la sicurezza del termine della lettura. S pero sia comprensibile quanto ho descritto, anche se n e dubito, ma se sei interessato, possiamo approfondi re. Angelo

In data marzo 2022 alle ore 12:14:46, Deh! ha scritto:

itto:

bbero

il

coder

gione

Intanto grazie Angelo,ma non ho capito

Perch=E8 dici ci=F2?E' quello che si trova tipicamente,con 90=B0 hai il = massimo angolo possibile tra un fronte e l'altro nelle 2 direzioni,che t= i permentte di avere un apprezzamento della direzione anche se la veloci= t=E0 sale.Intendo dire se fosse a 110=B0C,poi nell'altra direzione ne av= resti solo 70 Anche angoli superiori alla fine si dovrebbero ricondurre ai 90=B0

la

io

Mi viene da pensare che tu intenda encoder ottico,con disco forato rotan= te,invece =E8 a sensore di Hall se rileggi,spero di aver capito

volentieri,grazie

"blisca" ha scritto nel messaggio news: snipped-for-privacy@lella-hp.station...

questa non l'ho capita. quello che conta per discriminare la direzione e' la sequenza, fossero sfasati di 1 solo grado sarebbe funzionale lo stesso. la quadratura e' importante se usi tutti i 4 fronti per contare la posizione. nei CN in genere il moltiplicatore x4 (o anche x2) e' una scelta, altrimenti il CN legge gli impulsi singoli, cioe' la sequenza

A: _|----|___ B: ___|----|_

e' un singolo impulso nel conteggio di posizione

In data marzo 2022 alle ore 18:35:35, alfio ha scritt= o:

il massimo

mentte

sti solo

imenti

certo ,per la direzione basterebbe anche un grado per=F2(dimmi se sbaglio) aumentando ancora e ancora la velocit=E0 potreb= be succedere questo: con un microcontrollore senza un hardware specifico faccio riferimento p= er es. al fronte di discesa di A e non appena lo becco,per capire la dir= ezione,vado a vedere lo stato di B che in quel momento era, alto (lo far=F2 in una routine di interrupt senza perdere troppi cicli di clo= ck per cui il problema che vado a inventarmi sar=E0 davvero difficile da evidenziare). Quindi A commuta ,scatta l'interrupt,salvo nello stack le variabili loca= li della funzione in cui ero e vado nella routine di interrupt a leggere lo stato logico di B,se l'al= bero gira cos=EC veloce che al momento della lettura B =E8 andato basso,= allora mi sono perso la situazione.Se A e B sono sfasati di 90=B0 invece= per la stessa velocit=E0 sarei pi=F9 lontano dall'incertezza descritta.= La situazione in effetti =E8 un p=F2 tirata,forse si avrebbe questo prob= lema con un clock da 1MHz e un motore che fa 1000 giri al secondo e un e= ncoder con tanti impulsi per giro..ma qualcosa dovevo inventarmi per rep= licare. Pi=F9 verosimilmente lo sfasamento di 90=B0 potrebbe servire a minimizza= re le imprecisioni della costruzione meccanica,oppure dell'attivazione d= el sensore ,che sia tramite luce o tramite campo magnetico.Se per la fo= calizzazione imperfetta dell'emettitore di luce uno dei 2 canali commuta= 1 grado prima del previsto,pur costruito meccanicamente perfetto,allora= preferirei avere il 2ndo sensore sfasato di 90=B0C invece che di 1=B0

arzo 2022 alle ore 12:14:46, Deh!

e 12:58:54, alfio ha

ews: snipped-for-privacy@lella-hp.station...

In ogni caso anche se fossero stati brushless mi chie do a cosa

te,almeno

pero' quello che ti ho scritto era per dire che in cer ti

are da encoder.

passato usai in campo industriale, il

eva sia i sensori di hall (per il pilotaggio RST), sia

sizione del CN).

ono DC a spazzole, allora hai pienamente

e

a di quei sensori.

modo corretto i fili dei sensori ?

specifiche dei motori in questione c'e' ?

razie ancora una volta ,Alfio

to grazie Angelo,ma non ho capito

lo sfasamento di 90 gradi sia eccessivo o perlomeno

il

ro nelle 2 direzioni,che

apprezzamento della direzione anche se la

irezione ne

Proverei invece a posizionare il trasmettitore in man iera da poter

ltro dopo prima della chiusura della

va; in questo modo hai la possibilita' di avere un inc rocio

ermine della lettura.

tenda encoder ottico,con disco forato

o

anche se ne dubito, ma se

mo approfondire.

In tanto, scusa per il ritardo nella risposta! Per mia e sperienza, poca con i sensori Hall, ma un po' con gli ottici, i segnali sono sfasati di poco e non addirit tura di 90 gradi. Per quanto riguarda la lettura, mol to semplicemente basta leggere e memorizzare tramite interrupt gli stati logici per poi elaborarli con la

dovuta tempistica; . Uso normalmente dei micro a 8 bit e con velocita' anche di 4 MHz. non ho mai avuto difficolta' al riguardo della lettura dei sensori, si a encoder manuali/rotativi, dove il problema e' di n on essere troppo veloci (anche

10 ms.) e quelli su a ssi motore molto piu' veloci, ma un sensore su asse

a 10000 rpm. ha tempi di ripetitivita' di 50 us. e con un pic della serie 16 a 4 MHz. fai in tempo a rilev are tutto quello che occorre e ne avanza; figurati c on un micro decente. Sai che mi viene il dubbio che t u abbia i sensori troppo sfasati ed e' per quello ch e le letture non sono coerenti. Angelo

In data marzo 2022 alle ore 18:44:13, Deh! ha scritto:

i

, il

il

e

one ne

ella

ocio

se

i

la

ho

er

he

se

e

Non solo sono troppo sfasati,ma sembrano sfasati a caso,e su 4 motori no= n ce ne sono 2 che si somiglino, da cui si possa dedurre una regola.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required