Преобразование температуры в напряжение в студии AVR

Я должен написать программу на C, используя ATmega 328p, которая превращает температуру в напряжение.

Пока я сделал это:

#include <avr/io.h>
unsigned int Ctemp;
unsigned int Ftemp;

int main(void)
{

ADMUX = (1<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (1<<MUX3) | (0<<MUX2) | (0<<MUX1) | (0<<MUX0);

ADCSRA = (1<<ADPS2) | (1<<ADPS1) | (1<<ADEN);

ADCSRA |= (1<<ADSC);

while ((ADCSRA & (1<<ADSC)) != 0);

while(1)
{
    ADCSRA |= (1<<ADSC);

    while ((ADCSRA & (1<<ADSC)) != 0);

    Ctemp = (ADC - 247)/1.22;
    Ftemp = (Ctemp * 1.8) + 32;
}

return 1;
}

Можете ли вы помочь мне завершить преобразование?

1 ответ

С риском завышения очевидного мне кажется, что здесь есть две основные операции:

1) получить температуру 2) создать выходное напряжение

Похоже, что OP не столько зацикливается на числовом представлении, сколько на самом деле производит аналоговое напряжение, которое является функцией температуры, полученной на шаге 1. Это не удивительно, так как большинство микроконтроллеров (включая 328P) не имеют аналоговые выходы. Но выходы PWM доступны на 328P, поэтому очень часто просто интегрировать выход PWM, чтобы получить желаемый результат на шаге 2.

Другие вопросы по тегам