mirror of
https://github.com/sascha-hemi/pycom-documentation.git
synced 2026-03-22 04:06:13 +01:00
105 lines
3.1 KiB
Markdown
105 lines
3.1 KiB
Markdown
---
|
||
title: "ADC"
|
||
aliases:
|
||
- firmwareapi/pycom/machine/adc.html
|
||
- firmwareapi/pycom/machine/adc.md
|
||
- chapter/firmwareapi/pycom/machine/adc
|
||
---
|
||
|
||
## class ADC – Analog to Digital Conversion
|
||
|
||
|
||
{{% development version="" style="block" %}}
|
||
{{% /development %}}
|
||
|
||
|
||
|
||
### Quick Usage Example
|
||
{{% development version="" style="block" %}}
|
||
|
||
{{% /development %}}
|
||
|
||
|
||
```python
|
||
import machine
|
||
|
||
adc = machine.ADC() # create an ADC object
|
||
apin = adc.channel(pin='P16') # create an analog pin on P16
|
||
val = apin() # read an analog value
|
||
```
|
||
|
||
## Constructors
|
||
|
||
### class machine.ADC([id=0] {{% development version="" style="inline" %}}hello {{% /development %}})
|
||
|
||
Create an ADC object; associate a channel with a pin. For more info check the hardware section.
|
||
|
||
## Methods
|
||
|
||
### adc.init([bits=12])
|
||
|
||
Enable the ADC block. This method is automatically called on object creation.
|
||
|
||
* `bits` can take values between 9 and 12 and selects the number of bits of resolution of the ADC block.
|
||
|
||
### adc.deinit()
|
||
|
||
Disable the ADC block.
|
||
|
||
### adc.channel(pin, attn=ADC.ATTN_0DB)
|
||
|
||
Create an analog pin.
|
||
|
||
* `pin` is a keyword-only string argument. Valid pins are `P13` to `P20`.
|
||
* `attn` is the attenuation level. The supported values are: `ADC.ATTN_0DB`, `ADC.ATTN_2_5DB`, `ADC.ATTN_6DB`, `ADC.ATTN_11DB`
|
||
|
||
Returns an instance of `ADCChannel`.
|
||
|
||
### adc.vref(vref)
|
||
|
||
If called without any arguments, this function returns the current calibrated voltage (in millivolts) of the `1.1v` reference. Otherwise it will update the calibrated value (in millivolts) of the internal `1.1v` reference.
|
||
|
||
### adc.vref_to_pin(pin)
|
||
|
||
Connects the internal `1.1v` to external `GPIO`. It can only be connected to `P22`, `P21` or `P6`. It is recommended to only use `P6` on the WiPy, on other modules this pin is connected to the radio.
|
||
|
||
## Constants
|
||
|
||
* ADC channel attenuation values: (value references are approximations)
|
||
* `ADC.ATTN_0DB`: 0dB attenuation. 1V will be registered as 1V
|
||
* `ADC.ATTN_2_5DB`: 2.5dB attenuation. 1V will be registered as 0.75V
|
||
* `ADC.ATTN_6DB`: 6dB attenuation. 1V will be registered as 0.5V
|
||
* `ADC.ATTN_11DB`: 11dB attenuation. 1V will be registered as 0.3V
|
||
|
||
>Note: The voltages will automatically be corrected by `adcchannel.voltage()`
|
||
|
||
## Class ADCChannel - created upon initialisation of an ADC Channel
|
||
The following methods can be applied on the `adcchannel()` instance. ADC channels are created using the `ADC.channel(...)` method.
|
||
|
||
|
||
### adcchannel()
|
||
|
||
Fast method to read the channel value.
|
||
|
||
### adcchannel.value()
|
||
|
||
Read the channel value.
|
||
|
||
### adcchannel.init()
|
||
|
||
(Re)init and enable the ADC channel. This method is automatically called on object creation.
|
||
|
||
### adcchannel.deinit()
|
||
|
||
Disable the ADC channel.
|
||
|
||
### adcchannel.voltage()
|
||
|
||
Reads the channels value and converts it into a voltage (in millivolts)
|
||
|
||
### adcchannel.value_to_voltage(value)
|
||
|
||
Converts the provided value into a voltage (in millivolts) in the same way voltage does.
|
||
|
||
> ADC pin input range is `0-1.1V`. This maximum value can be increased up to `3.3V` using the highest attenuation of `11dB`. **Do not exceed the maximum of 3.3V**, to avoid damaging the device.
|