Инверсный ШИМ
- Войдите на сайт для отправки комментариев
Втр, 22/10/2013 - 09:58
Здравствуйте!
Нужно получить инверсный ШИМ.
Можно конечно поставить транзистор и на этом ограничиться. Но если есть свободные ноги почему бы не сделать так: Выдаем ШИМ на A0, кидаем этот сигнал на D0, читаем его и генерим инверсный на D1.
duration = pulseIn(D0, HIGH); digitalWrite(D1, HIGH); delayMicroseconds(duration); digitalWrite(D1, LOW);
Как считаете?
о! точно! спасибо!
analogWrite(
out
,255-pwmAmout);
А, ну да..
Что то не понял можно поподробнее, а то ишу нигде не могу найти
Пусть max - 100% шим, при разрядности 8 (у analogWrite по дефолту, если не трогать регистры таймера) это будет 256. Точнее 255, т. к. начинается с нуля. Пусть pwmAmount - некое кол-во ШИМ, допустим 63 (25%).
Тогда "инверсный" будет равен "максимум минус нормальный" = max-pwmAmount = 255-63 = 192. 192 это инверсное 63.
А как это написать покажите на примере плавного загорания
Проверил на осциллографе, Фаза то одна, фронт импульсов одинаков, длительность разная. Инверсивный шим таким способом не получить. Пришлось как и предполагал использовать перемычку и программную инверсию.
Выдаем ШИМ на A0
Интересно на это посмотреть...
Пришлось как и предполагал использовать перемычку и программную инверсию.
Это называется сделать через одно место.
Для 88/168/328-образных дуин, например для 6 вывода: