Tag Archives: AVR

ATMEGA USB 17 (Proteus)

Jei nenorite lituoti mano konstrukciją, bet norit pakritikuoti ar patobulinti softą, siūlau nusikrauti Proteus programą (ISIS, http://www.labcenter.co.uk ) ir išbandyti kas ir kaip. Didžioji dalis softo veikia ir nieko nereikia keisti. Deja nėra nei USB, nei FM75 mikroschemos, nei akseleratoriaus modelio. Termodaviklis ant I2C kažkos yra, bet reikės pakeisti bazinį adresą programoje. Accelerometro modelį gal kas nors sukurs. Bet va USB emuliacija nelabai galima, nes dar reikėtu emuliuoti ir klientinį kompiuterį ir priedo, reikėtų labai jau galingo kompo.

Proteus

O štai čia pati schema Proteus ISIS formate: Zip archyvas.

ATMEGA USB 15. (Nors čia ir ne mega)

Iš senų stacionarių NMT-450 Nokia telefonų prisilupinėjau mažiukų AT90LS2343 kontroleriukų. Tiesa, tik per atsitiktinumą sužinojau kad tai būtent šitas modelis, nes ant mikroschemos užrašyta “ATMEL 4370405”. Gal tai koks palengvintas variantas ar koks specifinis kontroleris. Paprasčiausiai buvo keletas telefonų, kur toje vietoje stovėjo čipukai su normaliais užrašais “AT90LS2343”.

Jau seniau rašiau apie RGB LEDus iš skanerio, kaip jie gražiai šviečia valdomi MCU ATMEGA16. Užsinorėjau padaryti tą patį, tik su šiuo MCU. Deja jis silpnesnis ir neturi hardware PWM.

Teko prasisukti su programiniu PWM (software PWM). Procesoriuko taktinis dažnis 1MHz, tai pagrindinis ciklas ir skirtas tam PWM generavimui, tuo tarpu pertraukimas skirtas spalvų reikšmių generavimui. Programinis generatorius leidžią neribotą kiekį skirtingai valdomų išėjimų, kad tik užtektu MCU našumo.

Software PWM ATTiny

Visa konstrukcija telpa ant skanerio elemento. Ta “mikroschema” ant geltonų laidelių tai tik programavimo kištukas. Gavosi toks kaip ir nereikalingas “gadget”- galima kur nors pakabinti ir stebėti kaip kaitaliojasi visos vaivorykštės (ir ne tik) spalvos. Pakeitus TCCR0 registro reikšmes, galima keisti spalvų kaitaliojimosi greitį. RGB diodai pajungti per 330 omų rezistorius prie PB0, PB1 ir PB2. Spalvą paskirsto skanerio optika.

Tikriausiai nesupratote kas čia per skaneris? Tai Canon skanerio vaikščiojantis daviklis. Jis pas pigius skanerius padarytas be lemputės ir optinis elementas yra monochromatinis. Kaip skanuoja spalvotą vaizdą? Ogi paprasčiausiai originalą apšviečia paeiliui su raudonu, žaliu ir mėlynu šviesos diodu ir registruoja vaizdą. Šie skaneriai nepasižymi gera vaizdo kokybę. Ypač tai matosi skanuojant juodai baltą tekstą spalvotame režime. Pasižiūrėjus į nuskanuotą paveiksliuką matosi, kad apie raides atsiranda spalvoti šešėliai…

Tamsoje, “hipnotinis prietaisas” visai gražiai šviečia. Dabar maitinu iš Liion akumuliatoriaus (3.7V), bet schemą galima maitinti ir nuo 5V šaltinio (šviečia žymiai geriau). Prie tos pačios plokštės prilitavau LM2937-5 (7805 variantas), tai dabar schemą galima maitinti ir kad nuo 12V automobilio akumuliatoriaus. Toks “mirksiukas” automobilyje turėtu atrodyti “rimčiau” nei paprastas signalizacijos diodas 🙂

Source code software PWM .

Kynar laidelių betvarkė

Gerai, kad yra išrasti Kynar laideliai… Adaptavau čia vieną schemutę kitokiam procesoriukui ir beskubėdamas supainiojau portus. O plokštė jau kaip ir pagaminta. Teko panaudoti pusmetrį laidelio ir “pertrasuoti” plokštę:

betvarke

Ir dar priedo nepadariau programavimo jungties- paprasčiausiai užmiršau. Šiaip schema dalinai veikia, bet kai kuriais matavimo momentais užstringa. Šiaip čia talpos matruoklis, tik ganėtinai plataus diapazono ir turi veikti su ilgais laidas- veikia ne kaip ankstesnis matuoklis su LC generatorium, bet kaip dar senesnis projektas. Tik šitas turi rodyti nuo pikofaradų iki dešimčių tūkstančių mikrofaradų…

MCU: AVR ATMEGA8, aš konvertavau į savo ATMEGA16 ir kažką negerai padariau…

Projektas “skolintas” iš http://pontoppidan.info/lars/index.php?proj=capmeter
Toliau: Continue reading →

ATMEGA USB 12 (accelerometer)

Sekantys žaisliukai pajungti prie ATMEGOS tai dvi Freescale semiconductors (ex Motorola) mikroschemos: MMA3202D ir MMA7260QT. Pirmoji tai “katastrofinė” mikroschema arba high-G (100g X-axis and 50g Y-axis). Prie tokių apkrovų žmogus ištyška kaip koks jogurtas. Bet realiam pasaulyje tokios apkrovos labai lengvai gaunamos- pvz. numeskite kompiuterio kietą diską ant akmeninių grindų 🙂
Ši mikroschema nėra labai jautri, bet ir su ja galima užregistruoti žemės trauką.

gravity Accelerometer XY

O štai antroji mikroschema tai jau žymiai jautresnė, low-G. (Selectable Sensitivity (1.5g/2g/4g/6g)). Ir turi jau tris ašis. Ši mikroschema maitinama nuo 3.3V maitinimo šaltinio sumontuoto šalia mikroschemos. Visos aplinkui prilituotos detalės skirtos apsaugti prietaisą nuo galimo elektroninio triukšmo.

gravity Accelerometer XYZ

Programoje yra ir mažytis panaudojimo demonstratorius. Kai uždedamas jumperis “firmware” ant LCD ekrano rodomi ne ADC skaičiukai, o kokia kryptim atsukta plokštė į žemę. Šitoks navarotas naudojamas fotoaparatuose ir telefonuose- kai pasuki aparatą, paveiksliukas pasukamas taip, kad būtų patogiau žiūrėti per ekraniuką.
Mikroschemos jautrumo ir greičio užtenka registruoti visokius virpesius- labai gerai matosi su oscilografu. Tai leidžia šia mikroschemą naudoti ir kaip vibracijos stabilizacijos daviklį.

gravity Accelerometer toy

Programa labai paprasta. Kadangi mikroschemos išduoda analoginį signalą, tai užtenka tik nuskaityti ADC parodymus ir juos interpretuoti. Archyve yra du “main” failai. Vienas skirtas vienai mikroschemai, kitas kitai. Dabar tereikia parašyti USB procedūras ir programa kokiam notebukui ir galima registruoti kad ir automobilio judėjimo pagreičius. Arba padaryti toki anavarotą panaudojus patarimą iš 11 skyriaus- vaivorykštinį pagreičio indikatorių. Pvz. imontuoti į spidometrą trispalvį LEDą ir jei per staigiai pradedi važiuoti ar stabdai- spidometras nušvinta grėsminga raudona spalva. 🙂 Va jums ir super-duper-high-tech tiuningas.

Programos source code: 20071102.zip.

Plokštėm PCB nedarytas. Mano printeris sugedo ir plokštelės nėra sudėtingos. Aš išgraviravau takelius su raižikliu. Plonas profesionalus raižiklis leido padaryti plokštė ir QFN (bekojam) korpusui.

ATMEGA USB 009 (1-wire, i-Button)

Tikriausiai pagalvosite, kad susipainiojau ir užmiršau 008 straipsniuką? Deja, 008 dar nesigavo ir neveikia…

Darbe stačiau elektroninę spyną su Dallas (Maxim) i-Button mikroschemom. Tiksliau “tabletėm”, “batareikom”. Mūsuose tom spynom naudojamos DS1990A mikroschemos. Viena mikroschema kainuoja apie 10Lt. Originali spyna buvo su PIC procesorium, su pačiu mažiausiu, ir 24C16 atmintim raktu atsiminimams. Aš nuskaičiau minėtos mikroschemos turinį ir radau tuos pačius skaičiukus kurie išgraviruoti ant “tablečių”. Pasiskaičiau mikroschemos aprašymą ir pamačiau, kad tai nėra koks tai stebūklingas “high security” daikčiukas. Paprasčiausias serial ROM su CRC ir vienintelis navarotas, kad maitinamas per tą patį duomenų laidą.

Nutariau paeksperimentuoti su esamom tabletėm. Pagrindinė problema, kad internete pilna visokių source susijusiu su 1-wire protokolu, bet dauguma jų naudoja komercinį AVR kompiliatorių kuris turi integruota include failą. O aš norėjau rašyti ant GNU versijos, todėl teko ilgokai paieškoti veikiančio varianto.

Tabletė jungiama prie mano plokštės panaudojant “firmware” jumperį. Tik reikia prikabinti 4.7K pull-up rezistorių is viskas bus gerai (yra programos modifikacija kuri veikia be rezistoriaus). Visa informacija atvaizduojama per LCD moduliuką.

i-button avr

Ekrane, viršutinėje eilutėje rodoma būklė (status): OPEN, SHORT, OK ir ERROR. Atitinkamai: niekas neprijungta, trumpas jungimas, viskas gerai ir klaida. SHORT būklė leidžia naudoti tuos pačius du laidus skambučiui. Dešinėje viršuje, CRC, tai kontrolinė suma. Programos archyve yra programa kuri perskaičiuoja kontrolinę sumą. Apačioje, kairėje- device familly id, mikroschemos grupės numeris. Ilgiausias skaičius- 48 bitų mikroschemos serijinis numeris. Jis taip pat išgraviruotas ant mikroschemos.

i-button avr

Programos išeities tekstai (source code): 20071027.zip

Programoje yra daugiau visokiausių funkcijų, aš panaudojau minimalistinį variantą kuris man veikia.

Dabar jau galima susikontruoti savo kodinę spyną, tik kad ID tabletės nėra saugūs prietaisai. Manau koks nors gudročius gali sukonstruoti mikroschemos emuliatorių ir nužiūrėjęs skaičiukus pagaminti rakto dublikatą. Ir dėl to Dallas’as nekaltas, jis gi rašo:

The DS1990A Serial Number iButton is a rugged data carrier that serves as an electronic registration number for automatic identification.
…allowing the DS1990A to be used easily by human operators. Accessories permit the DS1990A iButton to be mounted on almost any object, including containers, pallets, and bags.

Apie spynas, kaip matot, čia niekur neužsimenama. Manau čia Lietuvaičiai gudrauja ir stumia niekalūs mūsų tautai. Rimtom spynom reikėtų naudoti DS1963S mikroschemutę…

ATMEGA USB 007 (USB)

Jau rašiau, kad man nepavyko perkompiliuoti valdymo programą kad ji teisingai veiktų, nors prie originalaus archyvo pridėtas EXE failas buvo visai veikiantis. Matyt tai mano turimo kompiliatoriaus problemos- gal jis blogai nulaužtas ar jo versija kažkokia neteisinga. Aš naudojau Borlan Delphi Professional, Second Edition v7.2, Created 2006 by Lite Application.

Kiek paeksperimentavau ir radau metodą kaip apeiti šį bugą, bet tai tiesiog kažkoks nesusipratimas. Užtenka pridėti vieną eilutę kurioje atliekami nereikalingi veiksmai su nenaudojamais kintamaisiais ir viskas pradeda veikti. Deja, aš nesu šios programavimo kalbos specialistas. Jei rimtai, aš pirmą kartą matau šią programavimo sistemą. Jei kas nors paanalizuotu tekstus ir pakomentuotu, būtų visai fainai. Pakeitimai tekste aprašyti “Readme.txt” faile.

Kiek pamodifikuota USB-LCD valdymo programa ir jos išeities tekstai (source code) skirti Borland Delfi 7. Veikia su mano WinXP Pro SP2, and P4HT kompiuterio: 20071007.zip.

ATMEGA USB 006 (USB+LCD)

Laikas jungti prie USB. Po keletos nesėkmingų bandymų pagaliau susiradau projektėlį kuris veikia. Gal ir kiti projektai veiktų atitinkamai juos pritaikius. Mano “testinė” plokštė yra ganėtinai universali. Kai ją projektavau, aš atsižvelgiau į keletą svetimų projektų ir pajungiau kontrolerio kojeles taip, kad su minimaliai pokyčiais būtų galima pritaikyti svetimo projekto kodą.

AVR USB LCD

Taigis, USB- universal serial bus. Tai ne tik paprastas nuoseklus interfeisas kaip RS232 ar panašūs, bet ir įvairaus lygio protokolų visuma. Dėl to ir vadinasi “universalus”. Dėl šio universalumo, USB nėra labai lengva pritaikyti. USB bibliotekos panaudotos iš http://libusb-win32.sourceforge.net projekto. Šio projekto teisės yra GPL/LGPL. Dar vienas momentas dėl USB- tai pačio įrenginio VIN (vendor identification number)/PIN (poduct identification number). Šie skaičiukai dar vadinami VID/PID pora. Šie skaičiukai nėra laisvai pasirenkami (kad nekiltu chaosas). Pats USB firmware yra panaudotas iš http://www.obdev.at/products/avrusb/index.html.

Kad pratestuoti šį projektą reikia mano testinės plokštelės ir LCD modulio.

Programos archyve yra ir mažytė programa pratestuoti kaip kas veikia. Valdančios programos “source” aš neįdėjau į archyvą, nes kažkodėl mano perkompiliuota programos versija veikė nekorektiškai palyginus su originaliu EXE failu.

20070922.zip.

ATMEGA USB 005 (I2C)

Yra labai daug mikroschemų kurios valdomos per 2 laidų arba I2C grandinę (bussą). I2C tai Philips kūdikis, bet jis naudojamas ir daugybės kitų gamintojų. Pavyzdžiui prie I2C magistralės pajungti beveik visi televizoriaus mazgai. Daugybė navarotnų muzikinių centrų, kompiuterinių kolonėlių taip pat valdomi per I2C (ar panašų) interfeisą. Prie I2C galima jungti nuo paprasčiausio mygtuko ar DTMF imtuvo iki TV tiunerio ar Dolby Digital audio procesoriaus. Pats ATMEL’IS savo ATMEGA procesoriuose turi paruoštas galimybes naudoti I2C interfeisą. Tai taip vadinamas TWI. Mano PCB plokštėje šio protokolo kontaktai stovi prie keturių šviesos diodų, su ~10K pull-up rezistoriais.

FM75

Prie šios vietos mes jungsime I2C temperatūros sensorių. Panaudosim patį populiariausią LM75 arba jo analogą ar kloną. Aš panaudojau mažą PCB plokštelę iš seno plazminio teliko. Ten ji matavo matricos temperatūrą. Ant plokštelės prilituotas FM75 čipukas, keli rezistoriai ir kondikai. FM75 tai Fairchaild gamybos LM75 klonas su išplėstu temperatūros matavimo tikslumu. Originalus LM75 rodos naudoja tik 8 bitus, o štai FM75 turi ir netik pilnai suderinamą su LM75 režimą bet ir du išplėstus režimus. Mano programulka perprogramuoją čipuką į 12 bitų rezoliuciją. Pačioje programoje temperatūros konvertavimas perskaičiuojamas netiksliai- nenorėjau (ir nemokėjau) komplikuoti programos su tikslia matematika. Todėl skaičiukai nėra tikslūs. Rekomenduoju perskaityti LM75 ir FM75 datasheetus. Ir pagalvoti kaip skaičiuoti 1/16 laipsnio ir kai parodyti šias reikšmes dešimtainėje sistemoje. Gal dar pasiskaityti kiek AD7416 mikroschemos aprašymą. Šias mikroschemas kažkada siuntinėjo Analog Devices kaip pavyzdžius.

FM75 ATMEGA16

Programoje panaudotas modulis i2c.c iš interneto. Čia pasinaudojau USB Tenki projektu. Ten buvo labai paprasta ištraukti visas I2C procedūras į nepriklausomą programą. Iš ten pat paimti ir lm75.c failiukai. LCD modulio paprogramės panaudotos iš ankstesnio posto. Jungiant savo LM75 mikroschemą prie I2C protokolo nereikia užmiršti pasitikrinti įrenginio adresą. Programos tekstuose aš pažymėjau “pasitikrinti” adreso vietas. Adresas susideda iš dviejų skaičių- bazinio adreso kurį nustatė gamintojas ir kelių bitų, kuriuos gali pakeisti vartotojas paprasčiausiai atitinkamai pajungdamas mikroschemos kojytes. Taip galima pajungti kelias vienodas mikroschemas ant to pačio laido ir matuoti temperatūrą keliose vietose.

Programa: 20070919.zip.

Su šiais geležėliais jau galima konstruoti kokį termostatą. Tik nepulkite programuoti ATMEGA termostato darbui, nes LM75/FM75 mikroschemos jau turi savyje sukonstruotą termostatą. Užtenka teisingai užprogramuoti mikroschemą ir jos išėjimo kojytė gali valdyti šildytuvą ar šaldytuvą. Lai ATMEGA atlieka tik kontrolės ir indikacijos veiksmus.

ATMEGA USB 004 (ADC)

ATMEGA16 turi savyje ADC (analog digital converter, analoginio signalo keitiklį į skaitmeninį). Su šiuo prietaisu galima išmatuoti kokio nors daviklio ar maitinimo šaltinio įtampą. ATMEGA16 turi 8 kojeles prie kurių galima prijungti skirtingus analoginius signalūs. Pats keitiklis nėra labai greitas, bet pilnai panaudojamas įvairiuose prietaisuose. Labai rekomenduoju perskaityti ATMEGOS datasheetą, nes ADC keitiklis turi daugybę įvairiausių nustatymo parametrų. Kaip pasirinkit atraminę įtampą- išorinis šaltinis, Vcc ar integruotas į kontrolerį atraminės įtampos šaltinis. Taip pat galima pasirinkti įvairiausius stiprinimo koeficientus ar net deferencialinis įėjimas.

Programa labai paprasta. Ji tiktai nuskaito ADC parodymus ir parodo rezultatą LCD modulio ekrane. Pakeitus kelias užkomentuotas eilutes galima nuskaiyti visų ADC kanalų reikšmes.

ATMEGA ADC

“Stepas” tai nieko nereiškiantis žodelis kiles nuo angliško žodelio “step”. Ten idikuojama paprasčiausio vidinio ciklo kintamojo reikšmė. Kiek pakeitus programos kodą ten indikuojasi ADC kanalo numeris. Ir beto, besikaitaliojantys skaičiukai dažnai parodo, kad programa dar veikia. Tai svarbu, kadangi LCD modulis gali rodyti kokius nors senus parodymus or procesorius buti smigęs. 🙂

Beja, kad apsaugoti programą nuo užstrigimo verta susidomėti “watchdog” taimerio panaudojimu. Šioje programoje jis nepanaudotas.

Programa: 20070918.zip.