Tag Archives: AVR

AVR87: TXC101 UHF siustuvėlis

Tai mano pirmas eksperimentas radio dažnių generavime. Todėl labai jau nekritikuokite. Viskas prasidėjo nuo signalizacijos siustuvėlio, kurio nesugebėjau paleisti. Poto iš kinijos nusipirkau pirmą pasitaikiusi mikroscheminą kuris generuoja aukštus dažnius. Tai buvo TXC101, 300-1000MHz transmitter. Kuris gali veikti kaip savarankiškas prietaisas, o gali veikti valdomas mikrokontrolerio. Poto vėl buvo viskas užmiršta, kol kitame projekte liko vietos PCB (nes jos dabar didelės). Taip ir gimė šis visiškai žalias projektas su klaidom.
Schema paprasta- MCU (ATMEGA8), sintezatorius TXC101, biški pasyvių element ir dviejų tranzų stiprintuvas. Mažesnis tranzistorius tai kažkas su užrašu “7Y 1”, kas savo ruožtu gali būti: MMBR941, MMBR951 kas visai tinkama (arba ten visai ne tokia detalė, nors lupau iš kažko aukštadažnio), o didesnis buvo BLT50, kas gerai 470MHz, bet tikriausiai negerai prie 900MHz. Tačiau visiškai tranzo patikrinti prie aukštesnio dažnio nepavyko, nes traukiojant laidus ir jungiant visokiausias apkrovas tranzistorius biški užkaito ir jau nebeveikė. Toliau eksperimentus dariau be galinio tranzo…
TXC101 transmitter and AVR ATMEGA8
(foto pasididina)
Continue reading →

AVR80: OLED displėjukas ir SD kortelė

Jau daug metų norėjau ir pagaliau padariau SD kortelės rašymo eksperimentą su ATMEGA16 mikroschema. Man kažkodėl visiškai viskas neveikė ir teko kankintis su vos vos veikiančiu LCD ekraniuku debuginimui. Vėliau nusprendžiau panaudoti maža nereikalingą OLED displėjuką iš kinijos. Ekraniukas veikia nuo 3V todėl nereikėjo vargti su signalo lygiai ir panašiai. Ekraniukas kabo ant tų pačių SPI laidų kaip ir SD kortelė, aišku CS/SS signalas skirtingas. Labai ilgai kažkodėl neveikė. O šiandien, vakare bet kaip sujungiau laidelius ant savo mega-dev-boardo ir viskas suveikė.

OLED is SD

Failas gavosi ir 1G standartinėje SD kortelėje ir kogero toje mažesnėje, 64Mb multimedia card.

OLED is SD
Kadangi nenaudojam RTC modulio, tai failo sukurimo data hardcodinta programoje.

Šioje konstrukcijoje panaudojau FatFs modulius iš elm-chan.org puslapių, o OLED displėjau modulio paprogramės irgi paremtos svetimu darbu, tiesa ten kiek daugiau padirbėjau. Visa šita sistema suėdė beveik visą ATMEGA16 atmintį:

AVR Memory Usage
----------------
Device: atmega16

Program: 13700 bytes (83.6% Full)
(.text + .data + .bootloader)

Data: 227 bytes (22.2% Full)
(.data + .bss + .noinit)

Todėl, jei norima konstruoti kažka protingesnio, deja teks imti “storesnį” mikroprocesoriuką.

Ir visas source kodas bei sukompiliuota programa tiems žmonėms kurie jau neturės rankioti gabaliukais ir kankintis kol kodas pradeda veikti:SD kortele ir OLED displejaus source code / ATMEGA and SDcard source code.
Apie hardwarę- SD kortelė pajungta prie MISO/MOSI/SCK/SS kojų, OLED ekraniukas prie tų pačių MOSI/SCK, o kiti specialūs OLED signalai paimami iš C porto (3 laidai: CS, C/D, RESET).

AVR79: WS2812 RBG LED juostelė

Trumpas eksperimentas su kiniškais, individualiai kontroliuojamai (addressable) RBG LEDais. T.y. tai kaip ir ilga juostele su RGB LEDais kuriuose sumontuota maža mikroschema kuri leidžia užprogramuoti trijų RGB šviesos diodų intensivumą. Šviesos diodai (ir pati juostelė) valdosi tik per vieną duomenų laidą, t.y. protokolas asinchroninis ir jo veikimas priklauso nuo teisingo taimingo.

WS2812 individually addressable RGB LED control AVR

Pradžioje galvojau rašyti viską nuo nulio, bet poto nutariau ne vargti ir pasiieškojau source code internete. Radau kažkokį universalų, AVR procesoriukams. Nors pats kodas kaip ir universalus, ir turėtu duoti ispėjimus, kai makrosai nesuskaičiuoja, tačiau net kokią valandą kankinausi su kodu, nes signalai nesigavo su teisingais intervalais. Pasirodo, kad mano turimas ATMEGA162, grojantis ant 3,686MHz (cominis) yra kaip tik ant tos ribos, kada softas dar mano, kad sugebės taimingus suformuoti, bet WS2812 mikroschema visiškai su tuom nesutinka. Pakeitus kvarcą į 12MHz (USBinis), viskas iškarto pradėjo veikti.

Tavo vamzdyje arba tu vamzdis (Youtube) pilna filmukų, kur iš tokių LED eilučių pasidaro ištisus ekranus. Tačiau, norint pasidaryti normalios raiškos LED ekraną reikia investuoti į gana daug tokių LED eilučių. Gaunasi brangokas projektas. O ir tada su paprasta ATMEGA neprasisuksi, nes reikia organizuoti video informacijos apdorojimą ir video buferį atmintyje.

Ir aišku: WS2812 AVR ATMEGA source code ir kompiliuotas hex failas.

P.S. Vienas bugas WS2812 juostelėje- kažkodėl neteisingai veikia kai maitinimo įtampa daugiau kaip ~4V. Pradeda fušeruoti. Gal dėl to, kad sujungtas Vcc ir Vled juostelėje, muša stiprius trigdžius? Nes teoriškai, turi veikti net ir nuo 7V…

Elektrinis dviratis: PWM kontroleris

Taigis, kiek parašysiu kaip padarytas PWM kontroleris. Jis buvo kuriamas su kaikokiom įdėjom, bet tos įdėjos nebuvo realizuotos arba nebuvo reikalingos vėliau. Pirma mintis buvo, kad sistema bus skirta 24V sistemai, vėliau ji buvo naudojama 12V sistemoje, dabar Liion 4 celės. Buvo sugalvota analoginė per didelės srovės atkirta (šuntas, įtampos nuėmimas ir komparatorius), bet vėliau to buvo atsisakyta. Ir ta schemos dalis perdaryta į filtra ir buferį.

dviracio kontrolerio schema PWM
Schema kurią radau kompe. Ji kiek skiriasi nuo galutinės versijos. Pradžioje buvo dviejų pakopų stabilizatorius (IC2-IC3)+IC1. Mintis buvo tokia, kad borto 24V numušami iki 15V ir ši įtampa naudojama MOSFET draiveriui. Pakeliui, 15V mažinama iki 5V kuri skirta mikroprocesoriui (TINY138) ir “gazo pedalui”. Išėjimo mikroschema LM358 buvo maitinama iš 15V.
Po eksperimentų ir perdegimų liko tik 7805.

Veikimas toks- įtampa iš akumuliatoriaus, per dioda D1 (400V, 3A) eina į droselį L1. Neteisingos įtampos spaikai suvalgomi transilo D2 (kažkoks ~52V). Čia stovi elektrolitai ir pajungtas 7805 stabilizatorius bei LM358.
Iš 7805 penki voltai užglaistomi kelių elektrolitų patenka į MCU ir į “gazo” jungtį. Pradžioje ten stovėjo rezistorinis daliklis, dabar kiniškas holo variantas. Signalas per filtrą C2 ir R1, bei apsaugą D3 patenka į MCU.
MCU generuoja PWM signalą kuris per filtrą R6C patenka į LM358 buferį. Nes pernelyg “aštrus” signalas iš MCU kėlė problemas tolimesnėse grandinėse. R7 patempia signalą žemyn tada kai MCU dar nepasiruošęs darbui. Dabar signalas “be aukštų” eina į kitą plokštelę kuri išpjauta iš pramoninio įrenginio. Ten stovi UC3710T tikriausiai pagal tipinę schemą, įėjimo signalas irgi turi savo R daliklį, stovi keli kondensatoriai, diodas ir gana didelis transilas.
Signalas iš draiverio išsiskirsto į keturius mosfetus, kiekvieno mosfeto gate turi savo kelių omų buferį ir kelių kiloomų pull-down.

Programinė įranga “hard coded” konkrečiam holo davikliui. Nes holo daviklio dinaminis diapazonas gana mažas. Programinėje įrangoje numatytas “išėjimo kreivės” panaudojimas. Dabar kreivė naudoja linijinį dėsnį.
Dar kelios subtilybės- nėra visiškai mažų ir didelių PWM reikšmių. Per mažos reikšmės nepasuka motoro, tik cypia. O per dideliose nėra jaučiamo skirtumo. Todėl prie maksimalio reikšmės PWM išjungiamas ir MOSFETai atidaromi iki galo.

Source code ir sukompiliuoti failai: DC motoro variklio kontroleris.

AVR76: unlock ir bambesiai

Iš kažkokio šroto pririnkau gal kokį pusę šimto ATMEGA162v procesoriukų. Buvo tiesiog gaila išmesti. Praėjo neskubant virš metų laiko, pasidarė testinė PCB ir buvo prilituoti keli. Pasirodė, kad jie užlokinti. Bent jau nuoseklus (serial) programavimas neveikė. Nėra didelė bėda ir ne pirmas kartas. Į rankas datašytą, biški programinimo ir … neveikia.

Dvidešimt tris kartus perpatikrinau schemą:
AVR fuse bit unlocking circuit and software
Continue reading →

Dvigubas maitinimo šaltinis: softas

Straipsnį apie Dvigubo maitinimo šaltinio konstravimą parašiau, o štai paviešinti softą ir jo source code visiškai užmiršau.

dvigubas maitinimo saltinis su grafiniu LCD ekranu

Trumpai apie hardwarę. Konstrukcijoje stovi du identiški reguliuojami maitinimo šaltiniai (linear), nepriklausomos trafo apvijos, srovės matavimas “high side” su srovės šuntu (problemos su mažom įtampom), grafinis LCD ekranas valdomas kiek stipresnio ARM SAM7 procesoriuko, kuris dar ir matuoja vienos pusės parametrus bei priima signalus per UARTą per optinį atrišimą iš kitos pusės. Kitą pusę kontroliuoja nedidelis AVR ATMEGA8 procesoriukas. ARMas dar matuoja įrenginio vidaus temperatūrą. Mikroprocesoriai nieko nevaldo, tik indikuoja.

Source (ir kompiliuotas hex failas):
ARM AT91SAM7 procesoriukui.
AVR ATMEGA8 procesoriukui.

Kam to reikia arba elektroninis kryžiažodis (VX1818)

Laikas nuo laiko mano bloge atsiranda kokio nors neaiškaus prietaiso dalinis pajungimas prie kompiuterio ar mikrokontrolerio. Ir tikriausiai ne kartą skaitytojams iškilo klausimas- nu kam Levas eikvoja savo laiką niekam nereikalingo, morališkai pasenusio prietaiso nagrinėjimui?
Atsakymas labai paprastas- tai yra kaip ir smegenų poilsis ir laisvo laiko eikvojimas. Taip kaip kokie nors kryžiažodžiai- smegenis dirba, bet realios naudos jokios nėra.

Štai vienas iš tokių galvosukių:

Tai kažkokio portatyvinio DVD grotuvo nuplėštas ekraniukas. Kas įdomu- ekraniukas (pats LCD) turi analoginį įėjimą- RGB! Tačiau jam reikia visokių egzotinių ir neigiamų įtampų (-12V,+17V ir 5V) ir visokiausių sinchro signalų. Tam reikalui, šalia LCD ekraniuko buvo paslėpta plokštė su VXIS daugiakoju VX1818. Aišku gerieji kiniečiai jokios naudingos informacijos apie savo produkciją neskleidžia.
Tačiau guglinimas atskleidė kažkokio prietaiso (gal ir net panašaus DVD grotuvo source code). O turint tokią informaciją jau galima pradėti spręsti šitą kryžiažodį.
Iš originalaus DVD grotuvo iškirpaus maitblokį (beja DVD grotuvėlis buvo veikiantis, jame tik kažkoks kakulis buvo pastrigęs optinėje sistemoje) ir užtrumpinau maitinimo paleidimą, kad visada veiktu. Pačiam ekranėliui ir VX1818 reikia kokio nors video signalo kad pasileistu. Todėl pradžioje naudojau seną video kamerą, vėliau panaudojau didesnę egzotiką- ZX Spectrum kompiuteriuką.

Pats VX1818 sugeba dekoduoti iki RGB video signalus ateinančius PAL ir NTSC formatuose, supranta S-Video komponentinį signalą. Tačiau bendrai paėmus, visą šitą darbą atlieka labai nekokybiškai. Nu ir dar viską sugadiną LCD ekranko rezoliucija. Čipo down-scale veikia labai prastai, o tie zoom režimai nelabai padeda. Kitas bjaurus momentas- PAL sistemą dekoduoja “skaitmeniškai” ir nelabai kokybiškai- ant spalvotų laukų išlenda nešančiosios artefaktai, o ir spalva nėra tolygi. Naudojant signalą iš kameros tai nelabai jaučiasi, bet vaizdas iš kompiuteriuko tragiškas (kompiukas ten perdarytas, išvesta video signalas per antenos lizdą).

Nu ir: VXIS VX1818 and AVR ATMEGA16 source code.

Darbo laiko apskaitos laikrodis

Jo. Pažiūrėjus į šią nuotrauką, blogo skaitytojai pasakys- jo, jau toks buvo. Ir jie bus biški teisūs ir biški ne. Nes pats VFD laikrodukas jau buvo.

VFD darbo laikrodis
Čia jau kitoks principas ir užduotys. Šis laikrodis skaičiuoja darbo laiką, kiek liko iki pietų ar darbo pabaigos, dar rodos kiek liko iki “perekūro” ir kiek laiko iki perekūro pabaigos.
Nuo seniau aprašyto modelio šis laikrodis skiriasi tuom, kad jis neturi nei vieno valdymo mygtuko. Viskas valdosi per originaliai displėjuje stovinti RS232. Valdyti terminalo programa, ypač, kai serial portas išnaudotas ir displėjui sunkoka. Nes nėra atbulinio ryšio- pas panaudota ATMEGA8 tik vienas UARTas ir jis priima valdymo komandas ir pats valdo ekraną.
Continue reading →

VFD ir PT6315 kontroleris

Taip imat, konstruojat kažką, konstruojat ir staiga tik pyst, prisireikia pajungti daugiau nei kokius trys LEDus, arba kokius nors aštuonsegmenčius displėjus, o dar mygtukai… ir nebeliko kontrolerio kojyčių. Galima paimti kokią 128-koją atmegą (ARMą), naudoti sudėtingas dinamines indikacijas, charliplexingus… nu ir kam to reikia? Vietoje to, kad sutelkti dėmesį į projekto bugų naikinimą, jo naudojimosi patogumus, didžiają dalį savo programinimo laiko praleidi programindamas taimerius-dinaminę indikaciją, kovodamas su lempučių mirgėjimu ir su CPU time trukumu. Dar plius kovoti su mygtukų kontaktų “drebėjimo” problemom. O ką daryti?! Atsakymas paprastas- lituoti dar vieną mikroschemą. Pasakysit jos brangios, sunkiai gaunamos? Taip, visokios brandinės tai tikrai. Tačiau pažiūrėkit po stalu (šiukšlyne). Tikrai rasit kokį nusibaigusi DVD grotuvą. Arba kokį kitokį kinišką “širpotrebą” su indikatorium…

princeton technology corp. VFD LED drivers Continue reading →