»Радиолюбитель>PIC контроллеры. Программаторы и первый проект на PIC
otest 07:28 07.02.2013
Любое простейшее устройство требует после изготовления проверки,прозвонки и настройки.
[Ответ]
Станиславович 10:25 07.02.2013
Спасибо.Только не знаю при программировании он будет светиться ?
[Ответ]
petrd 11:41 07.02.2013
Сообщение от Станиславович:
Спасибо.Только не знаю при программировании он будет светиться ?
Если 1N4148 оставить замкнутым, то он конечно же не будет ни светиться, ни программировать.
Вы ж говорите, получилось, не получилось, что получилось. А то спасибо, а за что непонятно.
[Ответ]
Станиславович 13:39 07.02.2013
Я сегодня не подключал программатор. Только я не пойму прикола зачем перемыкать диод чтобы светодиод не светился вовсе.Проще его тогда вообще выкинуть к чёртовой матери.Надо ведь чтобы всё работало корректно.
[Ответ]
petrd 14:29 07.02.2013
Сообщение от Станиславович:
Я сегодня не подключал программатор. Только я не пойму прикола зачем перемыкать диод чтобы светодиод не светился вовсе.Проще его тогда вообще выкинуть к чёртовой матери.Надо ведь чтобы всё работало корректно.
А приколов никаких. Вы говорите, что светодиод светится постоянно. Такого быть не должно при работе. При работе он должен моргать когда идет программировании. Если после замыкания 1N4148 светодиод гаснет, значит оба транзистора работают так как надо. Дальше надо подключать к COM порту и смотреть сигналы в IC-PROG или TCOM.EXE
[Ответ]
Здравствуйте!
Подскажите пожалуйста, подключил вместо кнопки - контакты реле, но при таком подключении идут наводки (смотрел осциллографом) ч/з реле и PIC срабатывает когда ему вздумается. Предистория такая - хочу при отключении электричества, посылать сообщение. Сделал просто, импульсный БП на +5В питает ч/з схему(http://www.ebay.com/itm/One-Channel-...item2ec6c77b17) - реле. На реле подключился к нормально замкнутым контактам, пропадает электричество - контакты реле замыкаются, этим эмулируется нажаите кнопки на ножке PIC. Как избавится от наводок в контактах реле. Может быть предложите свой вариант отслеживания напряжения в э/сети?
Посмотрел оптоэлектронные твердотельные реле, они не подойдут, так как требуют минимального потребления тока... а в отключенном состоянии непонятно что у данного реле будет на выходе?
[Ответ]
Globuses 12:43 16.03.2013
Сделайте схему так, что при присутствии питающего напряжения оптопара "замкнута", т.е. ножку МК с подтягивающим резистором при этом можно через оптопару закоротить на землю. При исчезновении питающего напряжения оптопара разомкнет PN переход и на ноге появится устойчивая 1 за счет подтягивающего резистора. И при этом, оптопару надо запитывать постоянным напряжением. Не обязательно импульсным, можно и совсем обычным.
Как-то так...
[Ответ]
Teeen 08:55 28.03.2013
Сообщение от Globuses:
Сделайте схему так, что при присутствии питающего напряжения оптопара "замкнута", т.е. ножку МК с подтягивающим резистором при этом можно через оптопару закоротить на землю. При исчезновении питающего напряжения оптопара разомкнет PN переход и на ноге появится устойчивая 1 за счет подтягивающего резистора. И при этом, оптопару надо запитывать постоянным напряжением. Не обязательно импульсным, можно и совсем обычным.
Как-то так...
Отчитываюсь: спасибо за ваш совет, мне его подсказали чуть раньше. Взял оптопару PC817, самая ходовая, подал на нее постоянное напряжение +5В через токоограничивающий резистор на 500 Ом, видел так делают при тестировании оптопар, затем коллектор и эмиттер оптопары посадил на ножку МК, которая в свою очередь ч/з подтягивающий резистор на 20кОм подсоединена к +3,3В и вторую ножку оптопары на массу и всё заработало!
[Ответ]
Teeen 10:55 02.04.2013
Здравствуйте всем!
Подскажите пожалуйста, правильно ли воспринял мой мозг следующую информацию:
Initialize PWM module at 5KHz:
PWM1_Init(5000); - задаем максимальную частоту для ШИМ.
Set duty ratio to 75%:
PWM1_Set_Duty(192); - программно меняем частоту ШИМ от 0 до 100% (0Гц-5000Гц), в данном случае это будет частота = 3750Гц?
[Ответ]
petrd 11:46 02.04.2013
Сообщение от Teeen:
Здравствуйте всем!
Подскажите пожалуйста, правильно ли воспринял мой мозг следующую информацию:
Initialize PWM module at 5KHz:
PWM1_Init(5000); - задаем максимальную частоту для ШИМ.
Set duty ratio to 75%:
PWM1_Set_Duty(192); - программно меняем частоту ШИМ от 0 до 100% (0Гц-5000Гц), в данном случае это будет частота = 3750Гц?
Нет. Частота как была 5 кГц (период 200 мкс), так и останется. Будет меняться длительность импульса в периоде от 0 до 200 мкс.
100% -> 255
0% -> 0
75% -> 255/100*75 = 192.
Т.е. при
Teeen, в режиме ШИМ частота (1/период) должна оставаться постоянной, а вот "скважность" импульсов или, другими словами "коэффициент заполнения" меняется.
при малом заполнении активный уровень мало длится по времени, при большом заполнении - много длится по времени, НО НАЧАЛО ИМПУЛЬСОВ ПРОИСХОДИТ ЧЕРЕЗ ОДИН И ТОТ ЖЕ ПРОМЕЖУТОК ВРЕМЕНИ.
пример на картинке.
А если вы хотите менять некую выходную частоту с контроллера, то тут не все так гладко...
Изображения
Спасибо вам за ответы!
Разобрался, сегодня поэкспериментировал с двигателем DC и возникли еще вопросы:
1). Чем определяется минимальная частота для функции PWM1_Init(1682)?
Дело в том, что ниже частоту установить не удается, компилятор ругается "Argument is out of range", частотой кварца на которой работает PIC? У меня кварц держит частоту 27,550МГц и компилятор позволяет установить минимальную частоту = 1682Гц!
2). Я правильно понимаю, что чем ниже частота и больше длительность имульса, тем двигатель DC будет выдавать бОльшую мощность?
П.С. Мне нужно электронным способом (червячный редуктор больше не позволяет) понизить обороты DC-двигателя, при минимальной потере его мощности.
[Ответ]
VRTP 17:48 03.04.2013
Сообщение от Teeen:
2). Я правильно понимаю, что чем ниже частота и больше длительность имульса, тем двигатель DC будет выдавать бОльшую мощность?
П.С. Мне нужно электронным способом (червячный редуктор больше не позволяет) понизить обороты DC-двигателя, при минимальной потере его мощности.
Прикинь какой будет выброс в момент закрытия ключа Или там не очень большая нагрузка?Вообще этот момент учитывал?
[Ответ]
Teeen 04:55 04.04.2013
Сообщение от VRTP:
Прикинь какой будет выброс в момент закрытия ключа Или там не очень большая нагрузка?Вообще этот момент учитывал?
Здравствуйте, двигатель будет работать можно сказать в холостую, специально такой подбирал, еще и червяк.
А вот вашего вопроса я не понял, что значит
Сообщение от :
будет выброс в момент закрытия ключа
?
Взял драйвер на базе микросхемы L298N, соединю оба выхода в один и получу пиковый ток 4А, думаю хватит. Пробовал крутить двигатель на холостом ходу в момент запуска ток доходит до 2,5А - еще раз проверю...
[Ответ]
Teeen 05:57 04.04.2013
Сообщение от Teeen:
Спасибо вам за ответы!
Разобрался, сегодня поэкспериментировал с двигателем DC и возникли еще вопросы:
1). Чем определяется минимальная частота для функции PWM1_Init(1682)?
Дело в том, что ниже частоту установить не удается, компилятор ругается "Argument is out of range", частотой кварца на которой работает PIC? У меня кварц держит частоту 27,550МГц и компилятор позволяет установить минимальную частоту = 1682Гц!
2). Я правильно понимаю, что чем ниже частота и больше длительность имульса, тем двигатель DC будет выдавать бОльшую мощность?
П.С. Мне нужно электронным способом (червячный редуктор больше не позволяет) понизить обороты DC-двигателя, при минимальной потере его мощности.
Первый вопрос подтвердился, устанавливая в проекте частоту работы МК ниже, можно понижать и частоту в функции.
Отсюда вопрос, получается, если я хочу ШИМ с низкой частотой, например в 500Гц, я должен написать его программно?
[Ответ]
petrd 06:35 04.04.2013
Сообщение от Teeen:
если я хочу ШИМ с низкой частотой
Обоснуйте, зачем Вам ШИМ с низкой частотой?
[Ответ]
Teeen 08:54 04.04.2013
Сообщение от petrd:
Обоснуйте, зачем Вам ШИМ с низкой частотой?
Здравствуйте!
У меня сейчас собрана схема управления для двигателя DC с током потребления до 600мА. Если я задаю частоту 5кГц и уменьшаю длительность импульсов, то вал двигателя останавливается на значении 64 из 255, при частоте 1682Гц - на значении 34... объяснить я это не могу, а вы?
[Ответ]
petrd 09:20 04.04.2013
Сообщение от Teeen:
Здравствуйте!
У меня сейчас собрана схема управления для двигателя DC с током потребления до 600мА. Если я задаю частоту 5кГц и уменьшаю длительность импульсов, то вал двигателя останавливается на значении 64 из 255, при частоте 1682Гц - на значении 34... объяснить я это не могу, а вы?
Ну так при 5 кГц - 64 это длительность импульса 50 мкс, при 1,628 кгц - 34 это 80 мкс и о чем это говорит? А ни о чем! Тут надо интегрирование вспоминать и смотреть параметры двигателя. Меняя ШИМ от 0% до 100% абсолютно не значит, что двигатель будет менять обороты от нуля до максимума.
[Ответ]
Teeen 11:39 04.04.2013
Хм, тогда я не понимаю как рассчитывать частоту ШИМ, только по хар-кам самого двигателя? Чтобы не шумел?
[Ответ]
VRTP 16:04 04.04.2013
Сообщение от Teeen:
А вот вашего вопроса я не понял, что значит ?
Взял драйвер на базе микросхемы L298N, соединю оба выхода в один и получу пиковый ток 4А, думаю хватит. Пробовал крутить двигатель на холостом ходу в момент запуска ток доходит до 2,5А - еще раз проверю...
Представим ситуёвину,крутится ротор вокруг статора когда открыт драйвер,после происходит закрытие драйвера,а ротор при этом ещё не остановился,и теперь он начинает давать какую то индукционную напругу на ключь драйвера.....Вот этот момент и называется выброс.За частую этот выброс убивает ключ если с этим не боротся.
[Ответ]
Teeen 16:18 04.04.2013
Сообщение от VRTP:
крутится ротор вокруг статора
Ну да ладно, двигатель будет останавливаться режимом Fast Stop.
[Ответ]
VRTP 19:43 04.04.2013
Сообщение от Teeen:
Ну да ладно, двигатель будет останавливаться режимом Fast Stop.
Я же перед этим спрашивал,вникал или нет.Я же не собираюсь смотреть на твои драйвера.
Не делай добра не получиш я понял.
[Ответ]
Teeen 06:40 05.04.2013
Сообщение от VRTP:
Я же перед этим спрашивал,вникал или нет.Я же не собираюсь смотреть на твои драйвера.
Не делай добра не получиш я понял.
Вы не обижайтесь на меня, просто когда человек пишет такие явные ляпсусы, то к его словам нет доверия... А в целом, спасибо!
[Ответ]
Teeen 09:42 29.04.2013
petrd, здравствуйте!
Подскажите пожалуйста, при использовании драйвера L298N напряжения питаний для:
1). VS Power Supply
2). Logic Supply Voltage
обязательно должны подаваться от одного источника питания или можно использовать 2-а различных блока питания и "минус" сделать общим?
[Ответ]
petrd 10:00 29.04.2013
Сообщение от Teeen: petrd, здравствуйте!
Подскажите пожалуйста, при использовании драйвера L298N напряжения питаний для:
1). VS Power Supply
2). Logic Supply Voltage
обязательно должны подаваться от одного источника питания или можно использовать 2-а различных блока питания и "минус" сделать общим?
Сообщение от petrd:
Да, можно от разных, но с общей землей.
Спасибо Вам огромное! А то я уже думал, что нужно будет мудрить один БП...
[Ответ]
Teeen 10:13 20.05.2013
petrd, здравствуйте!
Подскажите пожалуйста по АЦП следующее:
Написал код для запуска АЦП и анализа напряжения с L298N как вы рекомендовали ранее. Напряжение питания PIC 3.3V, напряжения для АЦП 0-2V.
Настроил прерывания от АЦП и по нему осуществляю контроль.
Написал следующий код:
Код:
//Настраиваем АЦП На момент инициализации - модуль АЦП выключен!!!
ADCON0=0b10000000; // бит 0: ADON: Бит включения модуля АЦП
7 и 6 биты = 10 = FOSC/32
Код:
//---Нажали кнопку вниз
if (!RD4_bit){
//Включаем АЦП
ADON_bit=1;
//Включаем двигатель
//Код для открытия двери:
//------------
TRISC0_bit =0; // RC0 - выход (двигатель 1)
TRISC1_bit =0; // RC1 - выход (двигатель 1)
RC0_bit=1;
RC1_bit=0;
//------------
//Делаем задержку для заряда Chold
delay_ms(1);
//Запускаем преобразования АЦП
GO_bit=1;
delay_ms(100);
}
Процедура прерывания:
Код:
//Прерывание по окончанию преобразования значения АЦП
if (ADIF_bit){
IntToStr(ADRESH,Caption1);
IntToStr(ADRESL,Caption2);
ADIF_bit=0;
}//End ADIF
Собственно вопрос в следующем, сначала при нажатии кнопки, значения меняются и затем останавливаются и дальше не меняются. Хотя GO_bit=1; Почему это происходит?
П.С. если установить GO_bit=0; и затем снова нажать на кнопку, то показания опять начинаются меняться и опять останавливаются.
[Ответ]
Teeen 11:35 20.05.2013
Всё! Понял причину и исправил - добавил в программу:
Код:
//Если запустили АЦП - то выводим рез-т
if (ADON_bit && !GO_bit){
//Запускаем преобразования АЦП
GO_bit=1;
}
petrd, традиционное - Здравствуйте!
Я всё отлаживаю свой АЦП, вообщем, максимальное значение которое выдает АЦП=127 (условных единиц), это когда вал двигателя остановлен, а напряжение не снято. В прерывании написал счетчик, который считает эти максимальные значения n-раз и снимает напряжение с двигателя.
Теперь вопрос, при тестировании с аккумулятором - значение АЦП не превышало 127 ед. Когда подключил вместо аккумулятора импульсный блок питания, то при остановленном вале двигателя наблюдаю эти же 127 ед., но! когда вал крутиться, то АЦП со случайной периодичностью выдает 128 ед. не больше, в чем может быть проблема? В недостаточной стабилизации напряжения БП двигателя?
Для того чтобы стало понятно о чем речь, прикладываю фото проекта: