Impulzusgenerátor az ATmega8-on. Funkciógenerátor mikrokontrolleren Jelgenerátorok mikrokontrolleren LCD kijelző

A TV-jelgenerátor szonda a pic12f629 sorozatú mikrokontrollerre épül, méreteit, áramfelvételét, a készülék gyártási költségét és funkcionalitását tekintve egy TV-szerelő számára egyszerűen pótolhatatlan. Tápfeszültség 3 volt, azaz. két AA elem. A jelenlegi fogyasztás generációs módban 11 milliamper, alvó üzemmódban csak 3 mikroamper.

TV jelgenerátor sematikus diagramja

PCB rajz


Ez a szonda öt képet tud generálni, ami elégséges a TV vízszintes és függőleges pásztázásának ellenőrzéséhez és javításához, a raszter konvergenciájának és geometriai torzításának beállításához, a színegyensúlyhoz, valamint a jelek áthaladásának figyeléséhez a TV-áramkörökön. Ha röviden megnyomja a gombot, felébred és elkezdi generálni az első képet, majd a rákattintással a képek körbe váltanak. Ha hosszabb ideig lenyomva tartja a gombot, a generátor alvó üzemmódba lép, amikor elengedi. Automatikusan alvó módba is vált, ha több mint 5 percre be van kapcsolva.


A cikkhez egy archívum van csatolva, amely egy diagramot, egy vizsgálótáblát és két firmware-t tartalmaz. A videó azt mutatja, hogy a TV-m képe kissé nem lineáris - ez azért van, mert a TV 12 éves, vagy valami nem stimmel a videobemenettel. A javasolt eszköz egy téglalap alakú impulzusgenerátor, amelyet soros porton keresztül vezérelnek a számítógépről. Egy adott probléma szó szerint egy nap alatt történő megoldására készült, és hibákat vagy hiányosságokat tartalmazhat, nem tudom garantálni, hogy sok pénzt fog keresni az eladásával. De az összes alapvető funkciót tesztelték.
A generátor által előállított maximális frekvencia valamivel több, mint 13 kHz, a minimum kisebb, mint 0,01 Hz (4 MHz-es kvarcoszcillátor frekvenciájánál).

Rendszer.

szélesség=710>
A rajz nem fér el az oldalra, ezért tömörített!
A teljes megtekintéséhez kattintson a gombra.

A séma meglehetősen egyszerű. PIC16C63A mikrokontroller alapján van összeszerelve, annak két lábáról veszi a jelet, ezek állapota mindig más. Terhelés nélkül az egy szint kevesebb, mint 0,1 V-tal tér el a tápfeszültségtől, a nulla szint is nagyon alacsony. A tűket 30 mA-es áramerősségig tervezték. A MAX232 chip az RS232 interfészszintek TTL-szintekké alakítására szolgál. A készülék táplálásához 5 voltos tápegység szükséges, az ábrán nem látható.

Program.

A mikrokontroller által előállított jel paramétereinek beállításához speciális programot kell használnia. A program Windows operációs rendszerre íródott, lent látható az ablaka.

A vezérlők a kimeneti jel frekvenciájának, a pozitív és negatív félciklusok hosszának arányának beállítására szolgálnak. Lehetőség van a kiadott impulzusok számának korlátozására (1...2 23 -1). Mivel a mikrokontrollerben lévő program nem enged frekvenciát kiadni, a „Küldés” gomb megnyomása után a rendszer a legközelebbi frekvenciaértéket számítja ki, és az kerül a frekvencia mezőbe a billentyűzetről beírt helyett. Az "Időtartam 1" és "Időtartam 0" mezők tetszőleges mértékegységekben tartalmazzák a jel időtartamát, amellyel a program PIC-ben működik, ezek nullánál nagyobb és 2-nél kisebb egész számok 24 . Beállítások állnak rendelkezésre a használt kvarcrezonátor soros portszámának és frekvenciájának kiválasztásához.

A magazin olvasói ismerik azokat a mérőgenerátorokat, amelyekben a szükséges frekvenciaértéket billentyűzet segítségével állítják be (lásd például Piskaev A. „Frekvenciamérő-generátor-óra” című cikkét a „Rádióban”, 2002, No. 7, 31., 32. o.). Ezek az eszközök általában mikrokontrolleren készülnek, a generált frekvenciák tartománya több megahertzre korlátozódik, és a pontos frekvenciaérték megszerzése lehetetlen. A cikkben ismertetett generátor mikrovezérlőt is tartalmaz, de csak egy speciális mikroáramkör - az AD9850 frekvenciaszintetizátor - vezérlésére szolgál. Ennek a mikroáramkörnek a használata lehetővé tette a generált frekvenciák tartományának kiterjesztését a hertz töredékeitől 60 MHz-ig, amelyen belül bármilyen frekvenciaértéket lehet elérni 1 Hz-es pontossággal.

Lekérdezi az SB1-SB16 billentyűzetet, információkat jelenít meg a HG1 LCD kijelzőn, kiszámítja a frekvenciakód értékét és a soros interfészen keresztül továbbítja a DD2 szintetizátornak. A HA1 hangkibocsátó a billentyűzet gombjainak megnyomásának megerősítésére szolgál. Az AD9850 (DD2) chipet a szabványos csatlakozáshoz használják. A Z1 szűrő be van kapcsolva a DAC kimenetén. A szűrő után szinuszos jel kerül az XW2 aljzatba és a DD2 chip komparátorának bemenetére (16-os érintkező). Ez utóbbi kimenetéről téglalap alakú jel kerül az XW1 aljzatba. A G1 kvarcoszcillátor a DDS órajelgenerátoraként szolgál. Az R7 vágóellenállás beállítja a kép kontrasztját a HG1 jelzőn.
A mikrokontroller alaphelyzetbe állítása után a HG1 LCD kijelző 4 bites buszcsere módra van konfigurálva, ami az információ rögzítéséhez szükséges bemeneti/kimeneti vonalak számának csökkentéséhez szükséges.



A generátor vezérlése az SB1-SB16 gombokból álló billentyűzet segítségével történik. Mivel a B port összes bemeneti vonala ellenállásokon keresztül csatlakozik a tápegységhez, nincs szükség külső ellenállásokra az RB4 - RB7 portok tápvezetékre való felhúzásához. Az R3-R6 ellenállások védik a mikrokontroller kimeneteit a túlterheléstől, ha véletlenül több gombot egyszerre megnyomnak.
A kívánt frekvencia a billentyűzetről állítható be. Ehhez kattintson a megfelelő számokkal ellátott gombokra, írja be a kívánt értéket (hertzben), majd nyomja meg a „*” gombot. Ha a frekvencia nem haladja meg a maximálisan megengedett értéket, a kijelzőn rövid időre megjelenik az „OK” üzenet, és a generátor működési módba lép, és hameghaladja - "Hiba" üzenet. Ebben az esetben meg kell nyomnia a "C" ("Reset") gombot, és újra be kell írnia a helyes értéket. Ugyanezt teszik, ha hiba történik a frekvenciabeviteli folyamat során. Ennek a gombnak a kétszeri megnyomásával a készülék az előzőleg beállított frekvenciaértékkel üzem módba kerül.
Üzemmódban a csillag szimbólum villog a jelző jobb szélén. Ha az aktuális frekvenciaértéket külső vezérlőegységről (például számítógépről) adják meg, akkor a kijelzőn megjelenő frekvenciához való visszatéréshez csak nyomja meg a „*” gombot.
Az "U" (Fel - fel) és "D" (Le - Le) gombok lehetővé teszik a generátor kimeneti frekvenciájának lépésenkénti megváltoztatását, a tizedeshely értékének eggyel növelését vagy csökkentését. A kívánt tizedesjegyet a kurzor mozgatásával választhatja ki az "L" (balra - balra) és az "R" (jobbra - jobbra) gombokkal.
A "*" gomb megnyomásakor a frekvencia értéke és a kurzor pozíciója elmentésre kerül a mikrokontroller nem felejtő memóriájába, így a következő tápfeszültség bekapcsolásakor automatikusan visszaáll a megszakított üzemmód. Mivel a mikrokontroller számítási képességei korlátozottak, a kimeneti frekvencia körülbelül 1 Hz-es pontossággal van beállítva, ami a legtöbb esetben elegendő. A szintetizátor képességeinek teljes kihasználása érdekében PC-ről vezérelhető. Ehhez a generátort módosítani kell egy egység hozzáadásával, melynek diagramja a 2. ábrán látható. 3. A számítógép (vagy más vezérlőeszköz) csatlakozik a konnektorhoz
XS1. Ha az A címbemeneteken alacsony a logikai szint, a DD3 chip multiplexerei a szintetizátor vezérlő bemeneteit a DD1 mikrokontrollerhez, magas logikai szint esetén pedig egy külső eszközhöz kötik. A vezérlőjelek az XS1 aljzat "ENABLE" érintkezőjén keresztül jutnak el. Az R19 ellenállás alacsony logikai szintet biztosít a DD3 címbemenetein, ha a vezérlőeszköz nincs csatlakoztatva.
A generátor összeszerelése és tesztelése kenyérlapon történik. Ha nem tud táblát vásárolni a DD2 chip SSOP házához, akkor rövid (10-15 mm hosszú) 0,2 mm átmérőjű ónozott huzaldarabokkal csatlakoztassa annak tűit a megfelelő betétekhez. Az 1, 2, 5, 10, 19, 24, 26, 27, 28 érintkezők egy hosszabb szegmenssel csatlakoznak a közös vezetékhez.
LCD kijelző HG1 - 1TM1601 (16 karakteres egysoros beépített vezérlővel). A HA1 bármilyen piezoelektromos hangkibocsátó beépített generátorral, 5 V feszültségre tervezve. Óragenerátorként (G1) kvarc oszcillátor mikroszerelvényét használhatja 125 MHz-ig, ez megengedett. hasonló egységet használni kvarc stabilizálással és különálló elemeken.
A mikrokontroller vezérlési programja az órajelgenerátor frekvenciájától függ.
A mikrokontroller programozásakor a következő bitértékek vannak beállítva a konfigurációs szóban: generátor típusa (OSC) - RC. watchdog timer (WDT) – letiltva, bekapcsolási késleltetés (PWRTE) – engedélyezve.

Jó nap!

A számok hexadecimális ábrázolását zárójelben írjuk.

Végre készen állok a következő bejegyzésem megírására.
Ma megpróbálok impulzusgenerátort írni. Igen, nem csak az egyes lábak állapotának egy bizonyos idő utáni banális átkapcsolásával, hanem „szépen”, pl. megszakításokon keresztül. A TMR0 időzítő túlcsordulást fogjuk használni megszakítási forrásként.

Elkezdjük az eligazítást

Most próbáljuk megérteni, mi ez a titokzatos időzítő TMR0.

És ez az időzítő egyszerűen számolja a bejövő impulzusok számát. Ezenkívül az impulzus forrása lehet valamilyen külső eszköz vagy belső generátor. Az impulzusforrás kiválasztását a regiszter egy bitje végzi OPTION_REG. Mégpedig az ötödik bit, T0CS.


Az is érthetőnek tűnik, hogy megzavarják. Impulzus érkezett, a regiszterben lévő értéket megnövelték (eggyel növelték). És így tovább, amíg az időzítő túlcsordul. A túlcsordulás a vezérlő kapacitásának köszönhető. A vezérlőnk már 8 bites. És 8 bitben tárolhat számokat a 0...255 tartományban (összesen 256). Ez azt jelenti, hogy túlcsordulás történik, amikor a számláló/időzítő már tartalmazza a 255-ös számot, amelyhez a vezérlő megpróbál egy másikat hozzáadni. És itt kezdődik mindenféle csoda. A számlálóregiszterben lévő érték 0 (0x00) lesz, és a vezérlő megkezdi a megszakítások feldolgozását, miközben felemeli a megszakítás előfordulásának jelzőjét.

Úgy tűnik, megoldottuk. Most hogyan készítsünk impulzusgenerátort belőle? Igen, könnyebb, mint a párolt fehérrépa. A lényeg az, hogy a TMR0 regiszterbe írhatunk egy számot. És nem a semmiből, hanem ettől a számtól fog növekedni. Így csak ki kell választanunk (vagy ki kell számolnunk), hogy milyen számot kell elhelyeznünk a TMR0 regiszterben, hogy a kívánt impulzusidőt elérjük.

Itt próbáltam egy blokkdiagram látszatát rajzolni, de letöltöttem egy nagyon összetett programot, és nem volt sok időm vele foglalkozni. Bár számomra teljesen érthetőnek bizonyult. Nézzük:

Ahol a blokkok közötti nyilak nem jelennek meg, az azt jelenti, hogy egymás után mennek.
A kód elég kicsinek bizonyult, nézzük meg. Amennyire csak lehetséges kommentálta:

LIST P=16F84A ; állítsa be az MK típust
#include p16F84A.inc ; csatlakoztassa a fejlécet
__CONFIG _CP_OFF ​​​​& _PWRTE_ON & _WDT_OFF & _HS_OSC ; MK konfiguráció
;----
; Általános célú nyilvántartások
;---
; De ezek nem lesznek, úgy tűnik, beérjük akkumulátorral
;---
;Program
;---

ORG 0x00 ; adja meg a főprogram címét
GOTO Main
;---
; Megszakítások és szubrutinok
;---

ORG 0x04 ; definiálja a megszakítási vektort
NOP ; kalibrálás NOP
COMF PORTA ; az A port összes lábának megfordítása
NOP ; ismét kalibráció NOP
MOVLW.152 ; A késleltetést 255-152=103-ra tesszük W-ben
MOVWF TMR0 ; A TMR0-ban megadjuk a késleltetési értéket
BCF INTCON,2 ; állítsa vissza a megszakítási jelzőt
RETFIE ; visszatérünk a főbe. program

;---
;Fő hurok
;---
Fő BSF ÁLLAPOT,5 ; Menjünk az első bankba
MOVLW.0 ; Helyezze az akkumulátorba 0
MOVWF TRISA ; A teljes A portot kimenetként jelöljük meg
BCF OPTION_REG,5 ; Belső órajel a TMR0-hoz
BCF ÁLLAPOT,5 ; Menjünk a nulla bankhoz
BSF INTCON,GIE ; Megszakítások engedélyezése
BSF INTCON,5 ; TMR0 túlcsordulási megszakítás engedélyezése
CLRF PORTA ; Logikai nulla az összes A porton
MOVLW.152 ; Küldje el a számot az akkumulátorra
MOVWF TMR0 ; 256-1-148=107 m maradt a túlfolyás előtt
Hurok ; Megszakításra vár
GOTO Loop
VÉGE


Valójában ennyi 🙂 és ez így működik.

Ez a projekt egy kiváló minőségű és univerzális funkciógenerátor, amely az áramkör bizonyos bonyolultsága ellenére, legalábbis az egyszerűbbekhez képest, nagyon széles funkcionalitással rendelkezik, ami indokolja az összeszerelés költségeit. 9 különböző hullámforma előállítására képes, és impulzusszinkronizálással is működik.

A generátor sematikus diagramja az MK-n

Eszköz beállítások

  • Frekvencia tartomány: 10 Hz - 60 kHz
  • Digitális frekvencia állítás 3 különböző lépésben
  • Hullámformák: Szinusz, Háromszög, Négyzet, Fűrész, H-impulzus, L-impulzus, Burst, Sweep, Zaj
  • Kimeneti tartomány: 15 V szinusz és háromszög, 0-5 V egyéb üzemmódok esetén
  • Van egy kimenet az impulzusszinkronizáláshoz

A készülék tápellátása 12 voltos váltóáram, amely a 78L15 és 79L15 normál működéséhez szükséges kellően magas (18 V feletti) egyenfeszültséget biztosít, amelyek egy bipoláris 15 V-os áramkört alkotnak, így az LF353 mikroáramkör ki tudja adni a teljes jeltartomány a terheléshez 1 kOhm.

Szintvezérlő használt ALPS SRBM1L0800. Az áramkörnek ±1%-os vagy jobb tűrésű ellenállásokat kell használnia. LED áramkorlátozók - 4306R sorozatú ellenállások. A fényerő az előadó preferenciáitól függően növelhető. A generátor 178x154x36 mm-es műanyag házba van összeszerelve, alumínium elülső és hátsó panelekkel.

Számos érintkezőelem van felszerelve az elülső és a hátsó panelre (gombok, tekerőgombok, RCA csatlakozók, LED szerelvények, tápcsatlakozó). A nyomtatott áramköri lapok műanyag távtartókkal ellátott csavarokkal vannak a házhoz rögzítve. A generátor összes többi eleme nyomtatott áramköri lapokra van felszerelve - a tápegység külön van. A középső bal gomb az üzemmód megváltoztatására szolgál, a jobb gomb pedig az üzemmód frekvenciájának kiválasztására szolgál.

A generátor különféle jeleket állít elő, és három üzemmódban működik, amelyeket a "Select" gombbal lehet kiválasztani, és a három felső (az ábrán) LED jelzi. A forgóvezérlés a jelparamétereket az alábbi táblázat szerint módosítja:

Közvetlenül az 1-es módba állítás után szinuszgenerálás következik be. Az indítási frekvencia azonban meglehetősen alacsony, és legalább egy kattintásra van szükség a kódolón a növeléséhez. A kártyán van egy érintkező a készülék programozáshoz történő csatlakoztatásához, amely lehetővé teszi a jelgenerátor működésének gyors megváltoztatását, ha szükséges. Az összes projektfájl - PIC16F870 firmware, táblarajzok találhatók