Jump to content
ELFORUM - Forumul electronistilor
Cilibiu

Scalare logaritmica valori

Recommended Posts

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 to post
Share on other sites

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.

Edited by Mircea
Link to post
Share on other sites
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.

 

 

Edited by cirip
Link to post
Share on other sites

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 to post
Share on other sites

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 to post
Share on other sites

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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines