Rotor antena cu Arduino

Circuite electronice, echipamente home made, aparatura de masura si control, scheme...
yo3hjv
Mesaje: 679
Membru din: Lun Iun 21, 2010 10:12 pm
Contact:

Re: Rotor antena cu Arduino

Mesajde yo3hjv » Sâm Aug 01, 2020 9:04 pm

Ca o completare:
Si eu ma gandesc la o alta aplicatie sa numar pasii motorului de actionare, pas cu pas, pentru a determina pozitia dupa o demultiplicare dar acolo nu am inertie asa ca acumularea abaterilor de-a lungul timpului se rezolva foarte usor cu o recalibrare (cap de cursa) la un numar total de pasi. Adica, am cursa totala pe motor de 700 de pasi pentru 360 grade dupa reductor, la fiecare 65.535 de pasi in total (unsigned int) face o "recalibrare" prin rotirea stepperului decremental, in sens "spre zero", ajunge la cap de cursa si reseteaza contorul.
Costi, la aplicatia ta, cu motor "clasic", as merge totusi pe obtinerea unui feedback din axul principal si nu al motorului.
Ideea cu tensiune variabila mi se pare OK dar as veni cu o sugestie de simplificare:

In loc de PWM, poti comuta doua tensiuni pe motor. Adica sa pornesti cu tensiunea nominala pentru infrangerea inertiei si dupa aceea sa aplici o tensiune mai mica prin actionarea unui releu, fara sa iti mai bati capul cu PWM.
Pagina mea: http://yo3hjv.blogspot.com/
Societatea Romana a Radioamatorilor

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

Re: Rotor antena cu Arduino

Mesajde yo7fws » Mar Aug 04, 2020 6:19 pm

Salut

Montarea pe axul principal a unui traductor presupune modificari greu de facut, dar mai ales de protejat. Iau in calcul si aceasta varianta, probabil pentru anul viitor, nimic nu este exclus. Deocamdata ma joc, de nevoie, cu sistemul de contorizare a rotatiilor rotorului de la motor. Probabil montarea pe ax a unui magnet de hard disc si pe carcasa a unui sezor, reprezinta cea mai simpla modificare de facut. Si cred ca am reusit. Nu declar problema rezolvata, urmeaza sa o constat in timp.
Am demontat senzorul Hall si intr-o pozitie bine aleasa am montat, inafara, direct pe capacul de aluminiu, un releu Reed, perpendicular pe axul magnetului. Releul l-am pregatit din timp prin montarea in paralel cu un cablu coaxial a carui tresa este conectata scurt la carcasa motorului. In paralel cu intrarea microcontrolerului am pus un condensator de 100 nF. Functioneaza excelent. Am nivele constante de 1 si 0, binedefinite si alternante. Am folosit programul scris anterior pentru senzorul Hall si a functionat de la prima incercare. Acesta contorizeaza rotatiile complete ale motorului si le aduna sau scade la ultima valoare memorata, dupa care o memoreaza dinou.
Inertia am evidentiat-o prin rotirea succesiva in aceeasi directie a antenei, in unghiuri mici de 10..15 gr si apoi printr-o singura manevra, am intors antena in pozitia de referinta. Aceasta nu a mai revenit in pozitia initiala. Pentru a anula inertia, am numarat rotatiile dupa comanda de oprire si le-am adunat la numarul de rotatii executate in acea manevra. Functioneaza!
Jocul mecanic al reductorului l-am inlaturat prin adunarea sau scaderea unui numar constant de rotatii, numai la schimbarea sensului.
Pentru testare am montat pe ax un ac indicator. Am facut 100 de manevre aleator alese dupa care am revenit in pozitia de referinta. Rezultatul a fost foarte bun, a revenit la loc. Eroarea a fost foarte mica, nesemnificativa.
Nu pot sa declar: sistemul functioneaza. Trebuie sa mai treaca timp.
Intrebare: cum pot scapa de zgomotul produs de motor la actionarea antenei? Imi inroseste ecranul si atenueaza orice semnal ce se aude in difuzor. Poza de mai jos indica taria semnalelor.

73!
Costi
2020.08.03-21.16.21.jpg

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

Re: Rotor antena cu Arduino

Mesajde yo8rxp » Joi Aug 06, 2020 1:06 pm

Acesta contorizeaza rotatiile complete ale motorului si le aduna sau scade la ultima valoare memorata, dupa care o memoreaza dinou.


Chiar daca nu este scump un arduino, trebuie sa ai in vedere ca numarul maxim de scrieri in EEPROM este de aprox 100000. Poate ar fi bine sa calculezi o diferenta de timp dintre time stamp ultima incrementare/decrementare si timpul actual cu millis() si pui o conditie daca au trecut 10 secunde de cand motorul s-a oprit abia atunci sa faca EEPROM.write(addr, val); eventual periodic modifici adresa de memorie ca sa nu scrie permanent in acelasi loc
Imi place proiectul, felicitari ! Poate pui o poza sa ma inspir si eu caci lucrez la pilon si parca nu as pune rotor scump.
73 si toate cele bune

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

Re: Rotor antena cu Arduino

Mesajde yo3hjv » Joi Aug 06, 2020 3:02 pm

Am intalnit niste librarii pentru EEPROM care randomizeaza accesul adreselor evitand astfel scrierea aceleiasi adrese.
Totodata, se mai practica scrierea adresei numai daca valoarea de scris difera de cea deja existenta. Deteriorarea memoriei apare la WRITE nu la READ.

Ex: https://github.com/PRosenb/EEPROMWearLevel

Sau, mai simplu, se poate folosi o memorie externa, un 24LCxxx. Sunt extrem de ieftine si de usor de folosit.
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 2 vizitatori