Dažnai gaminant ar derinant įvairią elektroninę aparatūrą prisireikia paprasto signalų generatoriaus. Vienas variantas yra nusipirkti kokybišką gaminį su įvairiomis funkcinėmis galimybėmis, o kitas labiau priimtinas mėgėjams - tai pačiam pasigaminti. Šis projektukas skirtas tokio generatoriaus gamybai naudojant minimalų elementų kiekį ir turimas dalis.

AVR signalų generatorius susideda iš keleto paprastų dalių:
Atmega8 mikrovaldiklis yra paprasčiausias ir pigiausias iš AVR Mega serijos. Flash atminties kiekis yra pakankamas tokio tipo užduočiai realizuoti – 8kb. Maksimalus taktinis dažnis siekia 16MHz, kuris ir yra panaudotas šiame generatoriuje siekiant didžiausio greičio.
Generatorius yra maitinamas 9V elementu. 7805 įtampos reguliatoriumi įtampa ya nužeminama ir stabilizuojama iki 5V kuri yra reikalinga AVR mikrovaldikliui maitinti.
LCD ekranas yra valdomas per nuoseklų-lygiagretų poslinkio registrą 74HC164. Tokiu atvejų yra panaudojami tik 3 mikrovaldiklio išvadai persiųsti duomenis į poslinkio registrą, kuris savo ruožtu išlygiagretina valdymą iki LCD 8 bitų režimo.
Generatoriuje yra naudojami 7 valdymo mygtukai:
Generatoriuje yra naudojamas paprastas R-2R kodas analogas keitiklis. Tai yra paprasčiausias sprendimas naudojant laiptuotą rezistorių jungimą:

Čia R=10kΩ. Naudojant 8 bitus ir 5V gaunami laipteliai yra apie 18,5mV. Tai yra pakankamos reikšmės gauti kokybiškus signalus.
Generatoriuje yra suprojektuoti 3 atskiri išėjimai:
Universalus išėjimas (OUT) tai signalo išėjimas naudojant DAC grandinę. Šis išėjimas naudojamas įvairių signalų (stačiakampių, pjūklo formos, trikampio, sinusoidės) išvedimui.
PWM signalo kanalas yra skirtas atskirai PWM signalui išvesti naudojant taimerio funkciją. Taip pat galima šį įėjimą naudoti greitų impulsų išvedimui naudojant tą patį taimerį.
SQ papildomas kanalas yra skirtas taip pat impulsų išvedimui kai pirmas PWM kanalas užimtas.
PWM ir SQ palikti realizuoti ateičiai!

Blokinėje schemoje matyti generatoriaus struktūra bei įvairių signalų kelias. Kiekvienas blokas daugiau mažiau yra aprašytas specifikacijose.
Zr.: menu.pdf
Principinėje schemoje matome detalų generatoriaus vaizdą. Prie mokrokontrolerio jungiam:
PCB vaizdas:

Keletas nuotraukų:




Detalių sąrašas (eksportuotas iš eagle):
| Qty | Value | Device | Parts |
| 1 | 78MXXL | 7805 | |
| 2 | CPOL-EUE5-4 | C1, C9 | |
| 12 | PINHD-1X2 | 9V, DOWN, FREQ, MODE1, MODE2, OUT, POWER, PWM, RESET, SQ, START, UP | |
| 1 | PINHD-1X14 | LCD2X16 | |
| 1 | PINHD-2X3 | ISP | |
| 1 | TRIM_EU-B64W | POT | |
| 5 | 0.1u | C-EUC0805 | C2, C3, C4, C5, C8 |
| 8 | 10k | R-EU_M0805 | R6, R8, R10, R12, R14, R16, R18, R23 |
| 1 | 10k | R-EU_V526-0 | R2 |
| 1 | 16M | CRYTALHC49S | Q1 |
| 2 | 18pF | C-EUC0805 | C6, C7 |
| 9 | 20k | R-EU_M0805 | R4, R5, R7, R9, R11, R13, R15, R17, R19 |
| 1 | 74AC164N | 74AC164N | IC2 |
| 1 | 100 | R-EU_M0805 | R3 |
| 1 | ATMEGA8-16P | ATMEGA8-16P | IC1 |
Naudoti Įrankiai
Projekto tikslui pasiekti naudojami šie įrankiai:
Programos:
Techninės priemonės:

Programa parašyta naudojant C kalbą ir sukompiliuota naudojant WinAVR20060421 įrankius. Programavimas atliekamas naudojant ISP programatorių bei PonyProg programą.
Programos eiga keliais žodžiais:
Įjungus generatorių:
EEPROM Atmintyje organizuojami tokie duomenys:
Addres
Value
| 0 | Mode |
| 1 | Freq[7...0] |
| 2 | Freq[15...8] |
| 3 | Freq[23...16] |
| 4 | Duty [%] |
| 5 | Other reserved for future |
| 6... | Other reserved for future. |
Mode reikšmės:
Freq reikšmės. Pasirinkti 3 EEPROM laukai po 8 bitus nes dažnis neviršys 16MHz kuris atitinka šešioliktainį skaičių 0xF42400.
|
Freq[23...16] |
Freq[16...8] |
Freq[7...0] |
Duty reikšmės nuo 1 iki 99 išreikštos procentais,
Poliarumas 0 – atitinka teigiamą poliarumą, o 1 – neigiamą.
Programos Struktūra:
LCD_3w.h – LCD nustatymai
LCD_3w.c failas kuriame yra šios funkcijos:
signal.c – pagrindinėsje programoje yra:
Pagrinde testavimas buvo atliekamas naudojant minėtą signalų generatorių, dažnomatį ir osciloskopą. Buvo išmatuotas dažnis per visą dažnių intervalą kuris yra leidžiamas nuo 1Hz iki 65535Hz (galima ir daugiau, tik rezoliucija kenčia). Generuojamas dažnis atitiko dažnomačio parodymus. Oscilloscopo vaizdai matomi sekančiose nuotraukose.




Kaip ir minėjau tai yra gana ribotų galimybių generatorius. Kol kas dalis funkcionalumo nesutvarkyta (įskaitant PWM). Tačiau generatorius pilnai generuoja pagrindinius signalus – sinusoidę, stačiakampio, trikampio, pjūklo formos signalus. Taip pat yra užprogramuotas paprastas triukšmo generatorius naudojantis rand() funkciją. Didžiausias šio generatoriaus trūkumas yra tas, kad kad signalai yra generuojami tokie kokie jie yra- tiesiai per varžų suformuotą KKA (DAC). Kad generatorius būtų pilnai funkcionalus reikėtų pritaikyti operacinuką su reguliuojamu stiprinimu. Stiprinimas galėtų būti valdomas paties skaitmeniškai valdant išėjimo amplitudę LCD meniu. Išėjimo įtampa būtų nuskaitoma su DAC taip sudarant grįžtamąjį ryšį.
Projekto bylos: avr_dds_v10.zip
Komentarai
Skelbti naują komentarą