Zmiennoprzecinkowy koprocesor do mikrokontrolerow

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 :-)

Reply to
Pszemol
Loading thread data ...

Akurat to mozna zrobic bez.

Nie warto. Uzyj ARM czy innego procka :-)

J.

Reply to
J.F.

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

Reply to
AlexY

ARM, ColdFire, PowerPC czy w ostatecznosci drugi 8051 (AVR) pracujacy jako koprocesor....(moga byc 2, 3, 8...)

Reply to
PAndy

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.

Reply to
A.Grodecki

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:

const float te_defa = 0.0010390139651; const float te_defb = 0.0002377762721; const float te_defc = 0.0000001621900; // powyzsze stale dostarczone przez producenta termistorow

float varq = ((47500.0 * 3160.0 * ((float ) Thermistor[th].ulRunningAverage - (float ) Thermistor[th-1].ulRunningAverage)) / ((3160.0 * (float )Thermistor[th-1].ulRunningAverage) - (47500.0 * (float )Thermistor[th].ulRunningAverage)));

float varp = ((float )Thermistor[th].ulRunningAverage * ((varq/3160.0) +1));

// 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));

float cent = (1.0/(te_defa + te_defb * res + te_defc * pow(res,3.0))) - 273.0;

if ((cent < -60.0) || ( cent > 75)) Thermistor[th].lTemperature = 9999999; else { if(hdwr->bFahrenheit) Thermistor[th].lTemperature = (INT32S)(((((cent * 9.0) / 5.0) + 32.0) * 10000.0)) + Thermistor[th].lOffset; else Thermistor[th].lTemperature = (INT32S)(cent * 10000.0) + Thermistor[th].lOffset; } }

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 :-)

Reply to
Pszemol

Pszemol napisał(a):

Magiczne słowo: linearyzacja.

Reply to
A.Grodecki

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.

Reply to
J.F.

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 ?

Reply to
Pszemol

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... ;

Reply to
A.Grodecki

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...

Reply to
Pszemol

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.

Reply to
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.

Reply to
A.Grodecki

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.

Reply to
J.F.

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.

Reply to
Pszemol

Mnie sie tam podobalo :-)

J.

Reply to
J.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.