Cilibiu Postat Aprilie 20, 2021 Partajează Postat Aprilie 20, 2021 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
digix Postat Aprilie 20, 2021 Partajează Postat Aprilie 20, 2021 Poate un proces PID si sa te joci cu Ki,Kd te-ar ajuta, depinde la ce-ti foloseste transformarea asta in final. Link spre comentariu
Cilibiu Postat Aprilie 20, 2021 Autor Partajează Postat Aprilie 20, 2021 Vreau sa fac 2 instrumente in care sa simulez diferite situati. Ai vreun cod ca exemplu? Link spre comentariu
Mircea Postat Aprilie 20, 2021 Partajează Postat Aprilie 20, 2021 (editat) 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 Aprilie 20, 2021 de Mircea Link spre comentariu
cirip Postat Aprilie 20, 2021 Partajează Postat Aprilie 20, 2021 (editat) 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: 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 Aprilie 20, 2021 de cirip Link spre comentariu
Mircea Postat Aprilie 20, 2021 Partajează Postat Aprilie 20, 2021 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. Link spre comentariu
Cilibiu Postat Aprilie 21, 2021 Autor Partajează Postat Aprilie 21, 2021 Multumesc tuturor de raspuns. Atasez un exemplu. Tensiune linara de la 0-5000mV valoare logaritmica vs liniara. Link spre comentariu
cirip Postat Aprilie 21, 2021 Partajează Postat Aprilie 21, 2021 Salut, Cred ca inca nu am stabilit ce fel de functie trebuie programata. Functia logaritmica are graficul asa: Functia exponentiala arata asa: iar functia hiperbolica , de care mi se pare ca se apropie cel mai mult graficul lui @Cilibiu (zona pozitiva), arata asa: 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
Cilibiu Postat Aprilie 21, 2021 Autor Partajează Postat Aprilie 21, 2021 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
core Postat Aprilie 22, 2021 Partajează Postat Aprilie 22, 2021 Pare un grafic de transformare a valorilor culese de pe un fotorezistor si transformate in iluminare (lux). https://anaselhajjami.files.wordpress.com/2016/04/ldr-characteristic-curve.jpg Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum