ATmega8 impulsside generaator. Funktsioonigeneraator mikrokontrolleril Signaaligeneraatorid mikrokontrolleril LCD indikaator

Telesignaali generaatori sond on kokku pandud pic12f629 seeria mikrokontrolleri baasil ning oma mõõtmete, voolutarbimise, seadme valmistamise maksumuse ja teletehniku ​​funktsionaalsuse poolest on see lihtsalt asendamatu. Toitepinge 3 volti, s.o. kaks AA patareid. Praegune tarbimine genereerimisrežiimis on 11 milliamprit, puhkerežiimis - ainult 3 mikroamprit.

Telesignaali generaatori skemaatiline diagramm

PCB joonistus


See sond suudab genereerida viis pilti, mis on täiesti piisav teleri horisontaalse ja vertikaalse skaneerimise kontrollimiseks ja parandamiseks, rastri konvergentsi ja geomeetriliste moonutuste reguleerimiseks, värvitasakaalu ja signaalide läbimise jälgimiseks teleri ahelates. Kui vajutate nuppu korraks, ärkab see üles ja hakkab genereerima esimest pilti, millele järgnevad klõpsud, pildid lülituvad ringi. Kui hoiate nuppu pikka aega all, läheb generaator vabastamisel puhkerežiimi. Samuti lülitub see automaatselt puhkerežiimi, kui see on sisse lülitatud kauem kui 5 minutit.


Artiklile on lisatud arhiiv, mis sisaldab diagrammi, sondiplaati ja kahte püsivara. Video näitab, et minu teleri pilt on veidi mittelineaarne – see on tingitud sellest, et teler on 12 aastat vana või võib-olla on videosisendiga midagi valesti. Kavandatav seade on ristkülikukujuline impulssgeneraator, mida juhitakse arvuti jadapordi kaudu. See on loodud konkreetse probleemi lahendamiseks sõna otseses mõttes päeva jooksul ja võib sisaldada vigu või puudusi, ma ei saa garanteerida, et teenite selle müümisega palju raha. Kuid kõik põhifunktsioonid on testitud.
Generaatori tekitatav maksimaalne sagedus on veidi üle 13 kHz, minimaalne alla 0,01 Hz (kvartsostsillaatori sagedusel 4 MHz).

Skeem.

laius=710>
Joonis ei mahu lehele ja on seetõttu kokkusurutud!
Selle täielikuks vaatamiseks klõpsake .

Skeem on üsna lihtne. See on kokku pandud PIC16C63A mikrokontrolleri baasil, signaal võetakse selle kahelt kontaktilt, nende olek on alati erinev. Ilma koormuseta erineb üks tase toitepingest vähem kui 0,1 volti, nullnivoo on samuti väga madal. Kontaktid on mõeldud kuni 30 mA voolu jaoks. MAX232 kiipi kasutatakse RS232 liidese tasemete teisendamiseks TTL tasemeteks. Seadme toiteks on vaja 5-voldist toiteallikat, seda pole joonisel näidatud.

Programm.

Mikrokontrolleri poolt toodetava signaali parameetrite määramiseks peate kasutama spetsiaalset programmi. Programm on kirjutatud Windows OS-i jaoks. Allpool on selle akna vaade.

Juhtnupud on ette nähtud väljundsignaali sageduse, positiivsete ja negatiivsete pooltsüklite pikkuste suhte määramiseks. Väljastatud impulsside arvu on võimalik piirata (1...2 23 -1). Kuna mikrokontrolleris olev programm ei võimalda ühtegi sagedust väljastada, siis peale “Saada” nupu vajutamist arvutatakse välja lähim võimalik sageduse väärtus ja see kirjutatakse sagedusväljale klaviatuurilt sisestatu asemel. Väljad "Kestus 1" ja "Kestus 0" sisaldavad signaali kestust suvalistes ühikutes, millega programm töötab PIC-is, need on täisarvud, mis on suuremad kui null ja väiksemad kui 2 24 . Seadistused on ette nähtud kasutatava kvartsresonaatori jadapordi numbri ja sageduse valimiseks.

Mõõtegeneraatorid, milles vajalik sageduse väärtus määratakse klaviatuuri abil, on ajakirja lugejatele teada (vt nt Piskaev A. artiklit “Sagedusmõõtja-generaator-kell” “Raadios”, 2002, nr. 7, lk 31, 32). Reeglina on need seadmed valmistatud mikrokontrolleri peal, genereeritavate sageduste vahemik on piiratud mitme megahertsiga ja täpse sageduse väärtuse saamine on võimatu. Artiklis kirjeldatud generaator sisaldab ka mikrokontrollerit, kuid seda kasutatakse ainult spetsiaalse mikrolülituse - sagedussüntesaatori AD9850 juhtimiseks. Selle mikroskeemi kasutamine võimaldas laiendada genereeritud sageduste vahemikku hertsi murdosadest 60 MHz-ni, mille piires on võimalik saada mis tahes sageduse väärtust 1 Hz täpsusega.

See küsitleb SB1-SB16 klaviatuuri, kuvab teavet HG1 LCD indikaatoril, arvutab sageduskoodi väärtuse ja edastab selle jadaliidese kaudu DD2 süntesaatorisse. Heli emitter HA1 kinnitab klaviatuuri nuppude vajutamist. Standardühenduses kasutatakse AD9850 (DD2) kiipi. Filter Z1 on DAC-i väljundis sisse lülitatud. Pärast filtrit suunatakse siinussignaal pesasse XW2 ja DD2 kiibi komparaatori sisendisse (kontakt 16). Viimase väljundist suunatakse ristkülikukujuline signaal pistikupessa XW1. G1 kvartsostsillaatorit kasutatakse DDS-i kellageneraatorina. Trimmeri takisti R7 reguleerib HG1 indikaatoril oleva pildi kontrastsust.
Pärast mikrokontrolleri lähtestamist konfigureeritakse HG1 LCD indikaator 4-bitise siinivahetusrežiimi jaoks, mis on vajalik teabe salvestamiseks vajalike sisend-/väljundliinide arvu vähendamiseks.



Generaatorit juhitakse klaviatuuri abil, mis koosneb nuppudest SB1-SB16. Kuna kõik pordi B sisendliinid on ühendatud toiteallikaga läbi takistite, ei ole vaja väliseid takisteid pordide RB4 - RB7 toiteliinile tõmbamiseks. Takistid R3-R6 kaitsevad mikrokontrolleri väljundeid ülekoormuse eest, kui kogemata vajutatakse korraga mitut nuppu.
Vajalik sagedus määratakse klaviatuurilt. Selleks klõpsake vastavate numbritega nuppe, sisestage soovitud väärtus (hertsides) ja vajutage nuppu “*”. Kui sagedus ei ületa maksimaalset lubatud, ilmub indikaatorile lühikeseks ajaks teade “OK” ja generaator läheb töörežiimi ning kuiületab - teade "Viga". Sel juhul peate vajutama nuppu "C" ("Lähtesta") ja sisestama uuesti õige väärtuse. Nad teevad sama, kui sageduse sisestamise protsessis ilmneb tõrge. Selle nupu kaks korda vajutamisel lülitatakse seade eelnevalt seadistatud sageduse väärtusega töörežiimile.
Töörežiimis vilgub indikaatori parempoolses osas tärni sümbol. Kui praegune sageduse väärtus sisestatakse välisest juhtseadmest (näiteks arvutist), siis indikaatoril kuvatava sageduse juurde naasmiseks vajutage lihtsalt nuppu “*”.
Nupud "U" (üles - üles) ja "D" (alla - alla) võimaldavad astmeliselt muuta generaatori väljundsagedust, suurendades või vähendades vastavalt kümnendkoha väärtust ühe võrra. Nõutav kümnendkoht valitakse kursori liigutamisega, kasutades nuppe "L" (vasak - vasak) ja "R" (parem - parem).
Kui vajutate nuppu "*", salvestatakse sageduse väärtus ja kursori asukoht mikrokontrolleri püsimällu, nii et järgmisel toite sisselülitamisel taastub katkestatud töörežiim automaatselt. Kuna mikrokontrolleri arvutusvõimalused on piiratud, seatakse väljundsagedus umbes 1 Hz täpsusega, mis on enamikul juhtudel piisav. Süntesaatori võimaluste täielikuks realiseerimiseks saab seda juhtida arvuti abil. Selleks tuleb generaatorit modifitseerida, lisades üksuse, mille skeem on näidatud joonisel fig. 3. Arvuti (või muu juhtseade) on ühendatud pistikupessa
XS1. Kui aadressi sisendite A loogikatase on madal, ühendavad DD3 kiibi multiplekserid süntesaatori juhtsisendid mikrokontrolleriga DD1 ja kõrge loogikataseme korral välisseadmega. Juhtsignaalid edastatakse XS1 pistikupesa "ENABLE" kontakti kaudu. Takisti R19 tagab madala loogikataseme DD3 aadressi sisendites, kui juhtseade pole ühendatud.
Generaator on kokku pandud ja katsetatud leivalaual. Kui te ei saa DD2 kiibi jaoks SSOP korpuse jaoks plaati osta, võite selle tihvtide ühendamiseks vastavate padjanditega kasutada lühikesi (10-15 mm pikkuseid) tinatud traaditükke, mille läbimõõt on 0,2 mm. Tihvtid 1,2,5,10,19, 24, 26, 27, 28 ühendatakse ühise juhtmega ühe pikema segmendiga.
LCD indikaator HG1 - 1TM1601 (16-kohaline üherealine sisseehitatud kontrolleriga). HA1 on igasugune sisseehitatud generaatoriga piesoelektriline heli emitter, mis on mõeldud pingele 5 V. Kellageneraatorina (G1) saate kasutada kuni 125 MHz sagedusega kvartsostsillaatori mikrokoostu kasutada sarnast kvartsstabilisaatoriga seadet ja diskreetsetel elementidel.
Mikrokontrolleri juhtimisprogramm sõltub kella generaatori sagedusest.
Mikrokontrolleri programmeerimisel määratakse konfiguratsioonisõnas järgmised bitiväärtused: generaatori tüüp (OSC) - RC. valvekoera taimer (WDT) – keelatud, sisselülitamise viivitus (PWRTE) – lubatud.

Head päeva!

Arvude kuueteistkümnendsüsteemi esitused kirjutatakse sulgudesse.

Olen lõpuks valmis oma järgmist postitust kirjutama.
Täna proovin kirjutada impulsi generaatori. Jah, mitte ainult iga jala oleku banaalse ümberlülitamisega teatud aja möödudes, vaid “ilusalt”, s.t. katkestuste kaudu. Katkestuse allikana kasutame TMR0 taimeri ületäitumist.

Alustame aruandlust

Proovime nüüd mõista, mis see salapärane taimer on TMR0.

Ja see taimer lihtsalt loeb sissetulevate impulsside arvu. Pealegi võib impulsi allikaks olla kas mõni väline seade või sisemine generaator. Impulsiallika valiku teostab registri üks bitt OPTION_REG. Nimelt viies bitt, T0CS.


Tundub ka arusaadav, et teda segatakse. Saabus impulss, väärtust registris suurendati (suurendati ühe võrra). Ja nii edasi, kuni taimer ületab. Ülevool on tingitud kontrolleri võimsusest. Meie kontroller on juba 8-bitine. Ja 8 bitis saate salvestada numbreid vahemikus 0...255 (kaasa arvatud) (kokku 256). See tähendab, et ületäitumine toimub siis, kui loendur/taimer sisaldab juba numbrit 255, millele kontroller proovib lisada veel ühe. Ja siit saavad alguse kõikvõimalikud imed. Väärtus loenduri registris muutub võrdseks 0-ga (0x00) ja kontroller alustab katkestuste töötlemist, tõstes samal ajal selle katkestuse esinemise lipu.

Näib, et oleme asja lahendanud. Kuidas sellest nüüd impulsigeneraatorit teha? Jah, lihtsam kui aurutatud naeris. Asi on selles, et saate kirjutada numbri TMR0 registrisse. Ja seda suurendatakse mitte nullist, vaid sellest numbrist. Seega peame lihtsalt valima (või arvutama), millise arvu peame TMR0 registrisse paigutama, et saada vajalik impulsi kestus.

Proovisin siin joonistada plokkskeemi, kuid laadisin alla väga keerulise programmi ja mul ei olnud sellega palju aega tegeleda. Kuigi see osutus minu jaoks üsna arusaadavaks. Vaatame:

Kui plokkide vahel olevaid nooli ei näidata, tähendab see, et need liiguvad üksteise järel.
Kood osutus üsna väikeseks, vaatame. Kommenteerinud nii palju kui võimalik:

LOEND P=16F84A ; määrake MK tüüp
#include p16F84A.inc ; ühendage päis
__CONFIG _CP_OFF ​​​​& _PWRTE_ON & _WDT_OFF & _HS_OSC ; MK konfiguratsioon
;----
; Üldotstarbelised registrid
;---
; Aga tundub, et meil neid pole, leiame akuga
;---
;Programm
;---

ORG 0x00 ; märkige põhiprogrammi aadress
GOTO Main
;---
; Katkestused ja alamprogrammid
;---

ORG 0x04 ; defineerida katkestuse vektor
NOP ; kalibreerimine NOP
COMF PORTA ; kõigi pordi A kontaktide ümberpööramine
NOP ; uuesti kalibreerimine NOP
MOVLW.152 ; Panime viivituse 255-152=103 W-sse
MOVWF TMR0 ; TMR0-s paneme viivituse väärtuse
BCF INTCON,2 ; lähtestage katkestuse lipp
RETFIE ; pöördume tagasi põhile. programm

;---
;Põhisilmus
;---
Peamine BSF STATUS,5 ; Lähme esimesse panka
MOVLW.0 ; Asetage akusse 0
MOVWF TRISA ; Väljundiks märgime kogu pordi A
BCF OPTION_REG,5 ; Sisemine kellasignaal TMR0 jaoks
BCF OLEK,5 ; Lähme nulli panka
BSF INTCON, GIE ; Katkestuste lubamine
BSF INTCON,5 ; Luba TMR0 ülevoolukatkestused
CLRF PORTA ; Loogiline null kogu pordis A
MOVLW.152 ; Saada number akumulaatorisse
MOVWF TMR0 ; 256-1-148=107 mt jäänud enne ülevoolu
Loop ; Ootab katkestust
GOTO Loop
LÕPP


See on tegelikult kõik 🙂 ja nii see toimib.

See projekt on kvaliteetne ja universaalne funktsioonigeneraator, millel on vaatamata ahela mõningasele keerukusele, vähemalt võrreldes lihtsamatega, väga lai funktsionaalsus, mis õigustab selle kokkupaneku maksumust. See on võimeline tootma 9 erinevat lainekuju ja töötab ka impulsside sünkroniseerimisega.

MK generaatori skemaatiline diagramm

Seadme seaded

  • Sagedusvahemik: 10 Hz - 60 kHz
  • Digitaalne sageduse reguleerimine 3 erinevas etapis
  • Lainekujud: siinus, kolmnurk, ruut, saag, H-impulss, L-impulss, saristamine, pühkimine, müra
  • Väljundvahemik: 15 V siinuse ja kolmnurga jaoks, 0-5 V muude režiimide jaoks
  • Impulsside sünkroonimiseks on väljund

Seade saab toite 12-voldist vahelduvvoolust, mis tagab 78L15 ja 79L15 normaalseks tööks vajaliku piisavalt kõrge (üle 18 V) alalispinge, mis moodustavad bipolaarse 15 V ahela Seda tehakse selleks, et LF353 mikroskeem saaks väljastada täielik signaalivahemik koormusele 1 kOhm.

Kasutatud tasemekontroller ALPS SRBM1L0800. Ahel peaks kasutama takisteid, mille tolerants on ±1% või parem. LED voolu piirajad - 4306R seeria takistid. Heledust saab suurendada olenevalt esineja eelistustest. Generaator on kokku pandud plastikust korpusesse 178x154x36 mm alumiiniumist esi- ja tagapaneelidega.

Paljud kontaktkomponendid on paigaldatud esi- ja tagapaneelile (nupud, nupud, RCA-pistikud, LED-sõlmed, toitepistik). Trükkplaadid kinnitatakse korpuse külge plastikvahetükkidega poltidega. Kõik teised generaatori elemendid on paigaldatud trükkplaatidele - toiteallikas on eraldi. Vasakpoolne nupp keskel on režiimi muutmiseks, parem režiimi sageduse valimiseks.

Generaator toodab erinevaid signaale ja töötab kolmes režiimis, mis valitakse klahvi "Select" abil ja mida näitavad kolm ülemist (diagrammil) LED-tuli. Pöördlüliti muudab signaali parameetreid vastavalt järgmisele tabelile:

Kohe pärast režiimi 1 seadistamist toimub siinuse genereerimine. Käivitussagedus on aga üsna madal ja selle suurendamiseks on vaja vähemalt ühte koodri klõpsu. Plaadil on seadme ühendamiseks programmeerimiseks kontakt, mis võimaldab vajadusel kiiresti signaaligeneraatori funktsionaalsust muuta. Kõik projekti failid - PIC16F870 püsivara, tahvli joonised, asuvad