Rotor antena cu Arduino

Circuite electronice, echipamente home made, aparatura de masura si control, scheme...
yo4gga
Mesaje: 49
Membru din: Sâm Iun 19, 2010 6:40 pm
Contact:

Re: Rotor antena cu Arduino

Mesajde yo4gga » Mar Apr 07, 2020 12:37 pm

Multumesc tuturor pentru interes si urmaresc tot ce apare aici.

73 !

yo4gga
Mesaje: 49
Membru din: Sâm Iun 19, 2010 6:40 pm
Contact:

Re: Rotor antena cu Arduino

Mesajde yo4gga » Joi Apr 09, 2020 3:28 pm

Revin cu un update. Am cumparat un potentiometru de 1K multitura (10 rotatii) si l-am montat in
dispozitiv. Acum cand dau comenzi din serial monitor din Arduino urmareste comenzile foarte bine.
Cand incerc sa-l folosesc cu alte aplicatii (RotorCraft,PST Rotator ) merge OK de cateva ori ,apoi intra in balarii (adica in loc sa se opreasca unde trebuie ) se duce mai departe si nu se mai opreste.
Cam in stadiul asta sunt acum.

73 !

yo8rxp
Mesaje: 159
Membru din: Joi Aug 08, 2019 9:38 am
Contact:

Re: Rotor antena cu Arduino

Mesajde yo8rxp » Vin Apr 17, 2020 7:17 pm

Salut. Chiar daca pui pe intrerupt pin, un rotary encoder va pierde pasi in timp. Un traductor i2c te obliga sa pui arduino sus caci nu va merge la lungimi mari de cablu si atunci iti va trebui un rs485 pana jos.
Parerea mea e ca tot cu potentiometru multitura e mai ok, si poti sta cu arduino in casa.
73 si succes.
Gabriel yo8rxp

yo7fws
Mesaje: 135
Membru din: Lun Mai 14, 2012 9:49 am
Contact:

Re: Rotor antena cu Arduino

Mesajde yo7fws » Mie Iul 22, 2020 12:17 pm

Salut

Am inceput si eu experimentele cu rotorul. De la inceput am avut parte numai de surprize, usor neplacute, dar care se rezolva in timp, hi!
Sistemul la mine este compus dintr-un reductor principal, 1:60, care roteste antena. L-am montat la baza pilonului si prin intermediul unui rulment de presiune roteste cu usurinta suportul vertical al antenei. La rindul lui el este actionat de un motor cu reductor secundar, de 'raba'. Am identificat raportul de demultiplicare ca fiind 1:36, tnx YO3CCB. In concluzie, pentru a rotii antena 360 gr am nevoie de 36 x 60 = 2160 de rotatii ale rotorului motorului cu reductor secundar.
M-am hotarit sa citesc pozitia antenei prin contorizarea numarului de rotatii ale rotorului motorului cu reductor fata de un punct origine stabilit de mine. Pentru aceasta pe rotorul motorului, in interior, direct pe bobina, am montat o bucata dintr-un magnet de hard disk si l-am fixat cu superglue. Prin capacul inferiror, intr-o pozitie optim aleasa, am gaurit si introdus un senzor Hall. Pozitia acestuia am ales-o prin teste, astfel incit doar la trecerea magnetului prin dreptul lui, sesizeaza cimpul magnetic.
Pentru contorizare am ales initial un Arduino Nano, dar cele mai multe teste le-am facut cu NodeMCU.
Nu a functionat de la inceput. Desi programul era corect, motorul se oprea la nici macar o tura, HI! Cimpul magnetic neuniform imi crea un tren de niveluri 1 si 0, care numarate atingeau rapid valoarea maxima stabilita de mine. A durat ceva timp pina m-am prins si apoi am schimbat abordarea. Am cautat cel mai lung in timp nivel logic si l-am stabilit ca referinta pentru o tura. Acum functioneaza ireprosabil, numara corect.
Ce alte proleme am mai observat? Inertia si zgomotul radio.
Inertia rotorului, la teste, este de 1 la 5 ture, in functie de tensiunea de alimentare. Am incercat sa compensez acest neajuns micsorind din timp tensiunea de alimentare, prin comanda in PWM. Alta metoda testata cu succes a fost contorizarea numarului de rotatii in plus, dupa comanda de oprire a motorului, si adunarea sau scaderea acestora, la rotirea urmatoare. Aici, din 2 in 2, exista o pereche de miscari: una care se opreste incorect si alta care se opreste corect datorita folosirii in calcul a inertiei miscarii anterioare.
Zgomotul radio l-am constatat azi cind am comandat reductorul la baza pilonului, necuplat la reductorul principal. Motorul este cu perii si trebuie gasita o solutie sa il linistesc, hi!
Pentru cine doreste sa isi construiasca singur, il sfatuiesc sa se gindeasca de bine inainte. Aceasta abordare nu este deloc simpla!

73!
Costi YO7FWS

yo3hjv
Mesaje: 783
Membru din: Lun Iun 21, 2010 10:12 pm
Contact:

Re: Rotor antena cu Arduino

Mesajde yo3hjv » Vin Iul 31, 2020 1:54 am

Probabil e cam tarziu, cred ca as aborda astfel proiectul:
1. Ca prim pas, as stabili precizia pozitiei. Rezolutia pe care un "senzor" o trimite ca feedback. Cat doresc la pozitionarea unei antene? Un grad, zece grade? 20 de grade? Daca aleg 10 grade, atunci voi avea 36 de pozitii distincte. Am nevoie la o antena de HF de precizie de un grad sau imi este suficienta precizia de 10 grade?
2. Pun senzorii pe axul motorului INAINTE DE REDUCTOR sau pe axul pilonului rotativ? As alege a doua varianta pentru ca reflecta informatia REALA.
3. Ce feedback aleg? O pozitie de reset (parking) sau citesc distinct pozitiile pe fiecare directie? In primul caz, pot folosi motor pas cu pas si sa trimit numar de pasi apoi resetez la fiecare oprire sau pornire prin parcarea antenei. Astfel, nu acumulez erori in comanda motorului pas cu pas. Daca folosesc citirea pozitiei, atunci pot folosi un motor "liniar". In acest caz insa, trebuie implementata o functie tensiune/timp pentru a obtine o accelerare si o decelerare in comanda motorului pentru a reduce socul mecanic datorat inertiei.

Cu 4 biti pot coda pozitia cu precizie de 22.5 grade. Fac o banda de hartie pe care o laminez si o pun pe axul antenei si citesc banda cu 4 detectoare de linie din robotica : https://roboromania.ro/produs/modul-de-urmarire-linie-cu-4-canale-ir-582/
Se poate face si un disc, plasat tot pe axul antenei, caz in care voi avea posibilitatea de a introduce si un "reglaj fin" in cadrul pozitiei (in interiorul celor 22 grade).
As folosi codare Grey pentru eliminarea erorilor:
Imagine
Cred ca e destul de simplu.
Pagina mea: http://yo3hjv.blogspot.com/
Societatea Romana a Radioamatorilor

yo8rxp
Mesaje: 159
Membru din: Joi Aug 08, 2019 9:38 am
Contact:

Re: Rotor antena cu Arduino

Mesajde yo8rxp » Vin Iul 31, 2020 7:23 am

Salut. Poate in loc de hall mergea un releu reed si aveai 0 respectiv 1 logic fara sa fie nevoie de debounce. Eu am testat grey encoder pe multe controlere si inevitabil pierzi pasi in timp. Traductorul de puls pe axul motorului va genera erori in timp datorita jocului mecanic din reductor.
Daca mai poti pune macar 4 traductori pe teava antenei, atunci poti face o recorelare automala in cod care la fiecare 90 grade verifica daca teava e acolo unde zice reductorul ca este teoretic.Pentru grey encoder Raspberry pi nu este realtime, arduino mega sau nano la 10 rotatii a cate 24 sau 16 pulsuri per rotatie deja pierde
cel putin 2 sau 3 pozitii. In maxim 1 saptamana vei avea antena intoarsa pe dos. Una peste alta cred ca un disc cu 360 fante pus pe teava este perfect, Fara grey code numeri pulsuri si butoanele inainte inapoi vor incrementa/decrementa counterul.
Sau potentiometru pe teava si masori analog cu arduino. Calibrezi si faci in main loop o chestie de genul' daca millis - millis-old genereaza spikes mari in x interval de timp, atunci alerta de uzura si stop motor
73 si succes

yo8sal
Mesaje: 23
Membru din: Dum Apr 10, 2011 9:55 pm
Contact:

Re: Rotor antena cu Arduino

Mesajde yo8sal » Vin Iul 31, 2020 9:01 am

Salut,
Cred ca in BCD code, e intii 0010 ..apoi 0011 ...
Doar daca este o logica de care nu m-am prins... hi
Altfel, cu sanatate si spor la ...bitzi.

73 de Adrian, yo8sal

yo7fws
Mesaje: 135
Membru din: Lun Mai 14, 2012 9:49 am
Contact:

Re: Rotor antena cu Arduino

Mesajde yo7fws » Vin Iul 31, 2020 9:49 am

Salut

Inca nu am ajuns clar la o concluzie. Construiesc, experimentez, trag concluzii si o iau de la capat. Main loop, HI!
Mie, ideea de a contoriza impulsurile, pasii, mi s-a parut cea mai buna. Pentru o rotatie completa am 2160 de impulsuri. Daca memorez o valoare, este simplu sa o transform in grade si invers.
Senzorul poate fi un reed, un Hall sau chiar o bobina. Am incercat cu reed dar nu mi-a mers. Era o fiola chinezeasca foarte sensibila. Actiona inclusiv la cimpul magnetic generat de rotor.
Hall merge mai bine, dar nu asa cum m-am steptat eu. Credeam ca o sa am un 1 si un 0 binedefinit, respectiv actionat sau nu. In relitate sint un sir de 1 si 0, care nu ii pun pe seama cimpului magnetic generat de rotor. Se pare ca am avut inclusiv o eroare de alimentare. Senzorul lucreaza de la 4.5V in sus, nu la 3V3 asa cum il foloseam eu.
Pentru a identifica clar 1 sau 0, trebuie sa le masor in durata, si tot ceea ce trece peste un prag, sint considerate valorile clare cautate.
Montarea pe axul antenei a unui traductor este probabil cea mai simpla solutie. Daca nu reusesc ceea ce fac eu, o voi adopta.
Jocuri sint multe. Am doua imbinari cu surub de trecere: intre ax reductor mare si teava, si intre tevi. Mai este si jocul dat de pasul mecului. Acesta ultimul este cel care trebuie corectat la schimbarea directiei de rotatie si cel care in timp aduna sau pierde pasi, hi.
Suprapus peste tot mai este si solutia soft. Oare gindesc bine? Oare transpun corect ceea ce gindesc? Si astea poate genera erori.

73!
Costi

yo8rxp
Mesaje: 159
Membru din: Joi Aug 08, 2019 9:38 am
Contact:

Re: Rotor antena cu Arduino

Mesajde yo8rxp » Vin Iul 31, 2020 4:04 pm

yo8sal scrie:Salut,
Cred ca in BCD code, e intii 0010 ..apoi 0011 ...
Doar daca este o logica de care nu m-am prins... hi
Altfel, cu sanatate si spor la ...bitzi.

73 de Adrian, yo8sal

E grey code , suita este 00 01 11 10 00

yo3hjv
Mesaje: 783
Membru din: Lun Iun 21, 2010 10:12 pm
Contact:

Re: Rotor antena cu Arduino

Mesajde yo3hjv » Sâm Aug 01, 2020 7:05 pm

yo8rxp scrie:Daca mai poti pune macar 4 traductori pe teava antenei, atunci poti face o recorelare automala in cod care la fiecare 90 grade verifica daca teava e acolo unde zice reductorul ca este teoretic.Pentru grey encoder Raspberry pi nu este realtime, arduino mega sau nano la 10 rotatii a cate 24 sau 16 pulsuri per rotatie deja pierde
cel putin 2 sau 3 pozitii. In maxim 1 saptamana vei avea antena intoarsa pe dos. Una peste alta cred ca un disc cu 360 fante pus pe teava este perfect, Fara grey code numeri pulsuri si butoanele inainte inapoi vor incrementa/decrementa counterul.

Daca e o replica la ce am scris eu, propunerea mea nu este de pulsuri ci de codificarea pozitiei cu Grey code. Citirea pozitiei absolute a axului.
In realitate, cand citesti cu precizie foarte mare sistemul cu inertie mecanica, controllerul stie exact unde se duce axul si, din cauza inertiilor mari, va intra intr-o bucla in care trecerea de pozitie va determina actionarea inversa a motorului care apoi va duce la depasire in sensul celalalt al pozitie comandate si tot asa. Vom avea o antena care va bascula cu perioada determinata de inertie si va fi necesara introducerea unor secvente de cod pentru a controla asta. Presupun insa ca socurile mecanice vor deteriora mecanismul de antrenare chiar in timpul testelor :-)

yo7fws scrie:Jocuri sint multe. Am doua imbinari cu surub de trecere: intre ax reductor mare si teava, si intre tevi. Mai este si jocul dat de pasul mecului. Acesta ultimul este cel care trebuie corectat la schimbarea directiei de rotatie si cel care in timp aduna sau pierde pasi, hi.


Solutia propusa de mine nu este afectata de problema jocurilor mecanice (abaterile dimensionale, nu pacanelele); impartirea in sectoare de cerc de circa 22 grade prezinta imunitate la jocurile mecanice. Daca e nevoie de rezolutie mai buna, este usor sa implementezi o functie de reglaj fin in interiorul celor 22 grade. Avantajul codificarii absolute este ca unitatea de control "stie" permanent si exact unde este orientata antena, eliminand incertitudinea pozitiei. In plus, nu are nevoie de nicio alta calibrare. Ca sa nu se dea "peste cap", se poate monta un opritor fizic cu doua microcontacte pentru cap de cursa. Daca introduci inca o pista, deci in loc de 4 biti citesti 5 biti crescand precizia pozitionarii automate. Poti merge pana la 1 byte (256 de pozitii) dar va fi dificil sa realizezi partea de citire si nu stiu daca e necesara o asemenea precizie la un rotor de antena HF.
Tine-ne la curent!
73 de YO3HV
Pagina mea: http://yo3hjv.blogspot.com/
Societatea Romana a Radioamatorilor


Înapoi la “Constructii electronice”

Cine este conectat

Utilizatori care navighează pe acest forum: Niciun utilizator înregistrat și 8 vizitatori