Jump to content
ELFORUM - Forumul Electronistilor

gsabac

Membru activ
  • Content Count

    1,180
  • Joined

  • Last visited

Community Reputation

353 Excellent

5 Followers

About gsabac

  • Rank
    User Elforum
  • Birthday 12/18/1946

Profile Information

  • Locatie
    Bucuresti

Recent Profile Visitors

1,380 profile views
  1. Am pus toate fisierele proiectului de sursa cu DAC in mikroC si Proteus, deoarece este posibil ca sa fie setari diferite pe unele PC-uri. In fisierul Sursa_PIC16F877_MCP4921.c se afla aplicat si procedeul LSB-MSB. Se converteste un float la binar si se aplica DAC-ului, dar procedeul se poate folosi si pentru PWM, vedeti void convert_DAC(unsigned int value) @sabac Surse cu PIC16F877 si DAC MCP4921.rar
  2. Trebuie sa luati in considerare ca iesirea are un zgomot aleator permanent de +/- 1 trepta, sau mai mult, orice filtraj s-ar folosi, deci +/- 100mV(catastrofal) sau +/-25mV la fel de rau, acum depinde de ce parametri doriti sa obtineti. Eu as opta pentru o sursa cel putin la fel de performanta ca o sursa analogica de laborator, cu afisor mare cu 5 cifre. Sursa cu PIC-DAC si etalon are zgomote de uV, stabilitate si precizie de cativa mV. @gsabac
  3. Nu doresc sa va abat de la proiectul topicului, dar sursa cu PWM este utila atunci cand se doreste realizarea unui convertor sinus pur de putere, direct de la retea, cu MOSFET si transformator. Pentru o sursa de precizie, stabilitate si zgomot extrem de mic este cel mai bine de proiectat sau construit o sursa variabila de tensiune, de ex. cu PIC16F877 sau PIC16F877A, MCP4921 si etalon MCP1541. Tensiunea reglabila din claviatura, buton step rotitor si reglaj step din butoane, etc. O schema 0-50V cu pas de circa 12mV este in poza. Click pentru marire. Daca doriti o asemenea varianta va propun fisierele mikroC si Proteus. Reglajul este super rapid si precis, dar nu tineti seama de puterile disipate la curent mare, doar reglaj si stabilizare. Codul este extrem de simplu si reglajul contine si limitarile de tensiuni la 0V si 50V. // Name : Power Source MCP4921 12 bit DAC interfacing with PIC16F877 microcontroller via SPI Connectivity // DAC module connections sbit Chip_Select at RC0_bit; sbit Chip_Select_Direction at TRISC0_bit; #define TensiuneMax 4.080 unsigned int container ; unsigned int MSB; unsigned int LSB; float Tensiune; unsigned int numar_Bit; void convert_DAC(unsigned int value) { /*Step Size = 2^n, Therefore 12bit 2^12 = 4096 For 5V reference, the step will be 5/4095 = 0.0012210012210012V or 1mV (approx)*/ /*Step: 1, stored the 12 bit data into the container Suppose the data is 4095, in binary 1111 1111 1111*/ container = value; /*Step: 2 Creating Dummy 8 bit. So, by dividing 256, upper 4 bits are captured in LSB LSB = 0000 1111*/ LSB = container/256; /*Step: 3 Sending the configuration with punching the 4 bit data. LSB = 0011 0000 OR 0000 1111. Result is 0011 1111 */ LSB = (0x30) | LSB; /*Step:4 Container still has the 21bit value. Extracting the lower 8 bits. 1111 1111 AND 1111 1111 1111. Result is 1111 1111 which is MSB*/ MSB = 0xFF & container; } void main() { TRISD = 1; PORTD = 0b11111111; Tensiune=0.000; // Tensiune presetata la zero la pornire while(1) { SPI1_Init(); //SPI Chip_Select_Direction = 0; // Set CS# pin as Output if (!RD0_bit) // if button on RD0 pressed { //Sound_Play(2000,650); //trebuie pus buzerul play in Proteus Delay_ms(30); if (Tensiune <= TensiuneMax) Tensiune = Tensiune + 0.01; //increment 0.01V } if (!RD1_bit) // button on RD1 pressed { Delay_ms(30); if (Tensiune > 0.01) Tensiune = Tensiune - 0.01; // decrement 0.01V } numar_Bit=Tensiune/0.001; //converteste Volti in numarul de trepte de 1mV // numar_Bit=4095; convert_DAC(numar_Bit); Chip_Select = 0; SPI1_Write(LSB); SPI1_Write(MSB); Chip_Select = 1; } } Cu intarzierile de 30mS reglajul este rapid, dar sare pasi, iar cu o 500mS face pasi normali la click. @gsabac Sursa_PIC16F877_MCP4921.mcppi Sursa_PIC16F877_MCP4921.pdsprj
  4. @aetius, schema functioneaza perfect si trebuie doar setata tensiunea presetata de 12V si tensiunea maxima. Am rearanjat putin schema si am marit formatul la A3, am pus condensator pe iesire si rezistenta de sarcina. Click pentru marire. Computerul meu este cam slabut si este cam la 60% @gsabac Sursa cu PIC16F877A @aetius ver2.pdsprj
  5. OK. Revin cu definirea tensiunii maxime, setata dupa linia Tensiune=0; TensiuneMax =26; //tensiunea maxima 26V sau atat cat o doriti Este o variabila deoarece poate se doresc diverse setari. 0-12V sau 0-50V, etc. @gsabac
  6. @Thunderer este profesorul meu la sectiunea microcontrolere, el m-a incurajat si mi-a dat sfaturi ca sa pricep ce si cum, acum vreo 2 ani si cu timpul am devenit independent si cu ajutorul altor useri pasionati si amabili, la multe tipuri de aplicatii care m-au pasionat. Eu va propun urmatorul cod: Adaugati variabila TensiuneMax ca "int" in linia de cod: unsigned int Tensiune, TensiuneMax; si modificati codul ca mai jos; if (!RD2_bit) // if button on RD2 pressed { //Delay_ms(10); if (Tensiune < TensiuneMax) current_duty_2++; // increment current_duty_2 PWM2_Set_Duty(current_duty_2); Delay_ms(30); } if (!RD3_bit) //if button on RD3 pressed { //Delay_ms(10); if (Tensiune > 0.1) current_duty_2--; // decrement current_duty_2 PWM2_Set_Duty(current_duty_2); Delay_ms(30); } De fapt proiectul este al dvs. si poate reusiti sa il finalizati cu succes fie la nivel de simulare fie chiar ca aparat, depinde ce v-ati propus. @gsabac
  7. Programarea este un mare hazard si de fapt programatorul trebuie sa determine ce vrea sistemul ca sa functioneze corect. Din pacate, uneori, aceasta se face prin multe teste, tinand seama de anumite indicii, bazate pe o experienta dobandita personal sau de alti programatori. La proiectele cu MikroC si Proteus este mai simplu si mai rapid, deoarece rezultatul se vede imediat si astfel productivitatea creste. Bazat pe munca si priceperea lui @aetius, am modificat codul din MikroC si schema din Proteus astfel incat sa functioneze destul de bine. Seteaza 12V si 50V si face pasi de tensiune de 0,2V in sus si in jos si ambele proiecte MikroC si Proteus sunt fisierul RAR numit test1. Schema este simplificata, deoarece filtrajul era prea mare si astfel intarzia modificarea tensiunii continue de iesire, am luat valorile de la proiectul descris si realizat de @radhoo Click pentru marire. Daca credeti ca este bine, puteti trece mai departe la completarea etajelor de iesire, la bucla de stabilizare, la setarea curentului, si la memorarea tensiunii in EPROM, astfel incat ultimul reglaj al sursei sa poata fi pastrat la o noua pornire, v-am schitat cateva randuri in program. Succes! PS. Daca am redus numarul de citiri la 3 asa cum ati descoperit, functioneaza perfect, chiar si la apasare continua. @gsabac Sursa cu PIC16F877A test 1.rar
  8. Asa arata schema originala a lui @aetius. Click pentru marire. Functioneaza exact cum ne-a descris in topic, cateva apasari rapide si citeva secunde la un pas. Aveti idei de modificare pentru un reglaj mai rapid? @gsabac
  9. Codul lui @aetius in mikroc, implementat de mine pe neve in Proteus determina urmatoarele reglaje: - cresterea tensiunii; - scaderea tensiunii; - presetare 12V; - presetare 50V. Acestea se fac cu PWM2, deci butoanele 1 si 2 care modifica PWM1 ar fi pentru reglajul fin al tensiunii de iesire asa cum bine a sugerat @Thunderer si ar trebui sa modific putin schema pentru aceasta. @gsabac
  10. Chiar de aceasta incrementare repetata rapid este nevoie, deoarece altfel te apuca "noaptea" pana schimbi tensiunea de la o valoare la alta. Se poate rezolva cu o temporizare suplimentara la fiecare apasare apoi daca se mentine apasarea sa ruleze rapid. Procedeul este similar functionarii claviaturii sau reglajului unui ceas digital. @gsabac
  11. Da sunt bunicele, cu germaniu, au circa 3,5pF si mai jos este o lista cu diode de capacitate redusa. 1N34A cjo=0.5pF germaniu merge la 1GHz OA90-G Cjo=1pF germaniu AA112 cjo=1.2pF germaniu 1N4148 Cjo=4pF siliciu HP5082-2835 Cj0=0.7pF schotky siliciu capsula ca 1N4148 BAT17s CJO=0.42pF schotky siliciu SOT23 SMD Diodele au numele complet HP-5082-2826 se gasesc si costa cam 4 euro bucata. @gsabac
  12. Eu am facut sondele simple asa: Scheme folosibile faara prepolarizare. Scheme cu prepolarizare. Detaliu cu conectarea la masa si spatele detectorului cu o dioda paralel Linkul nu mai este valabil, a fost sters de provider dupa 15 ani, probabil ca nu m-a atras ca client. In ultimii ani il intrerupea la fiecare 3 luni si ma testa sa cumpar, apoi l-a sters desi isi spune ca este freeWebs. Pacat un site frumos, util cu mai mult de 200000 de vizualizari. Deasemenea si intreg site-ul providerului home.ro de la RCS-RDS, Digi a fost sters dupa 15 ani si cam 300000 de vizualizari, gelectronic.home.ro, pacat! Detaliul cu montura diodelor. Poate va foloseste ca model, incercati sa construiti acest tip de sonde, sunt utile. @gsabac
  13. Nu am Proteus 8.7 si nu am reusit sa il instalez, poate imi dati un MP. Totusi va rog sa postati schema ca sa o transcriu pentru Proteus 8.5. In concluzie nu pot deschide fisierul, dar o simulare pe o schema improvizata cu blocuri cu codul original merge asa: - la o apasare poate sari chiar si 3-4 trepte de 0,1V, depinde cat de iute faci click pe buton; - reglajul este intre 0V si 50V; - daca se creste tensiunea din buton dupa 50V in loc sa se blocheze da 0V si apoi creste; - daca tensiunea scade, dupa 0V sare brusc la 50V in loc sa se blocheze la 0V; - tensiunea initiala este 02.5V si sare la un click "Up" la 0.00V si la "Down" sare intre 49.5 si 50V depinde de iuteala clicului. @gsabac
  14. Asa arata trusa originala cu sonde, cabluri, virfuri de masura, adaptori si atenuatori; Este de retinut ca tot sistemul este construit pentru 75 ohmi si sunt si adaptori si sonde care prin cuplajul capacitiv permit masurarea tensiunii de RF chiar in prezenta tensiunilor continui. Totusi este o diferenta, se folosesc diode KA104A si KA120B care s-ar putea sa aibe altfel de terminale, de ex. coaxiale sau plate. @gsabac
  15. 1N5711 are 2pF si @grosu99 detine dioda KA120A-> 0.05....0,15pF care este net superioara ca detector de RF pana la 1000MHz si doreste sa faca schema originala care este cea mai simpla cu putinta. Poate ne arata si noua schemele, iar in trusa originala sunt si niste atenuatori coaxiali in caz ca nivelul este prea mare. @gsabac
×
×
  • 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.