Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V)...

12
Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

Transcript of Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V)...

Page 1: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

Analog on the Arduino

int k; // integer = 16 bitsk = analogRead(1);

Analog volts value (0V → 5V)returns from 0 to 1023 into “k”

(10 “bits” = 1024 values)

Page 2: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

Analog range:

● dynamic range● precision● accuracy – repeatability● calibration for accuracy?

Page 3: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

Resolution

2 bits 0 - 3

8 bits 0 – 255

10 bits 0 – 1023

16 bits to 65000

32 bits to over 4 billion

Page 4: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

Resolution / precision

5 volts

1024 possible measurements

So resolution = 5000 / 1024 millivolts

Ie about 5 mV

Page 5: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

● Pullups and Voltage Dividers

Page 6: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

READING REFERENCE DOCUMENTS

LDR

THERMISTOR “NTC”

LM35 Temp SENSOR

Page 7: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

LDR

Page 8: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

“50k OHM Thermistor NTC 3950 MF52AT”

Page 9: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

Accurate temp sensor LM35

But analog sensor resolution could be better matched than this

Page 10: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

● Modulo division – remainders

● Long integers – preventing rollover errors

Page 11: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

PWM to LEDs(remember that?)

PWM output (dimming a LED) used

analogWrite(3, 150); // pin d3, 150/255 bright

This was “8 bit” resolution (0 - 255)

Page 12: Analog on the Arduino int k; // integer = 16 bits k = analogRead(1); Analog volts value (0V → 5V) returns from 0 to 1023 into “k” (10 “bits” = 1024 values)

Industrial

Common industrial analog signalling has been

4 – 20 mA full range.

How could Arduino handle that?

Why start from 4 mA, not 0mA?