Ока в Новосибирске

Клуб Окаводов Новосибирска
Текущее время: 28 мар 2024, 20:24

Часовой пояс: UTC + 7 часов




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
СообщениеДобавлено: 02 дек 2012, 23:30 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11206
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
Предисловие
Блин, каждый начинающий в программировании МК проходит по одному и тому же пути! :) Сначала это непременно уроки мигания светодиодом. Потом двумя. Потом тремя. Потом подключение дисплея и первое "HELLO WORLD!" на нем, ибо на больше пока не способны :) И очень вероятно, что сборка подобного девайса тоже находится в этом списке. А потому я ни сколько не стесняюсь выкладывать тысяча-пятисотый вариант в сеть :) Ибо если есть те, кто выше меня и пишет сложные программы для более продвинутых контроллеров, значит есть те, кто ничего не пишет (но может припаять пять проводков, что бы по чёткой инструкции влить в МК готовую прошивку). Потому мой девайс может быть очень даже полезен второй категории граждан, чему я буду только искренне рад! А кто боится сталкиваться с МК - это напрасно! Если четко следовать инструкции (которых я могу дать гору), вливать прошивку не сложней, чем зайти на этот форум! :wink: :Yahoo!:

Для чего это нужно?
Короче. Денег на блок питания для рации я пожалел - лучше я на эти 1500-2000 руб куплю ребенку фруктов. Зачем покупать, если прям под ногами валяется готовая конструкция в виде старых комповых БП. Но в старых блоках питания редко задумывались о снижении шума. Чаще всего вентилятор (куллер), который стоит внутри БП и охлаждает радиаторы, подключен напрямую к питанию и работает на полную катушку всегда, даже когда в этом нет никакой нужды! Вот и у меня он шумит как надо! Особенно это заметно, когда на ночь выключаю компьютер - вместо воцарившейся тишины присутствует монотонный шум. Хорошо хоть, что это все не в спальной.

Зачем усложнять или почему не сделать проще?
Надо что то делать. Первое, что пришло на ум - поставить ограничительный резистор в цепь куллера. То есть подавать на него не 12, а 5-7 вольт. Это снизит обороты и шум. Но тут есть два минуса:

1. Если на БП увеличится нагрузка, то из за недостатка охлаждения БП запросто бабахнет.
2. Все таки шум снизится, но не до конца (придется искать компромисс между шумом и минимально приемлемой эффективностью охлаждения, с риском того, что при увеличении нагрузки все перегреется и приведет к летальному исходу БП)

Можно заменить резистор на переменный резистор, и добавлять напряжение на куллер тогда, когда сильно нагружаем наш БП. Но.. как то это не наш метод. Не автоматически.... Да и кто знает на сколько эффективно мы выставили обороты куллера - эффективно ли охлаждение и не мало ли мы выставили?

Почему именно МК?
Можно сделать простейшую схему на транзисторах и терморезисторе (или диоде), которая будет рулить куллером в зависимости от температуры охлаждаемых куллером радиаторов. Чем больше они греются, тем больше подается напряжения на куллер. Но аналоговая схемотехника (может лично для меня?) менее понятна и очевидна, чем цифровая. И уж если паять что то, то какая разница - транзисторы или микроконтроллер(МК)?! Кроме того последний имеет явные преимущества:

1. Получение с датчиков точных значений температур в градусах Цельсия, а не в каких то "попугаях" с терморезистора. С точными значениями всегда проще обращаться.
2. Логика работы устройства, которую можно менять как пожелаешь программным кодом. Ограничением тут может быть только недостаток фантазии и остаток свободного места в памяти МК.
3. Программируемость и хранение настроек в МК
4. Возможность чтения тахоимпульсов. Определение напряжения, при котором куллер стартует и дальнейшее использование этого параметра в программе.

Минусы - только умение худо-бедно программировать МК, но для меня это проблемой не является. Не профи, но кое что уже делал в своей жизни: тыц, тыц, тыц, тыц
И вот спустя некоторое время появляется вот это:

Изображение

Изображение

Не могу не отметить, что это моя первая двухсторонняя плата! И кстати сказать, что перейти на такой формат меня сподвигла программа-трассировщик печатных плат DeepTrace. Так что просьба не ругать - это мой первый дебют в качестве изготовления двухсторонней печатной платы, а так же первый проект, созданный этой программой. Только я еще не разобрался как заставить эту программу делать не межслойные переходы, а использовать перемычки. При чем не проволочные, а в виде резисторов SMD нулевого сопротивления.

Это плата-образец. Например, если выкладывать схему и прошивку в массы, то я наверное бы убрал разъем программирования, заменил бы индуктивность на раза в три поменьше (там ток до 500мА всего). Конденсатор сглаживающий тоже не нужен большой. В общем, плату можно как минимум на треть ужать (а то и в половину, заменив 5в стабилизатор на LM-ку в корпусе ТО92). Хотя, если места навалом (а в БП так и есть), можно использовать имеющуюся плату.

Что сейчас умеет девайс? (логика работы)

при каждом включении БП в сеть (с повторением примерно 1 раз в сутки - можно сделать до 10 суток), производится тестирование куллера на минимальное напряжение старта. Методика теста: напряжение, подаваемое на куллер, плавно увеличивается, пока не поступят импульсы с таходатчика куллера (куллер стартанул и закрутился). Запоминаем то напряжение (вернее: позицию ШИМ - содержимое OCR2), при котором это случилось. Ждем 3 секунды, давая куллеру раскрутиться, и запоминаем обороты, которые он смог развить. Затем подаем на куллер 100% напряжения и запоминаем максимальные обороты. Обе этих переменных никакой нагрузки не несут - зарезервировано на будущее. А раскручивание куллера на полную мощность полезно. Во-первых это слышно, а раз слышно, значит система охлаждения исправна. Во-вторых выдуваем пыль, которую только сможем выгнать :twisted: :D Все это время светодиод медленно моргает, а по завершению теста перестает мигать и горит постоянно. Если включить блок питания с зажатой кнопкой программирования, произойдет инициализация (сброс) переменных нормальной и максимальной температур и выставлению дефолтных значений. При этом светодиод будет часто мигать до завершения процедуры, после чего начнется тест куллера, описанный выше.

После теста девайс переходит в свой основной режим. То есть контролируется присутствие и температура обоих датчиков. Если один из датчиков убрать (допускается горячая замена), то будет контролироваться температура оставшегося датчика. Если девайс потеряет и его, то после 10 безуспешных попыток его найти, куллер будет включен на 100% мощности (аварийный режим).

Если с датчиками все в порядке, то девайс работает скучно: читает температуру с датчиков, сравнивает их с температурами, которые забиты в прошивке (или запрограммированы пользователем) и принимает решение. Есть два параметра: температура старта(1) и критическая температура(2). Первый параметр отвечает за то, при какой температуре девайс включит куллер на минимальных оборотах. Второй параметр указывает девайсу, что при подходе к этой температуре на куллер должно подаваться 100% мощности. Между параметром 1 и параметром 2 существует 255 градаций изменения напряжения, подаваемого на куллер. Вернее, 255-N, где N-число, при котором куллер стартует.

Пример:
температура старта(1) по дефолту в прошивке - 40 градусов С
критическая температура(2) по дефолту 60 градусов С
допустим, что тест минимальных оборотов показал, что куллер стартует на 40й градации мощности из 255 возможных.
Итого:
на термодатчике(ках) 30 градусов - куллер остановлен.
на термодатчике(ках) 39,5 градуса - куллер остановлен.
на термодатчике(ках) 40 градусов - куллер включен на 40й градации мощности из 255 возможных.
на термодатчике(ках) 50 градусов - куллер включен на 147й градации мощности из 255 возможных.
на термодатчике(ках) 55 градусов - куллер включен на 201й градации мощности из 255 возможных.
на термодатчике(ках) 60 градусов - куллер включен на полную мощность (255 их 255ти возможных)

Сейчас радиостанция потребляет миллиампер 300. Радиатор высоковольтных по-немногу нагревается. При преодолении порога 40 градусов вентилятор включается на самую маленькую мощность. Но этого хватает, радиатор остывает и куллер выключается. Если повесить более серьезную нагрузку, то куллер уже не останавливается, но и не шумит на всю квартиру, как раньше. Собсно, кое что из этого есть в видео:



В общем, уже прошло часов 5 с момента инсталляции. Пока полет нормальный. Думаю как бы усовершенствовать прошивку? Во-первых мне не нравится, что светодиод в рабочем режиме горит постоянно. При выключении света в квартире из блока питания исходит совсем ненужная иллюминация. Можно уменьшить резистор с 330 ом до киломм двух. Или поменять алгоритм работы. Пусть он вспыхивает как сигналка. И чем горячее радиаторы (и чем быстрей молотит куллер) эти вспышки будут чаще. Но опять же иллюминация, притягивающая ребенка и прочих с их вопросами "а чиво этот там горит/мигает, не взорвется?".

Вложение:
Комментарий к файлу: Схема. Версия 1.00. Примененный МК - ATtiny45
cooler_control_ver1.png
cooler_control_ver1.png [ 322.28 КБ | Просмотров: 18092 ]

Вложение:
Комментарий к файлу: Прошивка версии 1.00
coller_control_tiny45.hex [8.19 КБ]
Скачиваний: 537

Вложение:
Комментарий к файлу: Фьюзы PonyProg
tin45_1.gif
tin45_1.gif [ 53.21 КБ | Просмотров: 18092 ]

Вложение:
Комментарий к файлу: Байты конфигурации (для тех, кто в курсе)
tin45_2.gif
tin45_2.gif [ 13.27 КБ | Просмотров: 18092 ]



Ваши мысли?

PS. Сразу скажу, что в МК нет свободных портов. Хотя нет - есть один, но это ножка RESET. Она необходима для программирования МК и если ее переназначить программно, то невозможно уже будет прошить МК без применения спец.программатора. А я бы хотел еще замутить пищалку, что бы он пищал, когда совсем все плохо. Хотя.. есть куллер и девайс его врубает на 100% если что (не услышать или не заметить трудно). Или придется как то хитрить с кнопкой или лампами. Хотя как? Голову сломал уже.

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram
Skype: искать oka275 (в англ.раскладке)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 дек 2012, 23:58 
Не в сети
Заслуженный участник Клуба ЗУ-ОКА275
Аватара пользователя

Зарегистрирован: 01 апр 2012, 16:43
Сообщения: 469
Откуда: Самое Популярное Болото ;)
Авто: 11113, Almera Classi
Имя: Владимир
Давно думал над такой штукой. Видеоплата и материнка хорошо справляются со своими вентиляторами, а 2 корпусных и БП молотят постоянно на 100%. Но пока созреваю. Не решил еще, использовать аппаратный ШИМ (это получается нужен МК минимум с 3 таймерами), или низкочастотный программный (ИМХО, для весьма инерционных вентиляторов и 50 Гц будет приемлемо). Не решил, ставить индикатор с кнопками или USB-мост и писать виндовую софтинку. Т.ч. тоже приму предложения.

По данному девайсу, если есть тахосигнал с вентилятора, то логично контролировать заниженные обороты. И в случае чего заверещать каким-нибудь зуммером. Например, если вентиль остановился (не запустился) когда должен работать. Кстати, а что сейчас подключено к МК? Может, удастся что-нибудь придумать, не трогая Reset?

А плата очень ничего получилась.

_________________
КамАЗ 11113 для души, Nissan Almera Classic для остального


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 дек 2012, 01:40 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11206
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
Привет Володя! Рад видеть!

Цитата:
материнка хорошо справляются со своими вентиляторами

а мне кажется, что могла бы все равно чуть тише их врубать. Или это мне кажется, и тепла реально много, что если снизить обороты, температура будет только расти? (тоже самое, если бы в моем случае радиатор грелся бы до 55 градусов, заставляя куллер орать почти на полную - а меньше нельзя, ибо еще выше станет!)

Цитата:
Не решил еще, использовать аппаратный ШИМ (это получается нужен МК минимум с 3 таймерами)

таки можно же прикупить! Этих МК как собак.. Я вот никогда Тини45 не покупал, считал их чем то инопланетянским. А пошел и купил (при чем по цене всего 52 рубля). Четыре полноценных таймера можно сыскать и даже в очень не крутом корпусе. Надо только поискать. Или..........

Цитата:
или низкочастотный программный (ИМХО, для весьма инерционных вентиляторов и 50 Гц будет приемлемо).

....... угу. Но какой тогда придется ставить дроссель? А если не ставить его, не сглаживать ничего, то на таховыводе такая каша до примерно 6 вольт, что ни о каком чтении тахоимпульсов речи идти не может.
Обрати внимание, что на таховыводе у меня висит кондер 1мкф. Без него было очень все плохо, ибо выработка тахоимпульса напрямую связана с питанием куллера. Если питание дерьмо, то и импульс тоже. Потому я применил классический step down - это уже сильно улучшило ситуацию с тахоимпульсами ниже 6 вольт, а добавление конденсатора почти полностью излечило проблему. Конечно он искажает меандр, но фронт все равно имеется и потому работает! А одновременно он то ли подпитывает схему куллера.. или чего.. в общем дает ему опору.

Цитата:
Может, удастся что-нибудь придумать, не трогая Reset?

Уже думал. Например, посадить кнопку и светодиод на один порт. Анод светодиода запитать на +5V через огранич.резистор. Периодически переключать порт из режима OUT в режим IN и контролировать наличие "земли" на входе (кнопка нажата). При нажатии будет загораться светодиод, что совсем не входит в планы, ибо например длинное нажатие означает переход в режим программирования и предполагает погасание светодиода и его мигание (тем самым давая юзеру понять, что функция сработала - отпусти кнопку!!!). А тут получается, что светодиод будет гореть до тех пор, пока кнопку не отпустишь. Не интерактивно. Тупо. Неа.

Есть вариант - собрать высоковольтный программатор. Например, этот Вроде не сложный. Если откатать прошивку в шпротеусе и иметь этот программатор только в качестве шанса вернуть контроллеру возможность перепрошиваться, то вариант вполне годный.

Уверен, что в серийном производстве не стали бы жертвовать целым портом! И отключили бы reset.

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram
Skype: искать oka275 (в англ.раскладке)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 дек 2012, 03:01 
Не в сети
Заслуженный участник Клуба ЗУ-ОКА275
Аватара пользователя

Зарегистрирован: 01 апр 2012, 16:43
Сообщения: 469
Откуда: Самое Популярное Болото ;)
Авто: 11113, Almera Classi
Имя: Владимир
Цитата:
а мне кажется, что могла бы все равно чуть тише их врубать

Видимо, все зависит от самой матери. Для моей можно хоть график зависимости оборотов от температуры нарисовать. Да и проц весьма прохладный: обычно не более 37, а в худшие времена (несколько часов работы Virtual Dub при температуре в комнате почти 30) максимум до 50 разогревался. Поэтому о ней и не заморачиваюсь. А вот охлаждение БП и винтов (корпусной вентиль) неплохо бы присмирить.

Цитата:
А если не ставить его, не сглаживать ничего, то на таховыводе такая каша до примерно 6 вольт, что ни о каком чтении тахоимпульсов речи идти не может.

Вот об этом я не подумал. ШИМ без фильтрации (без дросселя и кондера) уже успешно применил в управляторе автономной дизельной печки, но там обычный коллекторный двигатель без таходатчика.
Раз начинается фигня с тахоимпульсами, о таком управлении придется забыть. Или добывать вентиляторы с ШИМ-входом.

Цитата:
Есть вариант - собрать высоковольтный программатор

Так вроде бы это реаниматор фьюзов, а не программер. Себе собрал такой: http://radiokot.ru/lab/controller/41/ и еще ни разу не пожалел. Никаких изменений в конструкцию и топологию не вносил. В параллельном режиме моментально даже самые "тяжелые" прошивки заливает, ну и с RESET попроще стало, в том числе с 8-лапыми МК (они шьются высоковольтно-последовательно и этим прогером поддерживаются). Обычное внутрисхемное (ISP) программирование тоже хорошо работает. Если смущают файлы PCAD, могу в PDF или XPS перегнать. В CodeVision прогер работает только в низковольтном режиме, полностью его возможности раскрываются в AVR Studio: и утилита-прогер там шикарная, и для отладки Студия хороша (например, состояние переменных отслеживать).

Цитата:
например длинное нажатие означает переход в режим программирования и предполагает погасание светодиода и его мигание (тем самым давая юзеру понять, что функция сработала - отпусти кнопку!!!

Так пикни зуммером. Типа "короткий пик" = просто нажатие, "длинный пик" (или двойной) = "режим программирования". Тогда (возможно) светодиод вообще не нужен будет.

_________________
КамАЗ 11113 для души, Nissan Almera Classic для остального


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 дек 2012, 13:30 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11206
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
Aquinas писал(а):
Для моей можно хоть график зависимости оборотов от температуры нарисовать.

ууууу, так у тебя какая то крутая мать. Мне таких матерей ни разу не попадалось. Во всяком случае в биос-е на столько расширенных настроек я не встречал.

Мне 250 дал идею сделать программный шим частотой 1 герц, скважностью от 0.1 секунды. Он убежден, что ШИМ куллерам не нужен. Хотя, после step down, там по сути уже шим-а нет - там уже напряжение. Ну грязноватое конечно, но не чистый ШИМ. В общем, я проблемы не вижу.

А то, что таходатчик плющит, так это я победил. Пусть в лоб, но победил. Конечно нужно было поставить после кондёра один каскад на транзисторе, что бы снова вернуть чистый мендр, но он там нафик не нужен. Там осциллограмма примерно такая, что кондер этот плавно заряжается через подтягивающий резистор, а разряжается почти молниеносно таходатчиком (я так понимаю там открытый коллектор). Потому фронт крутой и достаточный для его распознавания микроконтроллером.

Кстати, та же самая Титька2313 имеет 2 таймера и возможность поднять на каждом по 2 ШИМ-генератора. Вот тебе аж 4 канала! Вот тебе пример! Вызывает восторг то, как хитро раскачали Р-канал! Нет лишних корпусов и тд. И работает приемлемо наверное. А вот на АТмеге48. У нее, если я все верно понимаю, можно 6 каналов организовать! Или четыре, но один таймер заюзать под свои нужды. Кроме того не забываем, что есть еще вачдог - где то я читал, что его можно тоже как то запахать. Например, для создания иллюзии многозадачности, я люблю делать прерывание по переполнению одного, самого ненужного, таймера. Долбит он где то с частотой 15 герц и опрашивает состояние клавы, обслуживает мигание светодиодов, считает всякие тайминги и тд. Только благодаря ему клава всегда опрошена и светодиод мигает так, словно в коде нет ничего, кроме команды мигать светодиодом. Надо как нибудь поэкспериментировать с этим watchdog-ом.

Цитата:
Так вроде бы это реаниматор фьюзов, а не программер.

Да??? А, ну да. Просто если надо разлочить МК, то готов хоть напильником его пилить. А после разлочки пойдет любой программатор. Кстати, к этому девайсу и комп не нужен - он сбрасывает фьюзы без него. Потому, коли уж запорол случайно МК, то выпаял его, сбросил, впаял обратно - и прошивайся сколько влезет. У меня "дудка" и программатор на FT232RL. Очень удобно! Особенно при отладке, ну прям милое дело! В папке с прошивкой прописал батник. Надо прошить? кляп по батнику и вуаля. А там уже все зависит от того, на какой частоте у тебя проект. Если на мелкой (1мгц), то литься будет долго. Для этого в том же batнике сначала пишем строчку, устанавливающие фьюзы МК на 8мгц, затем строчка прошивает МК, затем третьей строчкой возвращаем на место фьюзы, которые должны быть изначально. ОЧЕНЬ УДОБНО!!! Можно хоть на поток ставить!!! И не надо сначала фьюзы дергать, потом шить - все делается одним батником, в котором только меняешь тип МК, файл прошивки и собсно, сами фьюзы (и если надо, лок-биты).

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram
Skype: искать oka275 (в англ.раскладке)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 дек 2012, 02:38 
Не в сети
Заслуженный участник Клуба ЗУ-ОКА275
Аватара пользователя

Зарегистрирован: 01 апр 2012, 16:43
Сообщения: 469
Откуда: Самое Популярное Болото ;)
Авто: 11113, Almera Classi
Имя: Владимир
Цитата:
так у тебя какая то крутая мать

Не самая дешевая, но и не "пальцы веером". Asus M4A87TD/USB3. В БИОС там немного настроек (только ВКЛ/ВЫКЛ чего-нибудь), все бантики доступны через дрова (Cool'n'Quiet) и утилиты (EPU, FanExpert). Сейчас она, наверное, уже снята с производства.

Цитата:
программный шим частотой 1 герц, скважностью от 0.1 секунды

Гм.. Сдается мне, в таком режиме вентилятор может завывать с периодом в 1 секунду. Он ведь наверняка успеет разогнаться до максимума при скважности примерно 0.5.

Цитата:
Он убежден, что ШИМ куллерам не нужен

Ну, если мыслить глобально, то лучшее охлаждение - пассивное. Не шумит, не изнашивается и мало зарастает пылью. Вот только мало кто отважится выложить 100500 денег за 30-килограммовый алюминиевый гробик с логотипом Zalman (или кто их там делает). Жидкостное охлаждение - тоже не идеально. Если ЦПУ/ГПУ остудить несложно, то с БП и винтами мороки куда больше. Плюс риск протечек.

Вот и остается просторный корпус и большие вентиляторы на заниженной мощности. Повседневно - тихо, а при необходимости их мощи хватит, чтобы лишнее тепло сдуть. Далее, аналоговый регулятор оборотов - половина мощности уйдет на разогрев силового транзистора управлятора (или резистора в простейшем случае). Вот и получается, что ШИМ - самый эффективный способ.

Цитата:
Титька2313 имеет 2 таймера и возможность поднять на каждом по 2 ШИМ-генератора

С этого момента я немного выпал. И пока так и не понял, как 2 таймера могут рулить 4 независимыми выходами. Да, там по 2 ШИМ-выхода на таймер, но можно ли ими управлять раздельно (чтобы на каждом был свой коэф. заполнения)... На досуге поиграюсь, 2313 всегда есть в запасе.

Цитата:
Вызывает восторг то, как хитро раскачали Р-канал!

Так там затвор небольшой, раскачать несложно. Все, что требуется, это подтянуть затвор к питанию, чтобы закрыть транзистор. Кстати, тот транзистор, что в МК смотрит, можно n-p-n биполяром заменить. Себе (в том числе "на поиграться") уже заказал IRLML6402, а с раскачкой какой-нибудь BC848 справится. Кстати, наткнулся у себя на статейку о драйверах. Вдруг пригодится, там подробно расписано как каждая схема работает. http://yadi.sk/d/4ETV8nKL11d4u

Цитата:
Для этого в том же batнике сначала пишем строчку, устанавливающие фьюзы МК на 8мгц, затем строчка прошивает МК, затем третьей строчкой возвращаем на место фьюзы, которые должны быть изначально. ОЧЕНЬ УДОБНО!!! Можно хоть на поток ставить!!!

А к дудке вроде бы и оконце есть. Не пробовал?

Так же и в студии. Если нужен поток - жмякай кнопку да меняй МК в панельке. Если правильно настроить - за один удар можно залить все (прогу, ЕЕПРОМ и фьюз). Только там не чистый батник, а его подобие, со своим диалектом. Но суть та же. Плюс "защита от дурака" (SPIEN и RSTDISBL просто так не переключишь) и расшифровка значений фьюзов (выбираем, например, по-человечьи "INT RC, 8 MHz, 6CK+64ms" и не паримся с состоянием CKSEL и SUT). Но прогер - утилита. Главная прелесть все же в отладчике.

--
Решил я все-таки попробовать с USB поиграться, но не в режиме VCP, а напрямую. Попробую для начала какой-нибудь "Hello, world" накарябать. Не получится - к VCP вернуться недолго: FT232 так и останется, а компонент для работы с портом я уже успешно применял.

_________________
КамАЗ 11113 для души, Nissan Almera Classic для остального


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 дек 2012, 07:09 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11206
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
Цитата:
Гм.. Сдается мне, в таком режиме вентилятор может завывать с периодом в 1 секунду. Он ведь наверняка успеет разогнаться до максимума при скважности примерно 0.5.

Ну про 1 секунду я утрировал. В общем, коммутировать питание куллера так, что бы использовать его инерцию. Если импульс длиннее 1й секунды, то подавать питание уже постоянно. Как то так. Но что будет с тахоимпульсами на тех же малых оборотах, когда питание будет отсутствовать на куллере 80-90% времени, то есть его будет подаваться ровно столько (короткими частыми импульсами), что бы он крутился медленно? Короче, мне кажется, что ШИМ и LC получше, и все будет норм.

Цитата:
Вот только мало кто отважится выложить 100500 денег за 30-килограммовый алюминиевый гробик

Есть такое дело. Он так и говорит, что "Куллер - нищебродство. Я ненавижу куллеры." :)

Цитата:
С этого момента я немного выпал. И пока так и не понял, как 2 таймера могут рулить 4 независимыми выходами. Да, там по 2 ШИМ-выхода на таймер, но можно ли ими управлять раздельно (чтобы на каждом был свой коэф. заполнения)...

Все верно, таймеров два. Но у каждого таймера по 2 регистра сравнения, и у каждого своя ножка на МК. Этих регистров можно хоть по 10 штук сделать на каждый таймер, но сделали только максимум по 2. Таймер честно считает до 255, переполняется и считает дальше. Ему никто не запрещает этого делать. Но ножка переключится только при совпадении таймера с регистром сравнения. Я так себе это понимаю.

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Fast PWM top=0xFF
// OC0A output: Non-Inverted PWM
// OC0B output: Non-Inverted PWM
TCCR0A=0xA3;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00; //Скважность канала 1
OCR0B=0x00; //Скважность канала 2

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x08;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00; //Скважность канала 3 старший байт
OCR1AL=0x00; //Скважность канала 3 младший байт
OCR1BH=0x00; //Скважность канала 4 старший байт
OCR1BL=0x00; //Скважность канала 4 младший байт

Цитата:
Так там затвор небольшой, раскачать несложно. Все, что требуется, это подтянуть затвор к питанию, чтобы закрыть транзистор. Кстати, тот транзистор, что в МК смотрит, можно n-p-n биполяром заменить.

Неее, я высказался за то, что в данном случае нет лишних корпусов вообще. То есть раскачивающий транзистор переходит в корпус полевика, экономя место и делая разводку платы более приятной процедурой :)

Однако тут есть особенность. Если у нас не 1, а 4 канала, то выгодней найти сборку из двух Р-каналов и поставить всего два корпуса, в котором будет четыре транзистора. Тогда придется рисовать 4 управляющих биполяра. Или ставить 4 таких корпуса, о которых идет речь и не париться с разводкой биполяров. В прочем, не парься :) Это я так, уже докапываюсь.

Цитата:
Кстати, наткнулся у себя на статейку о драйверах. Вдруг пригодится, там подробно расписано как каждая схема работает

Ага, интересно. Но как всегда в таких мануалах - куча формул и хрен примеров, сухие формулы, математический язык. А я с математикой дружу только, если покажут пример как решать ту или иную формулу. Да, я тупой. А в школе так вообще ненавидел этот предмет, мне было не понятно зачем извлекать корень из числа, ведь корень есть только у растений, и как мне это может пригодится в дальнейшей жизни. И только сейчас понимаешь, что математика - царица наук, банан ей в ухо.

Цитата:
А к дудке вроде бы и оконце есть. Не пробовал?

Да, пробовал. Их несколько у меня, но в основном пользуюсь AVR Burn-O-Mat и обожаю умных людей, указывающих в своих разработках байты фьюзов, а не скриншоты очередной какой то говнопрограммы по прошивке МК, где как хотят, так и вертят фьюзами. Только байтами можно 100% передать нужную конфигурацию фьюзов и не ошибиться при их выставлении. AVR Burn-O-Mat умеет работать с фьюзами побайтно. И потом остается только пойти на какой нибудь калькулятор типа http://fusecalc.mirmk.net , выставить опции на родном русском языке, перенести байты в прошивальщик (или в batник) и возрадоваться разуму :)

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram
Skype: искать oka275 (в англ.раскладке)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 дек 2012, 00:54 
Не в сети
Самоделкин
Аватара пользователя

Зарегистрирован: 05 окт 2009, 10:55
Сообщения: 2064
Откуда: Новосиб, Ленинский район, пл.Станиславского
Авто: 21013-1976
Имя: Антон
могу ручных регуляторов оборотов дать. там платка с "мощным" транзистором, щепотка cмд и подстроечник.

_________________
Наша ОКА в контакте http://vkontakte.ru/club22262761


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 дек 2012, 02:36 
Не в сети
Заслуженный участник Клуба ЗУ-ОКА275
Аватара пользователя

Зарегистрирован: 01 апр 2012, 16:43
Сообщения: 469
Откуда: Самое Популярное Болото ;)
Авто: 11113, Almera Classi
Имя: Владимир
Цитата:
Но что будет с тахоимпульсами на тех же малых оборотах, когда питание будет отсутствовать на куллере 80-90% времени

Скорее всего ничего и не будет. Ведь тахосигнал берется прямо из обвязки обмоток и зависит от питания. И даже если контролировать наличие испульса точно в момент подачи питания на вентиль, не факт, что в этот самый момент датчик будет активен.

Цитата:
Короче, мне кажется, что ШИМ и LC получше, и все будет норм.

Согласен. Не та задача, чтобы как-то хитро выкручиваться.

Цитата:
Куллер - нищебродство

Если есть возможность обойтись пассивкой, конечно не стоит злоупотреблять вентиляторами. Но перегибать (ИМХО) не стоит.

Цитата:
OCR0A=0x00; //Скважность канала 1
OCR0B=0x00; //Скважность канала 2

Кажется, понял. Тогда для пущего удобства прикину МК с парой 8-битных таймеров. А 16 бит на прочие расходы оставлю. Еще обороты чем-то считать надо. Тут я думаю переключать выходы вентиляторов каким-то коммутатором (хотя бы на логике, прикидки как это сделать уже есть).

Цитата:
Неее, я высказался за то, что в данном случае нет лишних корпусов вообще

А-аа.. Тогда все предельно логично получается: 1 корпус = 1 канал. Для 4 каналов все равно придется городить 4 корпуса: хоть там комплиментарные пары (как у автора), хоть 2 транзистора одинаковой проводимости. Но использовать пару все же как-то.. Очевидней, что ли?

Цитата:
куча формул и хрен примеров

Простые схемы и так работают, а для сложных (например, с трансформатором) там есть примеры расчетов. На последних страницах.

--
Цитата:
там платка с "мощным" транзистором, щепотка cмд и подстроечник

Еще там иногда пищалка бывает.
Это "подключить и один раз настроить". Ни контроля, ни оперативности.

_________________
КамАЗ 11113 для души, Nissan Almera Classic для остального


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 дек 2012, 15:10 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11206
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
Aquinas писал(а):
Цитата:
Куллер - нищебродство

Если есть возможность обойтись пассивкой, конечно не стоит злоупотреблять вентиляторами. Но перегибать (ИМХО) не стоит.

Так везде важна золотая середина!

Цитата:
Еще обороты чем-то считать надо. Тут я думаю переключать выходы вентиляторов каким-то коммутатором (хотя бы на логике, прикидки как это сделать уже есть).

Обращаемся к примеру реобаса на атмеге48. Вот его схема. Как видим, нет никаких переключателей. Таходатчики всех 4х куллеров воткнуты в МК, при чем в абы какие порты. И все работает!

Вот моя процедура определения оборотов:
Код:
unsigned int taxoinput(void)
{
unsigned char taxo;
unsigned long int taxo_clock; //счетчик счетного период для тахометра
bit taxo_trigger; //Защелка счетчика тахометра
bit taxo_in; //Переменная состояния порта
#define cycle 26940 //количество циклов, которые уложатся точно в 500мсек

   for (taxo_clock=0; taxo_clock<=cycle; taxo_clock++) //
           {
           taxo_in=PIND.0; //передаем переменной состояние порта. Исключает дребезг и прочие недоразумения
           if ((taxo_in)&&(!taxo_trigger)) //Если в прошлом проходе порт был 0, а стал 1...
           {taxo_trigger=1;taxo++;} //то значит пришел новый фронт и надо плюсовать счетчик импульсов и поставить флаг....
           if ((!taxo_in)&&(taxo_trigger)) //...и игнорировать все дальше, пока порт снова не бабахнется в 0.
           {taxo_trigger=0;}
           }
taxo*=60; //переводим герцы в обороты/мин, то есть taxo=taxo*60 (просто более сокращенное написание)
return (taxo); //возвращаем чистые обороты
}

Пояснение: тахометр куллера выдает 2 импульса за 1 оборот. Потому у нас счетный период не 1, а 0.5 сек. То есть если с куллера (или генератора сигналов) идет сигнал 200Гц, то в конце моей процедуры должно набегать 100Гц. В противном случае придется подобрать дефайн "cycle" под текущую тактовку МК (если ниже 100гц, то увеличивать, если выше, то уменьшать). На выходе процедуры получаем чистые обороты.

Вот таким не затейливым методом получаем обороты. Однако тратим на это всегда 500мсек времени МК. Но например в моем случае я трачу их на ожидание конвертации температуры DS18b20, хотя это тоже крайне расточительно (например, в часах, я делал таймеры, отсчитывающие циклы, когда подавать команды чтения и конвертации, и все это крутилось в ОСНОВНОМ цикле, где еще и клавиатура обслуживалась. И всем хватало времени МК).

В общем, надо эту процедуру переделать и отсчитывать количество инкрементов переменной за 1 период сигнала. Конечно при вращении куллера с 30-ю оборотами в минуту, замер будет занимать 1 сек! А замер при 60 об/мин уже будет длиться 500мсек. Замер же 120 оборотов будет занимать уже 250мсек и так далее. Максимальная частота куллера, допустим, 5000 об/мин. Это 166Гц с тахометра*** (если встать туда частотомером). Время замера (период сигнала) - 6мсек. Имхо, чудно! Ну и допилить процедуру, что бы ее можно было вызывать с номером требуемого таходатчика, например, oboroty=taxoinput(2); То есть вызывается процедура подсчета количества оборотов для куллера №2, где в oboroty, после отработки процедуры, ляжет полученное RPM.

Цитата:
А-аа.. Тогда все предельно логично получается: 1 корпус = 1 канал.

Угу, именно. И никаких больше гвоздей! :) Да, для 4х каналов так же 4 микрохи потребуется. Я бы лучше так сделал, нежели чем питать МК разницей между 12 и 7 вольтами только для того, что бы не ставить лишний транзистор-драйвер (вглядись в схему на АТмега48)

Цитата:
Цитата:
там платка с "мощным" транзистором, щепотка cмд и подстроечник

Еще там иногда пищалка бывает.
Это "подключить и один раз настроить". Ни контроля, ни оперативности.

С тем же успехом (я уже говорил) можно поставить переменный резистор на 500 ом, проволочный, и им рулить. Ни автоматики, нихрена.


Вложения:
Комментарий к файлу: *** Сидел полчаса разбирался в герцах, об.сек и об.мин. Запутался, но разобрался! Кидаю табличку на случай, если запутается еще кто то, или я сам забуду чего там считал.
Безымянный.png
Безымянный.png [ 3.66 КБ | Просмотров: 19260 ]

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram
Skype: искать oka275 (в англ.раскладке)
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 дек 2012, 22:16 
Не в сети
Заслуженный участник Клуба ЗУ-ОКА275
Аватара пользователя

Зарегистрирован: 01 апр 2012, 16:43
Сообщения: 469
Откуда: Самое Популярное Болото ;)
Авто: 11113, Almera Classi
Имя: Владимир
Цитата:
Вот моя процедура определения оборотов

Остается узнать значение cycle для выбранной тактовой частоты. Не проблема. Выполняться должна в главном цикле, если правильно соображаю. А создаваемой функцией задержки как раз хватит на опрос датчиков (если замер 500 мс, то 4 канала = 2 секунды).

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

Цитата:
Я бы лучше так сделал, нежели чем питать МК разницей между 12 и 7 вольтами только для того, что бы не ставить лишний транзистор-драйвер


Тут еще минус есть: общий провод схемы и корпус компа нельзя соединять. БП точно не обрадуется.

--
Пришли транзисторы и мост. Т.ч. далее буду вкуривать RAD Studio и пытаться подергать МК из окон.

_________________
КамАЗ 11113 для души, Nissan Almera Classic для остального


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2019, 00:10 
Не в сети
Постоянец

Зарегистрирован: 11 ноя 2014, 18:10
Сообщения: 150
Откуда: Новосибирск
Авто: nissan patrol
Имя: Константин
Подниму старую тему, Алексей, а если к схеме подключить не 2 а 4 датчика, слежка будет за всеми четырьмя или нет?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2019, 00:14 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11206
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
Не знаю *PARDON* Надо в прошивку поглядеть. Если на днях не отвечу, напомните пожалуйста.

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram
Skype: искать oka275 (в англ.раскладке)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2019, 00:15 
Не в сети
Постоянец

Зарегистрирован: 11 ноя 2014, 18:10
Сообщения: 150
Откуда: Новосибирск
Авто: nissan patrol
Имя: Константин
Хорошо, спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 дек 2019, 08:55 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11206
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
uni-el писал(а):
Подниму старую тему, Алексей, а если к схеме подключить не 2 а 4 датчика, слежка будет за всеми четырьмя или нет?

Нет, слежка будет только за какими-то двумя. Я задумывал это устройство как регулятор оборотов кулера в типовых комповых БП, там где их или нет совсем или на замену имеющимся. И, как правило, двух датчиков там заглаза, потому про остальные я и не думал. Но возможность расширения количества датчиков предусмотрел, потому у прошивки есть возможность модернизации под требуемое количество датчиков. Нужно только несколько её поправить. Надо?

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram
Skype: искать oka275 (в англ.раскладке)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 дек 2019, 12:21 
Не в сети
Постоянец

Зарегистрирован: 11 ноя 2014, 18:10
Сообщения: 150
Откуда: Новосибирск
Авто: nissan patrol
Имя: Константин
Не мешало бы:),на будующее. Стою перед выбором, имеется четыре радиатора и два вентилятора, каждый карлосон остужает два радиатора, вот и думаю толи собрать два таких, и запитать каждый карлосон от своего контроллера или один с четырьмя датчиками и ветродуи в паралель, но тут тогда таходатчик будет только один, что не гуд, на малых оборотах по закону подлости встанет именно тот, который без датчика.:(


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 7 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB