MicroPython:Библиотеки/pyb/Класс ADC: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{MicroPython/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[]</ref>= <syntaxhighlight lang="python"...») |
Нет описания правки |
||
(не показаны 4 промежуточные версии 1 участника) | |||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[]</ref>= | =Класс ADC – аналогово-цифровое преобразование<ref>[http://docs.micropython.org/en/latest/library/pyb.ADC.html docs.micropython.org - class ADC – analog to digital conversion]</ref>= | ||
Как пользоваться: | |||
<syntaxhighlight lang="python"> | |||
import pyb | |||
<syntaxhighlight lang="python" | adc = pyb.ADC(pin) # создает аналоговый объект | ||
# на контакте «pin» | |||
val = adc.read() # считывает аналоговое значение | |||
adc = pyb.ADCAll(resolution) # создает объект «ADCAll» | |||
adc = pyb.ADCAll(resolution, mask) # создает объект «ADCAll» на | |||
# выбранных аналоговых каналах | |||
val = adc.read_channel(channel) # считывает заданный канал | |||
val = adc.read_core_temp() # считывает температуру MCU | |||
val = adc.read_core_vbat() # считывает напряжение | |||
# резервной батарейки (VBAT) MCU | |||
val = adc.read_core_vref() # считывает опорное напряжение MCU | |||
val = adc.read_vref() # считывает питающее | |||
# напряжение MCU | |||
</syntaxhighlight> | |||
==Конструкторы== | |||
* [[MicroPython:Библиотеки/pyb/Класс ADC/pyb.ADC()|pyb.ADC()]] | |||
== Методы == | |||
* [[MicroPython:Библиотеки/pyb/Класс ADC/ADC.read()|ADC.read()]] | |||
* [[MicroPython:Библиотеки/pyb/Класс ADC/ADC.read_timed()|ADC.read_timed()]] | |||
* [[MicroPython:Библиотеки/pyb/Класс ADC/ADC.read_timed_multi()|ADC.read_timed_multi()]] | |||
== Объект «ADCA11» == | |||
Инстанцинирование этого объекта переводит все выбранные [[АЦП-контакт]]ы в режим ввода аналоговых данных. Доступ к предварительно обработанным данным о температуре [[микроконтроллер]]а, а также ''VREF'' и ''VBAT'' можно получить на [[АЦП-канал]]ах ''16'', ''17'' и ''18'' соответственно. Масштабирование данных выполняется с помощью опорного напряжения (обычно ''3.3 вольта''). Температурный датчик на чипе имеет заводскую калибровку и позволяет считывать его температуру с точностью ''+/- 1 градус'' по Цельсию. На первый взгляд кажется, что это хорошая точность, но не забывайте, что этот датчик замеряет внутреннюю температуру [[микроконтроллер]]а. В зависимости от вычислительной нагрузки и активности I/O-подсистем, температура чипа может быть запросто на десятки градусов выше окружающей температуры. Другими словами, если вывести [[PyBoard]] из долгого пребывания в режиме простоя, она покажет корректную окружающую температуру, но с учетом условий, обозначенных выше. | |||
Методы read_core_vbat(), read_vref() и read_core_vref() объекта ''ADCA11'' считывают, соответственно, напряжение резервной батареи, опорное напряжение и опорное напряжение, основанное на питающем напряжении (обычно это ''1.21 вольт''). Результат всех трех функций – это напряжение постоянного тока в виде чисел с плавающей точкой. | |||
Функция read_core_vbat() возвращает напряжение резервной батареи. Это напряжение тоже настраивается согласно питающему напряжению. Чтобы не допустить перегрузки на входных аналоговых контактах, напряжение резервной батареи измеряется через делитель напряжения и масштабируется согласно значению этого делителя. Чтобы не допустить чрезмерной нагрузки на резервную батарею, делитель напряжения активен только во время АЦП-операций. | |||
Функция read_vref() измеряет внутреннее опорное напряжение и выполняет обратное масштабирование полученного значения при помощи заводского калибровочного значения внутреннего опорного напряжения. В большинстве случаев результат будет близок к 3.3 вольтам. Если PyBoard работает от батареи, питающее напряжение может упасть ниже 3.3 вольт. PyBoard будет по-прежнему работать нормально – до тех пор, пока будут соблюдены операционные условия. При правильных частоте микроконтроллера, скорости доступа к flash-памяти и режиме программирования PyBoard может работать даже на 2 вольтах и по-прежнему выполнять нормальное аналогово-цифровое преобразование. | |||
Очень важно убедиться, чтобы напряжение на входных аналоговых контактах никогда не превышало питающее напряжение. | |||
Другие входные аналоговые каналы (0-15) возвращают немасштабированные целые числа в соответствии с выбранной точностью. | |||
Чтобы избежать нежелательной активации входных аналоговых каналов (0-15), в этой функции можно задать второй аргумент. Значением в нем служит двоичный паттерн, в котором каждый запрошенный входной аналоговый контакт имеет соответствующий набор битов. Значение по умолчанию – ''«0xffffffff»'', которое означает, что активны все входные аналоговые каналы. Если вам нужны только внутренние каналы (16-18), в этом масочном паттерне должно быть значение ''«0x70000»''. | |||
Пример: | |||
<syntaxhighlight lang="python"> | |||
adcall = pyb.ADCAll(12, 0x70000) # 12-битное разрешение, | |||
# внутренние каналы | |||
temp = adcall.read_core_temp() | |||
</syntaxhighlight> | |||
=См.также= | =См.также= |
Текущая версия от 17:31, 24 мая 2023
Класс ADC – аналогово-цифровое преобразование[1]
Как пользоваться:
import pyb
adc = pyb.ADC(pin) # создает аналоговый объект
# на контакте «pin»
val = adc.read() # считывает аналоговое значение
adc = pyb.ADCAll(resolution) # создает объект «ADCAll»
adc = pyb.ADCAll(resolution, mask) # создает объект «ADCAll» на
# выбранных аналоговых каналах
val = adc.read_channel(channel) # считывает заданный канал
val = adc.read_core_temp() # считывает температуру MCU
val = adc.read_core_vbat() # считывает напряжение
# резервной батарейки (VBAT) MCU
val = adc.read_core_vref() # считывает опорное напряжение MCU
val = adc.read_vref() # считывает питающее
# напряжение MCU
Конструкторы
Методы
Объект «ADCA11»
Инстанцинирование этого объекта переводит все выбранные АЦП-контакты в режим ввода аналоговых данных. Доступ к предварительно обработанным данным о температуре микроконтроллера, а также VREF и VBAT можно получить на АЦП-каналах 16, 17 и 18 соответственно. Масштабирование данных выполняется с помощью опорного напряжения (обычно 3.3 вольта). Температурный датчик на чипе имеет заводскую калибровку и позволяет считывать его температуру с точностью +/- 1 градус по Цельсию. На первый взгляд кажется, что это хорошая точность, но не забывайте, что этот датчик замеряет внутреннюю температуру микроконтроллера. В зависимости от вычислительной нагрузки и активности I/O-подсистем, температура чипа может быть запросто на десятки градусов выше окружающей температуры. Другими словами, если вывести PyBoard из долгого пребывания в режиме простоя, она покажет корректную окружающую температуру, но с учетом условий, обозначенных выше.
Методы read_core_vbat(), read_vref() и read_core_vref() объекта ADCA11 считывают, соответственно, напряжение резервной батареи, опорное напряжение и опорное напряжение, основанное на питающем напряжении (обычно это 1.21 вольт). Результат всех трех функций – это напряжение постоянного тока в виде чисел с плавающей точкой.
Функция read_core_vbat() возвращает напряжение резервной батареи. Это напряжение тоже настраивается согласно питающему напряжению. Чтобы не допустить перегрузки на входных аналоговых контактах, напряжение резервной батареи измеряется через делитель напряжения и масштабируется согласно значению этого делителя. Чтобы не допустить чрезмерной нагрузки на резервную батарею, делитель напряжения активен только во время АЦП-операций.
Функция read_vref() измеряет внутреннее опорное напряжение и выполняет обратное масштабирование полученного значения при помощи заводского калибровочного значения внутреннего опорного напряжения. В большинстве случаев результат будет близок к 3.3 вольтам. Если PyBoard работает от батареи, питающее напряжение может упасть ниже 3.3 вольт. PyBoard будет по-прежнему работать нормально – до тех пор, пока будут соблюдены операционные условия. При правильных частоте микроконтроллера, скорости доступа к flash-памяти и режиме программирования PyBoard может работать даже на 2 вольтах и по-прежнему выполнять нормальное аналогово-цифровое преобразование. Очень важно убедиться, чтобы напряжение на входных аналоговых контактах никогда не превышало питающее напряжение.
Другие входные аналоговые каналы (0-15) возвращают немасштабированные целые числа в соответствии с выбранной точностью.
Чтобы избежать нежелательной активации входных аналоговых каналов (0-15), в этой функции можно задать второй аргумент. Значением в нем служит двоичный паттерн, в котором каждый запрошенный входной аналоговый контакт имеет соответствующий набор битов. Значение по умолчанию – «0xffffffff», которое означает, что активны все входные аналоговые каналы. Если вам нужны только внутренние каналы (16-18), в этом масочном паттерне должно быть значение «0x70000».
Пример:
adcall = pyb.ADCAll(12, 0x70000) # 12-битное разрешение,
# внутренние каналы
temp = adcall.read_core_temp()