Перейти к содержанию

ser_ega

Members
  • Постов

    84
  • Зарегистрирован

  • Посещение

Электроника

  • Стаж в электронике
    Не связан с электроникой

Достижения ser_ega

Стажер

Стажер (3/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме
  • 10 лет  на форуме

Последние значки

1

Репутация

  1. Делаю как вы описали, но при запуске file license is missing Что еще сделать? Раньше на wINDOWS 7 32 работало, сейчас windows 8.1 x64 и никак не хочет...
  2. об этом я думал, но пока хотелось бы опросить на одной шине два датчика. Поможете правильным примерчиком, для кода указанного выше...?
  3. честно говоря не сам это придумал а нашел подобное на просторах... как же все таки подправить?
  4. ребят помогите к данному девайсу прикрутить еще один датчик... не прошу подсказок в алгоритме переключения между ними или выбора... поправьте с опросом их. Сократив код обработки прерывания, без отображения ошибов (с этим понятно), получилось так: interrupt [TIM1_OVF] void timer1_ovf_isr(void) { BYTE i,j; int Temp; int *val; TCNT1=0x85EE; TCNT1H=0x85; TCNT1L=0xEE; #ifdef NO_BLINK skipDelay = 1; #endif devices=w1_search(0xf0,w1buffer); //определим сколько устройств подключено к шине 1-Wire w1_init(); //инициализация шины 1-wire ShowDisplayData11Times(); w1_write(0xCC); //выдаём в шину 1-wire код 0xCC, что значит "Skip ROM" //ShowDisplayData11Times(); Updating = !Updating; //это шоб читать температуру через раз if (Updating) //если в этот раз читаем температуру, то { w1_write(0xBE); //выдаём в шину 1-wire код 0xBE, что значит "Read Scratchpad" ShowDisplayData11Times(); AllDataFF = 1; NonZero = 0; for (j=0; j<devices-1; j++) { for (i=0; i<9; i++) { w1buffer[j][i]=w1_read(); ShowDisplayData11Times(); } } Initializing = 0;//хватит показывать заставку // Тут выбираю какой датчик показывать val = (int*)&w1buffer[0][0]; Tnew =(*val)* 10 / 16; RefreshDisplay(); //Обновление данных на индикаторе. } else { w1_write(0x44); //выдаём в шину 1-wire код 0x44, что значит "Convert T" } if (ErrorCounter == 0) { PORTD.3 = 0; //LoadON Охлаждение NeedResetLoad = 1; LoadOn = ShowDotWhenError; } else if (!Initializing) { Temp = T_LoadOn + DeltaT; //Temp - временная переменная. if (Tnew >= Temp) if (LoadOn || NeedResetLoad) //Если температура выше (установленной + Дэльта) и нагрузка включена, { //то выключаем нагрузку PORTD.3 = 1; LoadOn = 0; NeedResetLoad = 0; } Temp = T_LoadOn; //Temp - временная переменная. if (Tnew <= Temp) if (!LoadOn || NeedResetLoad) //Если температура ниже (установленной) и нагрузка выключена, { //то включаем нагрузку PORTD.3 = 0; LoadOn = 1; NeedResetLoad = 0; } }//if errorCounter if (Counter > 0) //Counter - переменная для подсчёта времени отображения различных режимов { Counter --; //если она больше "0", то значит кто-то переключил режим отображения и } //присвоил ей значение отличное от "0". Значит надо екрементировать, else //пока не станет равной "0". { View = 0; //если она =0, то сбрасываем текущий режим на "0" } RefreshDisplay(); //Обновление данных на индикаторе. // #ifdef NO_BLINK // skipDelay = 0; // #endif } Вроде как понятно, выяснил сколько датчиков, опросил... Но с одним датчиком все работает, а как второй подключаю, так значения не правильные идут... натолкните на путь истинный.
  5. ser_ega

    вопрос по мигалке на AVR

    Здравствуйте уважаемые, давно не писал тут. Но вот снова возник вопрос который я сам не могу объяснить. Собрал я нехитрое устройство на МК, схема прилагается. На GND и OUT планируется подключать либо лампу накаливания либо LED 12В. Идея такая, если питания GND-GAB отсуствует, то при подаче на POV 12В, лампа должна гореть. Притом сигнал POV импульсный. Если подать питание GND-GAB (POV отсуствует.) лампа спустя время (большее чем один импульс POV ) плавно разгорится. Если в этот момент подать POV то ШИМ (100Hz) с выхода PB0 должен прекратиться, и лампа должна мигать с частотой импульсов POV, с полным затуханием. Вот при проверке на столе все это отлично работает, но как только я иду и подключаю это в авто, так начинаются глюки, а именно лампа в последнем случае полностью затухает через раз (без закономерности). Как это можно объяснить, и что посоветуете чтобы устранить? И ВТОРОЙ вопрос: если подключить лампу LED, то в момент подачи питания на GND-GAB, происходит кратковременная вспышка лампы, потом затухает и затем согласно прошивки спустя время плавно разгорается. От чего эта вспышка возникает? Была версия транзисторы IRF7416 нормальные покупать, но уже пробовал в разных местах брать, ничего не изменилось. Настройки портов такие: PORTB=(0<<PORTB5) | (1<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (1<<PORTB1) | (1<<PORTB0); DDRB= (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (1<<DDB0); ШИМ программный. Кто знает как решить данные вопросы, буду признателен за помощь!
  6. Да действительно. ))) Как же тогда 1 секунда получается?
  7. @Yanshun вы это просто знаете или можете предметно сказать как посчитали? Я вот высчитал это так: TCNT1=0x85EE; это 34286 8000000/1024/(65536-34286)=0.25Гц. Это 400мс Если не правильно поправьте.
  8. Правильно ли я посчитал, что опрос датчика идет каждые 400мс?
  9. @Yanshun Добрый день! Бывает как то по другому? Я в smd развожу все, и не хочу ставить TO 220 только изза габаритов. В других устройствах стоят 78L05 SOT89 и нормально. Может у вас партия такая попалась? Как же все-таки добиться плавности изменения показания 0.1-0.2-0.3-, а не 0.1-0.3-0.1? я резистор 82 ом не ставил, из-за него может быть?
  10. заметил такой недостаток. При стабильной температуре воздуха, показания бывают прыгают +\- 0.3С. Кто знает как от этого уйти? думаю правильным будет как и заявлено +\- 0.1С PS Зачем ставить стабилизатор аж на 1.5А, если в реальности потребляет 30-40мА?
  11. Подскажите, какой SMD аналог транзистора 2S669A
  12. Прошивка Термостат 0.1С v4.0.2 не компилируется. Внес объявление недостающих переменных и скомпилировалась.
  13. Здравствуйте! Есть пароварка Laretti. Какое то время работала без проблем. Но в один момент стала в процессе работы отключаться, через время (секунд 10-15) сама включается, но заданная программа сбивается, приходится заново задавать и включать и так циклично. Прежде чем везти в сервис решил разобрать. Вскрылил и увидел две платы - питание и мозги. И на нагревателе прикручены две детальки. TA-07A 250v 10A 130 и SF152E. Они соединены в цепи питания последовательно, дальше на плату питания, но которой стоит реле, которым управляет плата мозгов. Все понятно но зачем примерно два одинаковых по назначению элемента включены последовательно да еще и с разными номиналами срабатывания? У первого это я так понял 130 градусов, а у второго 157. Выбросил из цепи первый элемент, а его контакты посадил на прозвонку. Включаю все работает, без отключении, Но этот термопредохранитель, через какое то время разомкнулся. Можна ли оставить так или все таки заменить изъятый термопредохранитель? Но он то работает... Как правильно сделать что подскажете? Еще как то могу понять использование этого термопредохранителя в другом месте, а именно в цепи контактов того реле. Дабы избежать перенагревания тена. Но этого же не было сделано, может быть ошибка? Тогда почему какое-то время она работала без вопросов?
×
×
  • Создать...