Rotor antena cu Arduino

Circuite electronice, echipamente home made, aparatura de masura si control, scheme...
yo3hjv
Mesaje: 683
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: 76
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: 43
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: 683
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

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

Re: Rotor antena cu Arduino

Mesajde yo7fws » Vin Aug 07, 2020 12:51 pm

Salut

In proiect nu am luat in calcul cit rezista EPROM la scriere. La cit costa un Arduino Nano, pot schimba unul pe sezon fara nicio problema. In program am salvarea pozitiei la sfirsitul manevrei si citirea la inceputul fiecarei manevre. Pentru inlaturarea jocului mecanic salvez in memorie sensul, numai la schimbarea lui si il citesc numai la initializare.

Am continuat sa lucrez la program. Acum avind nivele constante, 1 si 0, si alternante, am renuntat la detectia acesora, pe care o foloseam la sezorul Hall. Doar incrementez si decrementez pozitia, numai la actionarea butonului. Am continuat sa masor inertia si sa inlatur prin soft jocul mecanic.

Incercarea de a monta un afisaj LCD, grafic, il aveam disponibil in casa, a fost un esec. Afisajul era foarte puturos si 'minca' din precizie. Am imprumutat unul 4 x 20, pe I2C, si se comporta OK.

Poze.
De baza este un reductor 1:60 dispus la baza pilonului. https://drive.google.com/file/d/1qJWtCir6MmlN6GYjr29dBYWEgbt6xsCQ/view?usp=sharing.

Acesta este actionat de un motor de stergator de parbriz la 24V cu un reductor 1:36.
https://drive.google.com/file/d/1l0pELN ... sp=sharing
https://drive.google.com/file/d/1yRUK5y ... sp=sharing

Montarea magnetului de HDD pe axul rotorului.
https://drive.google.com/file/d/1vsRGDD ... sp=sharing
https://drive.google.com/file/d/1uYUj6A ... sp=sharing

Senzorul Reed.
https://drive.google.com/file/d/1D20ZEy ... sp=sharing
https://drive.google.com/file/d/1vllYrH ... sp=sharing
https://drive.google.com/file/d/1aVDNCC ... sp=sharing
https://drive.google.com/file/d/1jEJg2L ... sp=sharing

Imi mentin parerea ca este cea mai simpla modificare pentru citirea pozitie.
Distanta intre pilon si masa de lucru este de cca 20 m.

73!
Costi

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

Re: Rotor antena cu Arduino

Mesajde yo8rxp » Lun Aug 10, 2020 3:20 pm

Salut Costi. Nu e vb se pret inlocuire arduino cat munca de recalibrare initiala. Afisaj grafic intradevar, sa faci drawrect pe tot display este costisitor ca si timp de executie in main loop, mai bine faci drawrect culoare fundal doar pe zona in care se modifica cifrele de la grade fara sa reimprospatezi tot display. Un anumit afisaj oled este legat chiar pe isr intrerupt request i2c si asta duce la un delay si mai mare. Motiv pentru care am ales rasperry pi cu kivy framework, mai cu seama ca linux multiprocessing chiar face ce trebuie, nu ca in windows unde copiaza in memorie tot parentul ca sa faca memory share. Insa cu un encoder optic de 800 pozitii pe rotatie, in python inca am probleme de pierderi incremente.
Doar impreuna putem genera idei si rezultate noi.
Imi place ca esti pasionat de cod, 73 si succese.


Înapoi la “Constructii electronice”

Cine este conectat

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