Med hensyn til modifikation af servo kan jeg ikke vejlede dig
har modificeret den. servoen har et internt potmeter, som bruges til at bestemme pos sammen med de impulser, så det eneste der sker er at man stiller det potmeter i midterpos og disconnecter det fra den mekaniske del. Når man så sender impulser til servoen (de samme pwm som vi bruger nu) så vil servoen på grund af det disconnected pot ikke vide om possitionen er nået, og derfor blive ved med at køre. hastigheden bestemmes af hvor mange ms high er fra 1.5ms som er midterpos.
Det har du totalt styr på. Den dag hvor jeg har brug for at spørge om servo, ved jeg hvem jeg skal spørge.

Tabellerne er beregnet sådan at de dækker et stykke ud over modstandenes idéelle værdier.
Oki super. det var bare fordi jeg ikke lige forstod hvordan den aflæses. Jeg går ud fra at de tal der fremkommer mellem hvert komma er de enkelte værdier som passer med en adc værdi, og tabellen retunerer dermed et tal der svare til den komma plads adc værdien svare til. men jeg forstår ikke at hvis min adc værdi nu aflæses til at være 1001 hvordan ved den så hvilken plads det er når ingen af tabel værdierne giver 1001?
Kort fortalt:
Den starter i den ene høje af tabellen, og bliver ved med at vandre mod den lave ende, indtil den finder en værdi der er mindre end den værdi som du søger.
Hvis en modstand leverede værdien 1000, så vil der være 2 tabel-'entries' for denne værdi; fx. kunne den ene være 1300, den anden 850. Jo nærmere man kommer den lave ende, desto mere tæt ligger værdierne.
Først laves en tabel med 16 resultater med følgende formel:
i = værdi fra 1 til 16...
voltage[
i] = (spænding * 1000 / i);
Dér skulle værdierne (rundet op) være...
5000, 2500, 1667, 1250, 1000, 833, 714, 625, 556, 500, 455, 417, 385, 357, 333, 313.
Dernæst laves en tabel med ADC-resultaterne...
adc_result[
i] = 1023 * voltage[
i] / 5000;
1023, 512, 341, 256, 205, 171, 146, 128, 114, 102, 93, 85, 79, 73, 68, 64.
Så laves en bundgrænse...
adc_bottom[
i] = (adc_result[
i] + adc_result[i + 1]) / 2;
767, 426, 298, 230, 188, 158, 137, 121, 108, 98, 89, 82, 76, 71, 66, 32.
..og en top-grænse...
adc_top[
i] = (i > 0) ? ((adc_result[i - 1] + adc_result[
i]) / 2) : 1023;
1023, 767, 426, 298, 230, 188, 158, 137, 121, 108, 98, 89, 82, 76, 71, 66.
Det er således top- og bund-grænserne du ser i tabellen.
Selvom de er beregnet til 5.0V, vil de være præcise selv hvis du kører 5.1V.
Dette er fordi ADC'ens reference-spænding er VCC, hvilket vil sige at den ikke kender forskel på VCC=5.0V og VCC=5.1V; den kender kun forskel på spænding i forhold til hvad VCC er.

Man kan sige at spændingen 5.0V er en midlertidig værdi for at vi mennesker bedre kan finde rundt i det, vi kunne lige så godt have valgt 1V eller 1000V...
