catalin004 Postat Octombrie 27, 2017 Partajează Postat Octombrie 27, 2017 Salutare...de luni vreau sa ma apuc de alte jucarii...ma gandeam la un pwm trifazat....acum de...am niste intrebari: 1. cate pwm-out-uri trebuie sa aiba uC? 2.se gaseste vreun tabel sau calculator pentru calcul sin table? Si urmatoarele intrebari o sa vina mai tarziu.... Link spre comentariu
mars01 Postat Octombrie 27, 2017 Partajează Postat Octombrie 27, 2017 (editat) PWM tri-fazat, citeste aici. Si aici. Cuvantul cheie pentru cautat este "sine wave lookup table". Ai aici un asemenea calculator. Editat Octombrie 27, 2017 de mars01 1 Link spre comentariu
catalin004 Postat Octombrie 27, 2017 Autor Partajează Postat Octombrie 27, 2017 Ok...eu nu am astfel de procesoare...iar pe mana nu imi pica un dsPic de la colegi...asa ca ma chiunui cu un amarat de 16f876a....are 2 pwm-uri...ma gandeam macar sa fac un sinus...am reusit insa doar pe un canal, nu stiu cum sa-l neg pe canalul 2....sau sa il fac complementar cu primul...oricum, de luni o sa lucrez cu el.... Link spre comentariu
mars01 Postat Octombrie 28, 2017 Partajează Postat Octombrie 28, 2017 (editat) Defazarea adica altfel spus, decalarea a doua semnale in timp, o poti face atunci cand parcurgi look-up table-ul care contine sinusoida. Sa zicem ca ai 2 PWM-uri si este necesar un singur look-up table. Presupunem ca ai ales un look-up table (LUT) care are 256 valori (0 .... 255). Parcurgerea o faci astfel cu indexul modulo 255. Primul PWM incepe sa trimita duty-cycle incepand cu elementul 0 al matricii (vectorului) care contine valorile de duty-cycle (asa numitul look-up table). Al doilea PWM incepe sa trimita duty-cycle incepand cu elementul 127 al matricii (vectorului) care contine valorile de duty-cycle (adica tabela LUT). In acest fel semnalele rezultate sunt decalate (deazate) cu 90 grade. S.a.m.d. Editat Octombrie 28, 2017 de mars01 Link spre comentariu
catalin004 Postat Octombrie 29, 2017 Autor Partajează Postat Octombrie 29, 2017 ma refeream la sinusul de jos, adica componenta sub zero.....nu ca nu ar fi fost folositor ce ati scris Link spre comentariu
cristi7521 Postat Octombrie 29, 2017 Partajează Postat Octombrie 29, 2017 Putina teorie pentru 1 faza http://tahmidmc.blogspot.ro/2011/01/generation-and-implementation-of-sine.html http://tahmidmc.blogspot.ro/2012/10/generation-of-sine-wave-using-spwm-in_10.html Link spre comentariu
catalin004 Postat Octombrie 30, 2017 Autor Partajează Postat Octombrie 30, 2017 Am gasit un programel interesant...cu pwm fix, si de aici o sa pornesc....cred ca este cel mai simplu....are si pe cea de-a doua iesire semnal invers la 180*, celalalt de la tahmid facea unda din 4 iesire (semnale) diferite....cerd ca acesta este mai simplu, si o sa ii atasez o tabela sinus sa vedem ce iese.... float teta; unsigned char sample[15]; int i=0; void main() { TRISC = 0x00; PORTC = 0x00; PWM1_Start(); PWM2_Start(); PWM1_Set_Duty(50000); PWM2_Set_Duty(50000); while(1) { for (i=0; i<15; i++) { teta = ( (float) i / 15 ) * 3.14159; sample[i] = (int) (255 * sin ( teta )); PWM1_Set_Duty(sample[i]); } for (i=0; i<15; i++) { teta = ( (float) i / 15 ) * 3.14159; sample[i] = (int) (255 * sin ( teta )); PWM2_Set_Duty(sample[i]); } } } Link spre comentariu
cristi7521 Postat Octombrie 30, 2017 Partajează Postat Octombrie 30, 2017 Vad ca semnalele se genereaza pe rand, nu simultan. Ce faci daca vrei semnale generate simultan? Ai idee in cat timp se executa aceste 2 instructiuni? teta = ( (float) i / 15 ) * 3.14159;sample[i] = (int) (255 * sin ( teta )); Link spre comentariu
catalin004 Postat Octombrie 30, 2017 Autor Partajează Postat Octombrie 30, 2017 Stiu ca ii este greu...am vrut doar sa vad partea opusa la 180 grd....logic ca se face cu un timer si tabela....ceea ce caut chiar acum si sa vad ce iese pe 2 iesiri.... Link spre comentariu
catalin004 Postat Noiembrie 1, 2017 Autor Partajează Postat Noiembrie 1, 2017 Salutare...am gasit conceptul de pointer...l-as ruga pe mars01 sa explice putin ceea ce fac...ma refer ca detaliaza foarte explicit....si unde se folosesc intr-un program embeded?sau se folosesc doar pentru C++? ma refer la modul e vizualizare a informatiilor.... Link spre comentariu
mars01 Postat Noiembrie 1, 2017 Partajează Postat Noiembrie 1, 2017 Variabilele tip pointer sunt un subiect mai dificil. Iti recomand ca mai intai sa stapanesti subiectele mai simple cum ar fi sintaxa C, operatori logici, operatori binari etc. Link spre comentariu
Bandi Szasz Postat Noiembrie 2, 2017 Partajează Postat Noiembrie 2, 2017 Un pointer cum zice si denumirea doar "arata catre o zona din memorie". Cum probabil deja stii o variabila ocupa spatiu de memorie, de ex, char ocupa 1 byte sau 8 biti, un pointer nu ocupa spatiu fizic ci arata catre zona de memorie care a fost alocata pt variabila respectiva. De obicei se foloseste pentru a modifica o anumita variabila declarata intr-o functie in interiorul unei alte functii fara a folosii return. De ex. void nonPointerFunc(int number) { number = 2; } void pointerFunc(int *number) { *number = 2; } void main() { int numar = 1; nonPointerFunc(numar); // variabila numar are in continuare valoarea 1 pointerFunc(&numar); // findca am folosit un pointer prin care am trimis locatia de memorie a variabilei, numar acuma are valoarea 2 } Link spre comentariu
catalin004 Postat Noiembrie 2, 2017 Autor Partajează Postat Noiembrie 2, 2017 Interesant....insa cred ca este mai folositoare in Visual Studio pentru interfete cu utilizatorul...zic si eu Link spre comentariu
mars01 Postat Noiembrie 2, 2017 Partajează Postat Noiembrie 2, 2017 (editat) Pointerii sunt utili si atunci cand returnezi mai multe valori dintr-o functie. In mod default o functie are o singura valoare intoarsa (valoare de iesire) desi poate avea mai multi parametri (valori de "intrare"). Pointeri sunt nu numai catre variabile standard dar si catre structuri, exista pointeri catre functii. Matricile (arii, vectori) se bazeaza tot pe pointeri. Au foarte multe utilitati mai ales cand se lucreaza aproape de hardware, tocmai ca limbajele ca JAVA de exemplu, nu au conceptul de pointeri expus catre programator. Cum spuneam, pointerii sunt subiect mai avansat. Editat Noiembrie 2, 2017 de mars01 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