Jump to content
ELFORUM - Forumul electronistilor

Generator de impulsuri


Recommended Posts

Vreau sa prezint un aparat usor de construit, dar destul de util intr-un laborator. De asemenea, poate fi bun ca proiect pentru scoala, teoretic sau practic. Ca amator, ori de cate ori aveam nevoie de impulsuri, trebuia sa construiesc un multivibrator cu tranzistoare sau cu 555. Totusi in astfel de montaje factorul de umplere si frecventa sunt dependente si dificil de controlat separat. Asa ca am vrut sa construiesc un generator de impulsuri care sa indeplineasca urmatoarele:

 

> Generare de semnal dreptunghiular compatibil TTL

> Factor de umplere ("duty cycle") reglabil, cu precizie buna, in procente

> Perioada semnalului de la iesire sa se regleze pe o plaja foarte larga. Perioada maxima am vrut sa fie de ordinul minutelor, iar perioada minima, cel putin 10uS.

> Posibilitate de trigger extern (functionare ca monostabil)

> Compact si usor

> Realizabil din componente vechi si usor de gasit. (n-am cumparat nici o piesa noua pentru el)

 

Partea care da perioada semnalului de la iesire este oscilatorul. Pentru a fi cat mai simplu, si din cauza ca oricum aveam nevoie de niste inversoare in schema, am ales un oscilator foarte simplu cu un inversor Schmitt-Trigger, o rezistenta si un condensator:

Posted Image

. Pentru a permite reglajul, am pus un comutator rotativ care selecteaza unul din urmatoarele condensatoare:

1000uF; 100uF; 10uF; 1uF; 100nF; 10nF; 1nF; 100pF. Valorile fiind puteri ale lui 10, rezulta ca raportul dintre frecventele a 2 pozitii apropiate este de asemenea 10.

Daca si rezistenta se pune variabila, astfel incat sa atinga valori de genul R...10R, atunci oscilatorul poate sa lucreze pe orice frecventa, pe toate decadele date de comutatorul rotativ. In loc de rezistenta, am pus un rezistor fix de 100 ohmi in serie cu un potentiometru de 1Kohm. Astfel am obtinut si o usoara intrepatrundere a gamelor.

Cu aceasta configuratie am obtinut o banda de frecvente de oscilatie intre 0,3Hz si 15MHz, ceea ce duce la o perioada a semnalului de la iesirea aparatului de 100 de ori mai mare; intre 300s si 6uS.

Pentru obtinerea unui factor de umplere variabil, am preferat o abordare digitala. Ideea de baza este urmatoarea: Un contor decadic numara de la 0 la 99; pana la o anumita valoare specificata de pe panoul frontal, iesirea este "1". Incepand de la acea valoare, iesirea devine "0".

Compararea cu valoarea de referinta se poate face in mai multe moduri. Cel mai mic consum ar fi cu un comparator de egalitate, cu 8 porti XOR si o poarta NOR cu 8 intrari. Alta solutie ar fi cu un comparator pe 8 biti (cu doua 7485/К155СП1), care consuma mai mult, dar nu am acest integrat. Alta solutie ar fi cu un circuit de scadere realizand operatia:

 

adder_result = bcd_counter - duty_cycle

 

unde adder_result este rezultatul operatiei, duty_cycle este valoarea citita de pe panoul frontal, si bcd_counter este valoarea din numaratorul decadic.

Cat timp nu are loc depasire(Carry / Overflow), inseamna ca bcd_counter<=duty_cycle, deci iesirea este "1". Dupa ce bcd_counter devine mai mare ca duty_cycle, iesirea devine "0".

Stim ca diferenta se poate face de fapt prin adunare cu complementul fata de 2 al scazatorului. Complementul

 

fata de 2 se obtine negand bit cu bit, si adunand 1:

 

adder_result = bcd_counter + ~duty_cycle + 1

 

PRACTIC, ca sumator am folosit un CDB483 (7483), care avantajeaza din mai multe puncte de vedere. In primul rand, negarea se face foarte usor, legand pinul comun al dispozitivului de intrare decadic de pe panoul frontal la "0" (adica GND) in loc de "1" (adica +5V). Din cauza ca o intrare TTL are tendinta naturala sa stea in "1", nu a mai fost nevoie de rezistoare de pull-up. In al doilea rand, termenul "+1" din relatia de mai sus se obtine usor legand intrarea de Carry In a primului sumator (LSB) la "1". (practic lasand-o in aer). La iesirea sumatorului am legat un bistabil. In lipsa acestuia, hazardul combinational rezultat in timpul comutarilor portilor din CLC-ul sumatorului, poate da oscilatii nedorite la iesire. Cu bistabilul conectat, iesirea este sincronizata cu ceasul intern, si aceasta problema nu mai apare. Trigger-ul extern se realizeaza atunci cand comutatorul este in pozitia 'deschis'. Astfel, numaratoarele decadice sunt tinute in 99 pana cand apare un impuls pe linia de trigger extern. Dupa aceea numaratoarele trec in 00, si numara pana cand ating valoarea data ca factor de umplere, timp in care semnalul de trigger extern

este ignorat. Dupa palierul de '1', numaratorul este din nou tinut la 99 in asteptarea urmatorului impuls de trigger extern. Atunci cand comutatorul este in pozitia 'inchis', numaratoarele parcurg permanent 0...99, 0 etc.

 

Pentru o intelegere mai buna mi s-a parut educativ sa descriu functional modulul echivalent in Verilog:

module pulse_generator(input[3] rotary_encoder1, rotary_encoder2,input ext_trigger, ext_trig_e, clkoutput reg sq_out);reg[7] bcd_counter;wire[9] duty_cycle;wire set_counters9;wire[8] adder_result;assign duty_cycle = {rotary_encoder1, rotaty_encoder2} assign set_counters9 = (ext_trig_en & !sq_out & ext_trig_en);assign adder_result = bcd_counter - duty_cycle;always @(posedge clk or negedge set_counters9) beginsq_out<=adder_result[8]; if (!set_counters9) bcd_counter[7]<=8'd99;else if (bcd_counter[3]==4'd9) begin  bcd_counter[3]<=4'h0;  if (bcd_counter[7]==4'd9) bcd_counter[7]<=4'd0;else bcd_counter[7]<=bcd_counter[7]+1;endelsebcd_counter[3]<=bcd_counter[3]+1;endendmodule
Acuma, inlocuind liniile de cod cu integrate de pe vremea lui Brejnev, pe care le aveam la indemana, obtinem schema:

Posted Image

Nu am facut cablaj, ca erau prea multe trasee intr-un spatiu prea mic, trebuia dublu strat, si n-am vrut sa ma complic. Sursa am luat-o dintr-un incarcator de Ericsson. Din fericire scotea deja 5V stabilizat si n-a fost nevoie s-o mai modific. Astfel, tot aparatul' a fost proiectat, construit si documentat intr-o singura zi. Aplicatiile sunt multe, eu l-am facut in primul rand ca sa observ de mai aproape comportarea surselor flyback/forward. (comportarea transformatoarelor, regim discontinuu, timpi de comutatie, etc; chestii care altfel se explica printr-o matematica teribila.)

Se poate face mai compact si cu consum infim cu integrate CMOS din seria 4000, SMD.

POZE:

Posted Image

 

Posted Image

 

Posted Image

 

Panoul frontal; de la stanga la dreapta: Comutator pornit/oprit; selector game pentru frecventa; reglaj fin al frecventei; selectare factor de umplere (in procente); mufa RCA de iesire TTL si comutator selectie trigger extern.

 

Posted Image

 

Pe spate: mufa de alimentare si intarea pentru trigger extern

Posted Image

Link to comment
  • Replies 11
  • Created
  • Last Reply

Top Posters In This Topic

Foarte interesant proiectul, ba chiar am si constat functionarea sa in practica, oricum foarte util celor care isi doresc un generator de imp. cu bani cat mai putini.Tin minte ca au facut si romanii inainte de `89 ceva mai elaborat un pic ii zicea parca e0504 sau e0505.

Link to comment
  • 2 months later...
Guest c e z a r

salut! cu acest montaj facut de tine as putea obtine o serie de impulsuri de 2 MHz cu perioada de 1 milisecunde si perioada dintre impulsuri de 3 milisecunde?

Link to comment
Guest c e z a r

Ti-as ramane profund recunoscator! daca ai ceva timp si chef, te rog sa imi desenezi si mie o schema pentru asa ceva. mie imi trebuie acest generator de impulsuri pentru un palpator ultrasonic folosit la controlul metalelor.

Link to comment

Scuzati intarzierea,d-le Cezar, momentam eram ocupat cu niste chestii apoi am uitat :jytuiyu Sper sa nu fie tardiv.

Deci am facut asa: 555-ul genereaza impulsuri de 1ms. Frecventa se poate regla fin din potentiometru. 7474 formeaza un numarator pe 2 biti, avand 4 stari. Pentru una singura din aceste stari iesirea lui U1:C este "1" iar pentru celelalte iesirea este "0". U1A si U1B formeaza o schema clasica de oscilator TTL, la iesirea caruia se va gasi frecventa de rezonanta serie a cristalului (am gresit in schema, cristal de 2MHz, NU 8MHz). Poarta U1:D "lasa sa treaca" frecventa de 2MHz doar cand iesirea din U1:C este 1.

 

Schema o gasiti la adresa:

http://i51.tinypic.com/2zzj30w.jpg

Link to comment
Guest c e z a r

multumesc mult pentru schema si explicatie, mi-ati fost de mare ajutor! :dans: cred ca va voi mai deranja cu cateva probleme sau intrebari deoarece proiectul meu e doar la inceput .

Link to comment
  • 2 months later...
Guest nirosucela

Buna, puteti sa ma ajutati si pe mine cu un generator de semnal dreptunghiular cu frecventa reglabila intre 10 khz aproximativ si 2 Mhz? ma intereseaza sa aiba si display pentru a vizualiza frecventa care o reglez. Tensiunea la iesire pt forma de unda a semnalului sa fie aceeasi indiferent de frecventa, adica de aproximativ 10V, peste valoarea de 0V (adica0V-10V si nu -5V - +5V). Cele 2 perioade sa fie egale.Multumesc.Sarcina este corpul uman.Eventual, alimentarea sa se pota face si prin stabilizator, nu neaparat de la baterie.Ma intereseaza acest aparat, si cat costa pt achizitionarea lui.Multumesc. :jytuiyu

Link to comment
Guest nirosucela

merci srdjan, insa semnalul la iesire treb sa fie 0-+10V, dreptunghiular, apoi treb sa pot face un reglaj fin pe frecventa si mai treb sa am si un display sa vad ce frecventa am reglat. daca poti sa ma ajuti cu o astfel de schema, ti-as fi recunoscator. De asemenea, semnalul il aplic pe doi electrozi pe pielea umana. Nu stiu ce fel de adaptare trebuie la iesire pt a nu strica circuitul.merci.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • 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