Sari la conținut
ELFORUM - Forumul electronistilor

Scalare logaritmica valori


Cilibiu

Postări Recomandate

Salut tuturor.

Vreau sa transform o valoare logaritmica de la 0-5V in valoare liniara PWM 0-255 si nu stiu cum sa fac asta.

Mar interesa si o valoare liniara 0-5V sa o transform logaritmic in 0-255.

Pe arduino.cc nu gasesc vreo functie de scalare (gen cum exista in programare PLC).

Pana acum am folosit trecerea pe nivele ca sa fac o scalare logaritmica doar ca nu aveam o curba liniara-logaritmica.....aveam trepte.

Vreau sa stiu daca exista o varianta care sa nu necesite multe lini de cod . Ocupa mult programul ca sa fac treptele sa fie cat mai marunte.

 

Link spre comentariu
  • Răspunsuri 9
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Cilibiu

    4

  • cirip

    2

  • Mircea

    2

  • digix

    1

Top autori în acest subiect

Imagini postate

lin_value = log10(log_value/10)

 

Spor la treaba!

 

LE: daca log_value e 0, nu stie logaritmul ce sa mai faca, deci atentie.

 

10-le vine de la logaritm in baza 10.

Editat de Mircea
Link spre comentariu
1 oră în urmă, Cilibiu a spus:

o valoare logaritmica de la 0-5V

Salut @Cilibiu,

 

Nu e clar ce vrei. 0-5V e un interval, nu o valoare. Cum alegi valorile in interiorul intervalului, iarasi nu are legatura cu intervalul.

Poti sa exemplifici cu cateva valori? 1=> ?, 2=> ?, 3=> ?, etc. Sau chiar cu un grafic facut de mana. Nu e greu de facut, dar trebuie clarificat ce vrei.

 

De exemplu: Vrei ceva de genul y = k*log10(1+x) ?, unde x = [0,5], iar y = [0,255] ?

Daca da, atunci ptr k=327.7 iese graficul asta:

log10_cilibiu.thumb.PNG.2c3a3db7b05e1ae5fb360e513e763b55.PNG

 

Daca nu ai functie logaritm in mediul de programare, se rezolva cu un soi de aproximare polinomiala (LMS, Taylor, altceva), dar intai sa ma lamuresc ce vrei, ca sa nu sap de pomana.

 

 

Editat de cirip
Link spre comentariu

0-5V trebuie "tradus" dupa cati biti are ADC-ul. la 0-255 sau 0-1023. Iar Arduino are functia log10().

 

Uite ce rezulta cu ce am pus mai sus la zece valori. Evident, trebuie adaugat un offset sa aduca numerele negative in pozitiv.

 

ZgPlhdD.jpg

Link spre comentariu

Salut,

 

Cred ca inca nu am stabilit ce fel de functie trebuie programata.

Functia logaritmica are graficul asa:

1024px-Binary_logarithm_plot_with_ticks.

 

Functia exponentiala arata asa:

1024px-Exp.svg.png

 

iar functia hiperbolica , de care mi se pare ca se apropie cel mai mult graficul lui @Cilibiu (zona pozitiva), arata asa:

1024px-Hyperbola_one_over_x.svg.png

 

Inca ceva. @Cilibiu, ai postat tabelul incomplet, desi graficul ocupa un interval mai mare. Daca vrei o formula pentru grafic, trebuie sa postezi tabelul complet, altfel aproximarea va avea erori mari. Posteaza excelul, nu captura de ecran, ca sa nu trebuiasca sa copiez de mana valorile.

 

Link spre comentariu

O sa revin cu tabelul, din ce am vazut in grafic ar fi primele 4 vaori cu diferente de 0.5 dupa aceea urmatoarele 4 valori cu diferente de 0.2 dupa care 0.1, deci nu ar fi o functie logaritmica......pare a fi ceva custom.

O sa revin cu tabelul exel.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări