Arduino ADC read to PWM output

Arduino ADC read to PWM output

Въведение

След като разгледахме как се изчита аналогова стойност “Arduino UNO ADC read” и как се генерира широчинно импулсна модулация “Arduino UNO PWM output” с Arduino IDE, е време да видим как се прочита аналогов пин и как се прехвърля стойността му към дигитален пин като генерираме ШИМ/PWM според изчетените аналогови стойности. Нека кръстим тази програма “ADCtoPWM.ino”. В Arduino IDE това се постига с три функции:

  1. Прочитане на стойността на аналогов пин: analogRead(пин);
  2. Преизчисляване на резултата от аналоговия пин към цифровия изход: map(стойност, 0, 1023, 0, 255);
  3. Задаване на PWM/ШИМ: analogWrite(пин, стойност);

Функции

1. analogRead(пин)

Функцията analogRead(пин); връща целочислена стойност от 0 до 1023 при измерено напрежение 0-5 волта за Arduino UNO. За Arduino DUE, резолюцията е 12 битова при 3.3 волта, което прави 0-4096 при измерено напрежение 0-3.3 волта. Резолюцията може да се промени с функцията analogReadResolution(bit), но за това по нататък.

2. map(стойност, 0, 1023, 0, 255)

Функцията map(променлива, 0, 1023, 0, 255); преизчислява аналоговия вход (0-1023) към PWM/ШИМ стойности (0-255). Примерен код: value = map(val, 0, 1023, 0, 255);. Това означава, че стойността val, която се намира в обхвата от 0 до 1023, ще бъде преизчислена в нова стойност value, която ще бъде в обхвата от 0 до 255. Формулата за преизчисляване на стойност x от един обхват [in_min, in_max] към друг обхват [out_min, out_max] е:

y=(in_max−in_min)(x−in_min)×(out_max−out_min)​+out_min

3. analogWrite(пин, стойност)

Функцията analogWrite(пин, стойност); задава широчинно импулсна модулация (ШИМ/PWM) на дигитален пин. Например: analogWrite(3, value);.

Примерен Код

int led = 3;
int potRead = 0;
int value = 0;

void setup() {
    Serial.begin(9600);
    pinMode(led, OUTPUT);
    digitalWrite(led, LOW);
}

void loop() {
    potRead = analogRead(A0);
    Serial.println(potRead);
    value = map(potRead, 0, 1023, 0, 255);
    analogWrite(led, value);
}

Свързване на Компонентите

Компоненти:

  • Arduino UNO / MEGA (или друга платформа)
  • Потенциометър 10k
  • Резистор 220 Ом
  • Светодиод

Схема на свързването:

На картинката отдолу ще видите схема на Arduino UNO която включва потенциометър, резистор и светодиод, показващи как работи PWM/ШИМ с регулация от ADC/АЦП.

ADC-АЦП-sheme

Снимка на тестовата платформа:

Клип как работи платформата:

На този клип ще видите нагледно как работи тази схема. Закачили сме дигитален осцилоскоп (в този случай DSO150), на който може да видим реално как се генерира ШИМ/PWM сигналът от Arduino платформата.

Заключение

Тази статия “Arduino ADC read to PWM output” показва как да прочетем аналогов (ADC) сигнал и да го прехвърлим към широчинно импулсна модулация (PWM изход). Този процес е основен при работа с много електронни устройства и дава възможност за управление на физически компоненти чрез софтуер. Може да изгледате този видео клип.