Tag Archives: AVR

AVR 48: ST7735 grafinis LCD

Pajungsim prie mano universalios ATMEGA16 plokštės grafinį LCD ekraniuką iš eBayjaus.
LCD ST7735 with AVR ATMEGA16
Paprastas, pigus spalvotas 1.8″ TFT ekraniukas jungiamas per SPI. Pilnas eBay tokių ekraniukų. Kontroleris ST7735.
Internete pilna visokiausio softo, bet jis skirtas arba kitiems procesoriams, arba su arduino anstatu. O man reikėjo gryno paprasto GNU C. Tai teko kiek pavargti kol suklijavau iš kelių gabaliukų.
Navarotai tokie:
proporcinis ar monospace šriftas (tiesa, fonto duomenys 8 bitų aukščio), proporcinis šriftas tas pats kaip ir ant ARM eksperimento. Tiesa yra galimybė grubiai didinti šriftą. Ką ir rodo iliustracija.
Paišo grafinius primityvus: taškas, užtušuotas stačiakampis, stačiakampis, apskritimas, užtušuotas apskritimas, H ir V linija.
Priima duomenis (blob tipo) ir deda ant ekrano- galima įkelti paveikslėlius. Reikės kiek pavargti ir padaryti “penis harder” paveiksliuko iliustraciją. Priima “nekompresuotą” RGB (24bit) arba supaprastintą RGB (16bit).

Ir aišku source code bei kompiliuotas hex.

ST7735 LCD driver for AVR ATMEGA16, source code.

Laboratorinė maišyklė. Antra dalis

O dabar sudėtingas variantos to, kas jau buvo išbandyta senesniam straipsnyje. Gal galima padaryti magnetine maišyklę be mechanikos- tereikia sukurti besisukantį magnetinį lauką. Tokius laukus turi visi elektros motorai, tai gaunasi, kad mums reikia sukurti elektroninį motoro valdymą. Maišyklei reikia gero pradinio sukimo momento, gal būt “soft start”. Tai pasirinkau industrinį standartą- trys fazės. Gaunasi kaip ir standartinis lėktuvėlio modeliuko kontroleris, tačiau skirtumas, kad šis “dažnio keitiklis” visiškai asinchroninis, nes nėra nei holo jutiklių, nei srovės ar įtampos matavimo. Paprasčiausiai paprastas keitiklis.

Čia jums klasikinės trifazės iliustracija:
AVR trifazis generatorius
Bangos, t.y. fazės pasislinkusios viena kitos atžvilgiu per 120 laipsnių (1/3 apskritimo)
Ir pati banga yra sinusoidė. Todėl kontroleris (šį kartą AVR ATMEGA48V10) turėtų skaičiuoti sinusus. Tačiau trigonometrija pernelyg daug resursų reikalaujantis reikalas, todėl viską prastinam.
Continue reading →

Randominizatorius

Vienoje vietoje prireikė nepriklausomo “randominizatoriaus”. T.y. prietaisiuko, kuris su žinoma matematine tikimybe pasako “True” arba “False”.

Random

Veikia taip- paspaudi mygtuką ir su maždaug 8% tikimybe užsidega raudona spalva, kitu atveju užsidega žalia spalva. Spalva šviečia maždaug 3 sekundes. Dar kas kažkiek sekundžiu 3 milisekundėm mirkteli mėlyna spalva- čia kad priminti, kad prietaisas veikia.
Nežinau kaip bus toliau, bet teoriškai prie randominizatoriaus jungsis kažkokia periferija. Tačiau čia tik prototipas.
Viskas padaryta ant Atmelio minimalistinės mikroschemos – AT90S2343. Panaudojom mano PCB47415.
Softas labai paprastas- pagrindiniam cikle sukasi skaitliukas 0-255. Jis sukasi visada ir ant pilno greičio. Kiek jis ten sukasi nežinau, bet MCU taktinis dažnis artimas 1MHz.
Tuo tarpu kiek letesniu greičiu taimeris tikrina mygtuko būseną. Jei nuspaustas, lygina random skaičių su konstanta. Pagal tai ir sprendžia kokia spalvą užžiebti. Gal ir nėra gerai, dėl atsitiktinių skaičių mygtuko apklausos naudoti taimerį- jis gi susijęs su procesoriuko dažniu ir gal gaunasi kokia matematinė priklausomybė? Tačiau per tą patį pertraukimą dar kartais užžiebiamas mėlynas LEDas ir šiaip. Žodžiu, lygtai skaičiai ir atsitiktiniai gavosi.
Būtent atsitiktimumą apsprendžia žmogus paspaudęs mygtuką.

Softo source code ir kompiuliuotas failas:
Source code and hex for Atmel MCU.

Biški softo CNC motoriukams

Tai rezervinė kopija mano ala “cnc” projektui- AVR source kodas bei sukompiliuoti hex failai. Taip pat exe failas windowsams kuris valdo visą šitą mašineriją. Tiesa nežinau ar tai 32 ar tai 64 bitų versija.

Vienas AVR soursas skirtas valdyti steperius per paprastus mosfet raktus. Antra versija naudoja du Freescale/Motorola čipus MC34922. Teoriškai abi versijos turi veikti vienodai, viena skirta unipoliariniams motoriukams, kita bipoliariniam. Senesnė versija išbandyta praktiškai, tuo tarpu naujesnė tik prie palaido motoriuko.
Softas kiek skiriasi- nauja versija turi srovės nustatymo komandas. Tačiau senesnis softas paprasčiausiai ignoruoja šias komandas.

Softas.

Tai negalutinė versija, todėl skirta tik eksperimentams.

AVR 43: knyga, liion, led, laikrodis…

Čia tokia kompiliacija. Kažkada dariau rezervinį USB pakrovėją kurį galima maitinti kad ir iš saulės elementų, poto kažkada rašiau apie labai gražius LED indikatorius ir daug kartų rašiau apie savo universalią ATMEGA plokštę.
Kadangi nelabai kaip man ir reikia to rezervinio šaltinio, nutariau viską sujungti į vieną vietą. Ir dar pridėjau biškutį…

Viskas prasidėjo nuo to, kad pastebėjau, kad jei blogai miegu, tai atsibundu kažkodėl lygiom valandom. Tai buvo labai keistas reikalas. Arba ufonautai įsiuvo į mano galvą kokį RTC su batareika, arba veikė kažkoks išorinis reiškinys. Blaivesne galvą pagalvojus dašuto, kad tas išorinis reiškinys yra … didelis LED laikrodis. Jis kiekvieną valandą pradeda su nedidele animacija kol persivartalioja visi skaičiai. Tos šviesos mirgėjimo matyt užtenka, kad smegenys užfiksuotu ir prabudintu. Juolab, kad raudona spalva gana lengvai praeina ir per užmerktus vokus. Teko laikrodį pašalinti.
Bet reikia gi laikrodžio. Todėl tarp Eridano knygų, savadarbėse lentynose atsirado kažkokia ne knyga:
RED LED clock mini
(dizainas dar nebaigtas, reikia padažyti ir dar apsaugines plėveles nuplėšti)
Continue reading →

Minimalistinis Nixie laikrodis

Čia iš serijos AVR. Tačiau viskas prasidėjo prieš … 6 metus. Tada dar nečiupinau ATMEGŲ, tada buvau kiek įvaldęs PIC serijos kontroleriukų asemblerį. Tada buvo kilusi įdėja pasidaryti Nixie (simbolinių neoninių lempų) laikrodį. Tačiau bedarant kitą projektą tas suknistas PIC16F84A užkniso negyvai. Ir tada aš numečiau nepabaigtą projektą kažkur garaže. O štai šiomis dienomis biški tvarkiau garažą ir iškuopiau vieną VW Caddy šlamšto ir radau PCB.
Seną PCB sujungiau su savo nauja plokšte:

Nixie clock
Tai ATMEGA16 ir RTC. USB gal ir veiktu, bet buvo naudojamas tik dizaino metu kaip maitinimo šaltinio mygtukas.
Continue reading →

AVR USB 001! Ir vėl…

Kai reikia ką nors patirti, ką nors paprogramuoti, aš imu iš stalčiaus savo seną PCB plokštelę su ATMEGA16 mikroschema, biški palituoju jei reikia, perprogramuoju ir naudoju. Tačiau laikas eina, PCB sudilo, vietomis atšoko takeliai, o ir šiai nei technologiškai, nei estetiškai nebegražiai atrodo. Gal prie 5 metus (vaje) viskas buvo ir gerai, bet dabar jau yra Kiniškos pramoninės PCB
Kodėl ta pati, archaiška Atmega? Juk yra tiek naujų procesoriukų, visokios ARM technologijos ir panašiai… Ogi todėl, kad aš dar vis tebeturiu prilupinėtų atmegų. Ir dar dėl to, kad naujom mikroschemom man reikės daug ką mokytis iš naujo, o aš tingiu. O beto turiu šiokią tokią paprogramių biblioteką ir biški загатовкю. O ir dar, naujos mikroschemos dažnai tupi durnuose korpusuose (arba siaurakojai arba BGA) arba reikalauja visokių papildomų reikalų. Kodėl ne ARM ir ne koks androidas? O kam man “ekskavatorius rūtų darželyje”? Aišku yra pas mane ir ARM devboardas su Androidu, yra ir Texas Instruments kažkoks devboardukas, ir Freescale semiconductors 8 ir n-liolikos bitų kontrolerio devboardai. Tačiau pagrindinė bėda laikas. Ypač dabar, kai darbe teko persikonfiguruoti į chemikus. 🙂

AVR USB 001 V2.0

Taigi, versija 2.0. Pagrindiniai skirtumai nuo pirmos versijos:

  1. Taigi dvisluoksnė ir žalia PCB! 😉
  2. 5 ir 3.3V technologija (jumperis ir LT117).
  3. RTC on board. Tiesa, tas durnas, Holteko.
  4. I2C sleivai on board: eepromas ir LM75.
  5. SPI flaš čipas (tiesa, dar neišbandžiai, nes visi turimi mažavolčiai, o aš dar noriu išlaikyti suderinamumą su 5V technologija)
  6. VISI I/O pinai išvesti ir galima prie jų lituoti.
  7. 6 pin ISP. Čia gal ne navarotas, bet paprasčiausiai reikėjo sutalpinti viską ant 5×5 plokštės.
  8. Mini USB lizdas.
  9. Žymiai daugiau kondikų- turi mažiau triukšmauti. LC filtras ant Vanalog.
  10. Kogero suderinamas su visais mano eksperimentiniais projektais. Ir kogero netgi su visais V-USB projektais.

Pridedu testinį softą kuris leidžia patikrinti LCD, I2C epromą, termometrą ir laikrodį. Kaip visada, source code ir sukompiliuotas hex failas.

O kad būti visai geriečiu, prašom: Eagle schema, PCB ir Gerberiai.

P.S. beja, vietoje 16 atmegos gali dėti ir didesnę ir mažesnę. Svarbu tik kad sutaptu pinoutas.

AVR 38: Liuksometras su MAX44007

Viskas prasidėjo nuo gero žmogaus vardu Valentinas kuris man padovanojo Maxim Semiconductos MAX44007 mikroschemą. Aišku mikroschema šlykščiai maža. Tačiau aš prieš keletą mėnesių atradau kiniškų PCB gamybą, tai pakeliui užsakėm perėjimą iš nesveikų 6 kojų UTDFN-Opto-EP korpuso (2×2 milimetro) į kiek labiau sučiupinėjamą senovišką DIP/DIL.

max44007 liuksometras

Mikroschema bendrauja su procesorium per I2C busą. Todėl pajungimas prie mano senoviškos ATMEGA 16 bandymų plokštės paprastas… tik vienas bet. Max čipukas mažavoltis, jo negalima jungti prie 5V maitinimo ir logikos. O mano senoji plokštė maitinasi iš USB porto- 5V. Todėl teko pasielgti paprastai- sumontuoti 3V stabilizatorių Max čipukui ir panaudoti keletą rezistorių, kad buferizuoti ir slopinti duomenų signalus. Kaip stabilizatorius suėjo LM1117 tipo mikroschema, o suderinimui kiloomo eilės rezistoriai. Ant PCB be mikroschemos ir kondensatoriaus į Vcc3.3 yra dar du I2C pullupai. O gal ir pull-downai 🙂 nes USB-MEGA plokštė pati bando daryti pull-up į 5V. Oscilografas parodė, kad signalai ant MAX44007 mikroschemos kiek viršija 3.3V, tačiau viskas veikia.

max44007 liuksometras su AVR MEGA16
Nuotraukoje su kiek senesniu softu. Gale straipsnio kiek naujesnis, kuris rodo ir skaičius po kablelio. Viskas kiek daryta skubotai ir nenaudojamas INT signalas. Paprasčiausiai testas. Kiek keistokai atrodo ir pati liuksų skaičiavimo matematika- ten tokia makalynė su bitais daroma. Tačiau slankiojo kabelio matematika nepanaudota.
Ten kur softas “lieja išmintį” tai tiesiog lengva higienos normų interpretacija. Rodo ar galima pvz. lituoti SMD mikroschemas ar dar įjungti lemputę kokią.
Bugas softe (nedarantis įtakos veikimui): kažkodėl nenusiskaito du registrai nuosekliai (3 ir 4), todėl nuskaičiau aš juos po vieną baitą. Lygtai pagal datašyta turėtu nusiskaityti.

Programinė įranga: (source code ir sukompiliuotas HEX failas ).

AVR37: Print Screen

Viskas prasidėjo nuo to, kad vienas žmogus įsigijo prabangią obuolinę klavietūrą. Ir joje nėra “print screen” mygtuko. Tačiau žmogus mėgsta tą mygtuką… kelios internete sklandančios trijų ar daugiau klavišų kombinacijos nepadėjo. O man staiga užėjo bzikas… pasinaudojau senesnio projekto PCB plokštele, kiek pamodifikavau source code, “Kauno Jūra” firmelėje išverkėm mygtuką su dėžute ir gavosi toks gaminys:

usb print screen individual button keyboard

Ir kiek arčiau:
usb print screen individual button keyboard

Tiesa, foto nesimato, kad nuspaudus mygtuką, kokią pusę sekundės mygtukas pašviečiamas žalia šviesa. Čia kad rimčiau atrodytu. Visdėlto “industrinis dizainas” vienok.

O dabar informacija sudėtingesnė: tai USB HID įrenginys- klavietūra. Varoma ATMEL ATINY2313 mikrokontroleriu ant 12MHz. Keli LEDai, kad rimčiau veiktu. Softas- sukompiliuotas ir source kodas
pridedamas. Beja, kiek pasirause internete, galite ikompiliuoti kokį norit kodą. Jei vietoje žalio mygtuko įdėti “raudoną grybuką” ir įprogramuoti “boss key” gautusi irgi naudingas “devaisas”.