Posts: 1.517
Threads: 19
Joined: Apr 2013
Reputation:
211
Ovaj FM je 8 bjata, ako sam ja dobro protumačio?
Misliš da se ukupan broj impulsa podijeli na 4 i onda se upišu u 4 adrese memorije, a onda čitanje sve 4 adrese i sabiranje tih brojeva da bi se dobio onaj isti broj impulsa?
Posts: 8.723
Threads: 138
Joined: Apr 2013
Reputation:
3.624
Pomesao si malo stvari.
1 bit = ili 0 ili 1
1 bajt = 8 bitova
1 kolobajt = 1024 bajtova
1 kilobit = 1024 bitova ili 128 bajtova
Tako se izrazava velicina neke memorije.
Konkretno za memoriju koju si naveo FM24C256, ona ima 256 kilobitova (32 kilobajta), to je ihaaaahhaaaaa memorije ...
Proizvodjaci malo tu znaju pocetnike da zbune, pisu u razlicitim jedinicama ili razlicitim "organizacijama" a to rade zato sto to mogu da koriste i 8bitni MCU ili 32bitni MCU pa je zgodnije kada je ovako ili onako postavljena organizacija, sve se svodi na isto samo je terminologija drugacija.
---
Kada budes radio program za taj enkoder, moraces da koristis tipove variabli LONG, ne INT. Sad zavisi od platforme MCU razlicito deklarisu "duzinu" promlenljivih, za primer da kazem da je LONG sastavljen od 4 bajtova, INT je samo od 1 bajta.
To baratanje/konverzija da napravis LONG od 4 bajtova ili obrnuto se prosto radi sa "left shift" ili preko "struct" (strukture). To su osnovne neke operacije koje su proste i zatrebaju cesto, nemoj to da te brine.
Posts: 8.723
Threads: 138
Joined: Apr 2013
Reputation:
3.624
Najmanja jedinica informacije koju mozes u jednom trenutku da upises u EEPROM ili FRAM je 8 bitova ili 1 bajt.
Ne moze da se upise npr "samo 2 bita", moras svih 8 bitova da upises.
FLASH i SD kartice imaju malo drugaciju organizaciju memorije, tu npr ne mozes da upises nista manje od 1024 bajtova, bez obzira sto ti mozda treba samo 1 bajt, moras da upises u jednom prolazu sve i to cesto komplikuje dosta stvari jer moras prvo da iscitas sve ono predhodno pa da dodas tu tvoju izmenu pa onda sve ponovo da upises.
Posts: 190
Threads: 2
Joined: Mar 2016
Reputation:
82
Ako operater moze rucno na kurblu da pomera taj mehanizam dok je masina iskljucena onda ovaj koncept sa inkrementalnim enkoderom nije dobar, ako je po dizajnu mehanike taj mehanizam blokiran dok je masina iskljucena onda je ok.
Posts: 1.517
Threads: 19
Joined: Apr 2013
Reputation:
211
Ili bih trebao koristiti unsigned long, jer neću ići ispod 0.
Znači od 0 pa do nekog broja, to opet zavisi kakav enkoder budem koristio, ali moglo bi se to i u kodu uraditi, napraviti neku konverziju impulsa u neku drugu vrijednost i slično.
Znači da bih onda mogao čitav broj upisati u jednu adresu memorije sa tim FM čipom, da ga ne moram upisivati u više adresa?
Posts: 1.517
Threads: 19
Joined: Apr 2013
Reputation:
211
07-30-2017, 05:19 PM
(This post was last modified: 07-30-2017, 05:20 PM by Makso.)
@Vlajko
Hidraulično je pomjeranje, tako da ovo sa enkoderom ide ladno.
Posts: 190
Threads: 2
Joined: Mar 2016
Reputation:
82
(07-30-2017, 05:19 PM)Makso Wrote: @Vlajko
Hidraulično je pomjeranje, tako da ovo sa enkoderom ide ladno.
Jeste : dok klip malko ne pišne ulje, pa pobegne
Baš pre neki dan sam ležao pod hidrauličnom mašinom koja je izgubila home poziciju dok je bila isključena, a elektronika ne zna šta da radi, nedefinisano joj je stanje.
Razmisli o proceduri nulovanja tj kalibracije, da bude jednostavno za back up, ako se takva situacija desi.
Posts: 8.723
Threads: 138
Joined: Apr 2013
Reputation:
3.624
07-30-2017, 05:34 PM
(This post was last modified: 07-30-2017, 05:55 PM by mikikg.)
(07-30-2017, 05:18 PM)Makso Wrote: Ili bih trebao koristiti unsigned long, jer neću ići ispod 0.
Znači od 0 pa do nekog broja, to opet zavisi kakav enkoder budem koristio, ali moglo bi se to i u kodu uraditi, napraviti neku konverziju impulsa u neku drugu vrijednost i slično.
Znači da bih onda mogao čitav broj upisati u jednu adresu memorije sa tim FM čipom, da ga ne moram upisivati u više adresa?
Moras da upisujes u vise adresa, jedna adresa moze da pamti samo 1 bajt ili raspon brojeva 0-255, sa 2 bajta imas to sve na kvadrat tj raspon 0 - 65535, sa 4 bajta 0 - 4294967295 (4.3 milijarde, moja greska u predhodnim postovima, milijarde su u pitanju)
Posts: 1.517
Threads: 19
Joined: Apr 2013
Reputation:
211
@Vlajko
To ću svakako dodati, da se može resetovati na 0/početnu poziciju.
Posts: 624
Threads: 2
Joined: Aug 2014
Reputation:
193
Ili da se koristi apsolutni enkoder, pa se uvek ima informacija gde se nalazi pokretni deo, bez obzira sta je elektronika zapamtila, ili se resetovala.
Posts: 8.723
Threads: 138
Joined: Apr 2013
Reputation:
3.624
07-30-2017, 06:33 PM
(This post was last modified: 07-30-2017, 06:37 PM by mikikg.)
Apsolutni enkoderi su dosta skuplji, bar 5x skuplji od inkrementalnih. Prosecno dobar inkrementalni enkoder kosta oko 50E pa navise, rezolucija skoro da ne utice na cenu.
Apsolutni takodje ima nezgodnu osobinu sto moze da vrati poziciju samo u okviru jednog kruga rotacije, ako treba vise krugova opet mora da se nesto pamti i broji.
Posts: 8.723
Threads: 138
Joined: Apr 2013
Reputation:
3.624
Maksa nam nije rekao vrlo bitnu informaciju a to je da li se menja smer na tom mestu gde treba enkoder ili neki drugi davac da se postavi.
Posts: 1.517
Threads: 19
Joined: Apr 2013
Reputation:
211
To sam već bio napisao, enkoder treba da mjeri u oba smijera.
Posts: 1.244
Threads: 10
Joined: Apr 2015
Reputation:
509
Makso,
ti licno moras da kazes samom sebi sledece:
brzina kretanja je 1m/s. Max duzina za secenje je 10m. Max. dopustena greska je +/- 1cm/mm. Reduktor ili gde vec postavljas enkoder moze da mi na enkoreru da npr. 360ppr. To za mene znaci da je 1impuls = 1mm. Ako je to prihvatljivo, kupujes enkoder sa tom rezolucijom, a ako ne, onda sa vecom.
Vecina industrijskih enkodera radi na 24V. Tebi bi najvise odgovarao sa NPN izlazima, zato jer direktno mozes da ga spregnes sa 5V arduino. Ako ides na PNP ili push-pull onda moras da pravih prilagodne stepene. Sam enkoder se povezuje na brojacke ulaze na MCU.
Sto se memorije tice, mozes da koristis FRAM, kao sto je Miki predlozio ili neki battery back-up ram. Pitanje je da li mcu gubi napajanje ili ne. Nista nisi napisao u vezi projekta. Sve do sada je samo cisto nagadjanje sta bi bilo, kad bi bilo.
Sto se tice kolicine memorije za cuvanje, to je veoma diskutabilno. Ti inace impulse moras da pretvaras u jedinicu duzine, tj. metre. Ako je tebi max duzina 10m, a dozvoljena greska je 1cm, onda mozes da koristis uint16 kao podatak, jer deljenjem sa 10 ti dobijas float ili da uvek ides na float, pa da cuvas 4 bajta u formatu kako se vec generise float. Veliko pitanje za tebe je sta znaci cuvanje prethodnog stanja? Da li to znaci do sledeceg secenja ili nesto drugo, tj. radio sam danas, pa bih zeleo da nastavim posle 10 dana. Ako ti je vreme cuvanja kratko, onda mozes da koristis i superkondenzator za cuvanje promenljivh (tako npr. radi Siemens kod svojih S7-200 plc-ova za definisanje retain promenljivih i vreme cuvanja zavisi bukvalno od velicine PLC-a. Max je 210 dana, ako se dobro secam).
Da bi mogao da dobijes konkretan i precizan (inzenjerski) odgovor, tvoje pitanje mora da bude precizno i koncizno postavljeno. Isto je kao da te pitam, da li bi mozda moagao da mi napravis jedno pojacalo!!! Razmisli dobro o ovome sto sam napisao, posto je to iz najbolje mouce namere, kako bi svi ucesnici foruma mogli maksimalno moguce da ti pomognu. Ovako svi mozemo da bacamo ideje u nedogled i da trosimo svoje vreme, a mozda smo svi na pogresnom putu.
Posts: 1.244
Threads: 10
Joined: Apr 2015
Reputation:
509
Inace, mislim da je apsolutni enkoder za ovu aplikaciju,cisto bacanje para. Sto se samog inkrementalnog ekodera tice, cene variraju od proizvodjaca do proizvodjaca, a i od samog kvaliteta i robusnosti samog enkodera.
Posts: 1.244
Threads: 10
Joined: Apr 2015
Reputation:
509
(07-30-2017, 03:34 PM)Makso Wrote: @mikikg
Apsolutno ništa, nekako sam se trenutno bazirao na Arduino, mada je to isto i kao STM32,
Ovo nije ni priblizno isto. Ta dva procesora su nebo i zemlja.
Posts: 1.966
Threads: 29
Joined: Jan 2015
Reputation:
669
07-30-2017, 09:15 PM
(This post was last modified: 07-30-2017, 09:18 PM by Želja.)
Makso,
Bez uvrede, ali ti ne vladaš osnovama rada sa MCU.
Niko od članova koji to manje ili bolje umeju, nije naučio preko noći ...
Ja zaista ne vidim način kako ćeš se ti izboriti sa projektima koje želiš da uradiš a sve na nivou
Arduino biblioteka, jer se samo u tome delimično snalaziš.
Navešću ti primer. Imaš recimo dva-tri brza ulaznih signala, koje NE smeš propustiti. (napr. enkoder itd..)
Sve to može biti uspešno procesirano samo uz upotrebu interapta, ili samih hardverskih resursa pojedinih MCU.
Kad smo kod HW resursa, eto - postoje MCU sa HW enkoderskim modulom koje radi SVE na HW nivou, odnosno
što ćeš ti morati na SW nivou. E to je samo jedan od razloga zašto sam ti više puta savetovao da je bolje ići na
neki odredjeni Atmel MCU nego na Arduino.
Kada se upotrebljavaju interapti, tada Arduino lib i (ostali simple kompajleri) umeju napraviti podosta problema.
Dok si recimo u petlji za pauzu , ti si za to vreme propustio bitnu promenu stanja na nekom ulaznom pinu koji je trebao da
izazove podizanje interapt zastavice (flag) koju ćeš obraditi u ISR rutini.
Moj ti je savet da uzmeš razvojni sistem od MikroE za odredjeni MCU, u tvom slučaju ATMEL za C jezik.
Odmah da raščistim nešto oko toga sa iskusnijim članovima.
MikroE nisu najbolji kompajleri, i svi to znamo - tako da to nije razlog mog predloga.
Predlažem MikroE upravo zbog dobrih razvojnim ploča (hardvera)
a najjači adut je gomila napisanih primera za sve moguće periferije, jer je upravo to ono
što je početniku najteže ! Tako da je lako krenuti sa MikroE platformom.
Kada savladaš sve ovo. onda predji na ozbiljnije C kompajlere i sopstveni hardver.
Drugačije ćeš izmoriti i sebe i druge i samim tim povećavati šansu da odustaneš ili da zauvek ostaneš Arduno
i namučiš se baš žestoko oko nekih stvari za koje ne treba puno vremena da se urade.
***
Evo, rizikovao sam da svojim stavom ispadenem pomalo grub, iako mi to uopšte nije namera.
Veliki pozdrav svim kolegama.
Želja
Posts: 1.517
Threads: 19
Joined: Apr 2013
Reputation:
211
Tek sutra ću znati sve detalje, koliko se puta okrene sajla za čitav hod noža, i ostale potrebne podatke.
Ja sam prvobitno imao ideju da uradim sa enkoderom, on mi je nekako najprecizniji.
A memorija, ja ne mogu znati kad će se mašina ponovo biti pokrenuta, možda će odma drugi dan možda će pauzirati 5-10 dana, to zavisi od posla.
Posts: 1.244
Threads: 10
Joined: Apr 2015
Reputation:
509
07-30-2017, 09:30 PM
(This post was last modified: 07-30-2017, 09:46 PM by vojinilic.)
Zeljo,
nisi ni malo grub, odmah da se pridruzim tvojim stavovima i misljenju. Makso, ovo sto ti je Zelja napisao, je maksimalno korektno i shvati ovo kao najdobronamerniji savet starijeg, iskusnijeg kolege. Ako je tvoj zivotni cilj, robovanje Arduino bibliotekama, onda je najbolje da krenes iskljucivo u jednostavne programe, tipa LED blink ili slicno. Za sve ostalo, tei treba manipulaija hardverom, tj. periferijama mikrokontrolerai i izuzetno dobro razumevanje sistema prekida, tj. interapta. Bez toga, bolje batali taj arduino ako ne zelis da udjes dublje.
Posts: 1.244
Threads: 10
Joined: Apr 2015
Reputation:
509
(07-30-2017, 09:25 PM)Makso Wrote: Tek sutra ću znati sve detalje, koliko se puta okrene sajla za čitav hod noža, i ostale potrebne podatke.
Ja sam prvobitno imao ideju da uradim sa enkoderom, on mi je nekako najprecizniji.
A memorija, ja ne mogu znati kad će se mašina ponovo biti pokrenuta, možda će odma drugi dan možda će pauzirati 5-10 dana, to zavisi od posla.
Ako mislis da postavis neko pitanje i ocekujes pomoc od clanova, onda moras sve da znas, pa cak i da predvidis ili da na samom sistemu postavis neka ogranicenja. Enkoder je najmanji problem. Tebi fali razumevanje rada celokupne masine. Ako to rzumes, onda ces lako da uradis logiku.
Pravi projektant mora da gleda 5 koraka unapred i da predvidja moguce scenarije koriscenja. Nije projektovanje lemljenje MCU-a i tri otpornika, nego sagledavanje svih moguci scenarija koriscenja neke masine/sistema. Kada to imas, imas i resenje problema.
|