Главная » Микроконтроллеры
Призовой фонд
на октябрь 2020 г.
1. 1500 руб
Сайт Паяльник
2. Тестер компонентов MG328
Сайт Паяльник
3. 150 руб.
От пользователей

Похожие статьи:



2-х клавишный выключатель света Tuya Smart Life Wi-Fi. Поддержка голосовых помощников Яндекс Алиса, Google Home, Alexa

STM32F4. Урок 5 - работа с АЦП

Данная библиотека используется для работы с АЦП в режиме единичного запроса. Выводы АЦП должны быть указанны в H-файле и правильно настроены в C-файле библиотеке. Также может быть выполнено усреднение значения измеряемой величины (период оценки увеличивается в соответствии с настройкой). В приложении прикреплено две одинаковые библиотеки ADC1 и ADC2 (они отличаются только именами используемых переменных).

Вот оценка точности:

Напряжение подается с подтяжкой 100кОм (без использования внешнего конденсатора). После 100тыс. измерений сравниваем разницу максимального и минимального значений (разрядность АЦП – 12бит, Uref=3В, погрешность - 730мкВ).

без усреднения : 814 - 1144 = +/- 165
  усреднение 2 : 974 - 1132 = +/- 79
  усреднение 4 : 990 - 1114 = +/- 62
  усреднение 8 : 1014 - 1101 = +/- 43
 усреднение 16 : 1036 - 1086 = +/- 25
 усреднение 32 : 1043 - 1077 = +/- 17
 усреднение 64 : 1052 - 1068 = +/- 8
усреднение 128 : 1054 - 1066 = +/- 6

В примере, для работы в аналоговом режиме ADC1 было использовано три вывода: PA3, PC4, PC5.

Требования:

   Подключаемые модули CooCox-IDE : GPIO, ADC.
   Поддерживаемые библиотеки: отсутствуют.

Перечисления:

typedef enum {
  ADC_PA3 = 0,  // PA3
  ADC_PC4 = 1,  // PC4
  ADC_PC5 = 2   // PC5
}ADC1s_NAME_t;

typedef enum {
  MW_NONE =0,  // без усреднения
  MW_2,        // усреднение 2
  MW_4,        // усреднение 4
  MW_8,        // усреднение 8
  MW_16,       // усреднение 16
  MW_32,       // усреднение 32
  MW_64,       // усреднение 64
  MW_128       // усреднение 128
}ADC1s_MW_t;

Функции:

void UB_ADC1_SINGLE_Init(void);  // Инициализация ADC1
uint16_t UB_ADC1_SINGLE_Read(ADC1s_NAME_t adc_name); // непосредственное считывание данных с АЦП
uint16_t UB_ADC1_SINGLE_Read_MW(ADC1s_NAME_t adc_name); //считывание данных АЦП с усреднением

Пример использования:

//--------------------------------------------------------------
// File     : main.c
// Datum    : 17.02.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Function : Demo of Button Library
// Reference: These two files must be written to 8MHz
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_adc1_single.h"
#include "stm32_ub_led.h"

int main(void)
{
  uint16_t adc_wert;

  SystemInit(); // Инициализация настроек кварца

  UB_ADC1_SINGLE_Init(); // Инициализация ADC1
  UB_Led_Init();         // Инициализация светодиодов


  while(1)
  {
    // Канал АЦП PA3 управляет тремя светодиодами соответственно
    adc_wert=UB_ADC1_SINGLE_Read_MW(ADC_PA3);
    if(adc_wert>1024) UB_Led_On(LED_GREEN); else UB_Led_Off(LED_GREEN);
    if(adc_wert>2048) UB_Led_On(LED_ORANGE); else UB_Led_Off(LED_ORANGE);
    if(adc_wert>3072) UB_Led_On(LED_RED); else UB_Led_Off(LED_RED);

    // Канал АЦП PC4 управляет синим светодиодом, инвертирую его состояние
    adc_wert=UB_ADC1_SINGLE_Read_MW(ADC_PC4);
    if(adc_wert>2048) UB_Led_On(LED_BLUE); else UB_Led_Off(LED_BLUE);
  }
}

Режим работы:

  • ADC1 инициализируется в режиме единичного запроса
  • измеряется уровень аналогового напряжения на выходах PA3 и PC4 (определяются в библиотеке)
  • в зависимости от величины напряжения 4 светодиода либо загораются, либо тухнут

Библиотека, использованная в примере: stm32_ub_adc1_single, stm32_ub_led.

В приложении проект CooCox и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Катушка Тесла USB осциллограф DSO-2090
вверх