Поиск по сайту

Результаты поиска по тегам 'pic16'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • ATX->ЛБП Переделки
  • Юмор в youtube Киловольты юмора
  • Надежность и группы продавцов Радиолюбительская доска объявлений exDIY
  • разные темы Переделки

Блоги

Нет результатов для отображения.

Нет результатов для отображения.

Местоположения

  • Пользователи форума

Группа


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Найдено 4 результата

  1. Добрый день, в программирование контроллеров я ничего не смыслю, знаю только ассемблер, С++. Мне необходимо реализовать систему автополива, у меня есть 5 выходов RA каждый из которых отвечает за открытия крана. У каждого порта есть время срабатывания и длительность полива. Как мне в заданное время подать на нужный выход RA логическую единицу и держать этот уровень определенное время. Пример: время срабатывания RA1 в 12:15 логическая единица должна быть установлена на 5 минут после истечения этого времени выход выдаёт сигнал 0. Может посоветуете свои варианты как лучше сделать к примеру делать полив через заданные промежутки времени. Основной вопрос: как создать таймер, который в заданное время сработает и подаст сигнал на порт RA?
  2. Уважаемые форумчане, добрый день! Прошу вашего совета, Стоит задача снять с устройства(домофон) на базе PIC16F886-I/SO код набираемый на цифровой клавиатуре устройства: схема: shema_principialnaya_SM100R.pdf Насколько я понимаю сигнал(CMOS) подается на RB3 и затем уходит по выводу Ek устройства напряжением 14 Вольт. Есть также устройство,(коммутатор домофона БК100), тоже на базе PIC16F57-I/SO , которое этот сигнал умеет успешно принимать и распознавать. схема: shema_principialnaya_БК100.pdf Если я правильно понимаю то сигнал приходит на ножки OSC1 и TOCKI? Вопрос такой, можно ли как-то этот сигнал передаваемый на БК100 параллельно получить на ПК(или GPIO Rasberry) и распознать? В случае Rasberry можно получить этот сигнал понизив напряжение до 3.3вольта с 14в, чтобы не спалить плату? Хватит ли скорости чтения GPIO для распознания всех битов или нужен какой-то серийный интерфейс аля UART? На компьютере на RS232 наверное подключить не получиться, так как там напряжение от +12 до -12 вольт используется? Есть ли какие-то другие порты на обычном ПК, которые смогли бы распознать такой ввод с контроллера (извините за глупость, может Aux или Mic?) Пожалуйста подскажите куда копать, чтобы решить такую задачу, если она решаема. Спасибо shema_principialnaya_SM100R.pdf shema_principialnaya_БК100.pdf
  3. Всем доброго времени суток) Очень нужна помощь с курсовой по микроконтроллерам pic16. Система управления двигателем постоянного тока с системой управления положением платформы. Задача: спроектировать подвижную платформу с тремя степенями свободы (поворот вокруг своей оси, движение вверх-вниз, наклон) на ДПТ. Микроконтроллеры PIC16 или PIC18 (в среде MPLAB, схема механизма в Proteus) ОБЯЗАТЕЛЬНО должна быть схема в Proteus и код на Ассемблере или С. Есть некая платформа с 3 степенями свободы. Каждой степени свободы соответствует отдельный двигатель, который управляется ШИМ-сигналом. Микроконтроллер генерирует ШИМ сигнал, далее он, через усилитель-преобразователь поступает на двигатель. Преобразователь должен быть усиливающим, чтобы получить нужные для работы двигателей ток/напряжение. Управление платформой осуществляется с помощью нажатия кнопок. поворот вокруг своей оси = X движение вверх-вниз =Y наклон = Z Нажатие первой кнопки выводит на LCD начальное положение платформы(координаты XYZ). Нажатие второй кнопки, допустим, через 15 секунд увеличить координаты платформы (к примеру X+5; Y+10; Z+7). Нажатие третий кнопки(допустим) уменьшает координаты платформы за какое-то время. Более подробное описание в файле. Отпишитесь пожалуйста.
  4. Не Работает Счётчик На Pic16F84A

    Недавно мне понадобилось создать небольшой счётчик, который бы принимал сигналы и перекрывал их источник после принятия определённого количества, при этом выдавая процесс на семисегментый индикатор с двумя цифрами и единицой в начале (188). Для работы решил использовать pic16f84a, потому, что это оказался единственным микроконтроллером в одном из немногих радиомагазинов в моём городе. Сам аппарат спаял, а так-как занимаюсь программированием на С++, решил, что с прошивкой проблем не будет. В качестве компилятора выбрал "MPLAB IDE" с "hi-tech c comopiler'ом". Но как же я оказался неправ. В общем сижу уже неделю, изучаю pic. За это время переписал код несколько раз. Но всё без толку. Добивался, что стабильно работал индикатор, но ввод с конопок на той-же ножке, что и вывод на индикатор, никак не мог реализовать. Проверял, кстати, с помощью Proteus'а и PIC simulator IDE. На настоящем микроконтроллере пока проверять не рискую, ибо первый pic16 спалил при первой же попытке, остался только один, а сроки поджимают. Кто-нибудь из разбирающихся в этой области может помочь? В общем вот тот код, что у меня вышел на данный момент. В чём ошибки и почему он отказывается нормально работать? #include <pic.h> __CONFIG(HS & WDTDIS & PWRTEN);//4 мегагерца кварц, таймеры 1 - вкл, 2 - выкл enable_digital_io();//цифровой режим выходов void Graphic(int);//вывод на индикатор char Input(int);//ввод по кнопкам bit count_mode = 0;//вода или таймер bit clapan_mode = 0;//принудительное закрытие или начало отсчёта char APORTB[10];//цифры 0-9 bit step = 0;//шаг индикатора //мейн int main() { //назначаем ножки TRISA0 = 0;//открытие потока TRISA1 = 0;//цифра 2 TRISA2 = 0;//цифра 3 TRISA3 = 0;//цифра "1" TRISA4 = 1;//вход турбины //назначаем элементы цифр TRISB0 = 0;//прерывание TRISB1 = 0;//лево верх, +- TRISB2 = 0;//лево низ, 1 TRISB3 = 0;//центр верх, 19 TRISB4 = 0;//центр центр, смена режима TRISB5 = 0;//центр низ, открытие клапана TRISB6 = 0;//право верх TRISB7 = 0;//право низ RBPU = 1;//подтягивающие резисторы INTEDG = 1;//срабатывание по нажатию INTCON = 0b00000000;//нет прерываний //присваиваем значения цифрам APORTB[0] = 0b11101110; APORTB[1] = 0b11000000; APORTB[2] = 0b01111100; APORTB[3] = 0b11111000; APORTB[4] = 0b11010010; APORTB[5] = 0b10111010; APORTB[6] = 0b10111110; APORTB[7] = 0b11001000; APORTB[8] = 0b11111110; APORTB[9] = 0b11111010; //мигаем после загрузки Graphic(188); for(int stop=0; stop<10; stop++) {_delay(10);} //начинаем работу char sygnal = 10;//оставшееся количество порций float dynamic_sygnal = 0;//точное количество сигналов char time_i = 0;//оставшееся время float time_f = 0;//точное количество while(1)//бесконечный цикл { if(count_mode == 0) { sygnal+=Input(sygnal);//регулирование количества воды Graphic(sygnal);//вывод оставшегося количества воды if (clapan_mode == 0) { if(RA4 == 0) step=0; if(RA4 == 1 && step == 0) { step = 1; dynamic_sygnal+=0.001; if(dynamic_sygnal>=1 && sygnal>=1) { dynamic_sygnal--; sygnal--; } } } } if(count_mode == 1) { time_i+=Input(time_i);//регулирование времени Graphic(time_i); time_f+=0.0001; if(time_f>=1 && time_i>=1) { time_f--; time_i--; } if(time_i<=0) count_mode == 0; } if(sygnal <= 0 || clapan_mode == 1) { RA0 = 1; } else { RA0 = 0; } } } //ввод bit A1=0; bit A2=0; bit i = 0;//номер цифры int single_press = 0; char Input(int sygnal)//блок ввода данных { int counting_sygnal = 0;//надбавка воды за цикл PORTB = 0b00000001; TRISB1 = 1;//+- TRISB2 = 1;//1 TRISB3 = 1;//10 TRISB4 = 1;//смена режима TRISB5 = 1;//смена режима _delay(250); //детект отпущеных кнопок if(RB2 == 1 && RB3 == 1 && RB4 == 1 && RB5 == 1) single_press = 0; //изменение количества воды if(single_press == 0) { if(RB2 == 0) { single_press = 1; if(RB1 == 0) {counting_sygnal -= 1;} else {counting_sygnal += 1;} } if(RB3 == 0) { single_press = 1; if(RB1 == 0) {counting_sygnal -= 10;} else {counting_sygnal += 10;} } if(RB4 == 0) { single_press = 1; count_mode ^= 1; } if(RB5 == 0) { single_press = 1; clapan_mode ^= 1; } } _delay(250); TRISB1 = 0;//лево верх TRISB2 = 0;//лево низ TRISB3 = 0;//центр верх TRISB4 = 0;//центр центр TRISB5 = 0;//центр низ PORTB = APORTB[i] & 0b00000001; if(sygnal + counting_sygnal > 199) counting_sygnal == 0; if(sygnal + counting_sygnal < 0) counting_sygnal == 0; return counting_sygnal; } //графический вывод char pass=1; char digit=0; void Graphic(int number) { char num[2]; pass++; if(pass>=100) { pass=0; if(number>=100) { number-=100; RA3=1; } else { RA3=0; } i ^= 1; num[1]=number%10; num[0]=number/10; //выбираем цифру if(i==0) { A1=1; A2=0; digit=num[0]; } else { A1=0; A2=1; digit=num[1]; } RA1=A1; RA2=A2; } PORTB = APORTB[digit] & 0b00000001; return; } В общем делаю я всё это под индикатор с общим катодом, но крайне было бы желательно мне разобраться с выводом под общий анод. Ну и из-за недостатка ножек мне пришлось зацепить и вывод на сегменты и приём сигнала на одни и те-же выводы с динамическим переключением направления, кстати нашёл в протеусе такой-же пример, только с часами, но код там в hex-файле, так что никак не могу посмотреть эту реализацию. Ещё есть подозрения, что проблема у меня из-за незнания С, но на сколько я помню, отличия у него от С++ только в классах, за исключением некоторых комманд, которые сразу видятся компилятором. Буду крайне признателен, если кто укажет на ошибки. Просто, как уже говорил, пишу не под ПК в первый раз и просто измучался, пытаясь исправить всё это дело. Извиняюсь, что код не под катом, если тут есть такая функция, ибо таковой не нашёл. И ещё извиняюсь, что код жутко поплыл при вставке на форум.