Zdravím.
Používam v C(hi tech software)pic 16F877A výsledok AD prevodu na nastavenie timera:
void delay(void)
{
int a;
a = read_a2d(0);//AD prevod pin "0"
a = a >> 2; //z 1024 na 255bit
DelayMs(a);
}Potreboval by som poradiť fintu,aby pri výsledku AD prevodu “0” bolo v premennej"a" napr.50.A pri výsledku “255”(1024) opäť len oných “255”(1024)Ináč povedané,nejako "ofsetovať"hodnotu v premennej “a” tak,aby sa jej hodnota pohybovala od 50 do 255.
Pokiaľ možno lineárne.
Relatko.
Na co tam potřebuješ tak blbej offset? Nutí tě to tam tahat pokročilejší matiku která ti sežere hromadu výkonu, kterýho ten PIC stejně nemá na rozdávání…
Napriklad sa toho hodne prebera v geometrii. Konkretne rovnica priamky, ktora je definovana dvoma bodmi. Ale to nie je stredoskolska zalezitost ale zalezitost zakladnej skoly. Kedze je to ina skola aku prave navstevujes, verim Ti, ze si to v tejto skole na 100% nepreberal (mozno si prave chybal)
zakladna rovnica priamky v 2D priestore:
y = x*A + B
x je vstupna premenna a y je vystupna premenna.
B je hodnota y ak x sa rovna nule, v tvojom pripade 50
A = (y1 - B)/x1
kde x1 a y1 je Tebou definovana dvojica , napriklad [255, 255]
potom vyjde
B = 50
A = 205/255 = 0.8047
takze
y = 0.8047 * x + 50;
kedze sa ti nechce pocitat s realnymi cislami, potom sa snaz najst dve cele cisla tak aby ich podiel dal co najpresnejsie 205/255
No a kedze Ti mala chyba na urovni cca 1LSB vadit nebude, mozes vztah pre A upravit
A = 206/256
z toho vyplyva
y = 50 + x*206/256; // delenie 256 zrealizujes tak, ze ta z vysledku x * 206 bude zaujimat iba horny bajt. To je celkom sikovne delenie, preto to zavedenie tej malej chybicky na urovni 1LSB stoji za to
Vysledok v podstate zodpoveda vztahu, ktory Ti napisal marzou. Ja som si dovolil trochu teorie.
to Martin: ty ten výsledek máš přesnější, já jsem tam zapomněl zkorigovat konstantu, poté co jsem se rozhodl dělit číslem o jednotku větším
Každopádně, pokud to chce někdo dělat seriźně, vždy je dobré si vypočítat odchylku pro každou hodnotu “a”, stačí třeba v Excelu, a pak při pohledu na graf odchylky můžeme usuzovat na další korekce …