Da se malo priključim temi, mada nisam stigao sve da pročitam, ali koliko vidim, glavne rasprave se vrte oko tastature i pcb.
Oko pcb:
Pcb je vrlo kompleksna stvar jer je po nestanku 3D cevne tehnologije, zbog kompaktnosti, postalo potrebno praviti pcb.
Pnekad pcb rešava samo tokove signala i imunost na smetnje, a ponekad mora rešavati i probleme termike sklopa i (ili) mehaničke osobine sklopa.
Evo jednog primera nekog A/D konvertora iz 2008. koji "čita" veoma preciznu load ćeliju, sa remote-sense razvodom do nje (6 žica) i nažalost DC ekscitacijom po zahtevu kupca. Pcb je četvoroslojna.
DC ekscitacija load ćelije nudi velike probleme sa termonaponima na spojevima, jer termonaponi učestvuju u korisnom signalu (koji je svega 10mV sa full load) sa značajnim procentom učešća.
U cilju umanjenja dejstva termonapona, bilo je nužno izbalansirati temperature na konektoru na koji se priključuje load ćelija. Tokom warm up režima je važno da razlike temperatura na krajevima konektora za load ćeliju budu minimalne.
To je urađeno tako što je na analognim stabilizatorima (koji su tu potrebni) precizno izbalansirana discipacija (simetrisanjem potrošnje), onda su stabilizatori smešteni simetrično u odnosu na osu konentora, potom se toplota preko mnogobrojnih via distribuira na unutrašnje rashladne poligone koji su termički blisko povezani sa trećim slojem koji je globalni GND poligon.
Iskorišćen je što pravilniji i što simetričniji toplotni fluks ka konektoru koji je sporan. Uz to se moralo voditi računa naravno i o minimalnom šumu, dobrim decouplings itd...
Naravoučenije prče je da se pomoću pcb mogu raditi razne korisne stvari (a i štetne svakako) i da je to mala nauka za sebe, no iskustvo, stečeno na svojim i tuđim greškama, biva obogaćeno ka unapređenju u toj sferi i vreme je neohodan faktor.
Evo kako sam to svojevremeno napravio, a možda vam ovaj primer može biti koristan:
AD1.rar (Size: 518,54 KB / Downloads: 13)
---------------------------------------------------------------
Što se tiče tastature:
Pitanja koja sebi morate postaviti su:
-koliko je važno koristiti tastaturu za vreme automatskog rada neke mašine i da li je neophodno i da li ima smisla menjati parametre tokom automatskog rada?,
-ako je neophodno da bude aktivna za vreme automatskog rada, da li je to samo jedan taster koji uslovljava prekid automatskog rada ili je to šire od toga,
Ukoliko je neophodno u nekim brzim procesima poput nečeg što jako okupira MCU, kao na primer CNC upravljanje nekim motorima, unositi parametre za vreme automatskog rada (što je prilično redak slučaj), onda je možda bolje napraviti posvećenu tastaturu koja ima hardverske filtre (RC članovi i diode za povećanje margine šuma) i to sve preko šmit triger buffera odvestri ka HW interruptu MCU. Pri tom dekodovanje tastera ne sme okupirati suviše vremena u interrupt rutini da ne bi unelo jitter u impulse motora. Dakle mora se dekoder optimalno i sa malo instrukcija napisati.
Ukoliko nema potrebe za intervencijom pomoću tastature, za vreme automatskog motanja te motalice, onda je neophodan samo jedan sve-stop taster, koji čak ne mora biti na tastaturi. U tom slučaju se parametri podešavaju za vreme stajanja motora motalice, a ručni rad u smislu sporog pokretanja motora tasterima, radi sa relativno dugačkim impulsima u koje će bez ptoblema stati kb_scan. Onda nema razloga trošiti resurse MCU na neke posebne zahteve ka tastaturi.
Kod nekih mojih projekata za skeniranje tastature koristim upravo gornji nibl porta koji drajvujem data za LCD (uštedi se 4 pina) i tu imam jednu interesantnu matricu za 6 mogućih tastera (što je i više nego dovoljno za 4 kursora, eskejp i enter).
Ovako:
KB_LCD.pdf (Size: 5,67 KB / Downloads: 28)
Sekvenca skeniranja se inače izvodi dok nema transfera podataka ka LCD. Pošto je LCD inače lečujućeg tipa (čuva postojeći tekst do unosa nove komande) onda se podaci njemu šalju dok nema skena tastature, i obrnuto.
Dakle, kada je LCD disejblovan, onda možemo pomoću asm direktiva TRISX=0bxxxxxxxx; a koja inače traje čitavu jednu instrukciju :-) rekonfigurisati pinove po svom nahođenju u cilju rada sa tastaturom.
Sekvenca za ovu moju tastaturu izgleda ovako:
-proglasiti D7 ulazom, a D6, D5, D4 izlazima, potom nekom petljicom setovati 1 na ta tri pina jedan po jedan, po exor principu, za to vreme pratiti stanje ulaza na D7 pinu i dekodovati prva tri tastera (naravno debouncing se vrši višestrukim ponavljanjem tog testa gde se zahteva verovatnoća iznad 95% kao validno stanje).
- ostala tri tastera se obrađuju tako što se D7 proglasi izlazom i digne na 1, a D6, D5 i D4 kao ulazi, i na njima očita stanje.
- po završetku skena se D7-D4 rekonfigurišu kao izlazi da bi mogli dalje da rade sa displejem.
Kada ne treba neka posebno brza tastatura (sken reda 5-6mS) onda se ovako uštede 4 pina, a ima se 6 tastera, pri čemu se sken može napraviti da vidi samo jedan taster ili više njih odjednom, što je posebno lako sa donja tri.
--------------------------------------------------------------------------------------------
Ponekad kad mi treba brza tastatura, a imam manjak pinova na MCU, upotrebim (odličan) SPI ekspander MCP23S17 i jedan njegov port sa hardverskim RC filtrom na tasterima. Namestim generisanje interrupt na MCP i odvedem na posvećen pin na MCU. Onda sken može potrajati neku desetinu uS zavisno od kloka na SPI. Tada tastatura bud eveoma "skočna" na stimulaciju.
Naravno drugi port ekspandera upotrebim po svojoj želji i preostale pinove od porta na kom visi tastatura.
Eto to su neki od primera mogućih korišćenja.
Pozdrav