Index
Index forum Index forum
Autentificare Autentificare
Inregistrare Inregistrare
Cine este online Cine este online
Galerie imagini Galerie imagini
Calendar evenim. Calendar evenim.
Cautare detaliata Cautare detaliata
Ghid forum Ghid forum
Album astrofoto
m8-m20-final.jpg
Imagine aleatoare
Blog
Inregistreaza-te pe forumul astronomy.ro
Colaboratori

Te intereseaza un domeniu al astronomiei si ai vrea sa scrii pentru siteul nostru? Alatura-te echipei noastre.

Meteo
Vremea in Bucuresti
Statistici forum
Numar total de mesaje in forum: 224724
Numar de utilizatori inregistrati: 2837
Cel mai nou utilizator inregistrat: Adrian T.
Cei mai multi utilizatori conectati au fost 543 la data de Vin Mar 29, 2024
Actualmente sunt 0 utilizatori pe chat   
Aceste date se bazeaza pe utilizatorii activi de peste 5 minute
Legenda
Mesaje noi Mesaje noi
Nu sunt mesaje noi Nu sunt mesaje noi
Forumul este inchis Forumul este inchis

DIY ASCOM powerbox


Du-te la pagina Anterioara  1, 2, 3, 4
Creaza un subiect nou   Raspunde la subiect  

DIY / ATM / Reparatii

Subiectul anterior :: Subiectul urmator  
Afiseaza mesajele pentru a le previzualiza:   
Autor Mesaj
valy
Membru
Membru


Data inscrierii: 21 Iul 2005
Mesaje: 10653



Localitate: Bucuresti

MesajTrimis: 13 Feb 2024 16:20 Download mesaj
Titlul subiectului:
Raspunde cu citat (quote)

Pare un algoritm de forma:

t = 0

t = t + a1/2
t = t + a2/2
t = t + a3/2
.....
=>
t = 0 + a1/2 + a2/2 + a3/2+...
=>
t = 0 +(a1+a2+a3+..)/2

Astfel algoritmul se transforma in:

a = 0
a = a + a1
a = a + a2
a = a + a3
...
=> t = 0 + a/2
Sus
varadinagypal
Membru
Membru


Data inscrierii: 27 Iul 2013
Mesaje: 186



Localitate: Cluj-Napoca

MesajTrimis: 13 Feb 2024 16:46 Download mesaj
Titlul subiectului:
Raspunde cu citat (quote)

Un programator low level care se respecta, cand vede un numar din asta de 36000000, isi ia medicamentul de inima (de prune, de exemplu) si isi da jos ochelarii, ca nu mai are ce sa faca.

Inmultirea de orice natura impnge biti in stanga, impartirea in dreapta, imagineaza-ti multe carti pe biblioteca mai modesta, iar repetand pasii, succesiv, cartile cazute raman cazute si nimeni nu le mai recupereaza. Motiv pentru care hotii, scuze, bancherii nu folosesc float, bancile folosesc fie int, fie big decimal, fie de din astea.

Conversiile din astea, menite utilizatorilor de camp (userus vulgaris), de obicei se fac in ultimul pas si nu pe parcurs, iar retinerea datelor se face dinamic (ca la float), cu rezolutie mare la valori mici, si cu rezolutie mica la valori mari. Ca nu te intereseaza daca consumul a fost 1000002Wh sau 1000001Wh, adica 1.00e6 sau 1.00e6, dar de intereseaza daca a fost 1 sau 2, adica 1e0 sau 2e0.


Mai e bancul cu muzeul de paleontologie. Apare sub scheletul de T-rex ca 71 milioane de ani, 3 saptamani si 2 zile. Si se uita elevii, cu proful de biologie, ca nu inteleg treaba. Cum adica 71 mil. de ani 3 saptamani si 2 zile. Pai, zice muzeologul, a fost un mare expert din Bucuresti, luna trecuta, si a datat scheletul ca fiind de 71 mil de ani.

Si la job acum dezbatem (adica tin prelegerea) despre epsilon, despre functiile de trigonometrie cu limita la 1.0 care ce sa faca sau sa nu faca cu numerele obtinute din aritmetica cu valori de gen 1.00000000000002, care in mod evident e mai mare decat 1, in afara intervalului de -1..+1, deci cat e gen arcsin(1.00000000000002), nedefinit????
Sus
AVD
Membru
Membru


Data inscrierii: 04 Iun 2022
Mesaje: 87



Localitate: Dudu

MesajTrimis: 13 Feb 2024 17:03 Download mesaj
Titlul subiectului:
Raspunde cu citat (quote)

valy a scris:
Pare un algoritm de forma:

t = 0

t = t + a1/2
t = t + a2/2
t = t + a3/2
.....
=>
t = 0 + a1/2 + a2/2 + a3/2+...
=>
t = 0 +(a1+a2+a3+..)/2

Astfel algoritmul se transforma in:

a = 0
a = a + a1
a = a + a2
a = a + a3
...
=> t = 0 + a/2


Adica, asa ceva ar fi mai frumos?
time1 si time2 sunt din nou unsigned long.
time1=millis();
[...]
prev_pwr_used = (prev_pwr+PWR/2)*(time1-time2);
prev_pwr=PWR;
time2=millis();
current_pwr_used = PWR*(time2-time1);
total_pwr_used = prev_pwr_used + current_pwr_used;
PWR_TOTAL = PWR_TOTAL + total_pwr_used / 3600000 ; // total power in W*h
Sus
valy
Membru
Membru


Data inscrierii: 21 Iul 2005
Mesaje: 10653



Localitate: Bucuresti

MesajTrimis: 13 Feb 2024 17:21 Download mesaj
Titlul subiectului:
Raspunde cu citat (quote)

Nu prea e ok, pare ca defapt e acelasi lucru ca in versiunea originala.
Sper sa nu stricam corectitudinea. dar acea impartire n-ar trebui sa apara deloc, decat la final detot dupa ce calculezi ultima iteratie. Desigur daca pe parcurs afisezi puterea pana la mom. respectiv, va trebui sa faci impartirea, dar doar pt afisare, insa banui ca nu te intereseaza la fiecare milisec ce ai consumat.

Ultima linie ar trebui sa fie:
PWR_TOTAL = PWR_TOTAL / 3600000....

Ai multe variabile locale pe acolo, e un algoritm iterativ si pare incomplet specificat, nici eu nu sunt foarte atent acum... dar ca idee schematica, ce am zis eu doua posturi mai sus cred ca se valideaza matematic. Daca acea abordare corespunde cu algoritmul tau, eu asa as face. Pana la urma conteaza sa fie corect si mai putin important sa fie optimizat.

Dar aici subscriu la ce zicea colegul pal mai sus, acea impartire la 3600000 e naspa, rostogolesti niste erori de nu te vezi...


varadinagypal a scris:
..Motiv pentru care hotii, scuze, bancherii nu folosesc float, bancile folosesc fie int, fie big decimal, fie de din astea.
Ai vazut Office space? Spune ca da!!

Ultima modificare efectuata de catre valy la 13 Feb 2024 17:29, modificat de 1 data in total
Sus
AVD
Membru
Membru


Data inscrierii: 04 Iun 2022
Mesaje: 87



Localitate: Dudu

MesajTrimis: 13 Feb 2024 17:27 Download mesaj
Titlul subiectului:
Raspunde cu citat (quote)

valy a scris:
Nu prea e ok, pare ca defapt e acelasi lucru ca in versiunea originala.
Sper sa nu stricam corectitudinea. dar acea impartire n-ar trebui sa apara deloc, decat la final detot dupa ce calculezi ultima iteratie. Desigur daca pe parcurs afisezi puterea pana la mom. respectiv, va trebui sa faci impartirea, dar doar pt afisare, insa banui ca nu te intereseaza la fiecare milisec ce ai consumat.

Ultima linie ar trebui sa fie:
PWR_TOTAL = PWR_TOTAL / 3600000....



Nu cred ca ne gandim la acelasi rezultat Very Happy PWR_TOTAL este un "Gauge" in NINA, care este updatat odata pe secunda de driver (driverul "citeste" valoarea stocata pe variabila PWR_TOTAL in arduino si o atribuie acelui camp din NINA). Nu e o valoare pe care o citesc cand sting lumina.

Codul complet este asta: functia ruleaza in bucla (in void loop()).
Cand pe serial vine comanda care cere valoarea, pur si simplu se trimite PWR_TOTAL prin serial.

void GET_POWER() {
time1=millis();
if (AVERAGE_COUNT == 150) AVERAGE_COUNT = 0;
float VOLTAGE_SAMPLE_SUM=0;
for (int v=0;v<150;v++)
{
PIN_VALUE_V = analogRead(VM);
VOLTAGE_SAMPLE_SUM +=PIN_VALUE_V;
}
VOLTAGE_SAMPLE_SUM /=150;
VOLT_TEMP = (VOLTAGE_SAMPLE_SUM * 5.0) / 1024.0;
VOLT = VOLT_TEMP / 0.0982;
if (VOLT < 0.1) VOLT=0.0;
CURRENT_SAMPLE_SUM=0;
for (int i=0;i<150;i++)
{
PIN_VALUE_A= analogRead(AM);
CURRENT_SAMPLE_SUM = CURRENT_SAMPLE_SUM + PIN_VALUE_A;
}
AMP_AVERAGE[AVERAGE_COUNT] = (2.494 - ((CURRENT_SAMPLE_SUM/150)*(5.0/1024.0))) / ACS_resolution;
AVGAMP=0;
for (int c=0;c<150;c++) AVGAMP += AMP_AVERAGE[c];
AMP = AVGAMP/150;
if (AMP< 0.01) AMP=0.0;
PWR = VOLT * AMP;
AVERAGE_COUNT = AVERAGE_COUNT + 1;
prev_pwr_used = (prev_pwr+PWR/2)*(time1-time2);
//PWR_TOTAL = PWR_TOTAL+ ((((prev_pwr+PWR)/2)*(time1-time2))/3600000); // total power in W*h
prev_pwr=PWR;
time2=millis();
current_pwr_used = PWR*(time2-time1);
total_pwr_used = prev_pwr_used + current_pwr_used;
PWR_TOTAL = PWR_TOTAL + total_pwr_used / 3600000 ; // total power in W*h
}
Sus
valy
Membru
Membru


Data inscrierii: 21 Iul 2005
Mesaje: 10653



Localitate: Bucuresti

MesajTrimis: 13 Feb 2024 17:31 Download mesaj
Titlul subiectului:
Raspunde cu citat (quote)

Acu' sincer, prefer sa fac un algoritm decat sa inteleg ce au facut altii. Laughing Laughing

AVD a scris:

Codul complet este asta: functia ruleaza in bucla (in void loop()).
Cand pe serial vine comanda care cere valoarea, pur si simplu se trimite PWR_TOTAL prin serial.

Pai nu vad ce faci cu PWR_TOTAL, pare ca doar se actualizeaza si atat.
Sus
AVD
Membru
Membru


Data inscrierii: 04 Iun 2022
Mesaje: 87



Localitate: Dudu

MesajTrimis: 13 Feb 2024 17:35 Download mesaj
Titlul subiectului:
Raspunde cu citat (quote)

Codul sursa pentru Arduino este in link-ul pus mai sus. Am observat ca lumea adauga sugestii si comentarii bazate pe cod, deci mi-am imaginat si am presupus ca ati inteles ce face. Stiu, greseala mare, sa presupui Very Happy

As fi complet de acord sa se faca impartirea odata la final si gata. Asa are foarte mult sens, daca vreau sa obtin o valoare finala. Doar ca eu vreau sa o actualizez in timp real pentru ca ea sa fie adusa in NINA, tot in timp real.
Sus
valy
Membru
Membru


Data inscrierii: 21 Iul 2005
Mesaje: 10653



Localitate: Bucuresti

MesajTrimis: 13 Feb 2024 17:40 Download mesaj
Titlul subiectului:
Raspunde cu citat (quote)

Da, assumption is the mother of all Fuckups.

AVD a scris:
Doar ca eu vreau sa o actualizez in timp real pentru ca ea sa fie adusa in NINA, tot in timp real.
Daca prin timp real intelegi ca dupa fiecare calculatie sa o exporti, pare logic sa faci impartirea de fiecare data. De cate ori pe sec se intampla o astfel de calculatie?
Sus
AVD
Membru
Membru


Data inscrierii: 04 Iun 2022
Mesaje: 87



Localitate: Dudu

MesajTrimis: 13 Feb 2024 17:42 Download mesaj
Titlul subiectului:
Raspunde cu citat (quote)

Am masurat time2-time1 si este 20ms. Timpul intre cicluri este si el cam 100ms, deci cam de 8-10 ori pe secunda.
Sus
varadinagypal
Membru
Membru


Data inscrierii: 27 Iul 2013
Mesaje: 186



Localitate: Cluj-Napoca

MesajTrimis: 13 Feb 2024 17:50 Download mesaj
Titlul subiectului:
Raspunde cu citat (quote)

alta softareala: model, view, controller. Tu ai nevoie de valoarea interna, un acumulator, si ai nevoie de un view value, care afiseaza valoarea respectiva pe serial in cazul asta. Is doua lucrurui diferite. As putea tine o prelegere si despre asta, dar ma abtin, si mentionez doar ca m-am lovit odata de careva destept care facea conversii celsius-fahrenheit-kelvin, cu o singura cifra dupa virgula, si se mira ca iterand intre unitatile de masura, i se tot schimba valoarea de celsius... pai, C-F e o formula urata, dar si K-C e cu .15 la capat, nu .2 si nu .1. Ca nu avea valoare in spate { valoare model, unitate: microcelsius} => { valoare view, unitate: celsius/f/k }, ci avea {valoare, unitate} si... nu-i iesea. Vai cate din astea as putea povesti, ca in PLM ca nu se face ucenicie si mentorat pe bune in programare, si firmele multicultinationale, carora nu le pasa, arunca cu titluri dupa niste bebe care stiu sa se dea pe bicicleta, senior tati, si nu mai ajungi tu sa comentezi ce a facut maria sa.
Sus
Afiseaza mesajele pentru a le previzualiza:   
Creaza un subiect nou   Raspunde la subiect   DIY / ATM / Reparatii Du-te la pagina Anterioara  1, 2, 3, 4

Download topic
Pagina 4 din 4
 
Mergi direct la:  
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
Nu puteti atasa fisiere in acest forum
Puteti descarca fisiere in acest forum
© 2015 astronomy.ro
Termeni si conditii generale      Termeni si conditii forum      Contact