Domaći osciloskop na mikrokontroleru pic. Domaći osciloskop na AVR-u. Rješenja problema

Prilikom prilagodbe sklopljenih elektroničkih sklopova, posebice digitalnih, potrebno je provesti različita mjerenja. Da biste to učinili, možete koristiti razne sonde, na primjer logičku sondu, najjednostavniju koja se sastoji od LED-a, otpornika koji ograničava struju i žice koje na jednom kraju završavaju sondom i na drugom krokodila. Pomoću njegove pomoći možemo se uvjeriti imamo li logičku vrijednost ili, na primjer, nulu na MK nozi ili Arduino izlaz. Odlučio sam krenuti dalje, prikupiti ono što mislim da će biti zanimljivo za jednostavnu montažu mnogih početnika, omogućit će vam da steknete korisna znanja iz teorije, pogledate primjerice signal, kako izgleda, kada treperi isti LED, i naravno da mogu provjeriti prisutnost logičke nule ili jedinice, na nozi MK. Općenito, odlučio sam sastaviti najjednostavniju osciloskopsku sondu, spojenu na računalo putem USB priključka.

Ta je shema strani razvoj, odakle se kasnije prebacila na Runet i proširila se na mnogim mjestima. U potrazi za detaljnim informacijama tijekom njenog sastavljanja obišao sam mnoštvo web lokacija, barem 10-12. Svi su imali samo kratki opis, prevedeno i uklonjeno sa stranog web mjesta i firmwarea za preuzimanje, s primjerom postavljanja osigurača. Ispod je shematski dijagram ove osciloskopske sonde:

Namjerno ga ne nazivam čisto osciloskopom jer to nedostaje od tog naslova. Pogledajmo pobliže što je to. Proračun uređaja je samo 250, maksimalno 300 rubalja, a bilo koji školarci ili učenici mogu priuštiti njegovu montažu. Kao vizualno pomagalo, za vježbu lemljenja, šivanja MK, općenito, za vježbanje svih vještina potrebnih za samostalni dizajn digitalnih uređaja. Ako se netko odmah zapalio i sprema se odmah otrčati do trgovine kako bi kupio radio komponente, pričekajte, ova osciloskopska sonda ima nekoliko značajnih nedostataka. Ima vrlo nezgodan softver, ljusku u kojoj ćemo zapravo promatrati naš signal. Sljedeća fotografija pokazuje kako uhvatim momehuja iz prsta:

Reći da je ljuska sirova znači ne reći ništa ... Čak i školjke koje se koriste kao niskofrekventni osciloskop na zvučnoj kartici značajno ga zaobilaze u smislu njihovih mogućnosti. Na sljedećoj fotografiji kratko vrijeme dodirujem terminale baterije sondama:

Za početak, naša se očitanja prikazuju u milivoltima, a jednostavno nema skale napona koja odgovara stvarnim vrijednostima. Ali to nije sve. Dijagram uređaja, kao što možemo vidjeti gledajući dijagram s dijagramom, temelji se na MK Tiny 45.

Ovaj uređaj ne koristi vanjski ADC velike brzine, a to je njegov značajan nedostatak. To znači da ćemo prilikom mjerenja signala s frekvencijom za koju naša osciloskopska sonda nije dizajnirana doći na ekran, samo ravna linija ... Nedavno sam trebao popraviti konzolu daljinski upravljač, dijagnostika je pokazala da dolazi do napajanja, a tragovi su netaknuti, a kontakti na ploči, zajedno s gumenim gumbama, očišćeni, sve bez uspjeha, daljinski upravljač nije pokazao znakove života. Na lokalnom radijskom forumu ponuđena mi je zamjena keramičkog rezonatora na kojem, usput, nije bilo pukotina ili bilo kakvih drugih vanjski znakovipomoću kojeg bi se moglo utvrditi da je dio neispravan. Odlučio sam poslušati savjet, otišao u trgovinu i kupio novi keramički rezonator na 455 kHz, vrijedan svega 5 rubalja, lemio ga, a daljinski upravljač odmah je „zaživio“.

Zašto ovo govorim? I na činjenicu da mi je nakon sastavljanja ove sonde pala ideja da provjerim generiranje takta na konzoli. Nije bilo tako. Sonda osciloskopa pokazala je uvjetno nisku razinu na jednoj nozi rezonatora i visoku razinu na drugoj, te je donijela ravnu crtu. Nakon što nije uspio čak ni s frekvencijom od 455 kHz ... Sad kad ste upozoreni na njegove nedostatke, sami možete odlučiti treba li vam takva sonda za osciloskop. Ako je odgovor da, nastavite s čitanjem) ... Ulazna impedancija oba kanala osciloskopa je 1 MΩ.

U tu svrhu trebat ćemo kupiti i lemiti trimerske otpornike od 1 MΩ, razdjelnik signala 1 \\ 10. Prema tome, otpor razdjelnika, moramo biti 900 i 100 Kiloohm. Odlučio sam koristiti 2 kanala osciloskopa, budući da je na raspolaganju bio konektor - utičnice lemljene na ploči, dva tulipana, a razlika u troškovima dijelova za mene je zapravo samo trošak trimera. Druga je stvar što oba kanala nisu bila identična u svojim očitanjima. Kao što vidimo na dijagramu, jedan je kanal dizajniran za rad s razdjelnikom, dok drugi nije. Pa, nije važno, ako je potrebno da i ovaj kanal radi bez razdjelnika, samo moramo odvrnuti položaj klizača trimera na nulu, te tako poslati signal s izlaza izravno na MK nogu. Ovo može biti korisno za mjerenje signala na dvije linije niske amplitude. Sljedeća fotografija prikazuje kako uklanjam signal iz multivibatora:

Također, uvrtanjem regulatora trimera možemo postaviti koji djelitelj nam treba, 1/10, 1/25, 1/50, 1/100 ili bilo koji drugi, mjerenjem otpora između središnjeg terminala i krajnjih priključaka trimera s multimeterom. Ovo će možda trebati za mjerenje valnih oblika s visokim amplitudnim naponima. Da biste to učinili, morat ćete samo izračunati rezultirajući omjer otpora razdjelnika. Postoji još jedan važna nijansa, na stranom mjestu autora sheme, pri odabiru osigurača, naznačeno je da morate osigurač osigurati - bit Reset Disable na položaj uključeno. Kao što se sjećamo, onemogućavanjem ovog bitnog osigurača prestaje mogućnost serijskog programiranja. Osigurači koje želite mijenjati prikazani su na sljedećoj slici:

U ovom krugu, Pin 1 Reset se ne koristi kao pin, tako da ne moramo mijenjati ovaj bit osigurača. Ali na jednom od foruma, za stabilniji rad osciloskopa - sonde, preporučeno je povući Pin Reset kroz otpornik od 10 kiloohma do napajanja, što sam i učinio. Također, kada sam tražio informacije o njemu, nisam našao razumljivo i dostupno objašnjenje na nekoj od stranica o izvoru takta MK Tiny 45. Dakle, u ovom krugu MK djeluje ne iz internog RC - generatora, ne od kvarcni rezonator, ali s vanjskog takta sata isporučenog na MC s USB priključka. Logično je pretpostaviti da odabirom tog izvora takta MC više neće biti vidljiv nama, u školjci za treptanje, kad je iskopčate s USB priključka, stoga prvo unesite firmver, a zatim pažljivo postavite bitove osigurača.

Pogledajmo bliže osciloskopski krug, na signalnim linijama USB priključaka D + i D-, ugrađeni su krajnji otpornici od 68 Ohm. Ne preporučujem promjenu njihove vrijednosti. Između signalnih žica i mase preporuča se ugraditi keramičke kondenzatore od 100 nF da bi se smanjile smetnje. Isti kondenzator za 100 nanoFarada mora biti ugrađen paralelno s elektrolitičkim, na 47 mikroFarada, instaliranim na naponske krugove +5 volta i zemlje. Između tla i signalnih vodova mora biti ugrađena zener dioda od 3,6 volta. Stvarno sam ga postavio na 3,3 volta, sve radi dobro. Oznaka uključivanja navedena je na LED koji je serijski spojen na otpornik 220-470 Ohm.

Ocjena u ovom slučaju nije kritična, a o njoj ovisi samo svjetlina LED svjetla. Postavio sam ga na 330 ohma, svjetlina je dovoljna. Za određivanje uređaja od strane operacijskog sustava ugrađen je otpornik veličine 1,5-2,2 kiloohma u krug.

Zalijepite žice USB kabela na ploču, vodeći se osovinom kabela, a ne mjestom na shemi osciloskopa. Na dijagramu je redoslijed vena označen proizvoljno. Također, iz beznačajnih nedostataka, prema pregledima onih koji su koristili, nakon ponovnog pokretanja sustava Windows, moramo ponovno uključiti osciloskop u USB priključak. Ne zaboravite ukloniti osigurač s razdjelnikom taktne frekvencije s 8 CKDIV 8. Ovaj osciloskop ne zahtijeva nikakve upravljačke programe treće strane, a definiran je kao Hid uređaj sličan mišu ili tipkovnici. Pri prvom povezivanju uređaj će biti identificiran kao Easylogger. Sljedeća slika prikazuje dijelove potrebne za sastavljanje.

Postoji 6 verzija programa Usbscope, ljuske u kojima mi zapravo promatramo graf. Prve tri verzije ne podržavaju 64-bitne Windows operativne sustave. Od četvrte verzije Usbscopa pruža se podrška. Da bi program radio, na računalu mora biti instaliran Netframework. Izvorni kodi firmwarea i izvorni kodovi programa shell nalaze se na web lokaciji autora, tako da možda postoje obrtnici koji mogu nadopuniti softver. Kakva je praktična upotreba ovog osciloskopa, je li to zapravo samo igračka? Ne, ovaj uređaj proizvođači automobila koriste kod kućnih majstora, kao proračunsku zamjenu za skupi osciloskop, za podešavanje sustava paljenja automobila, potrošnju goriva i slične potrebe.

Očito je učestalost rada u modelu automobila prilično niska, a ova je sonda minimalno dovoljna, barem za jednokratni rad. Za povezivanje s izmjerenim krugom lemio sam dvije sonde pomoću oklopljene žice, tulipana ili RCA priključka za smanjenje razine buke. To omogućava jednostavno spajanje i odvajanje sondi iz osciloskopa.

  1. Jedna od žica - osciloskopske sonde, završava za mjerenje sondom iz multimetra za signalnu jezgru i krokodilom za spajanje na zemlju.
  2. Druga sonda završava u krokodilima različitih boja, kako za signalnu jezgru, tako i za zemlju.

Zaključak: sastavljanje ove sonde je prikladnije kao vizualno pomagalo za proučavanje oblika niskofrekventnih signala. U praktične svrhe, na primjer, za provjeru i podešavanje sklopnih napajanja, posebno rada PWM regulatora, ova je sonda nedvosmislena, jer ne može osigurati tražene performanse. Stoga ne može biti zamjena, čak ni za najjednostavniji sovjetski osciloskop, pa čak ni za jednostavne osciloskope s Ali Expressom.

Arhivu možete preuzeti s vezom, firmwareom, osiguračima i zaslonom sonde osciloskopa na linku. Svi uspjesi, posebno za - AKV.

Raspravite o članku USB PROBE-OSCILLOGRAPH


Ovaj jednostavan i jeftini USB osciloskop dizajniran je i napravljen samo za zabavu. Davno sam imao priliku popraviti nekakav blatni video procesor, u kojem je ulaz izgorio do ADC-a. ADC-i su se pokazali pristupačnim i jeftinim, kupio sam par za svaki slučaj, jedan je otišao na zamjenu, a drugi je ostao. Nedavno mi je zapeo za oko i nakon što sam pročitao dokumentaciju za njega, odlučio sam je iskoristiti za nešto korisno u domaćinstvu. Kao rezultat toga, dobili smo takav uređaj. Koštao je peni (dobro, oko 1000 rubalja) i nekoliko slobodnih dana. Prilikom stvaranja pokušao sam smanjiti količinu detalja na minimum, zadržavajući minimalnu funkcionalnost potrebnu za osciloskop. U početku sam odlučio da se pokazao kao nekakav bolno neozbiljni uređaj, međutim, sada ga stalno koristim jer se pokazalo vrlo zgodnim - ne zauzima prostor na stolu, lako se stane u džep (velika je veličina paketa cigareta) i ima sasvim pristojan karakteristike:

Maksimalna brzina uzorkovanja - 6 MHz;
- propusna širina ulaznog pojačala - 0-16 MHz;
- Razdjelnik ulaza - od 0,01 V / div do 10 V / div;
- ulazni otpor - 1 MΩ;
- Rezolucija - 8 bita.

Shematski dijagram osciloskop je prikazan na slici 1.

Sl. 1 Osciloskopski shematski dijagram


Za različite postavke i rješavanje problema u svim vrstama pretvarača napajanja, upravljačkih krugova kućanskih uređaja, za proučavanje svih vrsta uređaja itd., Gdje nisu potrebna točna mjerenja i visoke frekvencije, ali samo trebate pogledati valni oblik s frekvencijom, recimo, par megaherca - više nego dovoljno.

S2 tipka je dio hardvera potreban za dizanje uređaja. Ako ga držite pritisnutim kada spajate osciloskop na USB, tada će PIC raditi u načinu za pokretanje programa i možete ažurirati firmver osciloskopa pomoću odgovarajućeg uslužnog programa. Kao ADC (IC3) korišten je "televizijski" mikro krug - TDA8708A. Sasvim je dostupan u svim vrstama "Chip and Deep" ah i drugim mjestima za vađenje dijelova. Zapravo, ovo nije samo ADC za video signal, već je i ulazni prekidač, izjednačivač i ograničivač razine bijelo-crne itd. Ali svi ovi čari ne koriste se u ovom dizajnu. ADC je vrlo brz - brzina uzorkovanja je 30 MHz. U krugu, on radi na taktnoj frekvenciji od 12 MHz - ne treba vam brže, jer PIC18F2550 jednostavno ne može brže čitati podatke. I što je veća frekvencija, to je veća potrošnja ADC-a. Umjesto TDA8708A, možete koristiti bilo koji drugi brzi ADC s paralelnim izlazom podataka, na primjer, TDA8703 ili nešto s analognih uređaja.

Taktna frekvencija za ADC pametno je izvađena iz PIC-a "i - ona pokreće PWM s frekvencijom 12 MHz i radnim ciklusom od 0,25. Sat takta pozitivne polarnosti prolazi u Q1 PIC ciklusu", i tako za svaki pristup luci B koja se dogodi u ciklusu Q2, podaci ADC-ovi će biti spremni. PIC jezgra djeluje na 48 MHz, dobivena je putem PLL-a iz kristala od 4 MHz. Naredba kopiranja iz registra u registar izvodi se u 2 takta ili 8 ciklusa, pa se podaci ADC-a mogu pohraniti u memoriju s maksimalnom frekvencijom od 6 MHz koristeći kontinuirani slijed naredbe MOVFF PORTB, POSTINC0 Podatkovni međuspremnik koristi jednu banku PIC18F2550 RAM-a od 256 bajtova.

Manje stope uzorka implementirane su dodavanjem kašnjenja između MOVFF upute. Firmver provodi najjednostavniju sinkronizaciju na negativnom ili pozitivnom rubu ulaznog signala. Ciklus prikupljanja podataka u međuspremniku započinje naredba s računala putem USB-a, nakon čega se ovi podaci mogu očitati putem USB-a. Kao rezultat toga, računalo prima 256 8-bitnih uzoraka, koji se mogu, primjerice, prikazati kao slika. Ulazni krug je nevjerojatno jednostavan. Razdjelnik ulaznog napona bez ikakvih naboja vrši se na okretnom prekidaču. Nažalost, nije bilo moguće razabrati kako prebaciti položaj prekidača na PIC, pa na grafičkom licu osciloskopa postoje samo vrijednosti napona u relativnim jedinicama - podjelama razmjera. Pojačalo ulaznog signala (IC2B) djeluje s pojačanjem od 10 puta, nulte pomake potrebne za ADC (prihvaća signal u rasponu od Vcc - 2,41V do Vcc - 1,41V) osigurava se naponom iz programibilnog naponskog referentnog generatora PIC (CVREF IC1, R7, R9) i razdjelnika od negativnog napona napajanja (R6, R10, R8). Jer bilo je "dodatno" pojačalo (IC2A) u op-amp paketu, koristio sam ga kao sljedbenik pristranosti.

Ne zaboravite na kapacitivne sklopove za frekvencijsku kompenzaciju ulaznog kapaciteta vašeg op-amp i ograničavajuće diode koji na dijagramu nisu prisutni - trebate odabrati kapacitivnosti paralelno s razdjelničkim otpornicima i otpornikom R1, inače će frekvencijske karakteristike ulaznog kruga uništiti cijelu širinu pojasa. S istosmjernom strujom sve je jednostavno - ulazni otpor op-ampera i zatvorenih dioda je veličine veće od otpora razdjelnika, pa se razdjelnik može jednostavno izračunati bez uzimajući u obzir ulazni otpor op. Za naizmeničnu struju je drugačije - ulazni kapacitivni napon pojačala i dioda su značajni u usporedbi s razdjelnikom. Od otpora razdjelnika i ulaznog kapaciteta op ampere i diode, dobiva se pasivni niskopropusni filter koji iskrivljava ulazni signal.

Da biste neutralizirali ovaj efekt, potrebno je da ulazni kapacitet op-amp i dioda napravite mnogo manje od kapaciteta razdjelnika. To se može postići izgradnjom kapacitivnog razdjelnika paralelno s otporničkim. Teško je izračunati takav razdjelnik, budući da i ulazni kapacitet kruga i kapacitet ožičenja nisu poznati. Lakše je pokupiti.

Metoda odabira je sljedeća:
1. Stavite kondenzator od približno 1000 pF paralelno s R18.
2. Odaberite najosjetljivu granicu, primijenite pravokutne impulse s frekvencijom od 1 kHz i zamahom od nekoliko podjela razmjera na ulaz i odaberite kondenzator paralelan s R1 tako da pravokutnici na ekranu izgledaju kao pravokutnici, bez vrhova ili blokada na prednjim dijelovima.
3. Ponovite postupak za svaku sljedeću granicu, odabirući kondenzatore paralelno sa svim razdjelnim otporom prema granici.
4. Ponovite postupak od početka i provjerite je li sve u redu na svim granicama (može se pojaviti kapacitet kondenzatora), a ako nešto nije u redu, malo ispravite kapacitete.

Sam op-amp je analogni uređaj AD823. Najskuplji dio osciloskopa. :) S druge strane, opseg od 16 MHz prilično je dobar, osim toga, prva je pametna stvar koja se u maloprodaji našla za razuman novac.

Naravno, ovaj dvostruki op-amp možete promijeniti bez ikakvih preinaka na nešto poput LM2904, ali tada se morate ograničiti na signale audio raspona. Neće vući više od 20-30 kHz.

Pa, primjerice, pravokutni oblik signala bit će malo izobličen. Ali ako možete pronaći nešto poput OPA2350 (38MHz), bit će, naprotiv, divno.

Negativni napon napajanja za op-amp temelji se na dobro poznatoj pumpi za punjenje ICL7660. Minimalno vezanje i bez indukcije. Struja na izlazu od -5 V naravno, mala je, ali ne treba nam puno. Strujni krugovi napajanja analognog dijela izolirani su od digitalne buke pomoću induktora i kapaciteta (L2, L3, C5, C6). Pronađene su induktivnosti nominalne vrijednosti 180 uH, pa sam ih instalirao. Nema smetnji napajanja čak i na najosjetljivijoj granici. Softver za PIC prenosi se putem USB-a pomoću dizača za podizanje sustava koji sjedi sa 0 adrese u programskoj memoriji i pokreće se ako držite pritisnutu tipku S2 kad je uključite. Dakle, prije bljeskanja PIC-a - prvo ispunite program za pokretanje sustava - bit će lakše promijeniti firmver.
Izvori za pogonitelj osciloskopa za jezgre 2.6.X nalaze se u arhivi s firmwareom. Postoji i uslužni program za konzolu za provjeru rada osciloskopa. Njene izvore vrijedi pogledati kako biste shvatili kako komunicirati s osciloskopom, ako želite napisati vlastiti softver za to.
Program za računalo je jednostavan i asketski, njegov izgled prikazan je na slikama 2 i 3. Osciloskop povežite s USB-om i pokrenite qoscilloskop. QT4 je potreban.

Svatko je imao trenutak u svom životu kad shvatite, " Morate kupiti osciloskop!”. U mojoj praksi u većini je slučajeva bio potreban osciloskop za promatranje valnog oblika (ili čak pokazati njegovo prisustvo), dok su glavna mjerenja i istraživanja provedena na drugim uređajima. Mnogi će se sada raspravljati sa mnom, što možete učiniti što je za mene povoljnije, pa sam odlučio napraviti jednostavnu osciloskopsku sondu. Neće imati dobre karakteristike, glavni je cilj objasniti princip rada što je popularnije moguće! Na kraju članka možete pronaći arhivu sa svim izvorima i materijalima koji su vam potrebni. Dakle, krenimo ...

Digitalni signal je niz brojeva (ako je odjednom glavni), svaki broj je vrijednost napona u određenom trenutku. Uzorci se uzimaju s određenom frekvencijom, što se naziva brzinom uzorkovanja. ADC je uključen u pretvorbu analognog signala u diskretni. Postoje posebni mikro krugovi koji implementiraju ovu funkciju, ali mikrokontroleri su posebno opskrbljeni iglicama iz kojih se mogu iščitati vrijednosti. Otvorimo list s podacima na Atmega8, tamo vidimo frazu: 8 kanala (ili 6 za PDIP paket) 10-bitni ADC. Oni. možete povezati 8 signala na svaki od ovih kanala i ukloniti vaš signal iz svakog! 10-bitni znači da se napon u svakom trenutku kodira dvoznamenkastim brojem od 10 znamenki. Sjetite se te činjenice.

Naš ADC ne razumije negativni napon, mjeri se od 0-GND do AREF. Gornji prag može se postaviti u ADMUX registru kao unutarnji izvor \u003d 2,56 V, ili može biti jednak naponu na AVCC pinu (što se obično radi). Također u ADLAR-u (vidi donju sliku) možete postaviti redoslijed ispunjavanja rezultata.

MUX adresa 0x0000 odgovara ulazu ADC0 i nastavlja se analogno (ako ne razumijete, pogledajte tehnički list, stranica 199).

Sada pokrenite ADC. ADC može raditi u 2 načina. Prvi je pojedinačni način (Single Conversation), u ovom načinu dajemo naredbu "Mjeri!" mjeri se i isključuje (ali to je tako figurativno). Drugo je konstantno pokretanje (Slobodno trčanje), gdje sve podesimo, uključimo i radi, a vrijednosti stalno uklanjamo. Drugi način je prikladniji za provedbu našeg zadatka, ali je teže kontrolirati mjerenje, pa ćemo koristiti prvi.

ADC način konfiguriran je u ADCSRA registru.

Posljednje što preostaje su ADCH registar rezultata - ADCL visoki bit - nizak. Neću govoriti o njima, na slici je sve jasno i jasno.

To je sve s teorijom! Sad napišemo program! Za uklanjanje pogrešaka i trening ADC-a, mi ćemo sastaviti sklop u Proteusu. Učinit ćemo sljedeće:

Izmjerite ulaznu razinu;

Prikažite razinu u binarnom kodu (pomoću 8 LED-ova).

Da bismo to učinili, radit ćemo u načinu ADLAR \u003d 1 i čitati samo najznačajnije bitove ADCH (tj. Gubimo 2 najmanje značajna bita, točnost se gubi, ali unutar prihvatljivih granica za mene). Program je napisan u AVR studiju.

Int main (void) (DDRD \u003d 0xFF; ADMUX \u003d 0b01100000; // Podesite gornji prag za AVCC napon, postavite 3.3V // ADLAR \u003d 1 i uklonite ADC s ADC0 nogu ADCSRA \u003d 0b10001101; // Postavite ADC mod, uključite Single Mode , uklonite ADC iz ulaza ADC0 _delay_us (10); dok (1) (ADCSRA | \u003d 0x40; // Uključite ADC dok ((ADCSRA & 0x10) \u003d\u003d 0); // pričekajte za završetak PORTD \u003d ADCH; // ispis rezultata) )

Šivamo i gledamo što se dogodilo. Kada se sinus poveća sa 0 na 3,3, vidimo kako vrijednost raste do maksimuma, ali kad sinus pređe u negativan dio, imamo stabilni 0.

Da bismo riješili taj problem, moramo svoj signal povisiti za 1,6 V (polovina cijelog raspona), tj. potrebno je signalu dodati polovicu napajanja, a sam signal treba oslabiti 2 puta kako vrijednost na ulazu ne prelazi naše granice od 0-3,3 V. ALI! Kako je članak edukativan, a ovdje je glavna stvar objasniti vam sve, krenimo lakše! Za testiranje rada našeg uređaja koristit ćemo izlaz sa zvučne kartice (a generator signala radi na PC-u), tako da samo bacimo otpornik od 470 Ohm između +3 V i ADC ulaza. To će nam dati željeni odmak.

Kao rezultat, digitalizirali smo signal. Ostaje je prikazati na ekranu.

Za svoj projekt odabrao sam ekran iz nokia1100, zašto? Da, zato što sam ga upravo pronašao u svom gradu + u Proteusu se nalazi njegov izgled. Možete koristiti druge, glavne podatke koje već imamo (naučili smo ih kako ih dobiti!).

Neću opisivati \u200b\u200bkako inicijalizirati zaslon (toliko je dostupnih informacija na Internetu, ne želim se ponavljati + stavio sam što više komentara u izvorni kod), ali samo ću dati tekst programa s komentarima:

#include "nokia1100.h" // Uključujemo biblioteku NOKIA1100 nepotpisani int n \u003d (0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01); nepotpisani int deltaU \u003d 4, deltaT \u003d 0; nepotpisani međuspremnik; int zastava \u003d 0; void LCD_Signal (int indeks, int znachenie, int deltaU) (// funkcija za prikazivanje piksela u stupcu znachenie \u003d znachenie / deltaU; unsigned int h; for (unsigned int i \u003d 0; i<8;i++){ nlcd_GotoXY(index,7-i); h=1; for(unsigned int j=0;j<8;j++){ if(i*8+j==znachenie){h=0; nlcd_SendByte(DATA_LCD_MODE,n[j]);} } if(h) nlcd_SendByte(DATA_LCD_MODE,0x00); } } void function_buttons(){//обработка кнопок while(PINB==0x01) flag=1; while(PINB==0x02) flag=2; if(flag==1)deltaU+=2; if(flag==2) deltaT+=10; } int main(void) { nlcd_Init();//инициализация дисплея _delay_us(10); ADMUX =0b01100000;//Настроили АЦП от 0 до AVCC на который мы подаем 3,3 В ADCSRA = 0b10001100;//Настраиваем режим АЦП, вход настраиваем так же на ADC0 while(1) { DDRB=0x00; PORTB=0x00; for(int i=0;i<96;i++){ ADCSRA |= 0x40;//Включаем АЦП while((ADCSRA & 0x10)==0);//Ждем завершения buffer[i]=ADCH;//Записываем в буфер _delay_us(deltaT);//задержка для уменьшения частоты дискритизации } for(int i=0;i<96;i++){//Выводим буфер на экран function_buttons(); LCD_Signal(i,buffer[i],deltaU); } } }

Uključene datoteke nalaze se u arhivi članka!

Javite se:

Tehnički podaci.

Prije nekoliko mjeseci, dok sam surfao Internetom, naišao sam na osciloskop na mikrokontroleru pic18f2550 i grafički prikaz na ks0108 kontroleru... Bio je to web mjesto Stevena Cholewiaka. Nikad nisam vidio osciloskop na istom mikrokontroleru. Bilo mi je ohrabrujuće i odlučio sam napraviti nešto slično, ali na c jeziku. Najbolje rješenje za mene bilo je korištenje winavr-a, a temelji se na open source avr-gnu prevoditelju i dobro funkcionira s avr studio 4.Grafičku knjižnicu koju sam koristio stvorio sam posebno za ovaj projekt. Nije za opću upotrebu. Ako ga želite uključiti u svoj kod, morat ćete ga prilagoditi prema vašim potrebama. Maksimalna frekvencija koju ovaj osciloskop može prikazati je 5 kHz, za kvadratni val. Za ostale signale (sinus, trokut) - 4 kHz.

Opis
Napon napajanja u krugu je 12V. Pomoću pretvarača pretvara se u 8,2 V for ic1 i 5V za ic2 i ic3. Ovaj krug može mjeriti napone od -2,5 V do +2,5 V ili 0 V do +5 V, ovisno o stanju prekidača s1 (AC ili DC). Pomoću razdjelnika 1:10 možete izmjeriti 10 puta veći napon. Pored toga, s2 se može koristiti za daljnju podjelu ulaznog napona na 2.

Atmega32 programiranje.
avr_oscilloscope.hex - firmware za mikrokontroler. Kad trepće, postavite komadiće osigurača mikrokontrolera na sat od vanjskog kristala. Obavezno isključite jtag nakon bljeskanja! Ako to ne učinite, vidjet ćete početni zaslon kad ga uključite, a kad odete na ekran osciloskopa, vidjet ćete ponovo zaslon za pokretanje.

Kalibriranje.
Samo su dvije stvari potrebne kalibracije. To su promjenjivi otpornici p1 i p2. p1 je potreban za pomicanje snopa u sredinu zaslona, \u200b\u200ba p2 za podešavanje kontrasta zaslona.

Koristeći.
Možete pomicati zaslon gore ili dolje po zaslonu pritiskom na s8 ili s4. Napon od 1 V odgovara jednoj podjeli na zaslonu. Pomoću s7 i s3 možete povećati ili smanjiti brzinu mjerenja.Pritiskom na tipku s6 možete zamrznuti zaslon.

PCB (101x160mm) i mjesto komponenata.

Predloženi uređaj, naime, pripada kategoriji oscilografskih sondi. Njegove mogućnosti omogućuju samo „oko“ da procijeni oblik i parametre niskofrekventnih signala. Ipak, zbog svoje male veličine i ekonomičnosti, takav se osciloskop može koristiti u amaterskoj radio praksi, posebno pri dijagnosticiranju i popravljanju opreme na terenu.

Taj se razvoj temelji na osciloskopu-multimetru s malim dimenzijama opisanim u. U njemu je preostala samo jedna "zraka". Maksimalna osjetljivost kanala vertikalnog otklona povećana je sa 640 na 100 mV (preko cijelog zaslona). Minimalno trajanje pomicanja smanjeno je s 5 na 3 ms, a kod promatranja logičkih signala - na 300 μs. Dimenzije uređaja, njegova težina i potrošnja struje značajno su smanjeni.

Glavne tehničke karakteristike

Osciloskopski krug prikazan je na Sl. 1. Ispitivani signal proizvoljnog oblika, ovisno o njegovoj amplitudi, dovodi se u "ulaz 1" - jedan od utičnica 1-5, 7, 8 priključka X1, a na njegovu utičnicu 6 priključuje se zajednička žica izvora signala koji se ispituje. Otpornici R1-R6, koji postavljaju osjetljivost vertikalnog otklona osciloskopa, montiraju se izravno na igle utičnica. Putem pojačala na optičkom pojačalu K140UD608 (DA1) signal se dovodi na pin 2 (RA0) mikrokontrolera (DD1), koji služi kao ulaz u ugrađeni ADC. Digitalna očitanja trenutnih vrijednosti signala za vrijeme koje odgovara odabranom trajanju brisanja pohranjuju se u RAM-u mikrokontrolera i prikazuju na grafičkom LCD-u HG1 kao oscilogram. Koristi se LCD koji se upravlja preko vodova ulaza RB0 - RB4 i RC0 - RC7 mikrokontrolera. Pri razvoju softvera preporuke iz članka pokazale su se vrlo korisnim.

Promjenjivi otpornik R10 dizajniran je za vertikalno pomicanje valnog oblika. Otpornik R17 odabran je za postizanje najboljeg kontrasta slike na zaslonu indikatora.

Pregled osciloskopa - pojedinačan, aktivira se svaki put kada pritisnete gumb SB2. Trajanje pomicanja se mijenja pritiskom na tipku SB1. Nakon svakog pritiska na zaslonu se prikazuje broj - vrijednost odabranog trajanja.

Ako je trajanje pomicanja postavljeno na 300 μs (preko cijelog ekrana), ADC mikrokontrolera više nema vremena za digitalizaciju uzoraka ispitivanog signala. Pri toj brzini indikator može samo promatrati prirodu promjene vremena logičkih razina impulsa primijenjenih na utičnicu 9 priključka X1 ("ulaz 2" osciloskopa). Kroz blokirajući kondenzator C1 ti se impulsi dovode izravno na diskretni ulaz RA1 (pin 3) mikrokontrolera.

Osciloskop je sastavljen pomoću šarkiranog postavljanja na ploču (Sl. 2), smještenog u kućište napravljeno od kutije za ribolov. Indikator HG1 nalazi se na poklopcu kućišta. Vanjski prikaz pogonskog uređaja prikazan je na Sl. 3. Treći gumb vidljiv na fotografijama ostaje bez veze. Ne koristi se pri radu s uređajem.

Izvorni kod programa za sastavljanje i firmware za PIC16F873A mikrokontroler dostupni su s.

Književnost:

1. Kichigin A. Osciloskop-multimetar s malim dimenzijama. - Radio, 2004., broj 6, str. 24-26.
2. Modul s tekućim kristalima MT-12864J. -.
3. Milevsky A. Korištenje grafičkog LCD-a MT-12864A s mikrokontrolerom Microchip. - Radio, 2009, br. 6, str. 28-31.