Elektronika.lt
 2021 m. spalio 26 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 NaujienosSąrašas
 StraipsniaiSąrašas
 Vaizdo siužetaiSąrašas
 Nuolaidos, akcijosSąrašas
 Produktų apžvalgosSąrašas
 Naudingi patarimaiSąrašas
 Vykdomi projektaiSąrašas
 Schemų archyvasSąrašas
 - Garso technika
 - Automobilių elektronika
 - Buitinė elektronika
 - Kompiuterių elektronika
 - Maitinimo šaltiniai
 - Mikrovaldikliai
 - Radiotechnika
 - Šviesos efektai
 - Įvairi elektronika
 Teorija, žinynaiSąrašas
 Nuorodų katalogai
 Įvairūs siuntiniai
 Bendravimas
 Skelbimai ir pasiūlymai
 Elektronikos remontas
 Robotų kūrėjų klubas
 RTN žurnalo archyvas






 Verta paskaityti
Spalio 26 d. 20:20
Įvardinti nauji iššūkiai, kuriuos teks įveikti pereinant prie elektra varomo sunkiojo transporto
Spalio 26 d. 18:28
Lietuvoje debiutuoja BMW naujos eros elektromobilis – „BMW iX“
Spalio 26 d. 16:26
Sukurtas pirmas lietuviškas „Facebook“ ir „Instagram“ analizės įrankis
Spalio 26 d. 14:16
Viskas, ką reikia žinoti apie „Facebook“ kuriamą metavisatą: ar tai žmonijos ateitis?
Spalio 26 d. 12:24
Lietingasis ruduo ir vandeniui atsparūs išmanieji įrenginiai: ką reikia žinoti?
Spalio 26 d. 10:17
Lenkijos kelių mokesčių sistemos pokyčiai – galvos skausmas Lietuvos vežėjams
Spalio 26 d. 08:27
Visko teorija: fizikų svajonė, kuri greičiausiai niekada nebus įgyvendinta
Spalio 25 d. 20:35
Fotonika ir lazeriai – raktas į aplinkos tvarumą
Spalio 25 d. 18:26
„Philips Momentum“ – naujas „Xbox“ skirtas monitorius
Spalio 25 d. 16:21
3 įpročiai, kurie prailgins telefono baterijos ištvermę
FS19 Mods
FS19 Courseplay, FS19 Maps, FS19 Seasons
GTA 5 Mods
GTA 5 Cheats, GTA 5 vehicle mods, GTA 5 Map mods
FS 19 Tractors
Farming Simulator 19 Mods, FS 19 Maps, FS22 Mods
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS22 Trucks
VAT calculator
VAT number check, What is VAT, How much is VAT
LS19 Mods
Fs19 modhub, fs19 maps, FS19 Seasons
FS19 Mapy
Farming Simulator 19 mody, FS19 Tractor, FS19 Truck
MSFS2020 Liveries
Flight Simulator 2020 Mods, MSFS2020 Scener, MSFS2020 Airports
Sims 4 Mods
Sims 4 cheats, Sims 4 money cheat, Sims 4 careers
Lastenvaunut
Turvaistuin, Matkarattaat, Lasten vaatteet
Paskola internetu
Vartojimo paskola, paskola automobiliui, paskola būsto remontui
FS22 Map mods
Farming simulator 22 mods, FS22 Harvesters, FS22 Seasons
FS22 Mods
FS22 Harvesters, FS22 Tractors Mods, FS22 Maps Mods
Reklama
 Schemų archyvas » Mikrovaldikliai Dalintis | Spausdinti

Stereo garso lygio indikatorius su AVR mikrovaldikliu

Publikuota: 2005-03-06 14:48
Tematika: Mikrovaldikliai
Tipas: Paprasta
Autorius: el. paštas Darius Grigaitis
Aut. teisės: el. paštas ©Elektronika.lt

Pagrindinis stereo garso lygio indikatoriaus elementas yra „Atmel“ firmos AVR mikrovaldiklis „Atmega16“. Papildomai prietaiso pagaminimui reikės 16 šviesos diodų, 17–16 MHz kvarcinio rezonatoriaus, kelių kondensatorių bei mažos galios varžų...

 Rodyti komentarus (18)
Įvertinimas:  1 2 3 4 5 

Įvadas

Pagrindinis stereo garso lygio indikatoriaus elementas yra „Atmel“ firmos AVR mikrovaldiklis „Atmega16“. Papildomai prietaiso pagaminimui reikės 16 šviesos diodų, 17–16 MHz kvarcinio rezonatoriaus, keleto kondensatorių bei mažos galios varžų (1 pav.). Schemos veikimas yra toks: stereo garsas paduodamas į mikrovaldiklio ASK (analoginį skaitmeninį keitiklį) per K. (kairysis kanalas) ir D. (dešinysis kanalas) įėjimus. Prieš tai nufiltruojamos aukštesnės dedamosios RC žemų dažnių filtru (10K ir 1 uF). Mikrovaldiklio ASK gali maksimaliai 15 kHz dažniu diskretizuoti įėjimo signalą vienam kanalui (pvz.: 40 mikrovaldiklio išvadas).

Pagal Naikvisto teoremą, maksimalus paduodamas signalas, kurį dar galima atkurti po konvertavimo yra 7,5 kHz (sinusinio signalo atveju). Mūsų atveju naudojami du kanalai (1 pav.), taigi 7,5 kHz dalinasi iš 2 ir lieka 3,75 kHz vienam kanalui. Kadangi mums reikalingi signalo dažniai nesiekia kiloherco, tai mikrovaldiklio resursų pakankamai užtenka stereo garso signalų matavimui (mikrovaldiklio apkrovimas ~10 %). ASK konvertuodamas analoginio signalo reikšmes, įrašo į ADCL ir ADCH registrus 10 bitų tikslumu. Kadangi toks tikslumas šiuo atveju nereikalingas, todėl panaudojami tik 8 bitai, nuskaitant ADCH registrą, prieš tai nustačius ADMUX registre nuskaitymo iš ADC būdą. Panaudojant tuos 8 bitų duomenis, paprasčiausiu skaičių palyginimu galima įjungti ir išjungti šviesos diodus. Prie to pačio, panaudojus mikrovaldiklio įėjimo kanalų multiplekserį, galima fiksuoti keletą skirtingų dažnio juostų. Mūsų atveju panaudoti du kanalai iš aštuonių (kanalus galima labai lengvai perjunginėti keičiant ADMUX registro parametrus).


1 pav. Principinė lygio indikatoriaus schema (padidinti)

Šviesos diodų perjunginėjimas

Pagal ASK pateiktas skaitines signalų reikšmes, galima spręsti kokio lygio įėjimo signalas ir atitinkamai įjungti prie PORTB ir PORTD prijungtus šviesos diodus. 2 paveiksle parodytas diodų junginėjimo galimas suskirstymas. Kai turime didėjantį įėjimo signalą (juoda kreivė atitinka vieno iš kanalų augančią įtampą trumpu laiko momentu), dėl programoje numatytų lyginimo reikšmių (1, 2, 4 ... 256) įjungiamas didesnis šviesos diodų skaičius. Įtampos lygiui krintant, vykdomas atvirkščias procesas, šviesos diodai išjunginėjami. Taip gauname įtampa valdomą šviesos diodų stulpelį.


2 pav. Šviesos diodų įjungimo pavyzdys

Kadangi garsiniai signalai laike kinta, tai pateiktos schemos šviesos diodai atitinkamai į tai reaguoja. Dėl schemoje panaudotų žemų dažnių filtrų, šviesos diodai daugumoje reaguoja tik į žemus dažnius, keičiant filtrų kondensatorių talpas bei varžas galima keisti signalų dažnių sritį, kurio lygį norima matuoti. Lygio indikatoriaus programos kodo pavyzdys, rašytas IAR'u, pateiktas žemiau. Pradžioje atliekamas ASK parametrų nustatymas ADMUX ir ADCSRA registruose. Bei įjungiamos globalios pertrauktys _SEI(). Toliau programa įjunginėja diodus, priklausomai nuo ADCH registro skaitinės vertės. Programoje lyginimo duomenys nuo (2 pav.) skiriasi dėl to, kad kompiuterio garso kortos, kurią naudojau signalo padavimui, nepakako maksimaliai reikšmei išgauti (vidinis ASK stiprintuvas šiuo atveju nenaudojamas). Vienas iš galimų variantų jautrumui padidinti tai paprasčiausiai pakeisti if.. then sąlygose naudojamas lyginimo reikšmes.

Laiko vėlinimas prie kiekvienos sąlygos yra tam, kad kurį laiką būtų užlaikytas diodo švietimas, taip pašalinamas kartais atsirandantis silpnas diodo šviesos srautas. Kuo didesnė reikšmė ADCH reikšmė, tuo ilgiau reik palaikyt šviesos diodą įjungtą, taip suvienodinamas viso diodų stulpelio apšvietimas. Visa tai tenka daryti dėl to, kad kuo žemesnė diodo eilė, tuo ilgiau jis šviečia, o greitai kintantis sritis yra būtent aukštos eilės diodų (1 pav. pažymėjimai 1..8). Vėlinimo laikas buvo parinktas empiriškai, geriausias vėlinimo reikšmes galite pasirinkti patys keisdami programos kodą.


#include <iom16.h>
#include "ina90.h"
// Laiko vėlinimo funkcijos aprašymas
void Laikas2(unsigned int m); 
// Globalus kintamasis stereo kanalų išskyrimui
char i=0;

void main()
{
	//PORTB ir PORD nustatymas kaip išėjimo prievadai
	DDRB=255; DDRD=255; 
	//ADMUX registras skirtas ASK valdymui
	//REFSx – nustato etaloninį maitinimo šaltinį, skirtą ASK
	//MUXx – viduje esančio multiplekserio nustatymui
	// MUX1->1 ir MUX0->1 nustato kaip įėjimą 37 išvadą
	//ADLAR - nustato nuskaitymo iš duomenų registro ADC būdą
	ADMUX=(1<<REFS1)|(1<<REFS0)|(1<<ADLAR)|
	(1<<MUX1)|(1<<MUX0);
	//ADCSRA – ASK valdymo, įjungimo, išjungimo registras
	//ADEN ->1- įjungiame ASK, ADSC->1 
	//pradėti vienkartinį konvertavimą
	//ADFR->1 Laisvo konvertavimo režimas,
	//ADIE – konvertavimo pertraukties įjungimas
	//ADPS – skirtas ASK veikimo spartai keisti
	//pagal kvarcinį rezonatorių
	ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|(1<<ADIE)|
	(1<<ADFR)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
	_SEI(); // Globalių pertraukčių įjungimas
	while(1)
	{} // Amžinas ciklas
}

// ASK pertraukties paprogramė
#pragma vector=ADC_vect
__interrupt void Analog()
{
	char a; // Tarpinio kintamojo išskyrimas
	a=ADCH;// nuskaitom
	if (i==0){// Kairio kanalo diodų įjungimo tvarka
		//Lyginam ASK reikšmes su mūsų pačių 
		//nustatymo diodų perjungimo reikšmių
		if (a>5) PORTB=1;
		if (a>10)PORTB=3;
		if (a>15) {PORTB=7;Laikas2(50);}
		if (a>20){PORTB=15;Laikas2(100);}
		if (a>26) {PORTB=31; Laikas2(200);}
		if (a>33) {PORTB=63; Laikas2(300);}
		if (a>39){PORTB=127;Laikas2(400);}
		if (a>44){PORTB=255;Laikas2(500);}
		//Sudarom sąlygas dešinio kanalo diodų įjungimui
		i=1;
		// Perjungiam multiplekserį prie 40 išvado kitam kanalui
		ADMUX=(1<<REFS1)|(1<<REFS0)|
		(1<<ADLAR)|(0<<MUX1)|(0<<MUX0);
	// Dešinio kanalo diodų įjungimo tvarka
	}else{
		//Lyginam ASK reikšmes su mūsų pačių nustatymo
		//diodų perjungimo reikšmių
		if (a>5) PORTD=1;
		if (a>=10)PORTD=3;
		if (a>15) {PORTD=7;Laikas2(50);}
		if (a>20){PORTD=15;Laikas2(100);}
		if (a>26) {PORTD=31; Laikas2(200);}
		if (a>33) {PORTD=63; Laikas2(300);}
		if (a>39){PORTD=127;Laikas2(400);}
		if (a>44){PORTD=255;Laikas2(500);}
		//Sudarom sąlygas kairio kanalo diodų įjungimui
		i=0;
		// Perjungiam multiplekserį prie 37 išvado kitam kanalui
		ADMUX=(1<<REFS1)|(1<<REFS0)|(1<<ADLAR)|
		(0<<MUX4)|(1<<MUX1)|(1<<MUX0);
	}
}

// Laiko vėlinimo paprogramė
void Laikas2(unsigned int m) 
{ 
	unsigned int i=0, k=0;
	for (i=0; i<m; i++)
	{
		for (k=0; k<150; k++){}
	}
}

Sukompiliuotą programą „Atmega16“ mikrovaldikliui galite parsisiųsti čia: lygio_indikatorius.hex. Į mikrovaldiklį galite įrašyti naudodami „PonyProg“ programėlę su programatoriumi.

Šio lygio indikatoriaus schemai, galima parašyti žymiai sudėtingesnes programas, sudarant keletą galimų diodų junginėjimo variantų, taip pagyvinant savo gamintą garso stiprintuvą. Kadangi mikrovaldiklio apkrovimas tokiai programai labai mažas, galima drąsiai didinti tikrinimo kanalų skaičių (iki 8), skirtingiems dažniams.

Tokiu pačiu principu galima sudaryti schemą turinčią 16 šviesos diodų vienam kanalui, arba keletą kanalų skirtingiems dažniams. Tokiu atveju programos kodas keisis bet principas gali išlikti toks pats.

Papildoma informacija ir testavimo rezultatai

Tokio tipo programa pakankamai neblogai veikia, pradžioje nustačius (2 pav.) reikšmes nepakako įėjimo signalo lygio, kad būtų įjungti visi šviesos diodai. Signalą galima pastiprinti vidiniu diferencialiniu stiprintuvu, bet paprasčiausiai pakeičiau lyginimo reikšmes: if (a>44)... taip sumažindamas lyginimo diapazoną nuo 255 maksimalios iki daugiau nei 44.

Lygio indikatorius nesukalibruotas, todėl jis rodo tik besikeičiančius signalo lygius. Norint, kad jis rodytų tikrąsias signalo dB reikšmes, reiktų signalų generatoriaus bei voltmetro ir sukalibruoti prietaisėlį. Laiko vėlinimo įtraukimas pakeitė diodų švietimo trukme, padidino jų ryškumą nors galima naudoti ir be jo, tada programos kodas dar labiau sutrumpėja. Labai geras stereo kanalų lygio išryškėjimas įrodantis, kad pateikta programėlė veikia nepriekaištingai. Vietoj RESET išvadui naudojamo kondensatoriaus ir varžos geriausia naudoti RESETO valdymui skirtą mikroschemą, taip padidinamas veikimo patikimumas (pvz.: ADM1811 ar analogiški). Kai kuriems pradedantiesiems iškyla problemų su „Atmega“ tipo mikrovaldikliais, dėl jų kvarcinio rezonatoriaus parametrų nustatymo, „Atmega16“ mikrovaldikliui galite nustatyti šiuos parametrus:


3 pav. „PonyProg“ programoje parametrų „Atmega16“ mikrovaldikliui nustatymai

Taip pat rekomenduoju prieš programuojant „Atmega16“ paskaityti šios mikroschemos PDF aprašymą. Jei atsiras norinčių pakartoti bei patobulinti esamą schemą, būtų malonu, kad pasidalintumėte savo rezultatais.




Draudžiama platinti, skelbti, kopijuoti
informaciją su nurodyta autoriaus teisių žyma be redakcijos sutikimo.

www.esaugumas.lt – apsaugok savo kompiuterį!

TMS ELECTRONICS
TMS ELECTRONICS

www.rslietuva.com – nemokamas elektronikos komponentų pristatymas

www.matuok.lt - Interneto spartos matavimo sistema

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Mokslo festivalis „Erdvėlaivis Žemė

„Deinavos baldai“ — šeimos baldai

ENEBA's game store

Technologijos.lt

LTV.LT - lietuviškų tinklalapių vitrina

Lietuvos mokinių neformaliojo švietimo centras

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

www.rrt.lt – Lietuvos Respublikos ryšių reguliavimo tarnyba


Reklama
‡ 1999–2021 © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Reklama | Turinys | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina Valid XHTML 1.0!
LTV.LT – geriausių lietuviškų tinklalapių katalogas
www.ltv.lt/technologijos/
Farming Simulator 2019 Mods, FS22 Mods, FS19 Maps
farmingsimulator19mods.fr
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
Ilgalaikiai kreditai, paskola už automobilį, kreditų skaičiuoklė
www.mokilizingas.lt
FS19 Mods, FS17 Mods, FS15 Mods
www.farming2015mods.com
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama