Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino - tutorijali, pitanja, primjeri i projekti
Makso,

Ljudima će definitivno najlakše biti da ti daju neki predlog ako opišeš neki konkretan ili maksimalno sličan proces koji taj MLC/PLC treba da vodi.

Onaj moj "Mini" u osnovnoj konfiguraciji, koga dosta puta spomenusmo, prvenstveno je bio namenjen za brizgaljke, ali tutnuo sam ga u dosta veoma različitih mašina, tj. svuda onde gde je moglo da zadovolji sledeće:

- max. 24 IN/OUT,
- 1 USART,
- 1 SPI ili I2C uz gubitak jednog IN ili OUT u slučaju SPI,
- 2 pwm uz gubitak 2 IO pina,
- LCD 2x16 sa matricom za max. 6 tastera na data od lcd (obično na B portu kod pic, eventualno na D portu),
- 1 ili više ADC uz gubitak istog broja IO,
- ekspanderska I2C ili SPI dodatna karta sa 4 8 bit IO porta, uz gubitak 2 IO pina na osnovnom miniju...

Bukvalno je iskorišćen i poslednji pin na PIC18F4620 (40MHz, 4K RAM, 1 KEEPROM sa 1 milion upisa, linearno adresiranje FLASH).

Kada mi je u nekim situacijama trebalo čitanje enkodera, generisanje impulsa za servo motore ili slično, onda je to povlačilo oslobađanje B porta sa hw. ISR i premestanje displeja na D port, i tako dalje i tako dalje.

Ponekad se za ređe i specifične potrebe ne isplati projektovati sasvim novi PLC već se doda mala ekspanziona ili specijalizovana kartica na IDC konektore koje sam za takve slučajeve predvideo na "miniju".

Taj malecki mini je sazrevao polako, uslovljeno modifikacijama u vremenu, dok nije dobio dosta stabilne pozicije korišćenja određenih pinova i portova za baš konkretne namene.
Tako sam maksimalno iskoristio resurse samog MCU a da ne pravim stalno novu pcb.

Kao što sam ti već opisao, imaš dve osnovne putanje:

1) Za takve stvari treba ili dosta vremena ako koristiš mali MCU.
Ili odmah pređeš na veći MCU koji ima gomilčinu pinova i modula, pa između njega i periferija napraviš neku vrstu eksperimentalne pcb koju možeš da "prežicuješ" na konkretne potrebe ili konektor-most. Nešto slično smo Mlađa i ja svojevremeno radili sa ARM7, gde smo imali samo jednu malu pcb koju smo modifikovali prema potrebama, i zvali je razvodnik. Ta pcb je imala uvek isto pozicionirane konektore ka MCU, a različito su se rutovali vodovi prema konektorima periferija Ona je služila za usmeravanje pinova MCU ka konkretnim periferijama za dati slučaj primene. To je slučaj gde se dosta "tvrdo" drže stvari pod kontrolom u jednom MCU. Za jednu mašinu pišeš jedan sw.

2) Drugi slučaj je uspostavljanje master mašine, sa nekom čvrstom komunikacijom na koju se mogu kačiti razne periferije sa takvom istom komunikacijom (na primer MODBUS rtu ili ASCII). Tu i same periferije imaju svoje MCU (naravno neke jevtinije), koji vise na glavnom BUS i slušaju master a i raportiraju mu.
Taj slučaj zahteva pisanje više sw i tu je najkompleksniji dogovor sa samim sobom i dobro predviđanje mogućih potreba, što pak opet zahteva iskustvo, jako čvrstu obradu err oko kidanja ili greške u komunikaciji, jako tvrdo rešene hw resete na sve i svašta i tako to. Gomila sw,duačko vreme rezvoja prvi put i jako puno gadnog testiranja.
Kada jednom uspostaviš stabilnu platforu onda se potom ta muka isplati u budućnosti...

------------------------
ADC mi nije toliko često bio potreban za te moje svrhe, a kada mi je trebao onda sam obično stavljao eksterne i kačio ih na već postojeći konektor za I2C ili SPI, koji sam ostavio za te potrebe i za potrebe ekspandera.

Iz jednog malog MCU ne možeš previše izvući ukoliko ti treba dosta pinova. Na većini njih interne hw module ne možeš previše slobodno distribuirati na bilo koji pin.

Dakle, najvažnije je da se dobro dogovoriš sam sa sobom, oko konkretne namene, zacrtaš neki plan koji zadovoljava to to ti treba.

Anketa koju sam sebi postavljaš glasi otprilike ovako:

- sistemski napon napajanja mašine?
Na koji ćeš okačiti svoj PLC (najčešće je korišćeno 24VDC (18-32V) ali ima i izuzetaka ponekad).

- napon napajanja izlaznih organa mašine i najveća struja koju troše?
(12VDC ,24VDC, 48VDC, 190VDC, 24VAC, 48VAC, 60VAC, 115VAC, 230VAC, što su načešće zastupljeni standardi, od kojih je skoro 95% zastupljen 24VDC, ali ima izuzetaka posebno kod starijih mašina).

- potreba za ADC, koja rezolucija i koja brzina semplovanja i obrade, tj. šta im je konkretna namena?
To ti odmah uvodi potrebu za galvanskim rastavljanjem toga jer nerastavljeno je u industriji dobro samo za merenje baterija na stolu. Drugo, ako mašine nemaju: potenciometarske merne letve, davače temperature, pritiska, sile i slično, onda ti ADC ne treba uopšte i ne isplati se praviti front end.

- potreba za DAC, koja brzina odziva i koja rezolucija?
Sa pwm možeš imati solidan DAC, ali je sporiji od pravog DAC i zahteva filter iza i to sve složeniji što ti veća brzina odziva treba. Kada možeš direktno upravljati neke organe pwm-om (npr. proporcionalne hidr. ventile ili neke DC motore, eventualno manje grejače), onda to i uradi i samo rastavi brzim optokaplerom (sa obavezno veoma simetričnim tr i tf inače ćeš imati modifikovan sam pwm).

- koliko izvršnih organa imaš i kog su tipa (PNP ili NPN)?
Tu napraviš specifikaciju out pinova koje konzumiraš, naravno i sam hw koji će podržati te struje, napone i polaritet delovanja...

- koliko inputa imaš, kog su naponskog nivoa, kog tipa (NPN, ili PNP) i koliko razloga za filtriranjem imaš (bučno okruženje i sl.)?
Tu opet napraviši specifikaciju input pinova. Hardversko filtriranje vrhunskog kvaliteta se dobija sa jevtinim RC i TVS, softversko ti oduzima MCU vreme i resurse. Ako je veliki broj inputa onda imaš kosku sa tim kada pišeš sw filtere.

-konačno sagledaš i najbrže moguće događaje koje možeš očekivati na mašini i proveriš da li tvoj MCU te stvari može da stigne da obradi u ISR... Ako treba napraviš neki prototipčić i to realno proveriš. Tu već nema mesta za sw filter na ISR triger, jer brzina koja ti treba je kontradiktoran zahtev sa filtrom. Tu se radi tvrd hw filter i pažljivo razvođenje signala.
-------------------------------------------------------------------
Kada sve to uradiš i staviš na papir, uz nekoliko iteracija dođeš do potrebne veličine (ili mogućnosti) tvog MCU i sad već možeš da počneš da planiraš konačni oblik hardwera.

Bez neke takve ili slične forme planiranja nikad nećeš ni početi jer dogovor samog sa sobom je prvi najteži korak.

Pozz
Reply


Messages In This Thread
RE: Arduino - tutorijali, pitanja, primjeri i projekti - by Macola - 07-23-2017, 05:50 PM

Forum Jump:


Users browsing this thread: 22 Guest(s)