Tipo Skopas (Voltage Logger)

Vis bandau pasidaryti šiokį tokį Įtampos sekiklį. 🙂 Kur Atmega8 su savo vidiniu ADC nuskaitinėja įtampos reikšmes. Pasirinkau 8bit ADC, nes patogus duomenų siuntimas ir pakankama rezoliucija. Iš pradžių galovjau kad eis padaryti taip: į while(1) (amžiną ciklą) įdėsiu siuntimo funkciją, kuri siųs greičiau (daugiau) nei ADC pridarys konversijų. Atmegos pusėje taip galėtų būti, bet PC pusėje susidūriau su sunkumais. Iš pradžių galvojau darysiu su Delphi.. kaip ir visada, bet neradau kaip panaudoti event (įvikį) kai duomenys gaunami.. Seniau aš darydavau kad nuskaitytu COM port buferi kas tam tikrą laiko periodą. O dabar man reikėjo nuskaityti būtent tada, kai tik kas nors pasirodo COM porte. O jame pasirodydavo maždaug 2000 baitų per sekundę. Atrodo nieko čia greito. Pradėjau daryti PC programą su C# ant .NET platformos.. ten buvo ir tas minėtais event, kai duomenys gauti.

Scope

Taigi pamėginau su juo.. iš pradžių buvau padaręs su visu duomenų apdorojimu tuo pat metu.. Tai paleidus programą ir prisijungus prie COM porto, kokias 15 sekundžių atrodo, kad dirba gerai..  bet po jų prasideda lagas.. pasižiūrėjau kaip CPU į tai reguoja, o jis sau 100% pajėgumu darbuojasi.. Taigi pagalvojau gal čia dėl to, kad iškart apdoroju duomenis.. bet pasirodo galiu padaryti ir tuščią tą event’ą  o CPU vistiek dirba 100% pajėgumu.. O jau buvau pradėjęs daryti ir pačio signalo šiokį tokį tyrima kaip pvz kiek užtrukna HIGH ir kiek LOW.. pagal juos buvo galima skaičiuoti dažnį.

Scope2

Čia su Attiny2313 pasidariau stačiakampių impulsų generatoriuką.  Ant viso porto turiu skirttingus dažnius. Pvz.: PD0 5ms HIGH 5ms LOW, PD1 10ms HIGH 10ms LOW. ir t.t. 🙂 o tai padaryti ypač lengva:) tereikia tik didinti per vienetą viso porto reikšmę pvz PORTD = x++; ir viskas 🙂 aišku reikia įterpti ir delay, kad nebūtų perdaug greitai 🙂 O taip atrodo mano HW:

Hardware

Reikia iš kažkur surasti gerą pavyzdį kaip Windows Hyper Terminal darbuojasi su COM portu, nes jis tai tai gali dirbti betkokiu greičiu ir atvaziduoti tai ekrane, beveik nenaudodamas CPU

Nelabai kokia kokybė bet matosi, kad susitvarko puikiausiai. 🙂 Čia tos reikšmės kinta nes aš sukinėju potenciometrą ir gaunu reikšmes nuo 0 iki 255 tik čia atvazduojama ASCII simboliais..

O čia filmukas kaip tai atrodo mano programoje.. Aišku čia sulėtintas siuntimas, kad neužlagintu

Čia taip pat sukinėju potenciometrą, paskui truputį užkliūvu pirštais 🙂 ir galiausiai pajungiu prie attiny, kuriuo generauojami tie pulsai.. ten iš pradžių, kai pajungiu prie attiny vienu momentu matosi, kad yra žemesnė amplitudė. Čia dėl to, kad ant tos kojos buvo pajungtas LED, kad matyčiau ar darbuojasi prociukas 🙂 paskui pajungiau staciai prie kojos ir matosi 5v  amplitudės.. Aišku čia jau nebeatitinka tikrose laiko tarpai tarp HIGH ir LOW nes pakeičiau siuntimo greitį.. Kodo nepastinsiu, nes dar nėra į ką ten pažiūrėti 🙂 ieškosiu kaip geriau sudraugaut su COM portu 🙂 Tai tam kartui bus tiek .. 🙂

Tags: , , ,

Leave a Reply

You can add images to your comment by clicking here.

Spam Protection by WP-SpamFree