febb: (Default)
febb ([personal profile] febb) wrote2014-03-29 01:26 am

(no subject)

Продолжал развлекался с простеньким микроконтроллером PIC12F510.
Решил освоить таймер, аналого-цифровой преобразователь (ADC) и заодно посмотреть
как импульсно-широтная модуляция (PWM) будет работать.
Подключил переменный резистор (потенциометр) параллельно питанию контроллера,
а с ползунка напряжение подал на одну из ног на вход ADC.
К другой ноге (0) подключил светодиод.
И написал такую программу из 5 строк:

for(;;)
{
ADCON0bits.GO_nDONE = 1; // Start ADC
for(;ADCON0bits.GO_nDONE;) ; // Wait for ADC results
GPIO = TMR0 < ADRES; // Set PWM duty cycle and out signal
}

Поразительно что сразу заработало: вращаешь потенциометр, напряжение
оцифровывается и модулируется сигнал цифровым образом через таймер
и меняется яркость светодиода.

Вау! Поразительно как просто можно сделать регулятор и
как одновременно сложно - через 8 Mhz микроконтроллер
с миллионами транзисторов это работает...

Чип стоит кстати пол доллара (в несколько раз меньше тупого потенциометра!).
Так что техническое решение абсолютно к тому же бюджетное.
Цифровая эра всё таки удивительная штука!..