Kazdy kto probowal w swoim mikro-urzadzeniu linearyzowac dane z termistorow, termopar spotkal sie z koniecznoscia obliczen zmiennoprzecinkowych... To samo pewnie dotyczy ludzi obliczajacych dane z GPS.
Emulacja biblioteki zmiennoprzecinkowej, obliczanie logarytmow naturalnych i tym podobne operacje na malym 8051 to zwykle katorga...
Pomyslalem o tym sobie czytajac o ukladzie scalonym, ktory w malej obudowie 8-pinowej zawarty ma koprocesor zmiennoprzecinkowy z interfejsem SPI do podlaczenia do wszelakiej masci mikrokontrolerow. Ten chip to uM-FPU V3 firmy Micromega...
Warto sie nim zainteresowac :-)
Didn't find your answer? Ask the community — no account required.
J
J.F.
Akurat to mozna zrobic bez.
Nie warto. Uzyj ARM czy innego procka :-)
J.
A
AlexY
Użytkownik Pszemol napisał:
cena sugerowana 20$ to juz chyba jednak arm wyjdzie taniej/kozystniej niz do 8051 za 5PLN podpinac koprocesor za 20$ :) no chyba ze stanieje do 5PLN
P
PAndy
ARM, ColdFire, PowerPC czy w ostatecznosci drugi 8051 (AVR) pracujacy jako koprocesor....(moga byc 2, 3, 8...)
A
A.Grodecki
Pszemol napisał(a):
Zrobili, ale warto się zastanowić nad celowością stosowania. W swoim czasie popełniłem na zwykłym 87c52 regulator przemysłowy PID z wejściem dla wszystkich rodzajów termopar i termorezystorów. Cały program regulatora o precyzji numerycznej 0.1C, wraz z obsługą peryferiów i interfejsem użytkownika, zajmował nieco ponad 5kB, czyli o mały włos a zmieściłby się nawet w 87c51... Przez wszystkie lata pracy nie spotkałem się z potrzebą użycia obliczeń zmiennoprzecinkowych. To nie znaczy że takich potrzeb nie ma, ale pokazuje jak żadko są, tak naprawdę, potrzebne.
P
Pszemol
Chetnie poznam jakis taki przyklad... Na razie mam w kodzie C/C++ na malym
32-bitowym CPU mierzenie czasu ladowania kondensatora przez termistor i obliczam temperature na podstawie tego czasu w taki sposob:
// varq i varp to zmienne kalibracyjne obliczone na // podstawie czasow ladowania kondensatora przez // stale oporniki o znanych wartosciach rezystancji... // teraz lecimy z temperaturka dla poszczegolnych termistorow for (th=0; th<MAX_THERMISTORS-2; th++) { float res = log(((float )Thermistor[th].ulRunningAverage * varq) / (varp - (float )Thermistor[th].ulRunningAverage));
Jak widzisz, az sie tam roi od zmiennych przecinkow, poteg i logarytmow...
Ktos tu jest mocniejszy w metodach numerycznych i pokaze mi jak tu uniknac zmiennych przecinkow w obliczeniach to chetnie sie czegos naucze :-)
A
A.Grodecki
Pszemol napisał(a):
Magiczne słowo: linearyzacja.
J
J.F.
Zapewne zadziala liniowa aproksymacja odcinkami i mala tablica.
Jaki zakres, jak dokladnie, jaki wzor, bo za bardzo zagmatwany program :-)
A dokladna ma produkcje ? Moze najlepiej jednak skalibrowac co 10 stopni [C] kazda sztuke ?
J.
P
Pszemol
Masz jakieś fajne materiały do poczytania na ten temat ? Musze się zapoznać czy da się to wykorzystać w moim przypadku.
Rybki jak to rybki - jak żyją to żyją aż nie zdechną. Dawno Cię na pra nie było... Karmnik automatyczny DIY wciąż działa ?
A
A.Grodecki
Pszemol napisał(a):
Nie mam. Kiedyś pracowałem jako konstruktor w firmie produkującej wszelkie czujniki i elektronikę dla pomiarów temperatur. Wtedy powstał między innymi wspomniany regulator. Dawno to było, już od lat '51 nie używam. Wzory charakterystyk czujników są w Polskich Normach. Aproksymowałem je i wyniki optymalizowałem programem napisanym w Matlabie. Bułka z masłem.
Wyczytałem co chciałem i co tam dalej robic? Karmik działa, kiedy wszyscy wyjeżdżamy na dłużej niż dzień zawsze włączam. Jeden konkretny gatunek mi stopniowo wyzdychał. Okazał się bardzo wrażliwy na azotany. Dopuszczalna górna dawka 50 powodowała gwałtowny spadek ich kondycji. Wystarczyło że nie podmieniłem wody w ciągu 1.5 tygodnia i trup był murowany. A takie miały być odporne... ;
P
Pszemol
Ja akurat też teraz piszę raczej dla 32-bitowców.
Mnie metody numeryczne nigdy jakoś nie rajcowały więc nie jest to żadna bułka ;-)
Pomagać szukającym rad jako doświadczony ?
Co robisz tutaj na elektronice odpisując na moje pytania ? :-)
Azotany to niestety zmora słodkowodniaków. Morszczakom dochodzi druga: fosforany...
A
A.Grodecki
Pszemol napisał(a):
Metody numeryczne to w tym przypadky zbyt poważne hasło. Trzeba tak poprowadzić krzywą łamaną wokół funkcji, aby błąd w dowolnym miejscu był nie większy niż zadany. Obliczenie ma charakter siłowy a nie analityczny. Analitycznie tez mozna, ale po co. Zapuszczasz komputer i po jakimś czasie jest wynik. Efekty zawsze wymagają odrobinę wysiłku. Matlaba warto kiedyś spróbować. Może być czasami bardzo użyteczny i nie jest trudny w użyciu.
Nie jestem doświadczony, moje doświadczenie akwarystyczne to tylko tyle ile mi było potrzeba. Są lepsi.
Dobre pytanie :) Akurat na tym znam się dobrze, moim zdaniem ;) Poza tym mam chwilowo czas (rozrywam się w przerwach między jednym kawałkiem pracy a drugim) i wkrótce znowu zniknę na pewien okres :)
Nie zawsze mam czas i checi, żeby poświęcić godzinę tygodniowo na czyszczenie i podmianę wody :) W życiu bym sie nie zdecydował na zbiornik który wymaga ode mnie jeszcze więcej wysiłku.
P
Piotr Wyderski
PowerPC do zastosowañ embedded i do tego jeszcze lutowalny w warunkach domowych i mo¿liwy do kupienia? Gdzie?! :-)
Pozdrawiam Piotr Wyderski
P
Piotr Wyderski
Pomijaj±c ju¿ fakt, ¿e te obliczenia s± zwykle wykonywane an typie float, który daje jedynie 24 bity dok³adno¶ci. Je¶li siê zna zakres danych wej¶ciowych, to na zwyk³ych 32-bitowych liczbach ca³kowitych mo¿na liczyæ dok³adniej.
Praktyczn± zalet± zmiennego przecinka jest to, ¿e pos³uguj±c siê nim mo¿na sobie pozwoliæ na mniej my¶lenia. Konwersja algorytmów numerycznych na sta³y przecinek to do¶æ delikatna sprawa, a ludzie s± z natury leniwi... :-)
Pozdrawiam Piotr Wyderski
A
A.Grodecki
Piotr Wyderski napisał(a):
To prawda. Szkoda że jednak temu lenistu legają w efekcie czego mamy doraz więcej zoraz bardziej skomplikowanych i zawodnych produktów na rynku.
J
J.F.
Wcale niekoniecznie. Juz kiedys implementujac HPGL, zamiast analizowac wszystko co moze sie zdarzyc i jaki to bedzie mialo wplyw na obliczenia .. wsadzilem zmienny przecinek. IMHO - lepiej wyszlo.
J.
P
Pszemol
Nie mówię że jest "trudny" - mówiłem że mnie to nigdy nie bawiło... To coś tak jakbyś przekonywał kogoś, kto lubi jeździć na nartach że lepiej jest nurkować lub serfować na falach morskich... Jego bardziej bawią narty i stoki górskie zimą niż morze i już. I co mu zrobisz ? :-)
Twierdzisz że jeśli chodzi o elektronikę lepszych nie ma ? ;-)
Nad czym teraz będziesz pracował ?
Kto Ci powiedział że akwarium wymaga godziny tygodniowo (lub więcej) na czyszczenie ? Poza tym - jeśli to jest dla kogoś hobby to czasu spędzonego na pracę przy akwarium nie dolicza się do wad czy "przykrych obowiązków" tylko do przyjemności i "zalicza" odfajkowując w dziale rozrywek.
P
Pszemol
Nie przesadzajcie panowie z t± pogard± dla lenistwa... Lenistwo jest matk± wynalazków i gdyby nie lenistwo to do dzi¶ musieliby¶my programowaæ komputery w ich jêzyku maszynowym zamiast C -> podoba³oby siê to Wam ? ;-)
P
Piotr Wyderski
Jak± pogard±? Wyrazi³em jedynie swoje zdanie na temat u¿ywania typów zmiennoprzecinkowych w miejsce sta³oprzecinkowych. Czasami jest to wynik lenistwa, czasami niedouczenia, czasami analizy ekonomicznej
-- to nie jest istotne, wa¿ne jest jedynie to, czy takie podej¶cie siê op³aca. Je¶li tak, co czêsto ma miejsce, to mnie nic do cudzych, skutecznych rozwi±zañ.
W pe³ni podzielam ten pogl±d.
C od asemblera siê tak bardzo nie ró¿ni, nieprzypadkowo bywa nazywane "przeno¶nym asemblerem". Natomiast ja, maj±c do dyspozycji C++ i jêzyki jeszcze wy¿szego poziomu, do kwestii pisania oprogramowania w C i asemblerze podchodzê równie "entuzjastycznie"... W C++ mam wszystko to, co mam w C + ca³± masê bardzo przyjemnych rzeczy (zw³aszcza szablony), wiêc jedynym powodem do u¿ywania tego dziadostwa mo¿e byæ tylko brak kompilatora... :-)
Pozdrawiam Piotr Wyderski
J
J.F.
Mnie sie tam podobalo :-)
J.
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.