Arduino: Varför 0 till 1023 vid analog ?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Arduino: Varför 0 till 1023 vid analog ?

Inlägg av Al_Bundy »

Hej!

Jag gjorde ett litet expriment på digitalRead och analogRead.

Det första experimentet som jag gjorde var digitalRead. Då skulle man trycka på en knapp och sen då visar monitor en etta eller en nolla, vilket jag direkt förstår vad det är. On eller Off.

Experiment finns här: http://arduino.cc/en/Tutorial/DigitalReadSerial

Men däremot analogRead så förstog jag inte så mycket om. Där var det en potentiometer som jag skruvade på. När man skruvade på den så visades tal från 0 till 1023 på en monitor som är integrerat med Arduino IDE.

Varför blev det 0 till 1023 och inte 0 till 1024 ?

Experiment finns här: http://arduino.cc/en/Tutorial/AnalogReadSerial

Tack!
Användarvisningsbild
ensten
EF Sponsor
Inlägg: 3759
Blev medlem: 19 oktober 2004, 15:55:20
Ort: Hudiksvall

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av ensten »

Därför att det finns 1024 "positioner" varav en är "0".
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av Al_Bundy »

Vad menar du med "positioner" ?
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av jesse »

ok... (nytt försök)

Du har bara tio bitar som talet ska få plats i.
noll = 00 0000 0000
1023 = 11 1111 1111
1024 = 100 0000 0000 = elva bitar - får inte plats.

Men en liten följdfråga:
om Aref = 5.0 volt, ska man då räkna med att Aref motsvaras av 1024 eller 1023 ?

dvs. ska det vara:

Kod: Markera allt

float volt;
u16 analog;
...
analog = ADC; // läs in från ADC
volt = analog * 5.00 / 1024;
eller ska det vara

Kod: Markera allt

float volt;
u16 analog;
...
analog = ADC; // läs in från ADC
volt = analog * 5.00 / 1023;
(det är en kuggfråga - jag vet svaret)
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av Al_Bundy »

Jadu..bra fråga :)
Jag vet inte.

Jag förstår inte heller varför jag har bara 10 bitar och inte 11 bitar. 2^11 = 2048. Brukar finnas som megabyte på ram. Iallafall vad jag har på min dator.

Men om du tar ett praktiskt exempel med t.ex en blinkande LED och en eller flera knappar kanske? Typ om man trycker in två knappar så lyser lampan och trycker man in den tredje så blinkar lampan osv.
Användarvisningsbild
Walle
Moderator
Inlägg: 7701
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av Walle »

Därför att din ADC är på 10 bitar och inte 11 bitar. Resten av det du skriver förstår jag absolut ingenting av, vad har lysande eller blinkande lysdioder med ADCn att göra?
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av Lennart Aspenryd »

Mata inte trollen!
Grundläggande kunskaper är binärt, och basic
Användarvisningsbild
JimmyAndersson
Inlägg: 26579
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av JimmyAndersson »

Lasp:
Att slänga ur sig "Troll" skapar bara en jobbig stämning.
Skriv något konstruktivt istället.

Åter till ämnet!
Användarvisningsbild
lizerdboy
Inlägg: 1610
Blev medlem: 6 oktober 2003, 22:24:12
Ort: Stockholm

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av lizerdboy »

Om man tänker på ett mindre exempel så kanske de blir lättare att förstå.

2 bitar som ger fyra olika kombinationer.

00 <- 0
01
10
11 <- 3

sammanlagt fyra varianter

i 10 bitar

0000000000 <- 0
-//-
1111111111 <-1023

sammanlagt 1024
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av Al_Bundy »

Walle skrev:Därför att din ADC är på 10 bitar och inte 11 bitar. Resten av det du skriver förstår jag absolut ingenting av, vad har lysande eller blinkande lysdioder med ADCn att göra?
Okej. Det förklarar rätt bra det där :)
Tack!
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av Al_Bundy »

När jag gjorde det där exprimentet så använde jag en potentiometer på 10k ohm. Jag antar att när jag hade "full resitans" på potentiometern så visade monitorn 1023 och när jag hade ingen resitans alls så visade monitorn 0.

Om jag använder ett motstånd på 5k ohm, borde det inte monitorn visa hälften av 1023 då?
Användarvisningsbild
Limestone
Inlägg: 129
Blev medlem: 22 maj 2012, 10:51:59
Ort: Rydsgård

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av Limestone »

Ta reda på vad troll är innan du själv blir ett... Det finns tillräckligt med riktiga troll på forumet som det är redan.

http://sv.wikipedia.org/wiki/Internettroll

Om trådskaparen ställer frågor på ett forum av en eller annan anledning skall väl han eller hon knappast bli förlöjligad även om personen ifråga inte har full förståelse på svaret, har man inget konstruktivt att skriva kan man ju alltid gå på toaletten för att få ur sig skiten...

Ett forum är väl en plats för ALLA även de som inte redan kan allt...

Trist att läsa att även de äldre medlemmarna bär sig åt som många yngre...


Och nu kommer det givetvis att komma en massa kommentarer angående det här inlägget oxå, bara för att det MÅSTE ifrågasättas.
Så varsågoda och "Let the flaming begin"
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av sodjan »

> ...borde det inte monitorn visa hälften av 1023 då?

Nej. (Här får man verkligen bita sig i tungan och räkna till 10...)

Jag tycker att det är bäst att du funderar mer på vad du skriver.
Det blir så lätt infekterat när det dyker upp så genomkorkade frågor.

> ...så använde jag en potentiometer på 10k ohm.

Som var kopplad enligt bilden på den länk som *DU SJÄLV* postade ???
Eller hur var den inkopplad?
Var den *INTE* kopplad med alla tre benen enligt bilden?

> Om jag använder ett motstånd på 5k ohm,

Ett motstånd med tre ben !!??
Om inte så får du faktiskt förklara bättre vad du gjorde...
Användarvisningsbild
Limestone
Inlägg: 129
Blev medlem: 22 maj 2012, 10:51:59
Ort: Rydsgård

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av Limestone »

Al_bundy:

Vilken resistans på potentiometern är egentligen oväsentligt rörande bitarna, det som ändras är skalan, dvs. hur "fort" den analoga signalen ändras...

Edit: Och vips så dök nästa upp... :tumner: apropå konstruktiva inlägg...
Användarvisningsbild
ensten
EF Sponsor
Inlägg: 3759
Blev medlem: 19 oktober 2004, 15:55:20
Ort: Hudiksvall

Re: Arduino: Varför 0 till 1023 vid analog ?

Inlägg av ensten »

Problemet är att när du gör en analog > digital konvertering måste du någonstans (gissningsvis i kod eftersom du labbar med uC) definiera vad som skall konverteras. Du kan koppla vilken pot som helst i ditt exempel men du måste ändå någonstans tala om vad som skall vara 0ohm och vad som skall vara xx-ohm.

Du kan till och med vända på steken och bestämma att värdet ändras baklänges mot vad det gör nu.

Någonstans i koden finns definierat vad x ohm är (t.ex. 0 eller 10kohm 1023).

EDIT> Eller i en inbyggd funktion i Arduino, ser det ut som när jag tittade på exemplet.
Skriv svar