Замерить напряжения на ШИМ порту с помощью аналогового порта.
- Войдите на сайт для отправки комментариев
Вс, 03/11/2013 - 15:21
Здравствуйте! Возникла такая проблема: Не могу замерить напряжение на ШИМ. Значение часто скачит на 0.
Вот принятые значения с порта:
podacha 5 Zamer -> 0 podacha 10 Zamer -> 0 podacha 15 Zamer -> 0 podacha 20 Zamer -> 0 podacha 25 Zamer -> 0 podacha 30 Zamer -> 0 podacha 35 Zamer -> 0 podacha 40 Zamer -> 0 podacha 45 Zamer -> 0 podacha 50 Zamer -> 0 podacha 55 Zamer -> 0 podacha 60 Zamer -> 0 podacha 65 Zamer -> 0 podacha 70 Zamer -> 0 podacha 75 Zamer -> 0 podacha 80 Zamer -> 0 podacha 85 Zamer -> 0 podacha 90 Zamer -> 0 podacha 95 Zamer -> 0 podacha 100 Zamer -> 0 podacha 105 Zamer -> 0 podacha 110 Zamer -> 0 podacha 115 Zamer -> 0 podacha 120 Zamer -> 0 podacha 125 Zamer -> 0 podacha 130 Zamer -> 0 podacha 135 Zamer -> 990 podacha 140 Zamer -> 989 podacha 145 Zamer -> 990 podacha 150 Zamer -> 990 podacha 155 Zamer -> 0 podacha 160 Zamer -> 0 podacha 165 Zamer -> 0 podacha 170 Zamer -> 0 podacha 175 Zamer -> 990 podacha 180 Zamer -> 989 podacha 185 Zamer -> 990 podacha 190 Zamer -> 991 podacha 195 Zamer -> 989 podacha 200 Zamer -> 0 podacha 205 Zamer -> 0 podacha 210 Zamer -> 990 podacha 215 Zamer -> 990 podacha 220 Zamer -> 990
Вот код:
int zamer = 0; // Порт А0 с которого замеряю напряжение int led = 4; // ШИМ int curvolt = 0; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { curvolt = curvolt + 5; if (curvolt >=225) { delay(10000); curvolt = 0; } analogWrite(led, curvolt); zamer = analogRead(A0); Serial.print("podacha "); Serial.print(curvolt); Serial.print(" "); Serial.print("Zamer -> "); Serial.println(zamer); delay(50); }
Ну как бы вам сказать:) это будет сделать достаточно проблематично, темболее на ардуинке. Во первых это торможение во время считывания показания с порта, analogread достаточно тормознутая по времени исполнения, это следует иметь в виду если у вас будет достаточно часто меняться скважность ШИМ. Далее вам как минимум надо поставить конденсатор и нагрузку по выходу:) ведь у вас то +5 то 0 вольт. Вы будете получать чтением с порта то 0 то 1000(примерно). Нагрузка нужна зачем тебе я смысла не вижу обЪяснять подаван.
Не могу замерить напряжение на ШИМ. Значение часто скачит на 0.
Не могу замерить напряжение на ШИМ. Значение часто скачит на 0.
так радоваться надо, значит шим работает! :)
так радоваться надо, значит шим работает! :)
можно измерять когда не равно нулю.
можно измерять когда не равно нулю.
измерение когда не равно нулю ничем не лучше измерения когда равно нулю, разве нет?
измерение когда не равно нулю ничем не лучше измерения когда равно нулю, разве нет?
техзадание было - что бы не скакало в ноль, поэтому ноль отбрасываем программно
не знаю, зачем, но если нужно, то нужно
Ну для меня главное замерить напряжение на шим)
Так вы замерили.
т.е напряжение подается разное, а с аналогового порта считываются те же самые значения.
т.е напряжение подается разное
Нет. Напряжение подается одно и то же - напряжение питания (5 вольт).
, а с аналогового порта считываются те же самые значения.
Возвращаемся к вопросу #2, гугл у вас работает? Погуглите что такое ШИМ.
т.е напряжение подается разное, а с аналогового порта считываются те же самые значения.
вот картинко, что выдаёт нога шима - где тут разное напряжение, кроме двух крайних?
есть предположения, ТС пытается построить ЦАМ из ШИМ и измерить действующее напряжение, или измерить мгновненные значения ради изучения крутизны фронтов импульсов :-)
Спасибо всем за ответы)
Погуглил) думаю что R 2R ЦАП поможет. Либо фильтр для ШИМ расчитывать? Главное для меня, чтоб с ардуино можно было изменять напряжение на выходе 0.00...5.00
что бы измерить напряжение на шим нужно измерять не напряжение а время, потом уже вычислять среднее
зачем мерить результирующее напряжение шима, если его можно вычислить?
дак, это, а что разве нельзя его тупо прочитать из правильного регистра?
Возможно у аффтора задача, "измерять" значение скважности совсем другого устройства?
Тогда аж два варианта, либо засекать реальные период и скважность импульсов в идеале с помощью аппаратного прерывания. Либо второй вариант конвертить ШИМ в аналоговое значение и его уже усреднять RC цепью и замерять полученное аналоговое значение с помощью АЦП...
дак, это, а что разве нельзя его тупо прочитать из правильного регистра?
если мы знаем значение шима, то смысл что-то откуда-то читать, измерять - можно просто умножить на 4
если мы знаем значение шима, то смысл что-то откуда-то читать, измерять
...
это неспортивно
дак, это, а что разве нельзя его тупо прочитать из правильного регистра?
если мы знаем значение шима, то смысл что-то откуда-то читать, измерять - можно просто умножить на 4
Я примерно об этом же. и можно даже не умножать, потому что а зачем?
потому что а зачем?
типо превратить дуино в программируемый калькулятор - красиво
потому что а зачем?
типо превратить дуино в программируемый калькулятор - красиво